ksaitoの日記

日々試したことの覚え書き

アーカイブログモードへの切り替え

移転しました。

自動的にリダイレクトします。

Oracleのノーアーカイブモードでバックアップするには、データベースの停止と、すべての構成ファイルをコピーする必要があります。また、リストアも同様に停止、全ファイルのリストアが必要です。
アーカイブモードに切り替えると、オンラインバックアップを使って停止せずにバックアップでき、バックアップもテーブルスペース単位にバックアップすることができます。
障害発生時には、バックアップ時点から障害発生直前まで復元することができるようになります。(その分、手順や仕組みが複雑になりますが...)

どちらのモードで動いているか確認

DBA権限を持ったユーザで操作する必要があります。
archive log listで確認することができます。

$ sudo -u oracle -i `env | egrep "ORA|PATH"` sqlplus /nolog                                                           
SQL*Plus: Release 11.2.0.2.0 Production on Sun Feb 19 13:09:08 2012

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

SQL> connect / as sysdba
Connected to an idle instance.
SQL> archive log list
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     3
Current log sequence           4
SQL> 

アーカイブモードに切り替え

切り替えには、データベースの停止とマウントが必要です。

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
 
Total System Global Area  599785472 bytes
Fixed Size                  1260268 bytes
Variable Size             180356372 bytes
Database Buffers          415236096 bytes
Redo Buffers                2932736 bytes
Database mounted.
SQL> archive log list
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     577
Current log sequence           578
SQL>

その後でアーカイブログモードに切り替えてデータベースをオープンします。

SQL> alter database archivelog;
 
Database altered.
 
SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     577
Next log sequence to archive   578
Current log sequence           578
SQL> alter database open;
 
Database altered.
 
SQL>

アーカイブログが作成されるか確認

アーカイブログは、v$parameterのdb_recovery_file_destで保管先を確認できます。(たぶん...)

SQL> select name, value from v$parameter where name like 'db_recovery_%';
 
NAME                                               VALUE
-------------------------------------------------- ----------------------------------------------------------------------------------------------------
db_recovery_file_dest                              /usr/lib/oracle/xe/app/oracle/flash_recovery_area
db_recovery_file_dest_size                         10737418240
 
SQL>

以下を発行すると保管先にファイルが作成されることがわかります。

SQL> alter system archive log current;

System altered.

SQL> quit
Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
$ sudo ls -l /u01/app/oracle/fast_recovery_area/XE/archivelog
合計 8
drwxr-x--- 2 oracle dba 4096 2012-02-19 10:50 2012_02_19
drwxr-x--- 2 oracle dba 4096 2012-02-21 22:55 2012_02_21
$