14.2 ALTER LIBRARY文
ALTER LIBRARY文を使用すると、ライブラリを明示的に再コンパイルできます。
明示的に再コンパイルすることによって、実行時に暗黙的に再コンパイルする必要がなくなり、関連する実行時コンパイル・エラーおよびパフォーマンス・オーバーヘッドが発生しなくなります。
ノート:
この文では、既存のライブラリの宣言または定義は変更されません。ライブラリを再宣言または再定義するには、「CREATE LIBRARY文」をOR REPLACE句とともに使用します。
ここでのトピック
前提条件
ライブラリがSYSスキーマ内にある場合、SYSDBAとして接続する必要があります。そうでない場合は、ライブラリが自分のスキーマ内にあるか、ALTER ANY LIBRARYシステム権限が必要です。
構文
alter_library ::=
セマンティクス
alter_library
IF EXISTS
ライブラリがある場合はそれを変更します。このようなライブラリが存在しない場合、文はエラーなしで無視されます。
library_name
変更するライブラリの名前。
{ EDITIONABLE | NONEDITIONABLE }
schemaでスキーマ・オブジェクト・タイプLIBRARYに対して後からエディションが有効化された場合に、ライブラリがエディション・オブジェクトまたは非エディション・オブジェクトのどちらになるかを指定します。デフォルト: EDITIONABLE。エディション・オブジェクトと非エディション・オブジェクトの変更の詳細は、『Oracle Database開発ガイド』を参照してください。
library_compile_clause
ライブラリを再コンパイルします。
compile_clauseおよびcompiler_parameters_clauseのセマンティクスを参照してください。例
例14-2 ライブラリの再コンパイル
サンプル・ユーザーhrが所有しているライブラリmy_ext_libを明示的に再コンパイルするには、次の文を発行します。
ALTER LIBRARY IF EXISTS hr.my_ext_lib COMPILE;
my_ext_libの再コンパイル中にデータベースでコンパイル・エラーが発生しなかった場合、my_ext_libは有効になります。その後、実行時にデータベースによって再コンパイルされることなく、実行できます。my_ext_libの再コンパイル時にコンパイル・エラーが発生した場合は、データベースによってエラーが戻され、my_ext_libは無効なままになります。
また、データベースによって、my_ext_libに依存するオブジェクトもすべて無効にされます。その後、最初に明示的に再コンパイルせずにこれらのオブジェクトのいずれかを参照すると、データベースによって実行時にそのオブジェクトが暗黙的に再コンパイルされます。
IF EXISTS句により、my_ext_libがまだスキーマにない場合はこの文は無視されエラーは発生しません。ライブラリが存在するかどうかに関係なく出力メッセージは同じであることに注意してください(この場合は、「ライブラリが変更されました。」)。
関連トピック

