UTL_RECOMPシステムパッケージは、データベースオブジェクトを再コンパイルするためのユーティリティパッケージであり、データベースのアップグレードやオブジェクトの無効化に関連して特に有用です。このパッケージ内のプログラムは、データベース全体のオブジェクトまたは特定のスキーマ(schema)のオブジェクトを再コンパイルするために使用できます。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
UTL_RECOMPの使用方法
- OceanBaseデータベースV4.3.5 BP2より前のバージョンでは、このパッケージを使用するにはSYSユーザーに接続する必要があり、他のユーザーにはこのパッケージを呼び出す権限がありません。V4.3.5 BP2以降のバージョンでは、sysユーザーが一般ユーザーに
EXECUTE権限を付与することで、一般ユーザーもUTL_RECOMPシステムパッケージを呼び出すことができます。 recomp_parallel、recomp_serialを呼び出す際は、システム内で実行中のDDL操作がないことを確認することを推奨します。そうでない場合、予期しない状況が発生する可能性があります。- このパッケージでコンパイルされるオブジェクトには、
procedure、functon、package、trigger、user define typeが含まれます。 - オブジェクトのコンパイルプロセス中に発生した個々のオブジェクト関連エラーは、
all_errorsビューで確認できます。 - コンパイルプロセス中に発生したシステムエラーは、
SYS.UTL_RECOMP_ERRORSテーブルに記録されます。
UTL_RECOMPサブルーチンの概要
以下の表は、OceanBaseデータベースの現行バージョンでサポートされているUTL_RECOMPサブルーチンとその簡潔な説明を示しています。
| サブルーチン | 説明 |
|---|---|
| recomp_parallel | 失効したデータプログラムユニット(パッケージ、プロシージャ、関数、トリガーなど)を並列して再コンパイルするために使用されます。 |
| recomp_serial | データベースオブジェクトをシリアルコンパイルするために使用されます。 |
| parallel_slave | これは recomp_parallel プロセス内で実際のコンパイル作業を実行するためのプライベートサブルーチンです。通常、ユーザーが直接呼び出すことはありません。 |
| truncate_utl_recomp_skip_list | UTL_RECOMP_SKIP_LIST テーブルをクリアするために使用されます。このテーブルには、自動再コンパイルを希望しないオブジェクトのリストが保存されています。 |
| populate_utl_recomp_skip_list | UTL_RECOMP_SKIP_LIST テーブルにレコードを追加し、再コンパイル処理中に特定のオブジェクトをスキップするために使用されます。 |