Oracle Databaseの運用において、データ量が増大するとバックアップ時間の長期化が課題となります。Oracle 高速増分バックアップは、ブロック変更追跡(Block Change Tracking, BCT)を利用してバックアップ時間を劇的に短縮する機能です。本記事では、ブロック変更追跡の有効化手順から運用上の注意点まで、初心者にも分かりやすく解説します。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
高速増分バックアップの仕組み
通常の増分バックアップでは、Oracleはデータファイル全体をスキャンし、変更されたブロックを特定してバックアップを取得します。しかし、データファイルのサイズが大きくなると、変更ブロックを特定する処理が負担となり、バックアップの取得時間が長くなります。
ブロック変更追跡(BCT) を有効にすると、Oracleは 変更されたブロックの情報を専用のBCTファイルに記録 し、増分バックアップの際にその情報を利用することで、データファイル全体をスキャンすることなく、変更されたブロックのみを迅速に取得できます。
💡 メリット
- バックアップ処理の高速化:変更ブロックのみを読み取るため、バックアップ時間が短縮される。
- リソースの削減:データファイルの全スキャンを省略できるため、I/O負荷が軽減される。
- バックアップ頻度の向上:処理速度が向上することで、より頻繁な増分バックアップが可能。
高速増分バックアップの設定方法
BCT(ブロック変更追跡)の有効化
BCTを使用するためには、 ARCHIVELOGモードが有効 になっている必要があります。
📌 現在のアーカイブログモードを確認
SELECT log_mode FROM v$database;
結果:
ARCHIVELOG→ そのまま設定可能NOARCHIVELOG→ 変更が必要(ARCHIVELOGモードに変更する)
BCTファイルの有効化
次に、BCTを有効にし、変更情報を保存するファイルを作成します。
ALTER DATABASE ENABLE BLOCK CHANGE TRACKING
USING FILE '/u01/app/oracle/oradata/V19/change_tracking.ctf';
オプション:
USING FILE '<ファイルパス>'で、BCT情報を保存するファイルの場所を指定。REUSEを指定すると、既存のBCTファイルがある場合でも再利用。
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING
2 USING FILE '/u01/app/oracle/oradata/V19/change_tracking.ctf';
データベースが変更されました。
BCTの状態を確認
BCTが有効になっているかどうかを確認するには、次のSQLを実行します。
SELECT status, filename FROM v$block_change_tracking;
結果例:
SQL> SELECT status, filename FROM v$block_change_tracking;
STATUS FILENAME
-------------------- --------------------------------------------------
ENABLED /u01/app/oracle/oradata/V19/change_tracking.ctf
ENABLED になっていれば、BCTが有効化されています。
高速増分バックアップの取得
BCTを有効化した後、通常の 累積増分バックアップ または 差分増分バックアップ を取得すると、高速増分バックアップが利用されます。
累積増分バックアップ
累積増分バックアップ(Cumulative Incremental Backup)は、 前回のレベル0バックアップ以降に変更されたすべてのブロックをバックアップ します。
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE FORMAT '/backup/inc1_cum_%U';
差分増分バックアップ
差分増分バックアップ(Differential Incremental Backup)は、 直前の増分バックアップ以降に変更されたブロックのみをバックアップ します。
BACKUP INCREMENTAL LEVEL 1 DATABASE FORMAT '/backup/inc1_diff_%U';
BCTの無効化(不要な場合)
BCTを無効化する場合は、以下のSQLを実行します。
ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
SQL> ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
データベースが変更されました。
SQL> SELECT status, filename FROM v$block_change_tracking;
STATUS FILENAME
-------------------- --------------------------------------------------
DISABLED
BCTを無効化すると、ファイルは削除されません。
不要であれば、手動で削除する必要があります。
rm /u01/app/oracle/oradata/V19/change_tracking.ctf
トラブルシューティング:よくあるORAエラー
| ORAエラー | 原因 | 対処法 |
| ORA-19773 | BCTファイル作成に失敗(パス不正等) | ディレクトリの権限とパスを確認してください。 |
| ORA-00439 | 機能が有効でない(SE2等) | Enterprise Editionであることを確認してください。 |
| バックアップが遅い | BCTが使われていない可能性 | V$RMAN_BACKUP_JOB_DETAILS で USED_BCT が YES か確認。 |
運用・監視・セキュリティ上の注意
- リソース消費: BCTファイルは通常、データファイル・サイズの約1/250程度の領域を消費します。ディスク空き容量に注意してください。
- リスク: BCTファイルが破損しても、データベース本体は停止しません。ただし、次回のバックアップは「従来のスキャン方式」に戻るため、実行時間が長くなります。
- 戻し方: 不要になった場合は以下のコマンドで無効化できます。SQL
ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;※無効化するとBCTファイルは物理的に削除されます。
FAQ:高速増分バックアップのやり方と疑問
Q1. Standard Edition 2 (SE2) で使えますか?
A1. いいえ、ブロック変更追跡(BCT)は Enterprise Edition (EE) 限定の機能です。SE2の場合は、通常の増分バックアップ(全スキャン方式)を利用することになります。
Q2. BCTを有効にした直後のバックアップから速くなりますか?
A2. いいえ。BCT有効化後、最初に行う「レベル0バックアップ(フルバックアップ相当)」は全スキャンが必要です。その後の「レベル1バックアップ」から高速化の恩恵を受けられます。
Q3. BCTファイルの場所は後から変更できますか?
A3. はい。一度 DISABLE にしてから、新しいパスを指定して ENABLE にし直す必要があります。ただし、それまでの追跡情報は失われるため、次の増分バックアップは低速(全スキャン)になります。
Q4. BCTファイルが肥大化し続けることはありますか?
A4. BCTファイルは、データベース内の変更箇所を管理するために一定のサイズ(ビットマップ)を確保します。データファイルが追加されない限り、急激に肥大化することはありませんが、過去 8回分 までの増分バックアップ情報を保持する仕様です。
まとめ:高速増分バックアップのポイント
- ブロック変更追跡(BCT) を有効化することで、増分バックアップを高速化できる。
- Enterprise Edition 専用機能であり、アーカイブログモードが必須。
- 設定は
ALTER DATABASE ENABLE BLOCK CHANGE TRACKINGの 1コマンドで完了。 - バックアップ運用において、I/O負荷を下げつつバックアップ頻度を高めるのに最適。
本記事は Oracle Database 19c を対象に解説します(他バージョンは画面や既定値が異なる場合があります)。
[参考]
Oracle Database バックアップおよびリカバリ・ユーザーズ・ガイド 19c
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?



コメント