Oracleデータベースのリストア作業で「特定のテーブルだけ除外したい」という場面は非常に多くあります。大容量のログテーブルを含めたくない、テスト用の一時テーブルは不要、既存データを上書きしたくないテーブルがある——こうした要件は、本番運用や開発環境の構築で日常的に発生します。
この記事では、Data Pump(impdp / expdp)のEXCLUDEパラメータを中心に、RMANでの除外方法、parfileでの管理、実務でよく使うパターンまで、リストア時のテーブル除外を体系的に解説します。
この記事で分かること
impdpのEXCLUDEパラメータで特定テーブルを除外する方法
- LIKE条件・IN条件で複数テーブルを柔軟に除外する書き方
expdp段階で事前に除外してエクスポートする方法
- RMANリストアでのテーブル単位の制御
- parfileで長いパラメータを管理する方法
- 正規表現・スキーマ指定・INDEX/CONSTRAINTの除外など高度な条件指定
- 実務でよく使うシナリオ別の除外パターン
- クォートのエスケープなどよくあるミスと注意点
Data Pump impdpでテーブルを除外する方法
Data Pump Import(impdp)は、Oracleのデータ移行ツールです。ダンプファイルからデータベースにインポートする際、EXCLUDEパラメータを使うことで、特定のオブジェクトをインポート対象から除外できます。
EXCLUDEパラメータの基本構文
EXCLUDEパラメータは、インポート時に除外するオブジェクトの種類と条件を指定します。基本構文は以下の通りです。
構文
EXCLUDE=オブジェクト種類:"条件式"
| 要素 |
説明 |
例 |
オブジェクト種類 |
除外するオブジェクトのタイプ |
TABLE, INDEX, CONSTRAINT, TRIGGER |
条件式 |
NAME列に対するSQL条件 |
IN (‘TEMP_DATA’), LIKE ‘TMP_%’ |
| 省略時 |
そのタイプのオブジェクトを全て除外 |
EXCLUDE=TABLE(テーブル全除外) |
EXCLUDE=TABLE:”IN (…)”: 特定テーブルを名前指定で除外
最も基本的な使い方は、テーブル名を直接指定して除外するパターンです。IN句を使って、除外したいテーブル名をリストで指定します。
Shell — 1つのテーブルを除外してインポート
impdp scott/tiger
directory=DATA_PUMP_DIR
dumpfile=full_backup.dmp
logfile=import.log
EXCLUDE=TABLE:"IN ('ACCESS_LOG')"
上記の例では、ACCESS_LOGテーブルだけがインポート対象から除外され、それ以外のすべてのオブジェクトは通常通りインポートされます。
Shell — 複数テーブルを除外
impdp scott/tiger
directory=DATA_PUMP_DIR
dumpfile=full_backup.dmp
logfile=import.log
EXCLUDE=TABLE:"IN ('ACCESS_LOG', 'AUDIT_TRAIL', 'TEMP_DATA')"
IN句にカンマ区切りで複数のテーブル名を指定できます。テーブル名は大文字で指定するのが基本です(Oracleの内部格納が大文字のため)。
EXCLUDE=TABLE:”LIKE …”: パターンで除外
LIKE句を使うと、テーブル名のパターンに一致するテーブルをまとめて除外できます。ワイルドカード(%)を使って柔軟に対象を指定します。
Shell — TMP_で始まるテーブルを全て除外
impdp scott/tiger
directory=DATA_PUMP_DIR
dumpfile=full_backup.dmp
logfile=import.log
EXCLUDE=TABLE:"LIKE 'TMP_%'"
Shell — _BAKで終わるバックアップテーブルを除外
impdp scott/tiger
directory=DATA_PUMP_DIR
dumpfile=full_backup.dmp
logfile=import.log
EXCLUDE=TABLE:"LIKE '%_BAK'"
| パターン |
意味 |
マッチ例 |
LIKE 'TMP_%' |
TMP_で始まるテーブル |
TMP_ORDERS, TMP_USERS |
LIKE '%_BAK' |
_BAKで終わるテーブル |
ORDERS_BAK, USERS_BAK |
LIKE '%LOG%' |
LOGを含むテーブル |
ACCESS_LOG, LOG_MASTER, ERROR_LOGS |
LIKE '%_202401' |
_202401で終わるテーブル |
SALES_202401, TX_202401 |
複数のEXCLUDE条件を組み合わせる
EXCLUDEパラメータは複数回指定できます。異なる条件を組み合わせることで、柔軟な除外ルールを構築できます。
Shell — 複数の除外条件を同時に指定
impdp scott/tiger
directory=DATA_PUMP_DIR
dumpfile=full_backup.dmp
logfile=import.log
EXCLUDE=TABLE:"LIKE 'TMP_%'"
EXCLUDE=TABLE:"LIKE '%_BAK'"
EXCLUDE=TABLE:"IN ('HUGE_LOG_TABLE', 'AUDIT_ARCHIVE')"
ポイント:複数のEXCLUDEを指定した場合、すべての条件がOR(論理和)で適用されます。つまり、いずれかの条件に一致したオブジェクトが除外されます。
また、1つのEXCLUDE内でOR条件を使うこともできます。
Shell — 1つのEXCLUDE内でOR条件
impdp scott/tiger
directory=DATA_PUMP_DIR
dumpfile=full_backup.dmp
logfile=import.log
EXCLUDE=TABLE:"LIKE 'TMP_%' OR LIKE '%_BAK'"
Data Pump expdpで事前にテーブルを除外してエクスポート
リストア時に除外するのではなく、エクスポート段階で不要なテーブルを除外しておく方法もあります。ダンプファイル自体に含まれないため、ファイルサイズの削減やエクスポート時間の短縮にもつながります。
EXCLUDE=TABLE でエクスポート時に除外
expdpでもEXCLUDEパラメータの構文はimpdpと全く同じです。エクスポート時に除外すれば、ダンプファイルにそのテーブルのデータは含まれません。
Shell — expdpで大容量テーブルを除外
expdp scott/tiger
directory=DATA_PUMP_DIR
dumpfile=export_no_logs.dmp
logfile=export.log
schemas=SCOTT
EXCLUDE=TABLE:"IN ('ACCESS_LOG', 'BATCH_LOG', 'ERROR_LOG')"
メリット:エクスポート段階で除外しておくと、ダンプファイルのサイズが大幅に削減されます。数百GBのログテーブルを除外するだけで、エクスポート・転送・インポートの全工程が高速化されます。
TABLESパラメータで対象を絞る(逆のアプローチ)
除外するのではなく、「必要なテーブルだけを指定してエクスポートする」という逆のアプローチもあります。対象テーブルが少ない場合はこちらの方がシンプルです。
Shell — TABLESで必要なテーブルだけエクスポート
expdp scott/tiger
directory=DATA_PUMP_DIR
dumpfile=selected_tables.dmp
logfile=export.log
tables=SCOTT.EMPLOYEES,SCOTT.DEPARTMENTS,SCOTT.SALARIES
| アプローチ |
パラメータ |
適したケース |
| 除外(ブラックリスト) |
EXCLUDE=TABLE |
大半のテーブルが必要で、一部を除外したい場合 |
| 指定(ホワイトリスト) |
TABLES |
必要なテーブルが少数で、明確に特定できる場合 |
注意:TABLESパラメータとEXCLUDE=TABLEは同時に使用できません。どちらか一方のアプローチを選択してください。また、TABLESパラメータを使う場合は、schemasパラメータやfull=yとは併用できません。
RMANリストアでテーブルを除外する方法
RMAN(Recovery Manager)は、Oracleのバックアップ・リカバリツールです。Data Pumpとは異なるアプローチですが、テーブル単位のリストア制御も可能です。
RMAN Table Recoveryでの対象指定
Oracle 12c以降では、RMANのRECOVER TABLEコマンドにより、バックアップから特定のテーブルだけをリストアできます。これは除外ではなく「必要なテーブルだけをリカバリする」アプローチです。
RMAN — 特定テーブルのみリカバリ
RECOVER TABLE SCOTT.EMPLOYEES, SCOTT.DEPARTMENTS
UNTIL TIME "TO_DATE('2024-01-15 10:00:00', 'YYYY-MM-DD HH24:MI:SS')"
AUXILIARY DESTINATION '/u01/aux'
DATAPUMP DESTINATION '/u01/dump';
このコマンドは、バックアップからEMPLOYEESとDEPARTMENTSテーブルだけを指定時点の状態にリカバリします。内部的にはData Pumpを利用しており、補助インスタンスを自動的に起動して処理を行います。
テーブル単位のリストアで除外する考え方
RMANにはEXCLUDEパラメータに相当する直接的な機能はありません。テーブルを除外したい場合は、以下のいずれかのアプローチを取ります。
| 方法 |
説明 |
使いどころ |
RECOVER TABLE |
必要なテーブルだけを指定してリカバリ |
少数のテーブルだけ復元したい場合 |
| RMAN + Data Pump連携 |
RMANでリストア後、Data PumpでEXCLUDE付きエクスポート/インポート |
複雑な除外条件が必要な場合 |
SKIP TABLESPACE |
特定の表領域をリストア対象から除外 |
表領域単位で除外したい場合 |
SKIP TABLESPACEの活用
テーブル単位ではなく表領域(テーブルスペース)単位で除外する場合は、RMANのSKIP TABLESPACE句を使います。例えば、一時データ専用の表領域をリストアから除外できます。
RMAN — 特定テーブルスペースを除外してリストア
RUN {
RESTORE DATABASE
SKIP TABLESPACE TEMP_DATA_TS, LOG_ARCHIVE_TS;
RECOVER DATABASE
SKIP TABLESPACE TEMP_DATA_TS, LOG_ARCHIVE_TS;
}
ポイント:SKIP TABLESPACEを使う場合、除外した表領域はオフライン状態になります。その表領域に含まれるテーブルにアクセスするとエラーになるため、後からDROPするか、個別にリストアする必要があります。
注意:SYSTEM、SYSAUX、UNDO表領域はSKIP TABLESPACEで除外できません。これらはデータベースの動作に必須の表領域です。
パラメータファイル(parfile)での管理
除外条件が多い場合や、定期的に同じパラメータで実行する場合は、パラメータファイル(parfile)にパラメータをまとめて記述すると管理が容易になります。コマンドラインが長くなりすぎることも防げます。
parfileの書き方
parfileはテキストファイルで、1行に1つのパラメータを記述します。コマンドラインで指定するパラメータをそのまま記述できます。
parfile — import_exclude.par
# インポート用パラメータファイル
# 大容量テーブル・一時テーブル・バックアップテーブルを除外
directory=DATA_PUMP_DIR
dumpfile=full_backup.dmp
logfile=import_20240115.log
schemas=SCOTT
# 大容量ログテーブルを除外
EXCLUDE=TABLE:"IN ('ACCESS_LOG', 'BATCH_LOG', 'AUDIT_TRAIL')"
# 一時テーブル(TMP_)を除外
EXCLUDE=TABLE:"LIKE 'TMP_%'"
# バックアップテーブル(_BAK)を除外
EXCLUDE=TABLE:"LIKE '%_BAK'"
# 統計情報も除外(既存の統計を保持したい場合)
EXCLUDE=STATISTICS
parfileを使った実行例
parfileはparfileパラメータで指定します。parfile内のパラメータとコマンドラインのパラメータは併用可能です。
Shell — parfileを使ってインポート
# parfileを指定して実行
impdp scott/tiger parfile=import_exclude.par
Shell — parfile + コマンドラインの併用
# parfileの設定に加えて、TABLE_EXISTS_ACTIONを上書き
impdp scott/tiger
parfile=import_exclude.par
table_exists_action=REPLACE
parfile管理のベストプラクティス
- 用途ごとにparfileを分ける(
import_dev.par, import_prod.parなど)
- バージョン管理(Git等)で変更履歴を残す
- ファイル名に日付や環境名を含めて識別しやすくする
- コメント(
#)で各パラメータの意図を記録する
複雑な除外条件の指定方法
実務では、単純なテーブル名の一致だけでなく、パターンの組み合わせやテーブル以外のオブジェクトの除外が必要になることがあります。ここでは高度な除外条件の指定方法を解説します。
NOT LIKE: 特定パターン以外を除外
NOT LIKEを使って「あるパターンに一致しないものを除外する」、つまり特定のパターンに一致するテーブルだけをインポートするという使い方もできます。
Shell — MST_で始まるテーブルだけインポート(それ以外を除外)
impdp scott/tiger
directory=DATA_PUMP_DIR
dumpfile=full_backup.dmp
logfile=import.log
EXCLUDE=TABLE:"NOT LIKE 'MST_%'"
この例では、MST_で始まるテーブル(マスタテーブル)以外の全テーブルが除外されます。EXCLUDEで「含めないものを除外する」という二重否定のロジックになるため、慣れないうちは混乱しやすい点に注意してください。
スキーマ+テーブルの組み合わせ除外
フルエクスポート(full=y)のダンプをインポートする場合、スキーマ単位での除外も可能です。
Shell — スキーマごと除外
# 特定スキーマを丸ごと除外
impdp system/password
directory=DATA_PUMP_DIR
dumpfile=full_backup.dmp
full=y
EXCLUDE=SCHEMA:"IN ('TEST_USER', 'DEV_USER')"
Shell — 特定スキーマの特定テーブルだけ除外(REMAP使用)
# SCOTTスキーマのLOGテーブルだけ除外
impdp system/password
directory=DATA_PUMP_DIR
dumpfile=full_backup.dmp
schemas=SCOTT
EXCLUDE=TABLE:"LIKE '%LOG%'"
INDEX, CONSTRAINT, TRIGGER等の除外
EXCLUDEはテーブルだけでなく、様々なオブジェクトタイプに対して使えます。テーブルのデータはインポートしつつ、インデックスやトリガーだけを除外するケースもよくあります。
Shell — インデックス・トリガー・統計情報を除外
impdp scott/tiger
directory=DATA_PUMP_DIR
dumpfile=full_backup.dmp
logfile=import.log
EXCLUDE=INDEX
EXCLUDE=TRIGGER
EXCLUDE=STATISTICS
| オブジェクトタイプ |
EXCLUDEの指定 |
除外されるもの |
TABLE |
EXCLUDE=TABLE |
テーブル定義+データ+依存オブジェクト |
INDEX |
EXCLUDE=INDEX |
インデックスのみ(テーブルは含む) |
CONSTRAINT |
EXCLUDE=CONSTRAINT |
制約(PK, UK, CHECK等) |
REF_CONSTRAINT |
EXCLUDE=REF_CONSTRAINT |
外部キー制約 |
TRIGGER |
EXCLUDE=TRIGGER |
トリガー |
GRANT |
EXCLUDE=GRANT |
権限付与 |
STATISTICS |
EXCLUDE=STATISTICS |
オプティマイザ統計情報 |
SCHEMA |
EXCLUDE=SCHEMA |
スキーマ全体(fullインポート時) |
INCLUDEとの使い分け
EXCLUDEの対になるパラメータとしてINCLUDEがあります。INCLUDEは「指定したオブジェクトだけをインポートする」パラメータで、EXCLUDEとは逆のアプローチです。
Shell — INCLUDEでテーブルだけインポート(他のオブジェクトは除外)
# テーブルのデータだけインポート(INDEX, TRIGGER等は除外)
impdp scott/tiger
directory=DATA_PUMP_DIR
dumpfile=full_backup.dmp
logfile=import.log
INCLUDE=TABLE
Shell — INCLUDEで特定テーブルだけインポート
# MST_で始まるテーブルだけインポート
impdp scott/tiger
directory=DATA_PUMP_DIR
dumpfile=full_backup.dmp
logfile=import.log
INCLUDE=TABLE:"LIKE 'MST_%'"
| パラメータ |
動作 |
適したケース |
EXCLUDE |
指定したオブジェクトを除外する |
大半をインポートし、一部だけ除外したい |
INCLUDE |
指定したオブジェクトだけを含める |
少数のオブジェクトだけインポートしたい |
注意:EXCLUDEとINCLUDEは同時に使用できません。どちらか一方だけを指定してください。両方指定するとORA-39001エラーが発生します。
実務でよく使うシナリオ
ここからは、実際の運用現場で頻繁に発生するテーブル除外のユースケースを、具体的なコマンド例とともに紹介します。
シナリオ1: 大容量テーブルを除外して高速リストア
ログテーブルやトランザクション履歴テーブルは、数百GB〜数TB規模になることがあります。開発環境の構築やテスト用のリストアでは、これらの大容量テーブルを除外することで大幅に時間を短縮できます。
Shell — 大容量テーブルを除外して高速インポート
impdp admin/password
directory=DATA_PUMP_DIR
dumpfile=production.dmp
logfile=fast_import.log
schemas=APP_SCHEMA
EXCLUDE=TABLE:"IN ('TX_HISTORY', 'ACCESS_LOG', 'BATCH_LOG', 'AUDIT_TRAIL')"
EXCLUDE=TABLE:"LIKE 'ARCHIVE_%'"
parallel=4
効果の例:500GBのフルダンプで、ログテーブル(400GB)を除外すると、インポート時間が数時間→30分程度に短縮されることもあります。parallelパラメータとの組み合わせでさらに高速化できます。
シナリオ2: テスト用・一時テーブルの除外
開発中に作成したテストデータや一時テーブルは、他の環境には不要です。命名規則(TMP_、TEST_、WK_など)でまとめて除外します。
parfile — exclude_temp.par
directory=DATA_PUMP_DIR
dumpfile=dev_backup.dmp
logfile=import_clean.log
schemas=DEV_USER
# テスト・一時テーブルを一括除外
EXCLUDE=TABLE:"LIKE 'TMP_%'"
EXCLUDE=TABLE:"LIKE 'TEST_%'"
EXCLUDE=TABLE:"LIKE 'WK_%'"
EXCLUDE=TABLE:"LIKE '%_TEMP'"
EXCLUDE=TABLE:"LIKE '%_BK'"
シナリオ3: 既存データを上書きしたくないテーブルの保護
リストア先に既に存在するマスタテーブルやコード管理テーブルを上書きしたくない場合があります。EXCLUDEで除外するか、TABLE_EXISTS_ACTIONと組み合わせて制御します。
Shell — マスタテーブルを除外して保護
# マスタテーブルを除外(既存データを保護)
impdp scott/tiger
directory=DATA_PUMP_DIR
dumpfile=full_backup.dmp
logfile=import.log
EXCLUDE=TABLE:"LIKE 'MST_%'"
EXCLUDE=TABLE:"IN ('CODE_MASTER', 'SYSTEM_CONFIG')"
table_exists_action=REPLACE
ポイント:この例では、マスタテーブルはEXCLUDEで除外し、それ以外のテーブルはTABLE_EXISTS_ACTION=REPLACEで上書きしています。これにより「マスタは保持、トランザクションデータは最新に更新」という運用が実現できます。
シナリオ4: 本番→開発環境移行で不要テーブルを除外
本番環境のデータを開発環境にコピーする際は、個人情報を含むテーブルや大容量のログテーブルを除外するのが一般的です。
parfile — prod_to_dev.par(本番→開発環境移行用)
# 本番→開発環境移行用パラメータ
directory=DATA_PUMP_DIR
dumpfile=production_full.dmp
logfile=prod_to_dev.log
schemas=APP_OWNER
# 個人情報テーブルを除外
EXCLUDE=TABLE:"IN ('CUSTOMER_PERSONAL', 'PAYMENT_INFO', 'CREDIT_CARD')"
# 大容量ログ・履歴テーブルを除外
EXCLUDE=TABLE:"LIKE '%_LOG'"
EXCLUDE=TABLE:"LIKE '%_HISTORY'"
EXCLUDE=TABLE:"LIKE 'ARCHIVE_%'"
# 権限・統計は開発環境で別途設定
EXCLUDE=GRANT
EXCLUDE=STATISTICS
# 既存テーブルは上書き
table_exists_action=REPLACE
Shell — parfileで実行
impdp admin/password parfile=prod_to_dev.par
よくあるミスと注意点
EXCLUDEパラメータは強力ですが、記述ミスやOracleの仕様を理解していないと思わぬトラブルにつながります。ここではよくあるミスとその対処法をまとめます。
クォートのエスケープ(シェルとSQLの二重エスケープ)
EXCLUDEパラメータの条件式では、テーブル名をシングルクォートで囲む必要があります。さらに、シェル(bash等)からコマンドを実行する場合は、シェルのクォートとSQLのクォートの二重エスケープが必要です。
Shell — クォートのエスケープパターン
# パターン1: ダブルクォートで囲み、内部はシングルクォート
EXCLUDE=TABLE:"IN ('ACCESS_LOG')"
# パターン2: バックスラッシュでエスケープ
EXCLUDE=TABLE:"IN ('ACCESS_LOG')"
# パターン3: parfileを使う(エスケープ問題を回避)
# → parfile内ではシェルのエスケープが不要
注意:クォートのエスケープでエラーが頻発する場合は、parfileを使うのが最も確実です。parfileではシェルのクォート処理が介入しないため、Data Pumpの構文そのままで記述できます。
EXCLUDE vs TABLE_EXISTS_ACTION の違い
EXCLUDEとTABLE_EXISTS_ACTIONは混同されがちですが、目的が全く異なります。
| パラメータ |
目的 |
動作 |
EXCLUDE |
特定オブジェクトのインポートを完全にスキップ |
対象オブジェクトは一切処理されない |
TABLE_EXISTS_ACTION |
既存テーブルとの競合時の動作を指定 |
SKIP / APPEND / TRUNCATE / REPLACE |
Shell — TABLE_EXISTS_ACTIONの各オプション
# SKIP: 既存テーブルはスキップ(データ変更なし)
table_exists_action=SKIP
# APPEND: 既存テーブルにデータを追加
table_exists_action=APPEND
# TRUNCATE: 既存データを削除してからインポート
table_exists_action=TRUNCATE
# REPLACE: テーブルをDROPして再作成
table_exists_action=REPLACE
「テーブルを保護したい」場合、EXCLUDEはそのテーブルを完全に無視し、TABLE_EXISTS_ACTION=SKIPは既存テーブルの上書きをスキップします。目的に応じて使い分けましょう。
大文字・小文字の注意
Oracleのデータディクショナリでは、オブジェクト名はデフォルトで大文字で格納されます。EXCLUDEのテーブル名も大文字で指定する必要があります。
Shell — 大文字・小文字の注意点
# NG: 小文字で指定(マッチしない)
EXCLUDE=TABLE:"IN ('access_log')" -- 除外されない!
# OK: 大文字で指定
EXCLUDE=TABLE:"IN ('ACCESS_LOG')" -- 正しく除外される
# 例外: ダブルクォーテーション付きで作成されたテーブル
# CREATE TABLE "myTable" (...) のような場合は小文字のまま格納される
EXCLUDE=TABLE:"IN ('myTable')" -- 小文字のまま指定
確認方法:除外対象のテーブル名が正確かどうか確認するには、以下のSQLを実行します。
SQL — テーブル名の確認
SELECT table_name
FROM user_tables
WHERE table_name LIKE '%LOG%'
ORDER BY table_name;
依存オブジェクトも一緒に除外される
EXCLUDE=TABLEでテーブルを除外すると、そのテーブルに紐づく依存オブジェクトも自動的に除外されます。
| テーブル除外時に一緒に除外されるもの |
説明 |
| インデックス |
テーブルに作成されたすべてのインデックス |
| 制約(CONSTRAINT) |
PRIMARY KEY, UNIQUE, CHECK, NOT NULL |
| 外部キー(REF_CONSTRAINT) |
このテーブルを参照する/されるFK |
| トリガー |
テーブルに関連付けられたトリガー |
| 権限(GRANT) |
テーブルに対するGRANT |
注意:他のテーブルから除外対象テーブルへの外部キー制約がある場合、参照先テーブルがないためインポートエラーになる可能性があります。この場合はEXCLUDE=REF_CONSTRAINTを追加するか、インポート後に手動で外部キーを再作成してください。
まとめ: パターン別早見表
最後に、リストア時のテーブル除外パターンを早見表としてまとめます。目的に応じて適切な方法を選択してください。
| やりたいこと |
使うパラメータ |
コマンド例 |
| 特定テーブルを除外 |
EXCLUDE=TABLE:"IN (...)" |
EXCLUDE=TABLE:"IN ('TBL1', 'TBL2')" |
| パターンで除外 |
EXCLUDE=TABLE:"LIKE ..." |
EXCLUDE=TABLE:"LIKE 'TMP_%'" |
| テーブル全除外 |
EXCLUDE=TABLE |
構造のみインポートしたい場合 |
| INDEX/TRIGGER除外 |
EXCLUDE=INDEX 等 |
データだけ入れて後からINDEX作成 |
| 特定テーブルだけ含める |
INCLUDE=TABLE:"IN (...)" |
INCLUDE=TABLE:"IN ('EMP', 'DEPT')" |
| エクスポート時に除外 |
expdp EXCLUDE=TABLE |
ダンプファイルを軽量化 |
| 表領域単位で除外 |
RMAN SKIP TABLESPACE |
RMANリストア時に使用 |
| 複雑な条件をファイル管理 |
parfile=xxx.par |
定期運用・チーム共有に最適 |
運用のポイント
- 除外対象が少ない場合は
EXCLUDE(ブラックリスト方式)
- 必要なテーブルが少ない場合は
INCLUDEまたはTABLES(ホワイトリスト方式)
- 条件が複雑・定期実行の場合は
parfileで管理
- クォートのエスケープに困ったらparfileを使う
- テーブル名は必ず大文字で指定する(Oracle内部格納に合わせる)
- 除外時は依存オブジェクト(FK等)への影響を事前に確認する
EXCLUDEパラメータを使いこなすことで、リストア作業の効率化とリスク軽減が同時に実現できます。特に大規模データベースの運用では、不要なテーブルを除外するだけで作業時間が劇的に短縮されるため、ぜひ活用してみてください。