Oracleデータベースで一部のテーブルだけバックアップを取りたいケースは多くあります。例えば開発用の検証や、特定のテーブルだけを他の環境に移行したいときなどです。本記事では、指定したテーブルのみをバックアップする方法をいくつか紹介します。
Data Pump Export(expdp)を使ってバックアップを取る方法
Oracle 10g以降の環境では、Data Pump Export(expdp)を使用するのが推奨されます。高速かつ柔軟にテーブル単位のエクスポートが可能です。
基本構文:
expdp ユーザー名/パスワード directory=ディレクトリ名 dumpfile=ファイル名.dmp logfile=ログファイル名.log tables=スキーマ名.テーブル名
使用例:
expdp scott/tiger directory=DATA_PUMP_DIR dumpfile=emp_backup.dmp logfile=emp_backup.log tables=scott.emp
この例では、SCOTTスキーマの「EMP」テーブルのみをエクスポートしています。
事前準備:
expdpを使うには、あらかじめエクスポート用のディレクトリオブジェクトを作成しておく必要があります。
CREATE DIRECTORY DATA_PUMP_DIR AS '/u01/app/oracle/dump';
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO scott;
古い exp ユーティリティを使う方法
Oracle 10g以前の環境では、旧式の exp
コマンドが使用されていました。現行のバージョンでも互換性のため残されていますが、新規の導入には推奨されません。
使用例:
exp scott/tiger tables=scott.emp file=emp_backup.dmp log=emp_backup.log
SQL*Plusでテーブルを複製する方法
特定のテーブルを簡易的にバックアップしたい場合は、CREATE TABLE AS SELECT
文で複製する方法があります。
例:
CREATE TABLE emp_backup AS SELECT * FROM emp;
この方法では、データベース内に複製テーブルが作成され、必要に応じてバックアップや比較などに使用できます。
GUIツールでCSV出力する方法(SQL Developerなど)
SQL DeveloperなどのGUIツールを使えば、特定テーブルをCSVファイルやExcel形式で出力することも可能です。
- SQL Developerを起動
- 対象テーブルを右クリックして「エクスポート」を選択
- ファイル形式(CSV、Excelなど)を指定してエクスポート
データのみが必要なケースや、分析用として保存したい場合に便利です。
RMANはテーブル単位のバックアップに非対応
Oracleのバックアップツールとして有名なRMAN(Recovery Manager)は、データベース全体や表領域単位でのバックアップを目的としたものであり、特定テーブルのみをバックアップする機能はありません。
まとめ
方法 | 対応単位 | 特徴 |
---|---|---|
Data Pump(expdp) | テーブル単位 | 高速・柔軟・推奨 |
旧 exp ユーティリティ | テーブル単位 | 古いバージョン向け |
CREATE TABLE AS SELECT | データのみ | 簡易バックアップ・複製 |
SQL DeveloperでCSV出力 | データのみ | 分析用や手元保存に便利 |
RMAN | データベース単位 | テーブル単位では不可 |
目的や環境に応じて、最適なバックアップ方法を選択してください。特定テーブルだけを移行・保存したい場合は、Data Pump Exportの活用を強くおすすめします。