ALTER
LIBRARY
文を使用すると、ライブラリを明示的に再コンパイルできます。明示的に再コンパイルすることによって、実行時に暗黙的に再コンパイルする必要がなくなり、関連する実行時コンパイル・エラーおよびパフォーマンス・オーバーヘッドが発生しなくなります。
ここでのトピック
前提条件
ライブラリがSYS
スキーマ内にある場合、SYSDBA
として接続する必要があります。そうでない場合は、ライブラリが自分のスキーマ内にあるか、ALTER
ANY
LIBRARY
システム権限が必要です。
compiler_parameters_clause::=
セマンティクス
library_name
再コンパイルされるライブラリの名前。
COMPILE
ライブラリを再コンパイルします。
再コンパイル中、データベースによってコンパイラの永続的なスイッチ設定はすべて削除され、セッションから再度取得されて、コンパイル後に格納されます。この処理を回避するには、REUSE
SETTINGS
を指定します。
DEBUG
PLSQL_OPTIMIZE_LEVEL=1
と同じ効果があり、PL/SQLデバッガで使用するためのコードを生成して格納するようにPL/SQLコンパイラに指示します。DEBUG
ではなく、PLSQL_OPTIMIZE_LEVEL=1
を使用することをお薦めします。
REUSE SETTINGS
Oracleによってコンパイラ・スイッチ設定が削除および再取得されないようにします。既存の設定が保持され、この文の他の場所に値が指定されていないパラメータの再コンパイルにその設定が使用されます。
compiler_parameters_clause
型に対する動作は、ファンクションに対する動作と同様です。詳細は、「ALTER
FUNCTION
」の「compiler_parameters_clause」を参照してください。
例
ライブラリの再コンパイル: 例 サンプル・ユーザーhr
が所有しているライブラリmy_ext_lib
を明示的に再コンパイルするには、次の文を発行します。
ALTER LIBRARY hr.my_ext_lib COMPILE;
my_ext_lib
の再コンパイル中にデータベースでコンパイル・エラーが発生しなかった場合、my_ext_lib
は有効になります。その後、実行時にデータベースによって再コンパイルされることなく、実行できます。my_ext_lib
の再コンパイル時にコンパイル・エラーが発生した場合は、データベースによってエラーが戻され、my_ext_lib
は無効なままになります。
また、データベースによって、my_ext_lib
に依存するオブジェクトもすべて無効にされます。その後、最初に明示的に再コンパイルせずにこれらのオブジェクトのいずれかを参照すると、データベースによって実行時にそのオブジェクトが暗黙的に再コンパイルされます。