質問・問題
Data Pump ユーティリティの expdp で生成したダンプファイルを RDS for Oracle に FULL でインポートすると失敗します。
▼エラー出力例
オブジェクト タイプ SCHEMA_EXPORT/TABLE/INDEX/INDEX を処理しています
ORA-39083: オブジェクト タイプ INDEX:"SYS"."<INDEX_NAME>" はエラーのため作成できませんでした:
ORA-04088: トリガー 'RDSADMIN.<TRIGGER_NAME>'
ORAの実行中にエラーが発生しました-00604: 再帰的 SQL レベル 3 でエラーが発生しました。
ORA-20900: SYS、SYSTEM、または RDSADMIN が所有するインデックスとトリガーは許可されません。sql=CREATE INDEX "SYS"."<INDEX_NAME>" ON "<SCHEMA_NAME>"."<TABLE_NAME>" ("<C1>",
CREATE INDEX "SYS"."<INDEX_NAME>" ON "<SCHEMA_NAME>"."<TABLE_NAME>" (" <C1> ", " <C2> ") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1) MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" PARALLEL 1
処理オブジェクト タイプ SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
処理オブジェクト タイプ SCHEMA_EXPORT/T ABLE/INDEX/STATISTICS/INDEX_STATISTICS
処理オブジェクトタイプ SCHEMA_EXPORT/TABLE /CONSTRAINT/REF_CONSTRAINT
オブジェクト タイプ SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
ジョブ "<SCHEMA>" を処理しています。「SYS_IMPORT_SCHEMA_01」は、2023 年 7 月 20 日木曜日 15:38:28 に 3 つのエラーで完了しました。経過時間は 0 00:07:08 でした。
回答・解決方法
インデックスやトリガーなどのディクショナリ (SYS、SYSTEM、RDSADMIN 所有) オブジェクトは、データ・ディクショナリに損傷を与える可能性があるため、RDS for Oracle では許可されません。
回避策として、以下の対処のいずれかをご実施ください。
対策 1) FULL でインポートはを実行しない。
対策 2) 非 SYS スキーマ (SYS-、SYSTEM-、または RDSADMIN- 以外) に失敗したインデックスを作成する。
対策 3) インポート中に失敗したインデックスを除外する。
【参考記事】
[1] Oracle Data Pump を使用したインポート
=== 抜粋 ===
Oracle Data Pump のベストプラクティス
-
full
モードでのインポートまたはシステムが管理するコンポーネントのスキーマのインポートは行わないでください。RDS for Oracle では
SYS
またはSYSDBA
管理ユーザーへのアクセスが許可されていないため、これらのアクションによって Oracle データディレクトリが損傷し、データベースの安定性が影響を受ける可能性があります。
=========