web-dev-qa-db-ja.com

テーブルスペースを別のデータベースに復元する

別のサーバーでテーブルスペースを再作成する方法に関するアイデアはありますか?

コールドバックアップがあるので、データファイルをターゲットサーバーにコピーできます。ターゲットサーバー上に同じテーブルスペース名と同じパス構造で新しいインスタンスを作成し、元のデータファイルをプラグインできますか?

もう少し背景を説明します。データベース全体を復元せずに、コールドバックアップからテーブルを取得したいだけなので、テーブルスペースのファイルをダミーデータベースに復元し、テーブルをエクスポートしました。

残念ながらそれは古いバージョンのOracle-9.2.0.8であり、RMANを使用しません。どんな情報でもいただければ幸いです。

2
stumps42

はい、

すべてのファイルを同じ場所に配置している場合は、pfileを作成し、それをcontrolfile [s]にポイントして、インスタンスを起動できます。バックアップがクリーンコールドバックアップの場合、問題なく開くはずです。データベースの名前パラメーターとダンプ宛先パラメーターも入力することを忘れないでください。

成功するには、少なくともシステムを復元し、undoとyour_desired_tablespace_filesを実行する必要があります。新しい一時テーブルスペースを作成します。

1
ik_zelf

いいえ、データファイルをコピーして貼り付けることはできません。

そのためには、まずテーブルスペースを(exp/impツールで)トランスポータブルテーブルスペースとしてエクスポートし、次にデータファイルをコピーして、最後にエクスポートプロセスで生成されたダンプファイルをインポートする必要があります。ただし、これは異なるプラットフォーム間では機能しないことに注意してください(この機能は10g以降)

代わりに、テーブルスペース全体(またはスキーマ)をダンプファイルにエクスポートし、同じスキーマとテーブルスペースを作成してインポートすることができます。

-編集-その場合、制御ファイルのバックアップがある場合は、それらに加えて必要なファイルを取得し、同じ場所に配置し、pfileを作成し、マウントを開始し、必要なものを除くすべてのデータファイルをオフラインにします。 DBを開き、テーブルをエクスポートします。

0
vegatripy