ヘッダーをスキップ
Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス
10g リリース2(10.2)
B19245-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

116 DBMS_UTILITY

DBMS_UTILITYパッケージは、各種のユーティリティ・サブプログラムを提供します。

この章では、次の項目について説明します。


DBMS_UTILITYの使用方法


セキュリティ・モデル

DBMS_UTILITYは、NAME_RESOLVEプロシージャCOMPILE_SCHEMAプロシージャおよびANALYZE_SCHEMAプロシージャのコール・ユーザーの権限で実行されます。これは、SQLの正しい動作のために必要です。

このパッケージは、SYSとして実行されません。権限は、DBMS_DDLを使用してチェックされます。


定数

DBMS_UTILITYパッケージでは、表116-1「DBMS_UTILITY定数」に示す定数が使用されます。

表116-1 DBMS_UTILITY定数

名前 説明

INV_ERROR_ON_RESTRICTIONS

PLS_INTEGER

1

INVALIDATEサブプログラムのp_option_flagsパラメータとして有効な値は、この定数のみです。



タイプ

dblink_array

TYPE dblink_array IS TABLE OF VARCHAR2(128) INDEX BY BINARY_INTEGER;

データベース・リンクのリストは、ここに格納されます。

index_table_type

TYPE index_table_type IS TABLE OF BINARY_INTEGER INDEX BY BINARY_INTEGER;

オブジェクトの生成順序は、ここに戻されます。

instance_record

  TYPE instance_record IS RECORD (
       inst_number   NUMBER,
       inst_name     VARCHAR2(60));
  TYPE instance_table IS TABLE OF instance_record INDEX BY BINARY_INTEGER;

アクティブなインスタンス番号とインスタンス名のリスト。

instance_tableの索引の開始は1で、instance_tableは稠密です。

lname_array

TYPE lname_array IS TABLE OF VARCHAR2(4000) index by BINARY_INTEGER;

Long NAMEのリストはここに格納されます。これには完全修飾属性名が含まれます。

name_array

TYPE name_array IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;

NAMEのリストは、ここに格納されます。

number_array

TYPE number_array IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;

ユーザーのためのオブジェクトの生成順序は、ここに戻されます。

uncl_array

TYPE uncl_array IS TABLE OF VARCHAR2(227) INDEX BY BINARY_INTEGER;

"USER"."NAME"."COLUMN"@LINKのリストは、ここに格納されます。


推奨されないサブプログラム

次のサブプログラムはOracle Database Release 10gで使用されなくなります。


例外

次の表に、DBMS_UTILITYで発生する例外を示します。

表116-2 DBMS_UTILITYで発生する例外

例外 エラー・コード 説明

INV_NOT_EXIST_OR_NO_PRIV

-24237

object_id引数がNULLまたは無効な値の場合、あるいは無効化されているオブジェクトのCREATE権限をコール元が持っていない場合に、INVALIDATEサブプログラムによって発行されます。

INV_MALFORMED_SETTINGS

-24238

コンパイラの設定がp_plsql_object_settingsパラメータで複数回指定された場合に、INVALIDATEサブプログラムによって発行されます。

INV_RESTRICTED_OBJECT

-24239

p_object_idパラメータに関連する条件の様々な組合せが互いに矛盾する場合に、INVALIDATEサブプログラムによって発行されます。



DBMS_UTILITYサブプログラムの要約

表116-3 DBMS_UTILITYパッケージのサブプログラム

サブプログラム 説明

ACTIVE_INSTANCESプロシージャ


アクティブなインスタンスを戻します。

ANALYZE_DATABASEプロシージャ


データベース内にあるすべての表、クラスタおよび索引を分析します。「推奨されないサブプログラム」も参照してください。

ANALYZE_PART_OBJECTプロシージャ


指定した表および索引を分析します。

ANALYZE_SCHEMAプロシージャ


スキーマ内にあるすべての表、クラスタおよび索引を分析します。「推奨されないサブプログラム」も参照してください。

CANONICALIZEプロシージャ


指定した文字列を正規化します。

COMMA_TO_TABLEプロシージャ


カンマで区切られた名前のリストを、名前のPL/SQL表に変換します。

COMPILE_SCHEMAプロシージャ


指定したスキーマ内にあるすべてのプロシージャ、ファンクション、パッケージおよびトリガーをコンパイルします。

CREATE_ALTER_TYPE_ERROR_TABLEプロシージャ


ALTER TYPE文のEXCEPTION句で使用するエラー表を作成します。

CURRENT_INSTANCEファンクション


現在接続しているインスタンス番号を戻します。

DATA_BLOCK_ADDRESS_BLOCKファンクション


データ・ブロック・アドレスのブロック番号部分を取得します。

DATA_BLOCK_ADDRESS_FILEファンクション


データ・ブロック・アドレスのファイル番号部分を取得します。

DB_VERSIONプロシージャ


データベースに関するバージョン情報を戻します。

EXEC_DDL_STATEMENTプロシージャ


parse_stringでDDL文を実行します。

FORMAT_CALL_STACKファンクション


現行のコール・スタックをフォーマットします。

FORMAT_ERROR_BACKTRACEファンクション


現行のエラーのポイントから、エラーがキャッチされた例外ハンドラまでのバックトレースをフォーマットします。

FORMAT_ERROR_STACKファンクション


現行のエラー・スタックをフォーマットします。

GET_CPU_TIMEファンクション


現在のCPU時間を100分の1秒単位で戻します。

GET_DEPENDENCYプロシージャ


渡されたオブジェクトの依存関係を示します。

GET_HASH_VALUEファンクション


指定した文字列についてハッシュ値を計算します。

GET_PARAMETER_VALUEファンクション


指定したinit.oraパラメータの値を取得します。

GET_TIMEファンクション


現在の時間を100分の1秒単位で検出します。

INVALIDATEプロシージャ


データベース・オブジェクトを無効化し、オプションでそのPL/SQLコンパイラのパラメータ設定を変更します。

IS_CLUSTER_DATABASEファンクション


このデータベースがクラスタ・データベース・モードで実行しているかどうかを検出します。

MAKE_DATA_BLOCK_ADDRESSファンクション


ファイル番号とブロック番号を指定して、データ・ブロック・アドレスを作成します。

NAME_RESOLVEプロシージャ


指定した名前を解決します。

NAME_TOKENIZEプロシージャ


指定した名前を解析するためにパーサーをコールします。

PORT_STRINGファンクション


Oracleとオペレーティング・システムのバージョンを一意に識別する文字列を戻します。

TABLE_TO_COMMAプロシージャ


名前のPL/SQL表を、カンマで区切られた名前のリストに変換します。

VALIDATEプロシージャ


名前のPL/SQL表を、カンマで区切られた名前のリストに変換します。



ACTIVE_INSTANCESプロシージャ

このプロシージャは、アクティブなインスタンスを戻します。

構文

DBMS_UTILITY.ACTIVE_INSTANCES (
   instance_table   OUT INSTANCE_TABLE,
   instance_count   OUT NUMBER);

パラメータ

表116-4 ACTIVE_INSTANCESプロシージャのパラメータ

プロシージャ 説明

instance_table

アクティブなインスタンス番号と名前のリストが含まれます。進行中のインスタンスがない場合、リストは空になります。

instance_count

アクティブなインスタンスの数。



ANALYZE_DATABASEプロシージャ


注意:

このサブプログラムは、Oracle Database Release 10g で使用されなくなります。下位互換性のため、マニュアルに残されています。現在の機能については、第103章「DBMS_STATS」を参照してください。

このプロシージャは、データベース内にあるすべての表、クラスタおよび索引でANALYZEコマンドを実行します。このプロシージャを使用して、非オプティマイザ統計情報を収集します。オプティマイザ統計情報の場合は、DBMS_STATS.GATHER_DATABASE_STATSプロシージャを使用します。

構文

DBMS_UTILITY.ANALYZE_DATABASE (
   method           VARCHAR2,
   estimate_rows    NUMBER   DEFAULT NULL,
   estimate_percent NUMBER   DEFAULT NULL,
   method_opt       VARCHAR2 DEFAULT NULL);

パラメータ

表116-5 ANALYZE_DATABASEプロシージャのパラメータ

パラメータ 説明

method

ESTIMATECOMPUTEまたはDELETEのいずれかを設定します。

ESTIMATEを設定した場合は、estimate_rowsまたはestimate_percentのいずれかを0(ゼロ)以外に設定する必要があります。

estimate_rows

推定する行数。

estimate_percent

推定する行のパーセント。

estimate_rowsが指定されている場合、このパラメータは無視されます。

method_opt

次の書式の分析方法オプション。

[ FOR TABLE ]
[ FOR ALL [INDEXED] COLUMNS] [SIZE n]
[ FOR ALL INDEXES ]

例外

表116-6 ANALYZE_DATABASEプロシージャの例外

例外 説明

ORA-20000

このデータベース内のいずれかのオブジェクトに対して権限が不十分です。


使用上の注意

このプロシージャを使用して、非オプティマイザ統計情報を収集します。オプティマイザ統計情報の場合は、DBMS_STATS.GATHER_TABLE_STATSまたはDBMS_STATS.GATHER_INDEX_STATSプロシージャを使用します。


ANALYZE_PART_OBJECTプロシージャ

このプロシージャは、次のSQLと同じです。

"ANALYZE TABLE|INDEX [<schema>.]<object_name> PARTITION <pname> [<command_type>] [<command_opt>] [<sample_clause>]

構文

DBMS_UTILITY.ANALYZE_PART_OBJECT (
   schema        IN VARCHAR2 DEFAULT NULL,
   object_name   IN VARCHAR2 DEFAULT NULL,
   object_type   IN CHAR     DEFAULT 'T',
   command_type  IN CHAR     DEFAULT 'E',
   command_opt   IN VARCHAR2 DEFAULT NULL,
   sample_clause IN VARCHAR2 DEFAULT 'sample 5 percent ');

パラメータ

表116-7 ANALYZE_PART_OBJECTプロシージャのパラメータ

パラメータ 説明

schema

object_nameのスキーマ。

object_name

分析するオブジェクトの名前。パーティション化されている必要があります。

object_type

オブジェクトのタイプ。T(表)またはI(索引)である必要があります。

command_type

V(構造の検証)を指定する必要があります。

command_opt

command_typeのその他のオプション。

CEについては、FOR表、FORのすべてのLOCAL索引、FORのすべての列、または分析統計(表)の'FOR'オプションをいくつか組み合せることが可能です。Vについては、object_typeがTのときにCASCADEが可能です。

sample_clause

command_typeが'E'の場合に使用するサンプル句。


使用上の注意

オブジェクトの各パーティションについて、ジョブ・キューを使用して並列に実行します。


ANALYZE_SCHEMAプロシージャ


注意:

このサブプログラムはOracle Database Release 10gで使用されなくなります。下位互換性のため、マニュアルに残されています。現在の機能については、第103章「DBMS_STATS」を参照してください。

このプロシージャは、スキーマ内にあるすべての表、クラスタおよび索引でANALYZEコマンドを実行します。このプロシージャを使用して、非オプティマイザ統計情報を収集します。オプティマイザ統計情報の場合は、DBMS_STATS.GATHER_SCHEMA_STATSプロシージャを使用します。

構文

DBMS_UTILITY.ANALYZE_SCHEMA (
   schema           VARCHAR2,
   method           VARCHAR2,
   estimate_rows    NUMBER   DEFAULT NULL,
   estimate_percent NUMBER   DEFAULT NULL,
   method_opt       VARCHAR2 DEFAULT NULL);

パラメータ

表116-8 ANALYZE_SCHEMAプロシージャのパラメータ

パラメータ 説明

schema

スキーマの名前。

method

ESTIMATECOMPUTEまたはDELETEのいずれかを設定します。

ESTIMATEを設定した場合は、estimate_rowsまたはestimate_percentのいずれかを0(ゼロ)以外に設定する必要があります。

estimate_rows

推定する行数。

estimate_percent

推定する行のパーセント。

estimate_rowsが指定されている場合、このパラメータは無視されます。

method_opt

次の書式の分析方法オプション。

[ FOR TABLE ]
[ FOR ALL [INDEXED] COLUMNS] [SIZE n]
[ FOR ALL INDEXES ]

例外

表116-9 ANALYZE_SCHEMAプロシージャの例外

例外 説明

ORA-20000

このスキーマ内のいずれかのオブジェクトに対して権限が不十分です。



CANONICALIZEプロシージャ

このプロシージャは、指定した文字列を正規化します。このプロシージャは単一の予約語またはキーワード('table'など)を処理し、' table 'がTABLEになるように単一の識別子の空白を取り除きます。

構文

DBMS_UTILITY.CANONICALIZE(
   name           IN    VARCHAR2,
   canon_name     OUT   VARCHAR2,
   canon_len      IN    BINARY_INTEGER);

パラメータ

表116-10 CANONICALIZEプロシージャのパラメータ

パラメータ 説明

name

正規化する文字列。

canon_name

正規化された文字。

canon_len

正規化する文字列の長さ(バイト単位)。


戻り値

canon_nameの先頭のcanon_lenバイトを戻します。

使用上の注意


COMMA_TO_TABLEプロシージャ

これらのプロシージャは、カンマで区切られた名前のリストを、名前のPL/SQL表に変換します。2番目のバージョンでは、完全修飾属性名をサポートしています。

構文

DBMS_UTILITY.COMMA_TO_TABLE (
   list   IN  VARCHAR2,
   tablen OUT BINARY_INTEGER,
   tab    OUT uncl_array);

DBMS_UTILITY.COMMA_TO_TABLE (
   list   IN  VARCHAR2,
   tablen OUT BINARY_INTEGER,
   tab    OUT lname_array);

パラメータ

表116-11 COMMA_TO_TABLEプロシージャのパラメータ

パラメータ 説明

list

表名のカンマで区切られたリスト。

tablen

PL/SQL表にある表の数。

tab

表名のリストを含んだPL/SQL表。


戻り値

PL/SQL表が、値1..nn+1 is nullとともに戻されます。

使用上の注意

listは、空ではないカンマで区切られたリストであることが必要です。カンマ区切りのリスト以外の場合は拒否されます。二重引用符内のカンマは無視されます。

カンマで区切られたリストに、ハイフン(-)などのマルチバイト・キャラクタを含めることはできません。

tabにある値は、変換されずに元のリストからカットされます。


COMPILE_SCHEMAプロシージャ

このプロシージャは、指定したスキーマ内にあるすべてのプロシージャ、ファンクション、パッケージおよびトリガーをコンパイルします。

構文

DBMS_UTILITY.COMPILE_SCHEMA (
   schema          VARCHAR2,
   compile_all     BOOLEAN DEFAULT TRUE,
   reuse_settings  BOOLEAN DEFAULT FALSE);

パラメータ

表116-12 COMPILE_SCHEMAプロシージャのパラメータ

パラメータ 説明

schema

スキーマの名前。

compile_all

TRUEに設定すると、VALIDであるかどうかに関係なく、スキーマ内のすべてをコンパイルします。

FALSEに設定すると、INVALIDオブジェクトのみをコンパイルします。

reuse_settings

オブジェクトのセッション設定を再利用するかどうか、または現在のセッション設定を採用するかどうかを指定します。


例外

表116-13 COMPILE_SCHEMAプロシージャの例外

例外 説明

ORA-20000

このスキーマ内のいずれかのオブジェクトに対して権限が不十分です。

ORA-20001

SYSオブジェクトを再コンパイルできません。

ORA-20002

最大反復数を超えています。一部のオブジェクトが再コンパイルされていない可能性があります。


使用上の注意

このプロシージャのコール後、ステータスがINVALIDの項目をビューALL_OBJECTSから選択して、すべてのオブジェクトが正常にコンパイルされたかどうかを調べます。

Oracle Enterprise Managerのコマンドを使用すると、INVALIDのオブジェクトに関連するエラーを表示できます。

SHOW ERRORS <type> <schema>.<name>

CREATE_ALTER_TYPE_ERROR_TABLEプロシージャ

このプロシージャは、ALTER TYPE文のEXCEPTION句で使用するエラー表を作成します。

構文

DBMS_UTILITY.CREATE_ALTER_TYPE_ERROR_TABLE(
   schema_name     IN     VARCHAR2,
   table_name      IN     VARCHAR2);

パラメータ

表116-14 CREATE_ALTER_TYPE_ERROR_TABLEプロシージャのパラメータ

パラメータ 説明

schema_name

スキーマの名前。

table_name

作成する表名。


例外

表がすでに存在する場合、エラーが戻されます。


CURRENT_INSTANCEファンクション

このファンクションは、現在接続しているインスタンス番号を戻します。接続しているインスタンスが切断されると、NULLを戻します。

構文

DBMS_UTILITY.CURRENT_INSTANCE
   RETURN NUMBER;

DATA_BLOCK_ADDRESS_BLOCKファンクション

このファンクションは、データ・ブロック・アドレスのブロック番号部分を取得します。

構文

DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK (
   dba NUMBER)
  RETURN NUMBER;

パラメータ

表116-15 DATA_BLOCK_ADDRESS_BLOCKファンクションのパラメータ

パラメータ 説明

dba

データ・ブロック・アドレス。


プラグマ

pragma restrict_references(data_block_address_block, WNDS, RNDS, WNPS, RNPS);

戻り値

ブロックのブロック・オフセット。

使用上の注意

このファンクションは、ビッグファイル表領域に属するデータブロックには使用しないでください。


DATA_BLOCK_ADDRESS_FILEファンクション

このファンクションは、データ・ブロック・アドレスのファイル番号部分を取得します。

構文

DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE (
   dba NUMBER)
  RETURN NUMBER;

パラメータ

表116-16 DATA_BLOCK_ADDRESS_FILEファンクションのパラメータ

パラメータ 説明

dba

データ・ブロック・アドレス。


プラグマ

pragma restrict_references (data_block_address_file, WNDS, RNDS, WNPS, RNPS);

戻り値

ブロックを含むファイル。

使用上の注意

このファンクションは、ビッグファイル表領域に属するデータブロックには使用しないでください。


DB_VERSIONプロシージャ

このプロシージャは、データベースに関するバージョン情報を戻します。

構文

DBMS_UTILITY.DB_VERSION (
   version       OUT VARCHAR2,
   compatibility OUT VARCHAR2);

パラメータ

表116-17 DB_VERSIONプロシージャのパラメータ

パラメータ 説明

version

データベースの内部ソフトウェア・バージョンを表す文字列(例: 7.1.0.0.0)。

この文字列の長さは可変なので、データベース・バージョンによって決定されます。

compatibility

COMPATIBLEがあるinit.oraパラメータによって決定する、データベースの互換性設定。

このパラメータがinit.oraファイルで指定されていない場合は、NULLが戻されます。



EXEC_DDL_STATEMENTプロシージャ

このプロシージャは、parse_stringでDDL文を実行します。

構文

DBMS_UTILITY.EXEC_DDL_STATEMENT (
   parse_string IN VARCHAR2);

パラメータ

表116-18 EXEC_DDL_STATEMENTプロシージャのパラメータ

パラメータ 説明

parse_string

実行するDDL文。



FORMAT_CALL_STACKファンクション

このファンクションは、現行のコール・スタックをフォーマットします。このファンクションは、コール・スタックにアクセスするための任意ストアド・プロシージャまたはトリガーで使用できます。このファンクションは、デバッグ時に役立ちます。

構文

DBMS_UTILITY.FORMAT_CALL_STACK
  RETURN VARCHAR2;

プラグマ

pragma restrict_references(format_call_stack,WNDS);

戻り値

最大2000バイトまでのコール・スタックを戻します。


FORMAT_ERROR_BACKTRACEファンクション

このプロシージャは、有効範囲外の例外ハンドラからコールされた場合でも、例外が発生したポイントのコール・スタックを表示します。出力は、SQLERRMファンクションの出力と似ていますが、サイズ制限が異なります。

構文

DBMS_UTILITY.FORMAT_ERROR_BACKTRACE
  RETURN VARCHAR2;

戻り値

バックトレース文字列。現在処理されているエラーがない場合、NULL文字列が返されます。

CREATE OR REPLACE PROCEDURE Log_Errors ( i_buff in varchar2 ) IS
  g_start_pos integer := 1;
  g_end_pos  integer;

  FUNCTION Output_One_Line RETURN BOOLEAN IS
  BEGIN
    g_end_pos := Instr ( i_buff, Chr(10), g_start_pos );

    CASE g_end_pos > 0
      WHEN true THEN
        DBMS_OUTPUT.PUT_LINE ( Substr ( i_buff, g_start_pos,
g_end_pos-g_start_pos ) );
        g_start_pos := g_end_pos+1;
        RETURN TRUE;

      WHEN FALSE THEN
        DBMS_OUTPUT.PUT_LINE ( Substr ( i_buff, g_start_pos,
(Length(i_buff)-g_start_pos)+1 ) );
        RETURN FALSE;
    END CASE;
  END Output_One_Line;

BEGIN
  WHILE Output_One_Line() LOOP NULL;
  END LOOP;
END Log_Errors;
/

Set Doc Off
Set Feedback off
Set Echo Off

CREATE OR REPLACE PROCEDURE P0 IS
  e_01476 EXCEPTION; pragma exception_init ( e_01476, -1476 );
BEGIN
  RAISE e_01476;
END P0;
/
Show Errors

CREATE OR REPLACE PROCEDURE P1 IS
BEGIN
  P0();
END P1;
/
SHOW ERRORS

CREATE OR REPLACE PROCEDURE P2 IS
BEGIN
  P1();
END P2;
/
SHOW ERRORS

CREATE OR REPLACE PROCEDURE P3 IS
BEGIN
  P2();
END P3;
/
SHOW ERRORS

CREATE OR REPLACE PROCEDURE P4 IS
  BEGIN P3(); END P4;
/
CREATE OR REPLACE PROCEDURE P5 IS
  BEGIN P4(); END P5;
/
SHOW ERRORS

CREATE OR REPLACE PROCEDURE Top_Naive IS
BEGIN
  P5();
END Top_Naive;
/
SHOW ERRORS

CREATE OR REPLACE PROCEDURE Top_With_Logging IS
  -- NOTE: SqlErrm in principle gives the same info as Format_Error_Stack.
  -- But SqlErrm is subject to some length limits,
  -- while Format_Error_Stack is not.
BEGIN
  P5();
EXCEPTION
  WHEN OTHERS THEN
    Log_Errors ( 'Error_Stack...' || Chr(10) ||
      DBMS_UTILITY.FORMAT_ERROR_STACK() );
    Log_Errors ( 'Error_Backtrace...' || Chr(10) ||
      DBMS_UTILITY.FORMAT_ERROR_BACKTRACE() );
    DBMS_OUTPUT.PUT_LINE ( '----------' );
END Top_With_Logging;
/
SHOW ERRORS

--------------------------------------------------------------------------------

Set ServerOutput On
call Top_Naive()
  /*
  ERROR at line 1:
  ORA-01476: divisor is equal to zero
  ORA-06512: at "U.P0", line 4
  ORA-06512: at "U.P1", line 3
  ORA-06512: at "U.P2", line 3
  ORA-06512: at "U.P3", line 3
  ORA-06512: at "U.P4", line 2
  ORA-06512: at "U.P5", line 2
  ORA-06512: at "U.TOP_NAIVE", line 3
  */
  ;

Set ServerOutput On
call Top_With_Logging()
  /*
  Error_Stack...
  ORA-01476: divisor is equal to zero
  Error_Backtrace...
  ORA-06512: at "U.P0", line 4
  ORA-06512: at "U.P1", line 3
  ORA-06512: at "U.P2", line 3
  ORA-06512: at "U.P3", line 3
  ORA-06512: at "U.P4", line 2
  ORA-06512: at "U.P5", line 2
  ORA-06512: at "U.TOP_WITH_LOGGING", line 6
  ----------
  */
  ;

/*
  ORA-06512:
  Cause:
    Backtrace message as the stack is
    unwound by unhandled exceptions.
  Action:
    Fix the problem causing the exception
    or write an exception handler for this condition.
    Or you may need to contact your application administrator
    or database administrator.
*/

FORMAT_ERROR_STACKファンクション

このファンクションは、現行のエラー・スタックをフォーマットします。このファンクションは、全エラー・スタックを表示するための例外ハンドラで使用できます。

構文

DBMS_UTILITY.FORMAT_ERROR_STACK
  RETURN VARCHAR2;

戻り値

最大2000バイトまでのエラー・スタックを戻します。

戻り値

詳細は、FORMAT_ERROR_BACKTRACEファンクションを参照してください。


GET_CPU_TIMEファンクション

このファンクションは、現在のCPU時間を100分の1秒単位で戻します。CPU時間は、任意の時点からの時間を100分の1秒の数で戻されます。

構文

  DBMS_UTILITY.GET_CPU_TIME
   RETURN NUMBER;

戻り値

任意の時点からの時間を100分の1秒の数で戻します。


GET_DEPENDENCYプロシージャ

このプロシージャは、渡されたオブジェクトの依存関係を示します。

構文

  DBMS_UTILITY.GET_DEPENDENCY
   type      IN     VARCHAR2,
   schema    IN     VARCHAR2,
   name      IN     VARCHAR2);

パラメータ

表116-19 GET_DEPENDENCYプロシージャのパラメータ

パラメータ 説明

type

オブジェクトのタイプ。たとえば、オブジェクトが表の場合、タイプに'TABLE'を指定します。

schema

オブジェクトのスキーマ名。

name

オブジェクトの名前。


使用上の注意

このプロシージャは、DBMS_OUTPUTパッケージを使用して結果を表示します。依存性を表示する場合は、SET SERVEROUTPUT ONを宣言する必要があります。また、DBMS_OUTPUT出力バッファをチェックするアプリケーションでこのサブプログラムを起動し、GET_LINESなどのDBMS_OUTPUTサブプログラムを使用して出力を取得することもできます。


GET_HASH_VALUEファンクション

このファンクションは、指定した文字列についてハッシュ値を計算します。

構文

DBMS_UTILITY.GET_HASH_VALUE (
   name      VARCHAR2,
   base      NUMBER,
   hash_size NUMBER)
  RETURN NUMBER;

パラメータ

表116-20 GET_HASH_VALUEファンクションのパラメータ

パラメータ 説明

name

ハッシュする文字列。

base

戻されるハッシュ値が始まるベース値。

hash_size

必要とするハッシュ表のサイズ。


プラグマ

pragma restrict_references(get_hash_value, WNDS, RNDS, WNPS, RNPS);

戻り値

ハッシュ値は、入力文字列に基づいています。たとえば、ハッシュ値が1000から3047の範囲にある文字列についてハッシュ値を取得するには、ベース値として1000、hash_size値として2048を使用します。hash_sizeパラメータは、2の累乗を使用すると動作が最適になります。


GET_PARAMETER_VALUEファンクション

このファンクションは、指定したinit.oraパラメータの値を取得します。

構文

DBMS_UTILITY.GET_PARAMETER_VALUE (
   parnam     IN        VARCHAR2,
   intval     IN OUT    BINARY_INTEGER,
   strval     IN OUT    VARCHAR2)
  RETURN BINARY_INTEGER;

パラメータ

表116-21 GET_PARAMETER_VALUEファンクションのパラメータ

パラメータ 説明

parnam

パラメータ名。

intval

整数パラメータの値、または文字列パラメータの値の長さ。

strval

文字列パラメータの値。


戻り値

パラメータ・タイプ

使用上の注意

DBMS_UTILITY.GET_PARAMETER_VALUEを使用すると、init.oraに次のように設定した場合、/dir1の先頭のパラメータ設定のみが戻されます。

utl_file_dir = /dir1
utl_file_dir = /dir2

ただし、次のように指定すると、完全なカンマ区切り文字列が戻されます。

utl_file_dir = /dir1, /dir2

DECLARE
  parnam VARCHAR2(256);
  intval BINARY_INTEGER;
  strval VARCHAR2(256);
  partyp BINARY_INTEGER;
BEGIN
  partyp := dbms_utility.get_parameter_value('max_dump_file_size',
                                              intval, strval);
  dbms_output.put('parameter value is: ');
  IF partyp = 1 THEN
    dbms_output.put_line(strval);
  ELSE
    dbms_output.put_line(intval);
  END IF;
  IF partyp = 1 THEN
    dbms_output.put('parameter value length is: ');
    dbms_output.put_line(intval);
  END IF;
  dbms_output.put('parameter type is: ');
  IF partyp = 1 THEN
    dbms_output.put_line('string');
  ELSE
    dbms_output.put_line('integer');
  END IF;
END;

GET_TIMEファンクション

このファンクションは、現在の時間を100分の1秒単位で判別します。このサブプログラムは、主に経過時間を確認するために使用します。 このサブプログラムは、2回(プロセスの開始時と終了時)コールされ、2つ目の(後の)数から1つ目の(先の)数を引くことで経過時間を判別します。

構文

DBMS_UTILITY.GET_TIME
  RETURN NUMBER;

戻り値

このサブプログラムが起動された時点からの時間を100分の1秒の数で戻します。

使用上の注意

プラットフォームおよびマシンに応じて、-2147483648から2147483647の範囲の数が戻されます。したがってアプリケーションによる間隔の判別では、数に付加される記号(マイナス記号)を考慮する必要があります。たとえば2つの数が負である場合、アプリケーション・ロジックで、1つ目の(先の)数が、よりゼロに近い2つ目の(後の)数よりも大きいことが許可される必要があります。同様に、アプリケーションでは、1つ目の(先の)数が負で2つ目の(後の)数が正であることも許可される必要があります。


INVALIDATEプロシージャ

このプロシージャは、データベース・オブジェクトを無効化し、オプションでそのPL/SQLコンパイラのパラメータ設定を変更します。また、無効化されるオブジェクトに直接的または間接的に依存するすべてのオブジェクトも無効化します。

構文

DBMS_UTILITY.INVALIDATE (
   p_object_id              NUMBER,
   p_plsql_object_settings  VARCHAR2 DEFAULT NULL,
   p_option_flags           PLS_INTEGER DEFAULT 0);

パラメータ

表116-22 INVALIDATEプロシージャのパラメータ

パラメータ 説明

p_object_id

無効化するオブジェクトのID番号。これはALL_OBJECTSOBJECT_ID列の値と同じです。object_id引数がNULLまたは無効な値の場合は、例外inv_not_exist_or_no_privが発生します。このプロシージャのコール元は、無効化されるオブジェクトのCREATE権限を持っている必要があります。そうでない場合は、例外inv_not_exist_or_no_privが発生します。

p_plsql_object_settings

p_object_idによって指定されるオブジェクトがPL/SQLオブジェクトでない場合、このオプション・パラメータは無視されます。このパラメータに値を指定しない場合、PL/SQLコンパイラの設定は変更されません。つまり、REUSE SETTINGSと同じです。値を指定した場合は、1つ以上の空白で区切られたPL/SQLコンパイラ設定の値を指定する必要があります。各設定は1回のみ指定します。そうでない場合、例外inv_malformed_settingsが発生します。設定値は、p_object_idで指定したオブジェクトに関してのみ変更され、無効化されている可能性のある依存オブジェクトには影響しません。設定名および設定値では、大/小文字は区別されません。設定を省略し、REUSE SETTINGSを指定した場合、このライブラリ・ユニットの以前のコンパイルでのコンパイラ設定で値が指定されていると、Oracleデータベースは以前の値を使用します。設定を省略し、REUSE SETTINGSを指定しなかったか、または以前のコンパイルでパラメータを指定していなかった場合、データベースはセッション環境からこの設定のための値を取得します。

p_option_flags

このパラメータはオプションです。デフォルト値はゼロ(フラグなし)です。INVALIDATEによってサポートされるオプション・フラグです。

  • inv_error_on_restrictions(「定数」を参照): このサブプログラムは、無効化が可能なオブジェクトに様々な制限を課します。たとえば、p_object_idによって指定されたオブジェクトは表にできません。デフォルトでは、これらの条件に対してINVALIDATEが暗黙的に戻されます(例外は発生しません)。コール元がこのフラグを設定した場合は、例外inv_restricted_objectが発生します。


例外

表116-23 INVALIDATEプロシージャの例外

例外 説明

INV_NOT_EXIST_OR_NO_PRIV

object_id引数がNULLまたは無効な値の場合、あるいは無効化されているオブジェクトのCREATE権限をコール元が持っていない場合に発生します。

INV_MALFORMED_SETTINGS

コンパイラの設定がp_plsql_object_settingsパラメータで複数回指定された場合に発生します。

INV_RESTRICTED_OBJECT

p_object_idパラメータに関連する条件の様々な組合せが互いに矛盾する場合に発生します。


使用上の注意

p_object_idによって指定されるオブジェクトのオブジェクト・タイプ(ALL_OBJECTSobject_type列)は、PROCEDUREFUNCTIONPACKAGEPACKAGE BODYTRIGGERTYPETYPE BODYLIBRARYVIEWOPERATORSYNONYMまたはJAVA CLASSである必要があります。オブジェクトがこれらのタイプの1つでなく、p_option_flagsにフラグinv_error_on_restrictionsが指定されている場合は、例外inv_restricted_objectが発生します。そうでない場合は、何も実行されません。

p_object_idによって指定されるオブジェクトがSTANDARDのパッケージ仕様部、DBMS_STANDARDのパッケージ仕様部、あるいはDBMS_UTILITYのパッケージ仕様部または本体であり、p_option_flagsにフラグinv_error_on_restrictionsが指定されている場合は、例外inv_restricted_objectが発生します。そうでない場合は、何も実行されません。

p_object_idによって指定されるオブジェクトがオブジェクト・タイプ仕様部であり、そのタイプに依存する表が存在し、p_option_flagsにフラグinv_error_on_restrictionsが指定されている場合は、例外inv_restricted_objectが発生します。そうでない場合は、何も実行されません。

例1

DBMS_UTILITY.INVALIDATE (1232, 'PLSQL_OPTIMIZE_LEVEL = 2 REUSE SETTINGS');

object_id 1232がHRスキーマのremove_empプロシージャを参照するとします。 この場合、前述のコールは、remove_empプロシージャを無効とマークし、そのPLSQL_OPTIMIZE_LEVELコンパイラ設定を2に変更します。REUSE SETTINGSが指定されているため、他のコンパイラ設定の値は変更されません。

hr.remove_empに依存するオブジェクトも無効とマークされます。これらのコンパイラのパラメータは変更されません。

例2

DBMS_UTILITY.INVALIDATE (40775, 'plsql_code_type = native');

object_id 40775がOEスキーマのタイプ本体leaf_category_typを参照するとします。この場合、前述のコールは、このタイプ本体を無効とマークし、そのPLSQL_CODE_TYPEコンパイラ設定をNATIVEに変更します。REUSE SETTINGSが指定されているため、他のコンパイラ設定の値は現行のセッション環境から取得されます。

本体に依存できるオブジェクトはないため、無効化の伝達はありません。

例3

DBMS_UTILITY.INVALIDATE (40796);

object_id 40796がOEスキーマのビューoc_ordersを参照するとします。この場合、前述のコールはoc_ordersビューを無効とマークします。

oe.oc_ordersに依存するオブジェクトも無効とマークされます。


IS_CLUSTER_DATABASEファンクション

このファンクションは、このデータベースがクラスタ・データベース・モードで実行されているかどうかを検出します。

構文

DBMS_UTILITY.IS_CLUSTER_DATABASE
  RETURN BOOLEAN;

戻り値

インスタンスがクラスタ・データベース・モードで起動されている場合はTRUEを戻し、それ以外の場合はFALSEを戻します。


MAKE_DATA_BLOCK_ADDRESSファンクション

このファンクションは、ファイル番号とブロック番号を指定したデータ・ブロック・アドレスを作成します。データ・ブロック・アドレスは、データベース内のブロックを識別するために使用する内部構造です。このファンクションは、データ・ブロック・アドレスを含んだ特定の固定表にアクセスするときに役立ちます。

構文

DBMS_UTILITY.MAKE_DATA_BLOCK_ADDRESS (
   file  NUMBER,
   block NUMBER)
  RETURN NUMBER;

パラメータ

表116-24 MAKE_DATA_BLOCK_ADDRESSファンクションのパラメータ

パラメータ 説明

file

ブロックを含むファイル。

block

ブロック増分値に基づくファイル内でのブロックのオフセット。


プラグマ

pragma restrict_references (make_data_block_address, WNDS, RNDS, WNPS, RNPS);

戻り値

データ・ブロック・アドレス。


NAME_RESOLVEプロシージャ

このプロシージャは、指定した名前を解決します。必要に応じてシノニム変換と認可チェックが含まれます。

構文

DBMS_UTILITY.NAME_RESOLVE (
   name          IN  VARCHAR2,
   context       IN  NUMBER,
   schema        OUT VARCHAR2,
   part1         OUT VARCHAR2,
   part2         OUT VARCHAR2,
   dblink        OUT VARCHAR2,
   part1_type    OUT NUMBER,
   object_number OUT NUMBER);

パラメータ

表116-25 NAME_RESOLVEプロシージャのパラメータ

パラメータ 説明

name

オブジェクト名。

この名前はフォーム[[a.]b.]c[@d]で指定します。a、b、cはSQL識別子、dはDBリンクです。DBリンクでは、構文チェックは実行されません。DBリンクが指定されている場合や名前がDBリンクの一部に変換される場合、オブジェクトは解決されませんが、schemapart1part2およびdblink OUTの各パラメータは入力されます。

a、bおよびcは、デリミタ付き識別子の場合があり、グローバリゼーション・サポート(NLS)文字(シングルおよびマルチバイト)を含む場合があります。

context

0から8の範囲の整数を指定します。

schema

オブジェクトのスキーマ。nameパラメータにスキーマが指定されていない場合、schemaは、名前を解決することによって決定されます。

part1

名前の最初の部分。この名前のタイプは、part1_typeに指定されます(シノニムまたはパッケージ)。

part2

NULL以外に設定すると、これがサブプログラム名となります。part1がNULL以外の場合、このサブプログラムはpart1が示すパッケージ内に配置されます。part1がNULLの場合、このサブプログラムはトップ・レベルのサブプログラムになります。

dblink

このパラメータがNULL以外の場合、データベース・リンクは、nameの一部として指定されたか、またはnameがデータベース・リンクの一部に変換されるシノニムとして指定されたかのいずれかです。名前変換がさらに必要な場合は、このリモート・ノードでDBMS_UTILITY.NAME_RESOLVEプロシージャをコールする必要があります。

part1_type

part1のタイプは、次のとおりです。

  • 5 シノニム

  • 7 プロシージャ(トップレベル)

  • 8 ファンクション(トップレベル)

  • 9 パッケージ

object_number

オブジェクト識別子。


例外

すべてのエラーは、例外を呼び出すことによって処理されます。オブジェクト名の指定時に起こり得る各種の構文エラーに基づいて、広範囲にわたる例外が用意されています。


NAME_TOKENIZEプロシージャ

このプロシージャは、パーサーをコールして、"a [. b [. c ]][@ dblink ]"と指定した名前を解析します。二重引用符を削除するか、または引用符がない場合は大文字に変換します。ソートに関するすべてのコメントは無視し、意味的な分析は行いません。不明な値はNULLのまま残ります。

構文

DBMS_UTILITY.NAME_TOKENIZE (
   name    IN  VARCHAR2,
   a       OUT VARCHAR2,
   b       OUT VARCHAR2,
   c       OUT VARCHAR2,
   dblink  OUT VARCHAR2,
   nextpos OUT BINARY_INTEGER);

パラメータ

abcおよびdblinkは、それぞれのanextbnextcnextdnextの次のトークンが開始される場所を示します。


PORT_STRINGファンクション

このファンクションは、オペレーティング・システムと、TWO TASK PROTOCOLバージョンのデータベースを識別する文字列を戻します。たとえば、VAX/VMX-7.1.0.0が戻ります。

最大長はポート固有の長さです。

構文

DBMS_UTILITY.PORT_STRING
   RETURN VARCHAR2;

プラグマ

pragma restrict_references(port_string, WNDS, RNDS, WNPS, RNPS);

TABLE_TO_COMMAプロシージャ

これらのプロシージャは、名前のPL/SQL表を、カンマで区切られた名前のリストに変換します。PL/SQL表を1..nに変換してn+1 nullで終了します。2番目のバージョンでは、完全修飾属性名をサポートしています。

構文

DBMS_UTILITY.TABLE_TO_COMMA (
   tab    IN  UNCL_ARRAY,
   tablen OUT BINARY_INTEGER,
   list   OUT VARCHAR2);

DBMS_UTILITY.TABLE_TO_COMMA (
   tab    IN  lname_array,
   tablen OUT BINARY_INTEGER,
   list   OUT VARCHAR2);

パラメータ

表116-26 TABLE_TO_COMMAプロシージャのパラメータ

パラメータ 説明

tab

表名のリストを含んだPL/SQL表。

tablen

PL/SQL表にある表の数。

list

表名のカンマで区切られたリスト。


戻り値

カンマで区切られたリストおよび表内で検出された要素の数。


VALIDATEプロシージャ

このプロシージャは、無効なデータベース・オブジェクトを有効にします。

構文

  DBMS_UTILITY.VALIDATE(
    object_id       NUMBER);

パラメータ

表116-27 VALIDATEプロシージャのパラメータ

パラメータ 説明

object_id

検証するオブジェクトのID番号。これはALL_OBJECTSOBJECT_ID列の値と同じです。


使用上の注意

オブジェクトが、存在しないか、すでに有効か、検証不可能な場合、エラーは発生しません。