Oracleデータベースの外部プロシージャ・ライブラリ

ライブラリとは、オペレーティングシステムの共有ライブラリに関連付けられたスキーマ・オブジェクトである。

目次

  1. SQL
    1. CREATE LIBRARY
    2. ALTER LIBRARY
    3. DROP LIBRARY
  2. システム権限
    1. CREATE LIBRARY
    2. CREATE ANY LIBRARY
    3. ALTER ANY LIBRARY
    4. DROP ANY LIBRARY
    5. EXECUTE ANY LIBRARY
  3. オブジェクト権限
    1. EXECUTE
  4. データディクショナリ
    1. ALL_LIBRARIES
    2. DBA_LIBRARIES
    3. USER_LIBRARIES

SQL

ライブラリ関するSQL文を次に示す。

CREATE LIBRARY

CREATE LIBRARYとは、外部プロシージャライブラリを作成するSQL文である。

自分のスキーマに外部プロシージャライブラリを作成するには、CREATE LIBRARYシステム権限が必要である。任意のスキーマに外部プロシージャライブラリを作成するには、CREATE ANY LIBRARYシステム権限が必要である。

CREATE [OR REPLACE] LIBRARY [schema.]name {AS|IS} 'filename'
OR REPLACE
作成するライブラリが既に存在した場合は、ライブラリを再作成する。
schema
ライブラリを作成するスキーマを指定する。スキーマの指定を省略した場合は、自分のスキーマにライブラリを作成する。
name
作成するライブラリの名前を指定する。
filename
ライブラリのパスを指定する。

ライブラリを作成する例を示す。

CREATE OR REPLACE LIBRARY mylib AS '/opt/app/oracle/product/11.2.0/db_64/lib/libmylib.so'

ALTER LIBRARY

ALTER LIBRARYとは、外部プロシージャライブラリを明示的に再コンパイルするSQL文である。 ALTER LIBRARYでライブラリファイルのパス名を変更することはできない。 ライブラリファイルのパス名を変更するには、CREATE OR REPLACE LIBRARYで外部プロシージャライブラリを再定義する。

任意のスキーマの外部プロシージャライブラリを明示的に再コンパイルするには、ALTER ANY LIBRARYシステム権限が必要である。

ALTER LIBRARY [schema.]name COMPILE

DROP LIBRARY

DROP LIBRARY は外部プロシージャ・ライブラリを削除するSQL文である。

システム権限

外部プロシージャ・ライブラリに関するシステム権限を以下に示す。

CREATE LIBRARY

CREATE LIBRARY は、自分のスキーマに外部プロシージャ・ライブラリを作成できるシステム権限である。

CREATE ANY LIBRARY

CREATE ANY LIBRARY は、任意のスキーマに外部プロシージャ・ライブラリを作成できるシステム権限である。

ALTER ANY LIBRARY

ALTER ANY LIBRARY は、任意のスキーマの外部プロシージャ・ライブラリを明示的に再コンパイルできるシステム権限である。

DROP ANY LIBRARY

DROP ANY LIBRARY は、任意のスキーマの外部プロシージャ・ライブラリを削除できるシステム権限である。

EXECUTE ANY LIBRARY

EXECUTE ANY LIBRARY は、任意のスキーマのライブラリを使用できるシステム権限である。

任意のスキーマのライブラリを使用できるシステム権限をユーザーへ付与するSQL文の例を次に示す。

SQL> GRANT EXECUTE ANY LIBRARY TO TSUKAMOTO;

オブジェクト権限

外部プロシージャ・ライブラリに関するオブジェクト権限を以下に示す。

EXECUTE

EXECUTE は、外部プロシージャ・ライブラリを使用できるオブジェクト権限である。

外部プロシージャ・ライブラリを使用できるオブジェクト権限をユーザーへ付与するSQL文の例を次に示す。

SQL> GRANT EXECUTE ON MY_LIBRARY TO TSUKAMOTO;

データディクショナリ

外部プロシージャ・ライブラリに関するデータ・ディクショナリ・ビューを以下に示す。

ALL_LIBRARIES

ALL_LIBRARIES は、現在のユーザがアクセスできる外部プロシージャ・ライブラリを示すデータ・ディクショナリ・ビューである。

現在のユーザがアクセスできる外部プロシージャ・ライブラリを問い合わせるSQL文の例を次に示す。

SQL> SELECT * FROM ALL_LIBRARIES;

DBA_LIBRARIES

DBA_LIBRARIES は、Oracleデータベース内すべての外部プロシージャ・ライブラリを示すデータ・ディクショナリ・ビューである。

USER_LIBRARIES

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