web-dev-qa-db-ja.com

Oracleのデータベーススキーマをダンプファイルにエクスポートする方法

LinuxマシンにインストールされたOracleサーバーにデータベーススキーマがあります。スキーマ関連情報をダンプファイルにエクスポートする必要があります。

これを行う方法 ?

11
Megha Sharma

Oracleのバージョンに依存しますか?古いバージョンではexp(エクスポート)が必要で、新しいバージョンではexpdp(データポンプ)が使用されます。 expは非推奨になりましたが、ほとんどの場合でも機能します。

開始する前に、Data Pumpがサーバー側のOracle「ディレクトリ」にエクスポートすることに注意してください。これは、データベース内で物理的な場所にマッピングされたOracleの記号的な場所です。デフォルトのディレクトリ(DATA_PUMP_DIR)がある場合があります。DBA_DIRECTORIESを照会して確認します。

  SQL> select * from dba_directories;

...そしてそうでない場合は、作成します

  SQL> create directory DATA_PUMP_DIR as '/Oracle/dumps';
  SQL> grant all on directory DATA_PUMP_DIR to myuser;    -- DBAs dont need this grant

SYSTEMユーザーまたは別のDBAとして接続できると仮定すると、そのようなスキーマをデフォルトのディレクトリにエクスポートできます。

 $ expdp system/manager schemas=user1 dumpfile=user1.dpdmp

または、特定のディレクトリを指定して、directory=<directory name>を追加します。

 C:\> expdp system/manager schemas=user1 dumpfile=user1.dpdmp directory=DUMPDIR

古いエクスポートユーティリティを使用すると、次のコマンドを使用して、作業ディレクトリにエクスポートしたり、サーバーからリモートのクライアントマシンにエクスポートすることもできます。

 $ exp system/manager owner=user1 file=user1.dmp

エクスポートが正しい文字セットで行われていることを確認してください。環境を設定していない場合、Oracleクライアントの文字セットはDB文字セットと一致しない可能性があり、Oracleは文字セット変換を行いますが、これは望んでいない場合があります。警告が表示された場合は、NLS_LANG環境変数を設定した後にエクスポートを繰り返して、クライアントの文字セットがデータベースの文字セットと一致するようにします。これにより、Oracleは文字セット変換をスキップします。

アメリカのUTF8(UNIX)の例:

 $ export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

WindowsはSETを使用します。たとえば、日本語UTF8を使用します。

 C:\> set NLS_LANG=Japanese_Japan.AL32UTF8

Data Pumpの詳細はこちら: http://docs.Oracle.com/cd/B28359_01/server.111/b28319/dp_export.htm#g1022624

22
codenheim