0

バックグラウンド

サイズが 40GB を超える巨大な Oracle データベース ダンプを Oracle Express 環境にインポートしようとしています。ご存知のように、Oracle Express では最大 11GB のデータベース サイズしか許可されていません。したがって、このダンプ ファイル全体を Oracle XE に "impdp" することはできません。XE の制限を超えないいくつかのテーブルのみを選択的にインポートする必要があります。

準備

DIR次のように、ハードドライブ上のディレクトリを指すインポートに必要なテーブルスペースを作成しました。

/db/として作成されたディレクトリ オブジェクト { DIR }

テーブルスペースABCは/db/abc.dbfに作成され、6GB のサイズが割り当てられます

サイズのみを適用してテーブルスペースを作成し、他の追加の引数はありません。

ヒント*: インポート用のダンプ ファイルには、テーブルスペース名 ABC が必要です。

データベース構造全体を正常にインポートしました

まず、以下のコマンドを実行して、データをコピーせずにターゲット XE 環境でテーブル構造を作成しました。ダンプファイルに必要なすべてのテーブルが含まれていることを確認するためだけに:

$> impdp system/pwd directory=DIR dumpfile=FOO.dump 
   content=METADATA_ONLY schemas=FOO;

上記のコマンドは正しく実行されます。私の XE 環境では、すべてのテーブル構造が schema の下に作成されますFOO

次に、テーブル データのインポートを開始したい (BUT FAILED)

次に、インポートする最初のテーブル、たとえば table から始めますabc。このコマンドを実行して、事前に作成したテーブルにデータのみをインポートしました。

$> impdp FOO/pwd directory=DIR dumpfile=FOO.dump
   content=DATA_ONLY tables=abc;

systemユーザーからに切り替えることに気付くかもしれませんFOO。私はこれを知っています。私のテーブルは schema の下に作成されているため、このスキーマの下の既存のテーブルにインポートするFOOために使用します。FOO

ただし、これは失敗します。以下に示すようなエラーがあります。

接続先: Oracle Database 11g Express Edition リリース 11.2.0.2.0 - 64 ビット製品

マスターテーブル "FOO"."SYS_IMPORT_TABLE_01" が正常にロード/アンロードされました

"FOO"."SYS_IMPORT_TABLE_01" を開始: FOO/******** ディレクトリ=DIR ダンプファイル=DUMP.dump ログファイル=import_table.log コンテンツ=data_only テーブル=item_keyword_tab

処理オブジェクト型 SCHEMA_EXPORT/TABLE/TABLE_DATA

ORA-31693: 表データ・オブジェクト"FOO"."ABC"はロード/アンロードに失敗し、エラーのためスキップされています:

ORA-29913: ODCIEXTTABLEFETCHコールアウトの実行中にエラーが発生しました

ORA-01653: 表領域 ABC で表 FOO.ABC を 8 拡張できません

ジョブ "ABC"."SYS_IMPORT_TABLE_01" は 02:03:33 に 1 つのエラーで完了しました

エラー メッセージには、「テーブルスペースを 8 MB だけ拡張することはできません」と記載されているようです。6 GB もの十分なテーブルスペース「ABC」を作成し、XE の制限を超えないことを保証できます。

誰でもこれを理解するのを手伝ってもらえますか? どうすればいいですか?

私の仮定は次のとおりです。

  • スキーマ「FOO」には権限がないため、インポート中にテーブルを拡張できません。ドキュメントを調べましたが、「テーブルスペースを拡張する」ことは、ユーザーの調整可能な特権の 1 つではありません。

  • 表領域を 8 MB 拡張すると、サイズが非常に小さくなります。これが失敗する本当の理由だとは思いません。根本的な原因が他にある可能性があります。

4

0 に答える 0