web-dev-qa-db-ja.com

Oracle 11Gでデータポンプを使用せずにテーブルスペースを別のデータベースにコピーする方法

別の環境にエクスポートする必要があるデータが含まれているレガシーシステムにデータベースがあります。必要なものはすべて1つのテーブルスペースに含まれています。残念ながら、以前に失敗したパッチ(再コンパイルできないストリームパッケージを含む数千の無効なオブジェクト)が原因で、データポンプを使用できません。

RMANまたは他の方法を使用してこのテーブルスペースをバックアップし、それを別のネットワークに移動して(物理メディア転送によって-ネットワークは完全に分離されます)、既存のデータベースに復元できますか?

2
canardgras

これは、最も単純なシナリオを想定した最低限のものです。

1。元のエクスポート/インポート:

ソースデータベース:

  • テーブルスペースからすべてをエクスポートする

exp userid=user/password tablespaces=example file=example.dmp

先:

  • ソースからexample.dmpをコピーする
  • 目的の場所に空のテーブルスペースを作成し、ユーザーを手動で作成してから、次の手順を実行します。

imp userid=user/password full=y file=example.dmp

または2.元のエクスポート/インポートを使用したトランスポータブルテーブルスペース:

ソースデータベース:

  • テーブルスペースを読み取り専用モードにします。

alter tablespace example read only;

  • テーブルスペースを移送するためのメタデータのエクスポート

exp userid=\'/ as sysdba\' transport_tablespace=y tablespaces=example file=example_tts.dmp

SYSDBAで接続しないと、ここでEXP-00044エラーが発生することに注意してください。

宛先データベース:

  • ソースからexample_tts.dmpをコピーする
  • データファイル自体をソースから目的の場所にコピーします(以下の例ではexample01.dbf)。
  • ユーザーを手動で作成してから、

imp userid=\'/ as sysdba\' transport_tablespace=y datafiles=/oradata/S112/example01.dbf file=example_tts.dmp

  • 最後に、テーブルスペースを書き込み可能にします。

alter tablespace example read write;

詳細はドキュメントにあります:

元のエクスポート

元のインポート

1
Balazs Papp