ヘッダーをスキップ
Oracle® Database PL/SQLパッケージおよびタイプ・リファレンス
11g リリース2(11.2)
B56262-06
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

64 DBMS_ERRLOG

DBMS_ERRLOGパッケージは、エラーの発生時に中断やロールバックではなく、DML操作を続行できるようにエラー・ロギング表を作成するプロシージャを提供します。これによって、時間およびシステム・リソースを節約できます。


関連項目:

DBMS_ERRLOGの使用方法の詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を、error_logging_clause構文については、『Oracle Database SQL言語リファレンス』を参照してください。

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


DBMS_ERRLOGの使用方法

この項では、DBMS_ERRLOGパッケージの使用に関連する項目について説明します。


セキュリティ・モデル

このパッケージのセキュリティは、選択したユーザーまたはロールにこのパッケージのEXECUTE権限を付与することで制御できます。EXECUTE権限は、パブリックに付与されます。ただし、エラー・ロギング表を作成するには、元表またはビューへのSELECTアクセス権、CREATE TABLE権限および目的の表領域に対する表領域割当て容量が必要です。


DBMS_ERRLOGサブプログラムの要約

表64-1 DBMS_ERRLOGパッケージのサブプログラム

サブプログラム 説明

CREATE_ERROR_LOGプロシージャ


DMLエラー・ロギングで使用するエラー・ロギング表を作成します。



CREATE_ERROR_LOGプロシージャ

このプロシージャは、DMLエラー・ロギング機能の使用に必要なエラー・ロギング表を作成します。

LONGCLOBBLOBBFILEおよびADTデータ・タイプは、この列ではサポートされていません。

構文

DBMS_ERRLOG.CREATE_ERROR_LOG (
   dml_table_name            IN VARCHAR2,
   err_log_table_name        IN VARCHAR2 := NULL,
   err_log_table_owner       IN VARCHAR2 := NULL,
   err_log_table_space       IN VARCHAR2 := NULL,
   skip_unsupported          IN BOOLEAN := FALSE);

パラメータ

表64-2 CREATE_ERROR_LOGプロシージャのパラメータ

パラメータ 説明

dml_table_name

エラー・ロギング表の元表となるDML表の名前。完全修飾名(empscott.emp"EMP""SCOTT"."EMP"など)を指定できます。名前の構成要素が二重引用符で囲まれている場合は、大文字に変換されません。

err_log_table_name

作成するエラー・ロギング表の名前。

デフォルトでは、DML表の名前の最初の25文字に、'ERR$_'という接頭辞が付加されます。次に、例を示します。

dml_table_name: 'EMP', err_log_table_name: 'ERR$_EMP'

dml_table_name: '"Emp2"', err_log_table_name: 'ERR$_Emp2'

err_log_table_owner

エラー・ロギング表の所有者の名前。dml_table_nameに所有者を指定できます。そうしない場合は、現在接続しているユーザーのスキーマが使用されます。

err_log_table_space

エラー・ロギング表が作成される領域。指定しない場合は、DMLエラー・ロギング表を所有しているユーザーのデフォルトの表領域が使用されます。

skip_unsupported

TRUEに設定すると、エラー・ロギングでサポートされていない列のタイプはスキップされエラー・ロギング表に追加されません。

FALSEに設定すると、サポートされていない列のタイプがあった場合、プロシージャは終了します。

デフォルトはFALSEです。


まず、デフォルトの名前の生成を使用して、SHスキーマにchannels表のエラー・ロギング表を作成します。

次に、channels表のすべての列を確認します。

SQL> DESC channels
Name                                   Null?       Type
---------------------------            -------     -----
CHANNEL_ID                             NOT NULL    CHAR(1)
CHANNEL_DESC                           NOT NULL    VARCHAR2(20)
CHANNEL_CLASS                                      VARCHAR2(20)

最後に、生成されたエラー・ロギング表のすべての列を確認します。このパッケージによって作成される必須の制御列に注意してください。

SQL> DESC ERR$_CHANNELS
Name                              Null?    Type
-----------------                 ----     ----ORA_ERR_NUMBER$                            NUMBER
ORA_ERR_MESG$                              VARCHAR2(2000)
ORA_ERR_ROWID$                             ROWID
ORA_ERR_OPTYP$                             VARCHAR2(2)
ORA_ERR_TAG$                               VARCHAR2(2000)
CHANNEL_ID                                 VARCHAR2(4000)
CHANNEL_DESC                               VARCHAR2(4000)
CHANNEL_CLASS                              VARCHAR2(4000)

制御列の詳細は、『Oracle Database管理者ガイド』を参照してください。