ライブラリとは、オペレーティングシステムの共有ライブラリに関連付けられたスキーマ・オブジェクトである。
ライブラリ関するSQL文を次に示す。
CREATE LIBRARYとは、外部プロシージャライブラリを作成するSQL文である。
自分のスキーマに外部プロシージャライブラリを作成するには、CREATE LIBRARYシステム権限が必要である。任意のスキーマに外部プロシージャライブラリを作成するには、CREATE ANY LIBRARYシステム権限が必要である。
CREATE [OR REPLACE] LIBRARY [schema.]name {AS|IS} 'filename'
ライブラリを作成する例を示す。
CREATE OR REPLACE LIBRARY mylib AS '/opt/app/oracle/product/11.2.0/db_64/lib/libmylib.so'
ALTER LIBRARYとは、外部プロシージャライブラリを明示的に再コンパイルするSQL文である。 ALTER LIBRARYでライブラリファイルのパス名を変更することはできない。 ライブラリファイルのパス名を変更するには、CREATE OR REPLACE LIBRARYで外部プロシージャライブラリを再定義する。
任意のスキーマの外部プロシージャライブラリを明示的に再コンパイルするには、ALTER ANY LIBRARYシステム権限が必要である。
ALTER LIBRARY [schema.]name COMPILE
DROP LIBRARY は外部プロシージャ・ライブラリを削除するSQL文である。
外部プロシージャ・ライブラリに関するシステム権限を以下に示す。
CREATE LIBRARY は、自分のスキーマに外部プロシージャ・ライブラリを作成できるシステム権限である。
CREATE ANY LIBRARY は、任意のスキーマに外部プロシージャ・ライブラリを作成できるシステム権限である。
ALTER ANY LIBRARY は、任意のスキーマの外部プロシージャ・ライブラリを明示的に再コンパイルできるシステム権限である。
DROP ANY LIBRARY は、任意のスキーマの外部プロシージャ・ライブラリを削除できるシステム権限である。
EXECUTE ANY LIBRARY は、任意のスキーマのライブラリを使用できるシステム権限である。
任意のスキーマのライブラリを使用できるシステム権限をユーザーへ付与するSQL文の例を次に示す。
SQL> GRANT EXECUTE ANY LIBRARY TO TSUKAMOTO;
外部プロシージャ・ライブラリに関するオブジェクト権限を以下に示す。
EXECUTE は、外部プロシージャ・ライブラリを使用できるオブジェクト権限である。
外部プロシージャ・ライブラリを使用できるオブジェクト権限をユーザーへ付与するSQL文の例を次に示す。
SQL> GRANT EXECUTE ON MY_LIBRARY TO TSUKAMOTO;
外部プロシージャ・ライブラリに関するデータ・ディクショナリ・ビューを以下に示す。
ALL_LIBRARIES は、現在のユーザがアクセスできる外部プロシージャ・ライブラリを示すデータ・ディクショナリ・ビューである。
現在のユーザがアクセスできる外部プロシージャ・ライブラリを問い合わせるSQL文の例を次に示す。
SQL> SELECT * FROM ALL_LIBRARIES;
DBA_LIBRARIES は、Oracleデータベース内すべての外部プロシージャ・ライブラリを示すデータ・ディクショナリ・ビューである。
USER_LIBRARIES は、現在のユーザが所有する外部プロシージャ・ライブラリを示すデータ・ディクショナリ・ビューである。
次のSQL文を実行することで、自分が所有する外部プロシージャ・ライブラリの一覧を確認できる。
SQL> SELECT LIBRARY_NAME, FILE_SPEC FROM USER_LIBRARIES;
LIBRARY_NAME FILE_SPEC
------------ -------------------
lib_example /usr/lib/example.so
lib_app /usr/lib/app.so