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によるオンラインバックアップを取得する場合は、アーカイブログモードの有効化は必須となります。
コメント