179 DBMS_UTILITY
DBMS_UTILITYパッケージ
は、各種のユーティリティ・サブプログラムを提供します。
この章のトピックは、次のとおりです:
179.1 DBMS_UTILITYの推奨されないサブプログラム
次のDBMS_UTILITY
サブプログラムは、Oracle Database 12cリリース12.2では非推奨です。
ノート:
新しいアプリケーションでは、推奨されないプロシージャは使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。
-
v$_parameter
を直接問い合せて、init.ora
パラメータの値を取得します。 -
<a href="DBMS_UTILITY.html#GUID-33DB69CE-1AEC-4F81-B67D-388FE6FE0F59" title='This procedure is equivalent to SQL: "ANALYZE TABLE|INDEX [<schema>.]<object_name> PARTITION <pname> [<command_type>] [<command_opt>] [
ANALYZE_PART_OBJECTプロシージャ DBMS_STATS
を使用して統計を収集します。 -
このサブプログラムの代替機能はありません。ただし、ディクショナリ・ビューを直接問い合せることはできます。
これらのサブプログラムの代替機能はありません。
179.2 DBMS_UTILITYのセキュリティ・モデル
DBMS_UTILITY
は、NAME_RESOLVE
プロシージャおよびCOMPILE_SCHEMA
プロシージャのコール・ユーザーの権限で実行されます。これは、SQLが正しく動作するために必要です。
このパッケージは、SYS
として実行されません。権限は、DBMS_DDL
を使用してチェックされます。
179.3 DBMS_UTILITYの定数
DBMS_UTILITY
パッケージは、パラメータ値の指定時に使用する1つの定数を定義します。
この定数を、次の表に示します。
表179-1 DBMS_UTILITYの定数
名前 | タイプ | 値 | 説明 |
---|---|---|---|
|
|
|
この定数は、 |
179.4 DBMS_UTILITYの例外
次の表に、DBMS_UTILITY
で発生する例外を示します。
表179-2 DBMS_UTILITYで発生する例外
例外 | エラー・コード | 説明 |
---|---|---|
|
-24237 |
|
|
-24238 |
コンパイラの設定が |
|
-24239 |
|
179.5 DBMS_UTILITYのデータ構造
DBMS_UTILITY
パッケージでは、単一のRECORD
タイプと複数のTABLE
タイプを定義します。
レコード・タイプ
179.5.1 DBMS_UTILITY INSTANCE_RECORDレコード・タイプ
このタイプは、アクティブなインスタンス番号とインスタンス名のペアのリストを示します。
構文
TYPE INSTANCE_RECORD IS RECORD ( inst_number NUMBER, inst_name VARCHAR2(60));
フィールド
表179-3 INSTANCE_RECORDレコード・タイプのフィールド
フィールド | 説明 |
---|---|
|
アクティブなインスタンス番号 |
|
インスタンス名 |
179.5.2 DBMS_UTILITY DBLINK_ARRAY表タイプ
このタイプは、データベース・リンクのリストを格納します。
構文
TYPE DBLINK_ARRAY IS TABLE OF VARCHAR2(128) INDEX BY BINARY_INTEGER;
179.5.3 DBMS_UTILITY INDEX_TABLE_TYPE表タイプ
このタイプは、生成されたオブジェクトがユーザーに戻される順序を示します。
構文
TYPE INDEX_TABLE_TYPE IS TABLE OF BINARY_INTEGER INDEX BY BINARY_INTEGER;
179.5.4 DBMS_UTILITY INSTANCE_TABLE表タイプ
このタイプは、INSTANCE_RECORD
レコード・タイプの表を示します。
構文
TYPE INSTANCE_TABLE IS TABLE OF INSTANCE_RECORD INDEX BY BINARY_INTEGER;
使用上のノート
INSTANCE_TABLE
の索引の開始は1で、INSTANCE_TABLE
は稠密です。
179.5.5 DBMS_UTILITY LNAME_ARRAY表タイプ
このタイプは、完全修飾属性名を含むLONG NAME
のリストを格納します。
構文
TYPE LNAME_ARRAY IS TABLE OF VARCHAR2(4000) INDEX BY BINARY_INTEGER;
179.5.6 DBMS_UTILITY NAME_ARRAY表タイプ
このタイプは、NAME
のリストを格納します。
構文
TYPE NAME_ARRAY IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;
179.5.7 DBMS_UTILITY NUMBER_ARRAY表タイプ
このタイプは、生成されたオブジェクトがユーザーに戻される順序を示します。
構文
TYPE NUMBER_ARRAY IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
179.6 DBMS_UTILITYサブプログラムの要約
この表は、DBMS_UTILITY
サブプログラムを示し、簡単に説明しています。
表179-4 DBMS_UTILITYパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
アクティブなインスタンスを戻します。 |
|
データベース内のすべての表、クラスタおよび索引を分析します。 |
|
<a href="DBMS_UTILITY.html#GUID-33DB69CE-1AEC-4F81-B67D-388FE6FE0F59" title='This procedure is equivalent to SQL: "ANALYZE TABLE|INDEX [<schema>.]<object_name> PARTITION <pname> [<command_type>] [<command_opt>] [ |
指定した表および索引を分析します。 Oracle Database 12cリリース12.2以降では、 |
スキーマ内のすべての表、クラスタおよび索引を分析します。 |
|
指定した文字列を正規化します。 |
|
カンマで区切られた名前のリストを、名前のPL/SQL表に変換します。 |
|
指定したスキーマ内にあるすべてのプロシージャ、ファンクション、パッケージ、ビューおよびトリガーをコンパイルします。 |
|
|
|
現在接続しているインスタンス番号を戻します。 |
|
データ・ブロック・アドレスのブロック番号部分を取得します。 |
|
データ・ブロック・アドレスのファイル番号部分を取得します。 |
|
データベースに関するバージョン情報を戻します。 |
|
|
|
入力SQL問合せのすべてのビュー参照を対応するビュー副問合せと再帰的に置き換えます。 |
|
現行のコール・スタックをフォーマットします。 |
|
現行のエラーのポイントから、エラーが捕捉された例外ハンドラまでのバックトレースをフォーマットします。 |
|
現行のエラー・スタックをフォーマットします。 |
|
現在のCPU時間を100分の1秒単位で戻します。 |
|
渡されたオブジェクトの依存関係を示します。 Oracle Database 12cリリース12.2以降では、 |
|
データベース・プラットフォームのエンディアンを取得します。 |
|
指定した文字列についてハッシュ値を計算します。 |
|
指定したinit.oraパラメータの値を取得します。 Oracle Database 12cリリース12.2以降では、 |
|
MD5アルゴリズムを使用して、指定した文字列についてハッシュ値を計算します。 |
|
現在の時間を100分の1秒単位で戻します。 |
|
|
|
データベース・オブジェクトを無効化し、オプションでそのPL/SQLコンパイラのパラメータ設定を変更します。 |
|
指定の |
|
データベースがクラスタ・データベース・モードで実行されているかどうかを判別します。 |
|
ファイル番号とブロック番号を指定して、データ・ブロック・アドレスを作成します。 |
|
指定した名前を解決します。 |
|
指定した名前を解析するためにパーサーをコールします。 |
|
|
|
|
|
Oracleのバージョンおよびオペレーティング・システムを一意に識別する文字列を戻します。 |
|
SQL IDをハッシュ値に変換します。 |
|
名前のPL/SQL表を、カンマで区切られた名前のリストに変換します。 |
|
無効なデータベース・オブジェクトを有効にします。 |
|
表示された表にロックがあり、指定したSCNより前に開始されたすべてのトランザクション(コール元自体のトランザクションを除く)がコミットされるか、またはロールバックされるまで待機します。 |
179.6.1 ACTIVE_INSTANCESプロシージャ
このプロシージャは、アクティブなインスタンスを戻します。
構文
DBMS_UTILITY.ACTIVE_INSTANCES ( instance_table OUT INSTANCE_TABLE, instance_count OUT NUMBER);
パラメータ
表179-5 ACTIVE_INSTANCESプロシージャのパラメータ
プロシージャ | 説明 |
---|---|
|
アクティブなインスタンス番号と名前のリストが含まれます。進行中のインスタンスがない場合、リストは空になります。 |
|
アクティブなインスタンスの数。 |
179.6.2 ANALYZE_DATABASEプロシージャ
このプロシージャは、データベース内のすべての表、クラスタおよび索引を分析します。
構文
DBMS_UTILITY.ANALYZE_DATABASE ( method IN VARCHAR2, estimate_rows IN NUMBER DEFAULT NULL, estimate_percent IN NUMBER DEFAULT NULL, method_opt IN VARCHAR2 DEFAULT NULL);
パラメータ
表179-6 ANALYZE_DATABASEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
推定する行の数。 |
|
推定する行のパーセント。 |
|
次の形式のメソッド・オプション: [ [ [ |
例外
ORA
-20000
: このデータベース内のいずれかのオブジェクトに対する権限が不十分です。
179.6.3 ANALYZE_PART_OBJECTプロシージャ
このプロシージャは、SQLの"ANALYZE TABLE|INDEX [<schema>.]<object_name> PARTITION <pname> [<command_type>] [<command_opt>] [<sample_clause>]
と同等です。
ノート:
このサブプログラムの使用は推奨されず、より高度なテクノロジがかわりに使用されます。下位互換性の目的でのみ保持されています。かわりに、DBMS_STATSを使用して統計を収集できます。
構文
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 ');
パラメータ
表179-7 ANALYZE_PART_OBJECTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
分析するオブジェクトの名前。パーティション化されている必要があります。 |
|
オブジェクトのタイプ。 |
|
|
|
command_typeのその他のオプション。
|
|
|
使用上のノート
オブジェクトの各パーティションについて、ジョブ・キューを使用して並列に実行します。
179.6.4 ANALYZE_SCHEMAプロシージャ
このプロシージャは、スキーマ内のすべての表、クラスタおよび索引を分析します。
構文
DBMS_UTILITY.ANALYZE_SCHEMA ( schema IN VARCHAR2, method IN VARCHAR2, estimate_rows IN NUMBER DEFAULT NULL, estimate_percent IN NUMBER DEFAULT NULL, method_opt IN VARCHAR2 DEFAULT NULL);
パラメータ
表179-8 ANALYZE_SCHEMAプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前を指定します。 |
|
|
|
推定する行の数。 |
|
推定する行のパーセント。 |
|
次の形式のメソッド・オプション: [ [ [ |
例外
ORA
-20000
: このスキーマ内のいずれかのオブジェクトに対する権限が不十分です。
179.6.5 CANONICALIZEプロシージャ
このプロシージャは、指定した文字列を正規化します。このプロシージャは単一の予約語またはキーワード('table'など)を処理し、' table 'がTABLEになるように単一の識別子の空白を取り除きます。
構文
DBMS_UTILITY.CANONICALIZE( name IN VARCHAR2, canon_name OUT VARCHAR2, canon_len IN BINARY_INTEGER);
パラメータ
表179-9 CANONICALIZEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
正規化する文字列。 |
|
正規化された文字列。 |
|
正規化する文字列の長さ(バイト単位)。 |
戻り値
canon_name
の先頭のcanon_len
バイトを戻します。
使用上のノート
-
name
がNULLの場合、canon_name
はNULLになります。 -
name
がドットの付いた名前でない場合、およびname
が二重引用符で囲まれている場合、二重引用符を削除します。または、NLS_UPPERで大文字に変換します。この例には、スペースなどの特殊文字が使用されていても、二重引用符で囲まれていない名前は含まれません。 -
名前がドット付きの名前(a."b".cなど)の場合、ドット付きの名前の各要素の中に二重引用符で囲まれている要素がある場合、このコンポーネントに対する変換は行われません。かわりに、NLS_UPPERによって大文字に変換し、この要素の大文字の形式を二重引用符で囲みます。そのような場合、正規化された各要素は、"."で区切られて、入力位置に連結されます。
-
a[.b]*の後の他の文字は無視されます。
-
このプロシージャでは、'A B'のような例は処理されません。
例
-
a
はA
に変換されます。 -
"a"
はa
に変換されます。 -
"a".b
は"a"."B"
に変換されます。 -
"a".b,c.f
は"a"."B"
に変換され、",c.f"
が無視されます。
179.6.6 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);
パラメータ
表179-10 COMMA_TO_TABLEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
カンマで区切られた名前のリスト。最初のオーバーロードの場合、名前は 2番目のオーバーロードでは、
|
|
PL/SQL表にある表の数。 |
|
名前のリストを含んだPL/SQL表。 |
戻り値
PL/SQL表が、値1..n
とn+1
is
null
とともに戻されます。
使用上のノート
-
list
は、空ではないカンマで区切られたリストであることが必要で、カンマ区切りのリスト以外の場合は拒否されます。二重引用符内のカンマは無視されます。 -
カンマで区切られたリストに、マルチバイト・キャラクタを含めることはできません。
-
tab
にある値は、変換されずに元のリストからコピーされます。 -
区切り文字間の文字列の長さが30バイトを超えると、このプロシージャは失敗します。
179.6.7 COMPILE_SCHEMAプロシージャ
このプロシージャは、指定したスキーマ内にあるすべてのプロシージャ、ファンクション、パッケージ、ビューおよびトリガーをコンパイルします。
構文
DBMS_UTILITY.COMPILE_SCHEMA ( schema IN VARCHAR2, compile_all IN BOOLEAN DEFAULT TRUE, reuse_settings IN BOOLEAN DEFAULT FALSE);
パラメータ
表179-11 COMPILE_SCHEMAプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前を指定します。 |
|
|
|
オブジェクトのセッション設定を再利用するかどうか、または現在のセッション設定を採用するかどうかを指定します。 |
例外
表179-12 COMPILE_SCHEMAプロシージャの例外
例外 | 説明 |
---|---|
|
このスキーマ内のいずれかのオブジェクトに対して権限が不十分です。 |
|
|
|
最大反復数を超えています。一部のオブジェクトが再コンパイルされていない可能性があります。 |
使用上のノート
-
このサブプログラムは、 UTL_RECOMPパッケージの RECOMP_SERIALプロシージャのラッパーであることに注意してください。
-
このプロシージャのコール後、ステータスが
INVALID
の項目をビューALL_OBJECTS
から選択して、すべてのオブジェクトが正常にコンパイルされたかどうかを調べます。 -
Enterprise Managerのコマンドを使用すると、
INVALID
のオブジェクトに関連するエラーを表示できます。SHOW ERRORS <type> <schema>.<name>
179.6.8 CREATE_ALTER_TYPE_ERROR_TABLEプロシージャ
このプロシージャは、ALTER
TYPE
文のEXCEPTION
句で使用するためのエラー表を作成します。
構文
DBMS_UTILITY.CREATE_ALTER_TYPE_ERROR_TABLE( schema_name IN VARCHAR2, table_name IN VARCHAR2);
パラメータ
表179-13 CREATE_ALTER_TYPE_ERROR_TABLEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマの名前を指定します。 |
|
作成する表名。 |
例外
表がすでに存在する場合、エラーが戻されます。
179.6.9 CURRENT_INSTANCEファンクション
このファンクションは、現在接続しているインスタンス番号を戻します。接続しているインスタンスが停止している場合、NULLを戻します。
構文
DBMS_UTILITY.CURRENT_INSTANCE RETURN NUMBER;
179.6.10 DATA_BLOCK_ADDRESS_BLOCKファンクション
このファンクションは、データ・ブロック・アドレスのブロック番号部分を取得します。
構文
DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK ( dba NUMBER) RETURN NUMBER;
パラメータ
表179-14 DATA_BLOCK_ADDRESS_BLOCKファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
データ・ブロック・アドレス。 |
プラグマ
pragma restrict_references(data_block_address_block, WNDS, RNDS, WNPS, RNPS);
戻り値
ブロックのブロック・オフセット。
使用上のノート
このファンクションは、bigfile表領域に属するデータブロックには使用しないでください。
179.6.11 DATA_BLOCK_ADDRESS_FILEファンクション
このファンクションは、データ・ブロック・アドレスのファイル番号部分を取得します。
構文
DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE ( dba NUMBER) RETURN NUMBER;
パラメータ
表179-15 DATA_BLOCK_ADDRESS_FILEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
データ・ブロック・アドレス。 |
プラグマ
pragma restrict_references (data_block_address_file, WNDS, RNDS, WNPS, RNPS);
戻り値
ブロックを含むファイル。
使用上のノート
このファンクションは、bigfile表領域に属するデータブロックには使用しないでください。
179.6.12 DB_VERSIONプロシージャ
このプロシージャは、データベースに関するバージョン情報を戻します。
構文
DBMS_UTILITY.DB_VERSION ( version OUT VARCHAR2, compatibility OUT VARCHAR2);
パラメータ
表179-16 DB_VERSIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
データベースの内部ソフトウェア・バージョンを表す文字列(例: 7.1.0.0.0)。 この文字列の長さは可変なので、データベース・バージョンによって決定されます。 |
|
COMPATIBLEがある このパラメータが |
179.6.13 EXEC_DDL_STATEMENTプロシージャ
このプロシージャは、parse_string
でDDL文を実行します。
構文
DBMS_UTILITY.EXEC_DDL_STATEMENT ( parse_string IN VARCHAR2);
パラメータ
表179-17 EXEC_DDL_STATEMENTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
実行するDDL文。 |
179.6.14 EXPAND_SQL_TEXTプロシージャ
このプロシージャは、入力SQL問合せのすべてのビュー参照を対応するビュー副問合せと再帰的に置き換えます。
構文
DBMS_UTILITY.EXPAND_SQL_TEXT ( input_sql_text IN CLOB, output_sql_text OUT NOCOPY CLOB);
パラメータ
表179-18 EXPAND_SQL_TEXTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
入力SQL問合せのテキスト |
|
ビューが展開された問合せのテキスト |
例外
表179-19 EXPAND_SQL_TEXTプロシージャの例外
例外 | 説明 |
---|---|
|
現在のユーザーには、 |
|
|
|
入力が無効です。 |
|
入力LOBサイズが最大サイズの4GB -1を超えています。 |
使用上のノート
拡張され、マージされたSQL文テキストは、正常完了時にoutput_sql_textにコピーされます。結果として得られる問合せのテキストは、基礎となる表への参照のみを含み、意味的には同等です。ただし、次の点に注意してください。
-
いずれかのビューで実行者権限のファンクションが呼び出されたときに、ビュー所有者が拡張SQLテキストのコンパイル・ユーザーまたは実行ユーザーと異なる場合、実行者権限のファンクションが、作成される問合せのテキストで別のユーザーで呼び出されることがあります。
-
動的
WHERE
句を生成するファンクションが提供されると、VPDポリシーは別の方法で拡張されます。たとえば、ユーザーIDによって別の拡張が引き起こされた場合、このファンクションは別の方法で戻されます。 -
リモート・オブジェクトへの参照がある場合、結果は未定義になります。
179.6.15 FORMAT_CALL_STACKファンクション
このファンクションは、現行のコール・スタックをフォーマットします。このファンクションは、コール・スタックにアクセスするための任意ストアド・プロシージャまたはトリガーで使用できます。このファンクションは、デバッグ時に役立ちます。
構文
DBMS_UTILITY.FORMAT_CALL_STACK RETURN VARCHAR2;
プラグマ
pragma restrict_references(format_call_stack,WNDS);
戻り値
最大2000バイトまでのコール・スタックを戻します。
179.6.16 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. */
179.6.17 FORMAT_ERROR_STACKファンクション
このファンクションは、現行のエラー・スタックをフォーマットします。このファンクションは、全エラー・スタックを表示するための例外ハンドラで使用できます。
構文
DBMS_UTILITY.FORMAT_ERROR_STACK RETURN VARCHAR2;
戻り値
最大2000バイトまでのエラー・スタックを戻します。
179.6.18 GET_CPU_TIMEファンクション
このファンクションは、現在のCPU処理時間を100分の1秒単位で戻します。2つのコールが戻す時間の差分によって、2つのポイント間のCPU処理時間(経過時間の合計ではない)を測定します。
構文
DBMS_UTILITY.GET_CPU_TIME RETURN NUMBER;
戻り値
任意の時点からの時間を100分の1秒の数で戻します。
使用上のノート
実行された作業の量は、特定の操作の開始ポイントと終了ポイントの差分を測定することによって計算されます。
179.6.19 GET_DEPENDENCYプロシージャ
この推奨されないプロシージャは、渡されたオブジェクトの依存関係を示します。
ノート:
Oracle Database 12cリリース12.2以降では、このサブプログラムは非推奨になり、置き換えられています。推奨されないサブプログラムは、使用しないことをお薦めします。下位互換性の目的でのみ保持されています。
構文
DBMS_UTILITY.GET_DEPENDENCY type IN VARCHAR2, schema IN VARCHAR2, name IN VARCHAR2);
パラメータ
表179-20 GET_DEPENDENCYプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オブジェクトのタイプ。たとえば、オブジェクトが表の場合、タイプに' |
|
オブジェクトのスキーマ名。 |
|
オブジェクト名 |
使用上のノート
このプロシージャは、 DBMS_OUTPUT パッケージを使用して結果を表示するため、依存性を表示したい場合は、SET SERVEROUTPUT ON
を宣言する必要があります。また、DBMS_OUTPUT
出力バッファをチェックするアプリケーションでこのサブプログラムを起動し、DBMS_OUTPUT
などのGET_LINES
サブプログラムを使用して出力を取得することもできます。
179.6.20 GET_ENDIANNESSファンクション
このファンクションは、データベース・プラットフォームのエンディアンを取得します。
構文
DBMS_UTILITY.GET_ENDIANNESS RETURN NUMBER;
戻り値
データベース・プラットフォームのエンディアンを示すNUMBER
値(big-endianの場合は1、little-endianの場合は2)。
179.6.21 GET_HASH_VALUEファンクション
このファンクションは、指定した文字列についてハッシュ値を計算します。
構文
DBMS_UTILITY.GET_HASH_VALUE ( name VARCHAR2, base NUMBER, hash_size NUMBER) RETURN NUMBER;
パラメータ
表179-21 GET_HASH_VALUEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
ハッシュする文字列。 |
|
戻されるハッシュ値が始まるベース値。 |
|
必要とするハッシュ表のサイズ。 |
プラグマ
pragma restrict_references(get_hash_value, WNDS, RNDS, WNPS, RNPS);
戻り値
ハッシュ値は、入力文字列に基づいています。たとえば、ハッシュ値が1000から3047の範囲にある文字列についてハッシュ値を取得するには、ベース値として1000、hash_size
値として2048を使用します。hash_size
パラメータは、2の累乗を使用すると動作が最適になります。
179.6.22 GET_PARAMETER_VALUEファンクション
この推奨されないファンクションは、指定したinit.ora
パラメータの値を取得します。
ノート:
このサブプログラムの使用は推奨されず、より高度なテクノロジがかわりに使用されます。下位互換性の目的でのみ保持されています。かわりに、v$_parameter
を直接問い合せることができます。
構文
DBMS_UTILITY.GET_PARAMETER_VALUE ( parnam IN VARCHAR2, intval IN OUT BINARY_INTEGER, strval IN OUT VARCHAR2, listno IN BINARY_INTEGER DEFAULT 1) RETURN BINARY_INTEGER;
パラメータ
表179-22 GET_PARAMETER_VALUEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
パラメータ名 |
|
整数パラメータの値、または文字列パラメータの値の長さ。 |
|
文字列パラメータの値。 |
|
リスト項目番号。複数回指定して複数の値を蓄積可能なパラメータからパラメータ値を取得する場合は、このパラメータを使用して個別にそれぞれのパラメータを取得します。 |
戻り値
パラメータ・タイプ:
-
パラメータが
INTEGER
/BOOLEAN
パラメータの場合は0(ゼロ) -
パラメータが文字列またはファイル・パラメータの場合は1
使用上のノート
-
このファンクションを実行するには、V$PARAMETER動的ビューに対する
SELECT
権限が必要です。 -
DBMS_UTILITY.GET_PARAMETER_VALUE
を使用すると、init.ora
に次のように設定されている場合、先頭のパラメータ設定の/dir1
のみが戻されます。utl_file_dir = /dir1 utl_file_dir = /dir2
ただし、次のように指定すると、完全なカンマ区切り文字列が戻されます。
utl_file_dir = /dir1, /dir2
ノート:
以前のリリースでは、UTL_FILE_DIR
初期化パラメータを使用してディレクトリ位置を指定していました。ただし、Oracle Database 12c リリース2 (12.2)からは、UTL_FILE_DIR
初期化パラメータが非推奨になりました。これは下位互換性のために引き続きサポートされていますが、かわりにディレクトリ・オブジェクトを使用することをお薦めします。
例
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;
179.6.23 GET_SQL_HASHファンクション
このファンクションは、MD5アルゴリズムを使用して、指定した文字列についてハッシュ値を計算します。
構文
Dbms_utility.get_sql_hash ( name IN VARCHAR2, hash OUT RAW, pre10ihash OUT NUMBER) RETURN NUMBER;
プラグマ
Pragma Restrict_references(Get_sql_hash
, Wnds
, Rnds
, Wnps
, Rnps
);
パラメータ
表179-23 GET_SQL_HASHプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ハッシュする文字列。 |
|
戻されるハッシュ値の16バイトすべてを格納するフィールド(オプション)。 |
|
10iより前のデータベース・バージョンのハッシュ値を格納するフィールド(オプション)。 |
戻り値
ハッシュ値(最後の4バイト)は、入力文字列に基づいています。MD5ハッシュ・アルゴリズムでは16バイトのハッシュ値が計算されますが、実際の数値を戻すことができるように最後の4バイトのみを戻します。オプションのRAWパラメータを使用し、16バイトすべてを取得して、10iより前の4バイトのハッシュ値をオプションのpre10i hashパラメータに格納できます。
179.6.24 GET_TIMEファンクション
このファンクションは、現在の時間を100分の1秒単位で判別します。このサブプログラムは、主に経過時間を確認するために使用します。このサブプログラムは、2回(プロセスの開始時と終了時)コールされ、2つ目の(後の)数から1つ目の(先の)数を引くことで経過時間を判別します。
構文
DBMS_UTILITY.GET_TIME RETURN NUMBER;
戻り値
このサブプログラムが起動された時点からの時間を100分の1秒の数で戻します。
使用上のノート
プラットフォームおよびマシンに応じて、-2147483648から2147483647の範囲の数が戻されるため、アプリケーションによる間隔の判別では、数に付加される記号(マイナス記号)を考慮する必要があります。たとえば2つの数が負である場合、アプリケーション・ロジックで、1つ目の(先の)数が、よりゼロに近い2つ目の(後の)数よりも大きいことが許可される必要があります。同様に、アプリケーションでは、1つ目の(先の)数が負で2つ目の(後の)数が正であることも許可される必要があります。
179.6.25 GET_TZ_TRANSITIONSプロシージャ
このプロシージャは、timezone.dat
ファイルのregionid
に基づいてタイムゾーンの遷移を戻します。
構文
DBMS_UTILITY.GET_TZ_TRANSITIONS regionid IN NUMBER, transitions OUT MAXRAW);
パラメータ
表179-24 GET_TZ_TRANSITIONSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
リージョンに対応する番号。 |
|
|
例外
表179-25 GET_TZ_TRANSITIONSプロシージャの例外
例外 | 説明 |
---|---|
|
|
179.6.26 INVALIDATEプロシージャ
このプロシージャは、データベース・オブジェクトを無効化し、オプションでそのPL/SQLコンパイラのパラメータ設定を変更します。また、無効化されるオブジェクトに(直接的または間接的に)依存するすべてのオブジェクトも無効化します。
構文
DBMS_UTILITY.INVALIDATE ( p_object_id NUMBER, p_plsql_object_settings VARCHAR2 DEFAULT NULL, p_option_flags PLS_INTEGER DEFAULT 0);
パラメータ
表179-26 INVALIDATEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
無効化するオブジェクトのID番号。これは、 |
|
|
|
このオプション・パラメータのデフォルト値はゼロ(フラグなし)です。INVALIDATEによってサポートされるオプション・フラグです。
|
例外
表179-27 INVALIDATEの例外
例外 | 説明 |
---|---|
|
|
|
コンパイラの設定が |
|
|
使用上のノート
p_object_id
によって指定されるオブジェクトのオブジェクト・タイプ(ALL_OBJECTS
のobject_type
列)は、PROCEDURE
、FUNCTION
、PACKAGE
、PACKAGE
BODY
、TRIGGER
、TYPE
、TYPE
BODY
、LIBRARY
、VIEW
、OPERATOR
、SYNONYM
、またはJAVA
CLASS
である必要があります。オブジェクトがこれらのタイプのいずれでもなく、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
に依存するオブジェクトも無効とマークされます。
179.6.27 IS_BIT_SETファンクション
このファンクションは、指定のRAW
値の、指定のビットのビット設定をチェックします。
構文
DBMS_UTILITY.IS_BIT_SET ( r IN RAW, n IN NUMBER) RETURN NUMBER;
パラメータ
表179-28 IS_BET_SETファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
チェック対象の |
戻り値
このファンクションは、raw rでビットnが設定されている場合は1を、それ以外の場合は0(ゼロ)を戻します。ビットは、ビット番号1以上の値が番号付けられます。
179.6.28 IS_CLUSTER_DATABASEファンクション
このファンクションは、このデータベースがクラスタ・データベース・モードで実行されているかどうかを検出します。
構文
DBMS_UTILITY.IS_CLUSTER_DATABASE RETURN BOOLEAN;
戻り値
インスタンスがクラスタ・データベース・モードで起動されている場合はTRUE
を戻し、それ以外の場合はFALSE
を戻します。
179.6.29 MAKE_DATA_BLOCK_ADDRESSファンクション
このファンクションは、ファイル番号とブロック番号を指定したデータ・ブロック・アドレスを作成します。
データ・ブロック・アドレスは、データベース内のブロックを識別するために使用する内部構造です。このファンクションは、データ・ブロック・アドレスを含んだ特定の固定表にアクセスするときに役立ちます。
構文
DBMS_UTILITY.MAKE_DATA_BLOCK_ADDRESS ( file NUMBER, block NUMBER) RETURN NUMBER;
パラメータ
表179-29 MAKE_DATA_BLOCK_ADDRESSファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
ブロックを含むファイル。 |
|
ブロック増分値に基づくファイル内でのブロックのオフセット。 |
プラグマ
pragma restrict_references (make_data_block_address, WNDS, RNDS, WNPS, RNPS);
戻り値
データ・ブロック・アドレス。
179.6.30 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);
パラメータ
表179-30 NAME_RESOLVEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オブジェクト名。 これは、[[a.]b.]c[@d]の形式で指定でき、この場合、a、b、cはSQL識別子、dは、dblinkです。dblinkでは、構文チェックは実行されません。dblinkが指定されている場合や名前がdblinkの一部に変換される場合、オブジェクトは解決されませんが、 a、bおよびcは、デリミタ付き識別子の場合があり、グローバリゼーション・サポート(NLS)文字(シングルおよびマルチバイト)を含む場合があります。 |
|
0から9の範囲の整数を指定します。
|
|
オブジェクトのスキーマ。 |
|
名前の最初の部分。この名前のタイプは、 |
|
|
|
このパラメータが |
|
|
|
オブジェクト識別子。 |
例外
すべてのエラーは、例外を呼び出すことによって処理されます。オブジェクト名の指定時に起こり得る各種の構文エラーに基づいて、広範囲にわたる例外が用意されています。
179.6.31 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);
パラメータ
表179-31 NAME_RESOLVEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
SQL識別子で構成された入力名(scott.foo@dblinkなど)。 |
|
名前の1番目のトークンに対応する出力。 |
|
名前の2番目のトークンに対応する出力(該当する場合)。 |
|
名前の3番目のトークンに対応する出力(該当する場合)。 |
|
名前の |
|
入力名解析後の次の位置。 |
179.6.32 OLD_CURRENT_SCHEMAファンクション
このファンクションは、sys_context
('userenv
', 'current_schema
')からのセッション値を戻します。
構文
DBMS_UTILITY.OLD_CURRENT_SCHEMA RETURN VARCHAR2;
179.6.33 OLD_CURRENT_USERファンクション
このファンクションは、sys_context
('userenv
', 'current_user
')からのセッション値を戻します。
構文
DBMS_UTILITY.OLD_CURRENT_USER RETURN VARCHAR2;
179.6.34 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);
179.6.35 SQLID_TO_SQLHASHファンクション
このファンクションは、SQL IDをハッシュ値に変換します。
構文
DBMS_UTILITY.SQLID_TO_SQLHASH ( sql_id IN VARCHAR2) RETURN NUMBER;
パラメータ
表179-32 SQLID_TO_SQLHASHファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
SQL文のSQL ID。 |
179.6.36 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);
パラメータ
表179-33 TABLE_TO_COMMAプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
表名のリストを含んだPL/SQL表。 |
|
PL/SQL表にある表の数。 |
|
表名のカンマで区切られたリスト。 |
戻り値
カンマで区切られたリストおよび表内で検出された要素の数。
179.6.37 VALIDATEプロシージャ
このプロシージャは、無効なデータベース・オブジェクトを有効にします。
構文
DBMS_UTILITY.VALIDATE( object_id NUMBER); DBMS_UTILITY.VALIDATE( owner VARCHAR2, objname VARCHAR2, namespace NUMBER, edition_name := SYS_CONTEXT ('USERENV', 'CURRENT_EDITION'));
パラメータ
表179-34 VALIDATEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
オブジェクトを所有するユーザーの名前。 |
|
検証するオブジェクトの名前。 |
|
オブジェクトのネームスペース。
|
|
(ノート: 現在使用不可。将来使用するために予約されています。) |
使用上のノート
-
オブジェクトが、存在しないか、すでに有効か、検証不可能な場合、エラーは発生しません。
-
検証されるオブジェクトが指定したエディションに実在しない場合、サブプログラムは検証前にオブジェクトが実在するエディションに自動的に切り替わります。つまり、VALIDATEをコールしても、指定したエディションではオブジェクトは実体化されません。
-
INVALIDATEプロシージャはデータベース・オブジェクトを無効化し、オプションでそのPL/SQLコンパイラのパラメータ設定を変更します。無効化するオブジェクトはその
object_id
で指定します。無効化の前に、サブプログラムは自動的にオブジェクトが実在するエディションに切り替わります。つまり、INVALIDATE
をコールしても、現行のエディションではオブジェクトは実体化されません。
179.6.38 WAIT_ON_PENDING_DMLファンクション
このファンクションは、リストされた表にロックをかけていて、指定したscn
より前に開始されているすべてのトランザクション(コール元自体のトランザクションを除く)がコミットされるか、またはロールバックされるまで待機します。
構文
DBMS_UTILITY.WAIT_ON_PENDING_DML ( tables IN VARCHAR2, timeout IN BINARY_INTEGER, scn IN OUT NUMBER) RETURN BOOLEAN;
パラメータ
表179-35 WAIT_ON_PENDING_DMLファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
1つ以上の表の名前のカンマ区切りリスト。このリストは、COMMA_TO_TABLEプロシージャに対して有効である必要があり、各項目がNAME_RESOLVEプロシージャに対して有効である必要があります。名前には、列指定子またはDBLINK(データベース・リンク)指定子いずれも使用できず、それぞれの名前がローカル・データベースの既存の表に解決される必要があります。 |
|
待機する最大秒数(すべての表およびトランザクションでの合計)。 |
|
SCNで、トランザクションがこの要求に関連するとみなされるには、このSCNより前に開始されている必要があります。値が |
戻り値
関連するすべてのトランザクションがコミットされたか、またはロールバックされた場合はTRUE
、関連するすべてのトランザクションがコミットまたはロールバックする前にタイムアウトが発生した場合はFALSE
となります。