exp コマンド (Oracle):必須オプションとサンプルスクリプト


Oracle expコマンド:詳細解説、必須オプション、サンプルスクリプト

Oracleデータベースのexpコマンド(エクスポート)は、データベースオブジェクトやデータを外部ファイルにエクスポートするためのユーティリティです。この外部ファイルは通常、ダンプファイルと呼ばれ、データベース全体のバックアップ、特定のスキーマやテーブルの移行、データのアーカイブなどに使用されます。本記事では、expコマンドの詳細な説明、必須オプション、そして実際の利用シーンを想定したサンプルスクリプトを提供します。

1. expコマンドの概要

expコマンドは、Oracleデータベースのデータをバイナリ形式のダンプファイルにエクスポートします。このダンプファイルは、impコマンド(インポート)を使用して、別のOracleデータベースにデータをリストアするために使用できます。expコマンドは、データの論理バックアップを作成するための重要なツールであり、データベースのメンテナンス、アップグレード、災害復旧計画において不可欠な役割を果たします。

2. expコマンドの構文

expコマンドの基本的な構文は以下の通りです。

bash
exp [username/password@connect_string] [オプション=値]

  • username/password@connect_string: データベースに接続するためのユーザー名、パスワード、および接続文字列を指定します。
  • オプション=値: エクスポート処理を制御するための様々なオプションを指定します。

3. expコマンドの必須オプション

expコマンドを使用する際に、いくつかのオプションは必須ではありませんが、通常は指定する必要があります。これらのオプションは、エクスポートするデータの範囲、出力ファイルの名前、およびその他の重要なパラメータを制御します。

3.1. FILEオプション

FILEオプションは、エクスポートされたデータが書き込まれるダンプファイルの名前を指定します。このオプションはほぼ必須であり、指定しない場合、expコマンドは正常に動作しません。

bash
FILE=export.dmp

この例では、エクスポートされたデータが export.dmp という名前のファイルに書き込まれます。

3.2. OWNERオプション

OWNERオプションは、エクスポートするスキーマ(ユーザー)を指定します。このオプションを指定すると、指定されたスキーマ内のオブジェクト(テーブル、ビュー、プロシージャなど)のみがエクスポートされます。

bash
OWNER=scott

この例では、scott スキーマ内のオブジェクトのみがエクスポートされます。複数のスキーマをエクスポートする場合は、カンマ区切りで指定できます。

bash
OWNER=scott,tiger

3.3. TABLESオプション

TABLESオプションは、エクスポートするテーブルを指定します。このオプションを指定すると、指定されたテーブルのみがエクスポートされます。

bash
TABLES=emp

この例では、emp テーブルのみがエクスポートされます。複数のテーブルをエクスポートする場合は、カンマ区切りで指定できます。

bash
TABLES=emp,dept

3.4. FULLオプション

FULLオプションは、データベース全体をエクスポートするかどうかを指定します。このオプションを Y に設定すると、データベース全体がエクスポートされます。

bash
FULL=Y

FULLオプションを使用する場合、通常はSYSDBA権限を持つユーザーで接続する必要があります。

4. expコマンドのその他の重要なオプション

上記以外にも、expコマンドには多くのオプションがあり、エクスポート処理を細かく制御できます。

4.1. BUFFERオプション

BUFFERオプションは、データベースからデータを読み取る際に使用するバッファのサイズを指定します。大きな値を設定すると、パフォーマンスが向上する場合があります。

bash
BUFFER=4096

4.2. CONSISTENTオプション

CONSISTENTオプションは、エクスポート処理中にデータの整合性を維持するかどうかを指定します。このオプションを Y に設定すると、エクスポート処理中に他のユーザーがデータを変更しても、エクスポートされるデータは一貫性を保ちます。

bash
CONSISTENT=Y

4.3. COMPRESSオプション

COMPRESSオプションは、エクスポートされたデータを圧縮するかどうかを指定します。このオプションを Y に設定すると、ダンプファイルのサイズを小さくすることができます。

bash
COMPRESS=Y

4.4. GRANTSオプション

GRANTSオプションは、オブジェクトに対する権限をエクスポートするかどうかを指定します。このオプションを Y に設定すると、オブジェクトに対する権限情報もダンプファイルに保存されます。

bash
GRANTS=Y

4.5. INDEXESオプション

INDEXESオプションは、インデックスをエクスポートするかどうかを指定します。このオプションを Y に設定すると、テーブルのインデックス情報もダンプファイルに保存されます。

bash
INDEXES=Y

4.6. ROWSオプション

ROWSオプションは、テーブルのデータをエクスポートするかどうかを指定します。このオプションを Y に設定すると、テーブルのデータもダンプファイルに保存されます。N に設定すると、テーブルの構造(定義)のみがエクスポートされます。

bash
ROWS=Y

4.7. LOGオプション

LOGオプションは、エクスポート処理のログを保存するファイルの名前を指定します。

bash
LOG=export.log

4.8. DIRECTオプション

DIRECTオプションは、ダイレクトパスエクスポートを使用するかどうかを指定します。ダイレクトパスエクスポートは、より高速なエクスポート方法であり、通常は大規模なテーブルのエクスポートに適しています。ただし、いくつかの制約があります。

bash
DIRECT=Y

4.9. QUERYオプション

QUERYオプションは、特定の条件を満たすデータのみをエクスポートするために使用できます。WHERE句を指定することで、特定の条件に基づいてデータをフィルタリングできます。

bash
TABLES=emp
QUERY="WHERE deptno = 10"

この例では、emp テーブルから deptno が 10 のレコードのみがエクスポートされます。

4.10. RECORDLENGTHオプション

RECORDLENGTHオプションは、エクスポートファイルのレコード長を指定します。通常はデフォルト値で問題ありませんが、特定の環境では調整が必要になる場合があります。

bash
RECORDLENGTH=65535

5. サンプルスクリプト

以下に、expコマンドの使用例をいくつか示します。

5.1. スキーマ全体のエクスポート

bash
exp scott/tiger@orcl FILE=scott.dmp OWNER=scott LOG=scott_export.log FULL=N

このスクリプトは、scott スキーマのすべてのオブジェクトを scott.dmp ファイルにエクスポートし、ログファイルを scott_export.log に保存します。FULL=N は、データベース全体ではなく、指定されたスキーマのみをエクスポートすることを意味します。

5.2. 特定のテーブルのエクスポート

bash
exp system/manager@orcl FILE=emp_dept.dmp TABLES=emp,dept LOG=emp_dept_export.log FULL=N

このスクリプトは、system ユーザーでデータベースに接続し、emp および dept テーブルを emp_dept.dmp ファイルにエクスポートし、ログファイルを emp_dept_export.log に保存します。

5.3. データとメタデータのエクスポート

bash
exp system/manager@orcl FILE=hr_data.dmp OWNER=hr GRANTS=Y INDEXES=Y ROWS=Y CONSISTENT=Y LOG=hr_export.log FULL=N

このスクリプトは、hr スキーマのデータ、権限、インデックスを hr_data.dmp ファイルにエクスポートし、ログファイルを hr_export.log に保存します。CONSISTENT=Y は、エクスポート処理中にデータの整合性を維持することを保証します。

5.4. WHERE句を使用したテーブルのエクスポート

bash
exp scott/tiger@orcl FILE=emp_dept10.dmp TABLES=emp QUERY="WHERE deptno = 10" LOG=emp_dept10_export.log FULL=N

このスクリプトは、scott スキーマの emp テーブルから deptno が 10 のレコードのみを emp_dept10.dmp ファイルにエクスポートし、ログファイルを emp_dept10_export.log に保存します。

5.5. ダイレクトパスエクスポート

bash
exp system/manager@orcl FILE=large_table.dmp TABLES=large_table DIRECT=Y LOG=large_table_export.log FULL=N

このスクリプトは、large_table テーブルをダイレクトパスエクスポートを使用して large_table.dmp ファイルにエクスポートし、ログファイルを large_table_export.log に保存します。ダイレクトパスエクスポートは、大規模なテーブルのエクスポートに適していますが、いくつかの制約があります。たとえば、テーブルにファンクションベースのインデックスがある場合や、クラスター化されたテーブルの場合には使用できません。

6. expコマンドの注意事項

  • 権限: expコマンドを実行するには、適切な権限が必要です。データベース全体をエクスポートする場合は、SYSDBA権限を持つユーザーで接続する必要があります。特定のスキーマやテーブルのみをエクスポートする場合は、そのオブジェクトに対するSELECT権限が必要です。
  • 文字セット: エクスポート元とエクスポート先のデータベースの文字セットが異なる場合、データの変換が必要になる場合があります。文字セットの問題を避けるために、可能な限り同じ文字セットを使用することをお勧めします。
  • バージョン互換性: expコマンドで作成されたダンプファイルは、通常、同じバージョンまたはそれ以降のバージョンのOracleデータベースでのみインポートできます。異なるバージョンのOracleデータベース間でデータを移行する場合は、バージョン互換性に注意する必要があります。
  • パフォーマンス: expコマンドのパフォーマンスは、データベースのサイズ、ネットワーク速度、および指定されたオプションによって異なります。大規模なデータベースのエクスポートには時間がかかる場合があるため、適切な計画とテストが必要です。
  • セキュリティ: expコマンドを実行する際には、パスワードをコマンドラインに直接記述することは避けてください。パスワードを環境変数に設定したり、プロンプトで入力したりするなど、より安全な方法を使用することをお勧めします。

7. expdpコマンドへの移行

Oracle 10g以降では、expコマンドの代わりにexpdpコマンド(Data Pump Export)を使用することが推奨されています。expdpコマンドは、より高度な機能を提供し、パフォーマンスが向上しています。

expdpコマンドの主な利点は以下の通りです。

  • 並列処理: expdpコマンドは、複数のプロセスを使用してデータを並行してエクスポートできます。
  • 再起動: エクスポート処理が中断された場合、expdpコマンドは中断された場所から再開できます。
  • ネットワーク: expdpコマンドは、ネットワーク経由で直接データをエクスポートできます。
  • フィルタリング: expdpコマンドは、より高度なフィルタリングオプションを提供します。

expdpコマンドの使用方法は、expコマンドとは異なりますが、基本的な概念は同じです。expdpコマンドの詳細については、Oracleの公式ドキュメントを参照してください。

8. まとめ

expコマンドは、Oracleデータベースのデータをエクスポートするための強力なツールです。本記事では、expコマンドの基本的な構文、必須オプション、およびその他の重要なオプションについて説明しました。また、実際の利用シーンを想定したサンプルスクリプトを提供しました。expコマンドを使用する際には、権限、文字セット、バージョン互換性、パフォーマンス、およびセキュリティに関する注意事項を考慮する必要があります。Oracle 10g以降では、expdpコマンドへの移行が推奨されています。

この記事が、Oracleデータベースのエクスポートに関する理解を深め、より効果的にexpコマンドを活用するのに役立つことを願っています。


コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール