129 DBMS_REDEFINITION
DBMS_REDEFINITION
パッケージは、オンラインで表の再定義を行うためのインタフェースを提供します。
この章のトピックは、次のとおりです:
参照:
オンラインで表を再定義する方法の詳細は、『Oracle Database管理者ガイド』を参照してください。
129.1 DBMS_REDEFINITIONの概要
オンラインで再定義を行うには、段階的に維持可能なローカル・マテリアライズド・ビューを使用します。これらのログは、マスター表に対する変更を追跡し、リフレッシュ同期時にマテリアライズド・ビューで使用されます。
129.2 DBMS_REDEFINITIONのセキュリティ・モデル
DBMS_REDEFINITION
パッケージ内のサブプログラムは、実行者権限(現行のユーザーの権限)を使用して実行されます。
次の2つのモードがあります。
-
USER
モードでは、CREATE TABLE
およびCREATE MVIEW
権限を持つユーザーが自身のスキーマ内にある表を再定義できます。 -
FULL
モードでは、ANY
権限を持つユーザーが任意のスキーマ内にある表を再定義できます。
129.3 DBMS_REDEFINITIONの定数
DBMS_REDEFINITION
パッケージは、パラメータ値の指定に使用するいくつかの定数を定義します。
表129-1 DBMS_REDEFINITIONの定数
定数 | タイプ | 値 | 説明 |
---|---|---|---|
|
|
|
依存オブジェクト・タイプが制約であることを指定するために使用します。 |
|
|
|
依存オブジェクト・タイプが索引であることを指定するために使用します。 |
|
|
|
マテリアライズド・ビュー・ログを、表の依存オブジェクトとしてREGISTER_DEPENDENT_OBJECTプロシージャおよびUNREGISTER_DEPENDENT_OBJECTプロシージャを使用して登録(または登録解除)する場合に使用します。 |
|
|
|
索引は元の記憶域パラメータでクローニングする必要があることを指定するために使用します。 |
|
|
|
依存オブジェクト・タイプがトリガーであることを指定するために使用します。 |
|
|
|
再定義は主キーまたは擬似主キー(すべてのコンポーネント列に |
|
|
|
再定義はROWIDを使用して行う必要があることを示すために使用します。 |
|
|
|
VPDポリシーを自動的にコピーすることを示すために使用します。 |
|
|
|
VPDポリシーを手動でコピーすることを示すために使用します。 |
|
|
1 |
元の表にVPDポリシーが含まれていないことを示すために使用します。 |
129.4 DBMS_REDEFINITIONの操作上のノート
DBMS_REDEFINITIONには、次の操作上のノートが適用されます。
-
CONS_USE_PK
およびCONS_USE_ROWID
は、START_REDEF_TABLEプロシージャおよびCAN_REDEF_TABLEプロシージャの両方におけるoptions_flagパラメータへの入力として使用する定数です。CONS_USE_ROWID
は再定義がROWIDを使用して行われる必要があることを示し、CONS_USE_PK
は再定義が主キーまたは擬似主キー(すべてのコンポーネント列にNOT
NULL
制約がある一意キー)を使用して行われる必要があることを示すために使用します。 -
CONS_INDEX
、CONS_MVLOG
、CONS_TRIGGER
およびCONS_CONSTRAINT
は、REGISTER_DEPENDENT_OBJECTプロシージャおよびUNREGISTER_DEPENDENT_OBJECTプロシージャで登録(または登録解除)される依存オブジェクトのタイプ(パラメータdep_type
)を指定するために使用します。CONS_INDEX
==>依存オブジェクトをINDEX
タイプに指定CONS_TRIGGER
==>依存オブジェクトをTRIGGER
タイプに指定CONS_CONSTRAINT
==>依存オブジェクトをCONSTRAINT
タイプに指定CONS_MVLOG
==>依存オブジェクトをMATERIALIZED
VIEW
LOG
タイプに指定 -
CONS_ORIG_PARAMS
は、COPY_TABLE_DEPENDENTSプロシージャでのcopy_indexes
パラメータの入力として使用します。このパラメータを使用すると、元の表の索引が、元の索引と同じ記憶域パラメータを使用して仮表にコピーされます。
129.5 DBMS_REDEFINITIONのルールおよび制限
DBMS_REDEFINITION
パッケージの実装には、様々なルールおよび制限が適用されます。
これらの詳細は、『Oracle Database管理者ガイド』を参照してください。
129.6 DBMS_REDEFINITIONの例
次の例では、DBMS_REDEFINITION
の機能を示します。
2つの表EMP
とEMP_INT
を、元の表および仮表としてそれぞれ作成します。
CREATE TABLE "EMP"
( "EMPNO" NUMBER(4,0) PRIMARY KEY,
"ENAME" VARCHAR2(10),
"JOB" VARCHAR2(9),
"MGR" NUMBER(4,0),
"HIREDATE" DATE,
"SAL" NUMBER(7,2),
"COMM" NUMBER(7,2),
"DEPTNO" NUMBER(2,0))
TABLESPACE myts;
CREATE TABLE "EMP_INT"
( "EMPNO" NUMBER(4,0) PRIMARY KEY,
"ENAME" VARCHAR2(10),
"JOB" VARCHAR2(9),
"MGR" NUMBER(4,0),
"HIREDATE" DATE,
"SAL" NUMBER(7,2),
"COMM" NUMBER(7,2),
"DEPTNO" NUMBER(2,0))
TABLESPACE compressed_ts;
標準のマルチステップ再定義
DBMS_REDEFINITION.START_REDEF_TABLE(‘SCOTT’, ‘EMP’, ‘EMP_INT’, ENABLE_ROLLBACK => TRUE);
DBMS_REDEFINITION.FINISH_REDEF_TABLE(‘SCOTT’, ‘EMP’, ‘EMP_INT’);
DBAは、表EMP
を表領域myts
からcompressed_ts
に移動した後、アプリケーションのパフォーマンスを2日間評価すると仮定します。sync_interim_table SYNC_INTERIM_TABLEプロシージャを実行して、両方の表を同期状態に保つことができます(たとえば、毎時)。
DBMS_REDEFINITION.SYNC_INTERIM_TABLE(‘SCOTT’, ‘EMP’, ‘EMP_INT’);
ケース1 - DBAはパフォーマンスに満足しないため、ロールバックを行うことを決定します。
DBMS_REDEFINITION.ROLLBACK(‘SCOTT’, ‘EMP’, ‘EMP_INT’);
ケース2 - DBAはパフォーマンスに満足したため、ロールバックを行わないことを決定します。
DBMS_REDEFINITION.ABORT_ROLLBACK(‘SCOTT’, ‘EMP’, ‘EMP_INT’);
これにより、ロールバックの可能性はなくなります。
単一ステップ再定義
DBMS_REDEFINITION.REDEF_TABLE(’SCOTT’,’EMP’,'ROW STORE COMPRESS ADVANCED', enable_rollback => TRUE);
ノート:
REDEF_TABLE
プロシージャを使用して表を再定義した場合は、表のオンライン再定義のロールバックはサポートされません。
129.7 DBMS_REDEFINITIONサブプログラムの要約
この表は、DBMS_REDEFINITION
サブプログラムを示し、簡単に説明しています。
表129-2 DBMS_REDEFINITIONパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
再定義プロセスで発生したエラーをクリーンアップし、再構成プロセスで作成されたすべての一時オブジェクトを削除します。 |
|
ロールバックを中断します。 |
|
|
|
指定された表がオンラインで再定義可能かどうかを判断します。 |
|
元の表の依存オブジェクトを仮表にコピーします。 |
|
表への一括更新のパフォーマンスを最適化します。 |
|
再定義プロセスを完了します。 |
|
いくつかの再定義ステップが統合された単一のプッシュボタン・インタフェースを提供します。 |
|
再定義中の表の依存オブジェクト(索引、トリガー、制約またはマテリアライズド・ビューのログ)および仮表の対応する依存オブジェクトを登録します。 |
|
ロールバックを実行します。 |
|
再定義IDによって識別される再定義プロセスで使用される、指定したパラメータの新しい値を設定します。 |
|
再定義プロセスを開始します。 |
|
仮表と元の表との同期を保ちます。 |
|
再定義中の表の依存オブジェクト(索引、トリガー、制約またはマテリアライズド・ビュー・ログ)および仮表の対応する依存オブジェクトの登録を解除します。 |
129.7.1 ABORT_REDEF_TABLEプロシージャ
このプロシージャは、再定義プロセスで発生したエラーをクリーンアップします。
START_REDEF_TABLEプロシージャのコール後で、FINISH_REDEF_TABLEプロシージャのコール前であれば、このプロシージャを使用して任意の時点で再定義プロセスを終了することもできます。このプロセスによって、マテリアライズド・ビュー・ログなどの再定義プロセスで作成された一時オブジェクトが削除されます。
構文
DBMS_REDEFINITION.ABORT_REDEF_TABLE ( uname IN VARCHAR2, orig_table IN VARCHAR2, int_table IN VARCHAR2, part_name IN VARCHAR2 := NULL);
パラメータ
表129-3 ABORT_REDEF_TABLEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
表のスキーマ名。 |
|
再定義する表の名前。 |
|
仮表の名前。カンマで区切られた仮表名のリストを指定できます。 |
|
再定義するパーティションの名前。表の単一パーティションのみを再定義する場合は、このパラメータにパーティション名を指定します。 |
129.7.2 ABORT_ROLLBACKプロシージャ
このプロシージャは、再定義された表のロールバックを中断します。
表のオンライン再定義がSTART_REDEF_TABLE
プロシージャで開始された場合、enable_rollback
パラメータをTRUE
に設定して、表のオンライン再定義で実行された変更に対してロールバックを有効にできます。オンライン再定義で行われた変更を保持する場合は、ロールバックを中断して、ロールバックを有効にするデータベース・オブジェクトをクリーンアップできます。
構文
DBMS_REDEFINITION.ABORT_ROLLBACK ( uname IN VARCHAR2, orig_table IN VARCHAR2, int_table IN VARCHAR2 := NULL, part_name IN VARCHAR2 := NULL);
パラメータ
表129-4 ABORT_ROLLBACKプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
表のスキーマ名。 |
|
再定義する表の名前。 |
|
仮表の名前。 |
|
再定義するパーティションの名前 |
129.7.3 ABORT_UPDATEプロシージャ
このプロシージャは、RDBMS_REDEFINITION
パッケージのEXECUTE_UPDATE
プロシージャで開始された更新を中断できます。
構文
DBMS_REDEFINITION.ABORT_UPDATE ( update_stmt IN CLOB);
パラメータ
表129-5 ABORT_UPDATEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
中断するSQL SQL文は、 |
129.7.4 CAN_REDEF_TABLEプロシージャ
このプロシージャは、指定された表がオンラインで再定義可能かどうかを判断します。これはオンラインでの再定義プロセスの最初のステップです。その表がオンラインでの再定義の候補ではない場合は、エラー・メッセージが表示されます。
構文
DBMS_REDEFINITION.CAN_REDEF_TABLE ( uname IN VARCHAR2, tname IN VARCHAR2, options_flag IN PLS_INTEGER := 1, part_name IN VARCHAR2 := NULL);
パラメータ
表129-6 CAN_REDEF_TABLEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
表のスキーマ名。 |
|
再構成する表の名前。 |
|
使用する再定義方法のタイプ。
|
|
再定義するパーティションの名前。表の単一パーティションのみを再定義する場合は、このパラメータにパーティション名を指定します。 |
例外
その表がオンラインでの再定義の候補ではない場合は、エラー・メッセージが表示されます。
129.7.5 COPY_TABLE_DEPENDENTSプロシージャ
このプロシージャは、再定義中の表の依存オブジェクトを仮表にクローニングし、その依存オブジェクトを登録します。すでに登録されている依存オブジェクトのクローニングは行われません。
このサブプログラムは、再定義対象の表から仮表(再定義後の表を表す)に権限付与、トリガー、制約および権限などの依存オブジェクトをクローニングするために使用します。
構文
DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS( uname IN VARCHAR2, orig_table IN VARCHAR2, int_table IN VARCHAR2, copy_indexes IN PLS_INTEGER := 1, copy_triggers IN BOOLEAN := TRUE, copy_constraints IN BOOLEAN := TRUE, copy_privileges IN BOOLEAN := TRUE, ignore_errors IN BOOLEAN := FALSE, num_errors OUT PLS_INTEGER, copy_statistics IN BOOLEAN := FALSE, copy_mvlog IN BOOLEAN := FALSE);
パラメータ
表129-7 COPY_TABLE_DEPENDENTSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
表のスキーマ名。 |
|
再定義する表の名前。 |
|
仮表の名前。 |
|
索引をコピーするかどうかを示すフラグ。
|
|
|
|
|
|
|
|
|
|
依存オブジェクトのクローニング中に発生したエラーの数。 |
|
|
|
|
使用上のノート
-
オブジェクトのクローニング中にエラーが発生しないように、列
num_errors
をチェックしてから処理を行う必要があります。 -
エラーが発生した場合は、エラーの原因を修正し、COPY_TABLE_DEPENDENTSプロシージャを再度コールして、依存オブジェクトをクローニングします。また、依存オブジェクトを手動でクローニングした後、REGISTER_DEPENDENT_OBJECTプロシージャを使用して、クローニングした依存オブジェクトを手動で登録することもできます。
-
仮表にクローニングされた参照制約はすべて無効に作成され(再定義後に自動的に有効になります)、仮表のすべてのトリガーは再定義が完了するまで実行されません。再定義が完了すると、クローニングされたオブジェクトには、それぞれクローン元のオブジェクトと同じ再定義前の名前が再び付けられます。
-
これはユーザーの責任となります(クローニングされた依存オブジェクトは再定義の影響を受けません)。すべてのトリガーがクローニングされ、これはユーザーの責任となります(クローニングされたトリガーは再定義の影響を受けません)。
129.7.6 EXECUTE_UPDATEプロシージャ
このプロシージャは、表への一括更新のパフォーマンスを最適化できます。REDOログに更新が記録されないため、パフォーマンスが最適化されます。
EXECUTE_UPDATE
プロシージャは、仮表、マテリアライズド・ビュー、マテリアライズド・ビュー・ログなどのオンライン表再定義のコンポーネントを自動的に使用して、表のバルク更新を最適化します。また、EXECUTE_UPDATE
プロシージャは影響を受ける行のフラグメンテーションも除去して、アトミックな更新を保証します。バルク更新でエラーが発生した場合は、ABORT_UPDATE
プロシージャを使用して、EXECUTE_UPDATE
プロシージャで行った変更を元に戻すことができます。
構文
DBMS_REDEFINITION.EXECUTE_UPDATE ( update_stmt IN CLOB);
パラメータ
表129-8 EXECUTE_UPDATEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
SQL |
129.7.7 FINISH_REDEF_TABLEプロシージャ
このプロシージャは、再定義プロセスを完了します。
このステップの前に、新しい索引、トリガー、権限および制約を仮表に作成できます。仮表に含まれる参照制約は無効にする必要があります。このステップが完了すると、仮表の属性とデータを使用して元の表が再定義されます。このプロシージャの実行時は、元の表が一時的にロックされます。
構文
DBMS_REDEFINITION.FINISH_REDEF_TABLE ( uname IN VARCHAR2, orig_table IN VARCHAR2, int_table IN VARCHAR2, part_name IN VARCHAR2 := NULL, dml_lock_timeout IN PLS_INTEGER := NULL, continue_after_errors IN BOOLEAN := FALSE, disable_rollback IN PLS_INTEGER := FALSE);
パラメータ
表129-9 FINISH_REDEF_TABLEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
表のスキーマ名。 |
|
再定義する表の名前。 |
|
仮表の名前。カンマで区切られた仮表名のリストを指定できます。 |
|
再定義するパーティションの名前。表の単一パーティションのみを再定義する場合は、このパラメータにパーティション名を指定します。 |
|
必要なロックを獲得するために待機する秒数を指定します(この秒数が経過するとプロシージャは失敗する)。設定可能なタイムアウトの値の範囲は、0から1,000,000です。デフォルトは |
|
複数のパーティションを再定義する場合、次のパーティションに対する操作を続けて実行できます(バッチ化されたパーティション再定義にのみ適用される)。 |
|
|
例
SH.SALES
に必要なロックを最大600秒待機します。
EXECUTE DBMS_REDEFINITION.FINISH_REDEF_TABLE ( 'SH', 'SALES', 'INT_SALES', 600);
129.7.8 REDEF_TABLEプロシージャ
このプロシージャでは、CAN_REDEF_TABLEプロシージャ、START_REDEF_TABLEプロシージャ、COPY_TABLE_DEPENDENTSプロシージャおよびFINISH_REDEF_TABLEプロシージャなど、いくつかの再定義ステップを統合する単一のインタフェースが提供されます。
このプロシージャでは、表領域(表、パーティション、サブパーティション、索引、LOB列が対象)、圧縮タイプ(表、パーティション、サブパーティション、索引、LOB列が対象)およびLOB列のSTORE_AS
句など、データ記憶域のプロパティを変更できます。
構文
DBMS_REDEFINITION.REDEF_TABLE ( uname IN VARCHAR2, tname IN VARCHAR2, table_compression_type IN VARCHAR2 := NULL, table_part_tablespace IN VARCHAR2 := NULL, index_key_compression_type IN VARCHAR2 := NULL, index_tablespace IN VARCHAR2 := NULL, lob_compression_type IN VARCHAR2 := NULL, lob_tablespace IN VARCHAR2 := NULL, lob_store_as IN VARCHAR2 := NULL, refresh_dep_mviews IN VARCHAR2 := 'N', dml_lock_timeout IN PLS_INTEGER := NULL);
パラメータ
表129-10 REDEF_TABLEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
表のスキーマ名。 |
|
再定義する表の名前。 |
|
表圧縮句のテキスト文字列。 |
|
表またはパーティション全体の表領域名。 |
|
表のすべての索引に使用する圧縮句のテキスト文字列。 |
|
表のすべての索引に使用する表領域名。 |
|
表全体のすべてのLOBに使用する圧縮句のテキスト文字列。 |
|
表のすべてのLOBに使用する表領域名。 |
|
LOBストアは、 |
|
|
|
必要なロックを獲得するために待機する秒数を指定します(この秒数が経過するとプロシージャは失敗する)。設定可能なタイムアウトの値の範囲は、0から1,000,000です。デフォルトは |
例
BEGIN DBMS_REDEFINITION.REDEF_TABLE( uname => 'TABOWNER2', tname => 'EMP2', table_compression_type => 'ROW STORE COMPRESS ADVANCED', table_part_tablespace => 'NEWTBS', index_key_compression_type => 'COMPRESS 1', index_tablespace => 'NEWIDXTBS', lob_compression_type => 'COMPRESS HIGH', lob_tablespace => 'SLOBTBS', lob_store_as => 'SECUREFILE'); END;
関連項目
参照:
「REDEF_TABLE
プロシージャを使用したオンライン再定義の実行」については、『Oracle Database管理者ガイド』を参照してください。
129.7.9 REGISTER_DEPENDENT_OBJECTプロシージャ
このプロシージャは、再定義中の表の依存オブジェクト(索引、トリガー、制約またはマテリアライズド・ビューのログ)および仮表の対応する依存オブジェクトを登録します。
このプロシージャを使用すると、各表で異なる属性の同じオブジェクトを持つことができます。たとえば、索引の場合、記憶域および表領域の属性は異なる可能性がありますが、索引付けされた列は同じままです。
構文
DBMS_REDEFINITION.REGISTER_DEPENDENT_OBJECT( uname IN VARCHAR2, orig_table IN VARCHAR2, int_table IN VARCHAR2, dep_type IN PLS_INTEGER, dep_owner IN VARCHAR2, dep_orig_name IN VARCHAR2, dep_int_name IN VARCHAR2);
パラメータ
使用上のノート
-
すでに登録されているオブジェクトを登録しようとするとエラーになります。
-
エントリがすでに存在する依存オブジェクトを登録した場合、そのオブジェクトは
DBA_REDEFINITION_ERRORS
から自動的に削除されます。
129.7.10 ROLLBACKプロシージャ
このプロシージャは、表のオンライン再定義後の表への変更をロールバックして、表を元の定義に戻し、表に対して行われたDML変更を保持します。
構文
DBMS_REDEFINITION.ROLLBACK ( uname IN VARCHAR2, orig_table IN VARCHAR2, int_table IN VARCHAR2 := NULL, part_name IN VARCHAR2 := NULL, dml_lock_timeout IN PLS_INTEGER := NULL, continue_after_errors IN BOOLEAN := FALSE);
パラメータ
表129-12 ROLLBACKプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
再定義する表のスキーマ名。 |
|
再定義する表の名前。 |
|
仮表の名前。 |
|
再定義するパーティションの名前。 |
|
必要なロックを獲得するために待機する秒数を指定します(この秒数が経過するとプロシージャは失敗する)。設定可能なタイムアウトの値の範囲は、0から1,000,000です。デフォルトは |
|
複数のパーティションの再定義変更をロールバックする場合、次のパーティションに対する操作を続けて実行できます(バッチ化されたパーティション再定義にのみ適用される)。 |
129.7.11 SET_PARAMプロシージャ
このプロシージャは、再定義IDによって識別される再定義プロセスで使用される、指定したパラメータの新しい値を設定します。
ノート:
現在、このプロシージャで変更できる値は、REDEF_TABLE
プロシージャまたはSTART_REDEF_TABLE
プロシージャで指定されたrefresh_dep_mviews
パラメータの値のみです。再定義IDを特定し、表のオンライン再定義操作のrefresh_dep_mviews
パラメータの値を確認するには、DBA_REDEFINITION_STATUS
ビューを問い合せます。
構文
DBMS_REDEFINITION.SET_PARAM ( redefinition_id IN VARCHAR2, param_name IN VARCHAR2, param_value IN VARCHAR2);
パラメータ
表129-13 SET_PARAMプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
再定義プロセスを識別する再定義ID。 |
|
パラメータ名。 |
|
新しいパラメータ値。 |
129.7.12 START_REDEF_TABLEプロシージャ
このプロシージャは、表を再定義を開始します。
このプロシージャをコールする前に、再定義後の表に必要な属性を指定して(再定義する表と同じスキーマで)空の仮表を手動で作成してから、このプロシージャをコールして再定義を開始する必要があります。
構文
DBMS_REDEFINITION.START_REDEF_TABLE ( uname IN VARCHAR2, orig_table IN VARCHAR2, int_table IN VARCHAR2, col_mapping IN VARCHAR2 := NULL, options_flag IN BINARY_INTEGER := 1, orderby_cols IN VARCHAR2 := NULL, part_name IN VARCHAR2 := NULL, continue_after_errors IN BOOLEAN := FALSE, copy_vpd_opt IN BINARY_INTEGER := CONS_VPD_NONE, refresh_dep_mviews IN VARCHAR2 := 'N', enable_rollback IN BOOLEAN := FALSE);
パラメータ
表129-14 START_REDEF_TABLEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
表のスキーマ名。 |
|
再定義する表の名前。 |
|
仮表の名前。カンマで区切られた仮表名のリストを指定できます。 |
|
元の表の列から仮表の列にマッピングする情報。(これは問合せの |
|
使用する再定義方法のタイプ。
|
|
このオプション・パラメータは、仮表の初期インスタンス化時に行を順序付けるために使用する列のリストを、オプション・キーワードの昇順/降順とともに受け入れます(順序付けは初期インスタンス化についてのみ実行され、その後の同期化では行われません)。 |
|
再定義するパーティションの名前。表の単一パーティションのみを再定義する場合は、このパラメータにパーティション名を指定します。 |
|
複数のパーティションを再定義する場合、次のパーティションに対する操作を続けて実行できます(バッチ化されたパーティション再定義にのみ適用される)。 |
|
オンライン再定義におけるVPDポリシーの処理方法を指定します。 |
|
|
|
このパラメータをTRUEに設定すると、再定義中に作成された仮表が再定義完了後もOracle Databaseに保持されます。 |
例
int_salestable1
、int_salestable2
およびint_salestable3
の仮表をそれぞれ使用して、表'STEVE.salestable'
に含まれる3つのパーティション(sal03q1、sal03q2およびsal03q3
)の再定義を開始します。操作がsal03q1
で失敗した場合でも、sal03q3
まで操作は続行されます。
DBMS_REDEFINITION.START_REDEF_TABLE( uname => 'STEVE', orig_table => 'salestable', int_table => 'int_salestable1, int_salestable2, int_salestable3', col_mapping => NULL, options_flag => DBMS_REDEFINITION.CONS_USE_ROWID, part_name => 'sal03q1,sal03q2,sal03q3', continue_after_errors => TRUE);
VPDポリシーを自動的にコピーすることを指定します。
EXECUTE DBMS_REDEFINITION.START_REDEF_TABLE ( uname => 'SCOTT', orig_table => 'T', int_table => 'INT_T', copy_vpd_opt => DBMS_REDEFINITION.CONS_VPD_AUTO);
129.7.13 SYNC_INTERIM_TABLEプロシージャ
このプロシージャは、仮表と元の表との同期を保ちます。
構文
DBMS_REDEFINITION.SYNC_INTERIM_TABLE ( uname IN VARCHAR2, orig_table IN VARCHAR2, int_table IN VARCHAR2, part_name IN VARCHAR2 := NULL, continue_after_errors IN BOOLEAN := FALSE);
パラメータ
表129-15 SYNC_INTERIM_TABLEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
表のスキーマ名。 |
|
再定義する表の名前。 |
|
仮表の名前。カンマで区切られた仮表名のリストを指定できます。 |
|
再定義するパーティションの名前。表の単一パーティションのみを再定義する場合は、このパラメータにパーティション名を指定します。 |
|
複数のパーティションを再定義する場合、次のパーティションに対する操作を続けて実行できます(バッチ化されたパーティション再定義にのみ適用される)。 |
使用上のノート
-
このステップは、オンライン再定義を完了する前に、FINISH_REDEF_TABLEプロシージャで処理する必要のある同期化の量を最小化するのに役立ちます。
-
このプロシージャは、仮表で長時間実行される操作(
CREATE
INDEX
など)と操作の間でコールして元の表のデータと仮表を同期化し、こうした操作の処理を高速化します。
129.7.14 UNREGISTER_DEPENDENT_OBJECTプロシージャ
このプロシージャは、再定義中の表の依存オブジェクト(索引、トリガー、制約またはマテリアライズド・ビューのログ)および仮表の対応する依存オブジェクトの登録を解除します。
構文
DBMS_REDEFINITION.UNREGISTER_DEPENDENT_OBJECT( uname IN VARCHAR2, orig_table IN VARCHAR2, int_table IN VARCHAR2, dep_type IN PLS_INTEGER, dep_owner IN VARCHAR2, dep_orig_name IN VARCHAR2, dep_int_name IN VARCHAR2);
パラメータ
表129-16 UNREGISTER_DEPENDENT_OBJECTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
表のスキーマ名。 |
|
再定義する表の名前。 |
|
仮表の名前。 |
|
依存オブジェクトのタイプ。 |
|
依存オブジェクトの所有者。 |
|
元の依存オブジェクトの名前。 |
|
仮の依存オブジェクトの名前。 |