質問: 現在、プライベートクラウドに設置しているOracleデータベースを、パブリックへ移行する作業を行っています。 この際、バックアップで取得しているダンプファイルを元にしてデータベースの移行を行おうとしていますが、この際に移行先データベースに空のデータベース、表領域を作成してインポートをしようとしてもエラーが出てしまいます。 そこで幾つか質問があり投稿させていただきました。 (ここ2週間くらいのOracle初心者の為、そもそもの理解が間違っている点がありましたら、合わせてご指摘頂ければ幸いです) 【スペック】 OS:Windows2008R2 SP1 MW:Oracle 10.2.0.5 IMP/EXPコマンド:Data Pump(impdp/expdp) サービス停止:不可 非アーカイブモード 【質問】 ・そもそも、既存環境から権限・ロール・ユーザーをまるまるエクスポートし、移行先へインポートすることは可能なのでしょうか。 ・expdpのfull=yでは権限やロールは吐き出されないでしょうか。(sysdbaでログインしての実行) ・データベースの移行最善と思われる方法概要をご教示いただけないでしょうか。 ※基本コマンドラインからの操作のみで、Oracle Enterprise Managerやその他フリー等のツールも使用不可です。 お手数おかけいたしますが、よろしくお願いいたします!
回答: 以下のQAがたいへん参考になります。 ぜひ、ご一読を。 [oracle]impdpについて > > 【質問】 > > ・そもそも、既存環境から権限・ロール・ユーザーをまるまるエクスポートし、移行先へインポートすることは可能なのでしょうか。 > > > 可能です。 システム権限に関しては特権ユーザでの実行が必要です。 Oracle Database ユーティリティ 10g リリース2(10.2) B19211-01 ``` 特権ユーザーは、次のことを実行できます。 他のユーザーが所有するデータベース・オブジェクトのエクスポートおよびインポート 表領域およびスキーマの定義、システム権限、リソース・プランなどの非スキーマ・ベースのオブジェクトのエクスポートおよびインポート 他のユーザーが開始したData Pumpジョブの接続、監視および制御 データベース・データ・ファイルに対する再マップ操作の実行 自分が所有するスキーマ以外のスキーマに対する再マップ操作の実行 ``` > > ・expdpのfull=yでは権限やロールは吐き出されないでしょうか。(sysdbaでログインしての実行) > > > 権限についてはダンプファイルに出力されていたかと思います。 ロールに関しては移行したことがないため未確認です。 impdpの`SQLFILEオプション`を利用することでSQLとして確認ができるかと思います。 ``` 5. インポートの際にインポート先を指定するオプション SQLFILEオプション : IMPDP 実行時に実行される SQL 文のコマンドを任意のファイルに出力 (例)import 時に実行される SQL 文を確認する場合 % impdp scott/tiger directory=test_dir dumpfile=exp.dmp sqlfile=test.sql ``` Data Pump(expdp/impdp)の使い方~エクスポート/インポート、データ移動、論理バックアップ > > ・データベースの移行最善と思われる方法概要をご教示いただけないでしょうか。 > > ※基本コマンドラインからの操作のみで、Oracle Enterprise Managerやその他フリー等のツールも使用不可です。 > > > 「最善」と言われてしまうと回答しづらくはありますが、 過去のプロジェクトでは`expdp / impdp`の利用とDDLの併用を利用していました。 参考までに。 シングルインスタンス、非アーカイブモード運用のインスタンスです。 * インスタンス作成 * DDLにてスキーマを作成 * impdpにてindex以外インポート * DDLにてindexを作成