[Oracle] RMANバックアップを取得するためのアーカイブログモード設定

Oracle

Oracleはオンライン(データベースは起動したまま)で、バックアップを取得することができます。
バックアップはRMAN(Recovery Manager)というコマンドで取得しますが、RMANでバックアップを取得するためには、データベース上でアーカイブログモードが有効になっている必要があります。

本記事では、アーカイブログモードの確認方法とアーカイブログモードの有効化と無効化の方法について解説します。

RMANとは?アーカイブログとは?

RMAN(Recovery Manager) は、Oracle データベース専用の バックアップ・復旧ツール です。

  • OS のコピーコマンドでファイルを取るのとは違い、Oracle 内部の仕組み(データブロック、制御ファイル、ログファイルなど)を理解して一貫性のあるバックアップを取ってくれます。
  • バックアップだけでなく、壊れたデータを復旧したり、特定の時点にデータベースを戻す(時刻指定のリカバリ)こともできます。

アーカイブログ(Archived Redo Log) は、データベースで起きた すべての変更の記録 です。
Oracle はデータが更新されると「REDOログ」という仕組みに記録します。通常、このログは上書きされますが、アーカイブログモードにすると、上書きされる前に別ファイル(アーカイブログ)として保存してくれます。

  • これによって、バックアップからデータを戻した後でも、その後に行われた更新をアーカイブログを使って再現(リカバリ)できます。
  • つまり「バックアップ」と「アーカイブログ」の両方があれば、システム障害があっても直前までの状態に復元可能です。

アーカイブログモードの確認方法

現在のデータベースのアーカイブログモードを確認する方法を解説します。

SYSユーザでログイン後、「select log_mode from v$database;」を実行するか、「archive log list」コマンドを実行することで確認することができます。

■無効化されている状態

$ sqlplus / as sysdba

SQL> select log_mode from v$database;

LOG_MODE
------------
NOARCHIVELOG

SQL> archive log list;
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            /u01/app/oracle/product/19.0.0.0/db_home2/dbs/arch
Oldest online log sequence     21
Current log sequence           23
SQL> 

「NOARCHIVELOG」および「No Archive Mode」となっている場合は、アーカイブログモードが無効化された状態です。

■有効化されている状態

$ sqlplus / as sysdba

SQL> select log_mode from v$database;

LOG_MODE
------------
ARCHIVELOG

SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u01/app/oracle/product/19.0.0.0/db_home2/dbs/arch
Oldest online log sequence     21
Next log sequence to archive   23
Current log sequence           23
SQL> 

「ARCHIVELOG」および「Archive Mode」となっている場合は、アーカイブログモードが無効化された状態です。
また、アーカイブログの出力先ディレクトリが「/u01/app/oracle/product/19.0.0.0/db_home2/dbs/arch」であることも確認できます。

アーカイブログモードを有効化する

アーカイブログモードを有効化する場合は、一度データベースをMOUNTモードにしてから、「alter database archivelog」を実行します。

$ sqlplus / as sysdba

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> startup mount
ORACLE instance started.

Total System Global Area 3221225296 bytes
Fixed Size                  9183056 bytes
Variable Size             889192448 bytes
Database Buffers         2315255808 bytes
Redo Buffers                7593984 bytes
Database mounted.

SQL> alter database archivelog;

Database altered.

SQL> alter database open;

Database altered.

SQL> 

アーカイブログ出力先ディレクトリに関する注意

デフォルトのアーカイブログの出力先ディレクトリは、以下の「Archive destination」から確認することができます。
ただし、このディレクトリが存在しない場合は、意図したディレクトリにアーカイブログが出力されませんので、ディレクトリが存在することを確認してください。

例えば、「/u01/app/oracle/product/19.0.0.0/db_home2/dbs」配下に「arch」ディレクトリが存在しない場合、「/u01/app/oracle/product/19.0.0.0/db_home2/dbs」ディレクトリ直下にアーカイブログが出力されることになります。

SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u01/app/oracle/product/19.0.0.0/db_home2/dbs/arch
Oldest online log sequence     21
Next log sequence to archive   23
Current log sequence           23

なお、アーカイブログの出力先については、初期化パラメータである「log_archive_dest」または「log_archive_dest_N」で明示的に指定することができます。

アーカイブログ出力確認

現在出力しているアーカイブログを強制的にスイッチさせることで、アーカイブログを出力させることができます。
アーカイブログモードを有効化にしても、ある程度データベースへの更新処理が行われないとアーカイブログが出力されません。

$ sqlplus / as sysdba

SQL> alter system switch logfile;

System altered.

SQL>

「Archive destination /u01/app/oracle/product/19.0.0.0/db_home2/dbs/arch」ディレクトリを確認すると、アーカイブログが出力されていることが分かります。

$ pwd
/u01/app/oracle/product/19.0.0.0/db_home2/dbs/arch
$ ls -ltr
  :
-rw-r-----. 1 oracle oinstall 147968  9月 12 21:39 1_25_1162927447.dbf
-rw-r-----. 1 oracle oinstall   7168  9月 12 21:39 1_26_1162927447.dbf
$ 

アーカイブログモードを無効化する

アーカイブログモードを無効化する場合も同様に、一度データベースをMOUNTモードにしてから、「alter database noarchivelog」を実行します。

$ sqlplus / as sysdba

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> startup mount
ORACLE instance started.

Total System Global Area 3221225296 bytes
Fixed Size                  9183056 bytes
Variable Size             889192448 bytes
Database Buffers         2315255808 bytes
Redo Buffers                7593984 bytes
Database mounted.

SQL> alter database noarchivelog;

Database altered.

SQL> alter database open;

Database altered.

SQL> 

まとめ

本記事では、アーカイブログモードの確認方法とアーカイブログモードの有効化と無効化の方法について解説しました。
RMANによるオンラインバックアップを取得する場合は、アーカイブログモードの有効化は必須となります。

コメント

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