RMANを使用せずにオラクルのコールドバックアップを取る方法

RMAN/バックアップ・リカバリ

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

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

コメント

タイトルとURLをコピーしました