1. コールドバックアップとは?
オラクルデータベースのコールドバックアップ(Cold Backup)とは、データベースをシャットダウンした状態でファイルをコピーするバックアップ方法です。アーカイブログモード/ノーアーカイブログモードのどちらでも利用可能ですが、ノーアーカイブログモードの場合は完全な復旧にはこのバックアップが必須となります。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
2. コールドバックアップの手順
(1) データベースのシャットダウン
バックアップを取得する前に、データベースを正常にシャットダウンする必要があります。SQL*Plusを使用して、以下のコマンドを実行します。
SHUTDOWN IMMEDIATE;
IMMEDIATE を指定することで、未完了のトランザクションをロールバックし、安全にシャットダウンします。
(2) バックアップ対象のファイル確認
コールドバックアップでは、以下のファイルをコピーする必要があります。
- データファイル(Data Files)
- 制御ファイル(Control Files)
- REDOログファイル(Redo Log Files)
- SPFILEまたはPFILE(パラメータファイル)
- パスワードファイル(Password File)
バックアップ対象のファイルを確認するには、以下のSQLを実行します。
SELECT name FROM v$controlfile;
SELECT name FROM v$datafile;
SELECT member FROM v$logfile;
SHOW PARAMETER spfile
SQL> SELECT name FROM v$controlfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/V19/control01.ctl
/u01/app/oracle/oradata/V19/control02.ctl
SQL> SELECT name FROM v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/V19/system01.dbf
/u01/app/oracle/oradata/V19/sysaux01.dbf
/u01/app/oracle/oradata/V19/undotbs01.dbf
/u01/app/oracle/oradata/V19/users01.dbf
SQL> SELECT member FROM v$logfile;
MEMBER
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/V19/redo03.log
/u01/app/oracle/oradata/V19/redo02.log
/u01/app/oracle/oradata/V19/redo01.log
SQL> set lin 1000
SQL> SHOW PARAMETER spfile
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
spfile string /u01/app/oracle/product/19.0.0
/dbhome_1/dbs/spfilev19.ora
パスワードファイルのデフォルトの保存場所は、以下の通りです。
- Linux/Unix:
$ORACLE_HOME/dbs/orapw<ORACLE_SID> - Windows:
%ORACLE_HOME%\database\PWD<ORACLE_SID>.ora
(3) ファイルのコピー
データベースがシャットダウンされたことを確認し、OSのコマンドを使用してバックアップを取得します。
Linux/Unixの場合
cp -p /u01/app/oracle/oradata/ORCL/*.dbf /backup/orcl/
cp -p /u01/app/oracle/oradata/ORCL/*.ctl /backup/orcl/
cp -p /u01/app/oracle/oradata/ORCL/*.log /backup/orcl/
cp -p $ORACLE_HOME/dbs/spfileORCL.ora /backup/orcl/
cp -p $ORACLE_HOME/dbs/orapwORCL /backup/orcl/
Windowsの場合
copy C:\oracle\oradata\ORCL\*.dbf D:\backup\orcl\ /S /E /Y
copy C:\oracle\oradata\ORCL\*.ctl D:\backup\orcl\ /S /E /Y
copy C:\oracle\oradata\ORCL\*.log D:\backup\orcl\ /S /E /Y
copy C:\oracle\product\12.2.0\dbhome_1\dbs\spfileORCL.ora D:\backup\orcl\ /Y
copy C:\oracle\product\12.2.0\dbhome_1\database\PWDORCL.ora D:\backup\orcl\ /Y
(4) データベースの起動
バックアップが完了したら、データベースを再起動します。
STARTUP
3. コールドバックアップのリストア手順
コールドバックアップをリストアするには、以下の手順を実行します。
(1) 現在のデータベースを停止
SHUTDOWN IMMEDIATE
(2) バックアップファイルをリストア
Linux/Unixの場合
cp -p /backup/orcl/*.dbf /u01/app/oracle/oradata/ORCL/
cp -p /backup/orcl/*.ctl /u01/app/oracle/oradata/ORCL/
cp -p /backup/orcl/*.log /u01/app/oracle/oradata/ORCL/
cp -p /backup/orcl/spfileORCL.ora $ORACLE_HOME/dbs/
cp -p /backup/orcl/orapwORCL $ORACLE_HOME/dbs/
Windowsの場合
copy D:\backup\orcl\*.dbf C:\oracle\oradata\ORCL\ /S /E /Y
copy D:\backup\orcl\*.ctl C:\oracle\oradata\ORCL\ /S /E /Y
copy D:\backup\orcl\*.log C:\oracle\oradata\ORCL\ /S /E /Y
copy D:\backup\orcl\spfileORCL.ora C:\oracle\product\19.3.0\dbhome_1\dbs\ /Y
copy D:\backup\orcl\PWDORCL.ora C:\oracle\product\19.3.0\dbhome_1\database\ /Y
(3) データベースの起動
STARTUP
正常に起動すれば、リストアは成功です。
4. コールドバックアップの注意点
- ノーアーカイブログモードの場合、このバックアップがないと復旧できません。
- スケジュール化して定期的にバックアップを取得することが推奨されます。
- バックアップは必ず別のストレージやリモートのサーバーに保存すること。
5. まとめ
RMANを使用しないコールドバックアップは、シンプルで確実な方法ですが、データベースを停止しなければならないため、ダウンタイムが必要です。定期的にスケジュールを組み、安全な場所に保管することで、データの損失を防ぐことができます。
[参考]
Oracle Database バックアップおよびリカバリ・ユーザーズ・ガイド 19c




コメント