こんにちはユキトモです。
今回は、Oracleのアーカイブログ(アーカイブREDOログファイル)を解説していきます。
アーカイブログ
まず、REDOログとアーカイブログの関係を説明します。
要件
1.REDOログファイル(オンラインREDOログ)はOracleの作業記録を複数ファイルでローテーションして残していきます。
2.REDOログファイルローテーションで上書きを行っています。最も古い作業記録が消去されて行きます。
3.アーカイブログは昔の作業記録を残しておくためのファイルです。
4.アーカイブログは削除されないので、記憶媒体がアーカイブログでいっぱいになり空き容量が足りなくなります。
5.高速リカバリ領域を使用すると最大ファイルサイズが設定でき、古いファイルが削除されて行きます。
6.デフォルト(初期設定)ではアーカイブログは出力されないようになっています。
7.REDOログのローテーションが切り替わるタイミングでアーカイブログが作成されます。
筆者の環境ではどのような状態なのか確認して行きます。
 
SQL*Plusでローカルへ接続
SQL*Plusでローカルへ接続してSYSDBA権限でOracleインスタンス ORCLCDB に接続します。
ログイン
 
[root@localhost ~]# su - oracle
[oracle@localhost ~]$ export ORACLE_SID=ORCLCDB
[oracle@localhost ~]$ sqlplus / as sysdba
 
SQL*Plus: Release 19.0.0.0.0 - Production on 木 12月 30 16:01:36 2021
Version 19.3.0.0.0
 
Copyright (c) 1982, 2019, Oracle. All rights reserved.
 
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
に接続されました。
 
アーカイブログの状態確認
確認   --確認 SQL> SELECT log_mode FROM v$database;   LOG_MODE ------------ NOARCHIVELOG --または下記の方法でも確認できます SQL> ARCHIVE LOG LIST データベース・ログ・モード 非アーカイブ・モード 自動アーカイブ 使用禁止 アーカイブ先 /opt/oracle/product/19c/dbhome_1/dbs/arch 最も古いオンライン・ログ順序 22 現行のログ順序 24
 
アーカイブログの出力をONにする
変更するにはデータベースの状態を mount 状態にする必要があります。
起動しているので停止して mount モードで起動します。
ONにする   --Oracleを停止 SQL> SHUTDOWN IMMEDIATE データベースがクローズされました。 データベースがディスマウントされました。 ORACLEインスタンスがシャットダウンされました。   MOUNT モードで起動 SQL> STARTUP MOUNT ORACLEインスタンスが起動しました。 Total System Global Area 1543500832 bytes Fixed Size 9135136 bytes Variable Size 973078528 bytes Database Buffers 553648128 bytes Redo Buffers 7639040 bytes データベースがマウントされました。   --アーカイブログモード(ON)にする場合 SQL> ALTER DATABASE ARCHIVELOG;   データベースが変更されました。   --ノーアーカイブログモード(OFF)にする場合 SQL> ALTER DATABASE NOARCHIVELOG;   --変更後データベースをオープンします。 SQL> ALTER DATABASE OPEN;   データベースが変更されました。
 
アーカイブログの出力先の確認
下記のSQLを実行すると確認することができます。
筆者の環境では何も設定されていませんでした。
出力先確認   --出力先確認 SQL> set pages 100 SQL> col name for a30 SQL> col value for a20 SQL> SELECT name,value FROM v$parameter WHERE name like 'log_archive%';   NAME VALUE ------------------------------ -------------------- log_archive_dest_1 (略) log_archive_dest_10 (略) 70行が選択されました。
 
デフォルトのアーカイブログの出力先を確認
USE_DB_RECOVERY_FILE_DEST というパラメータにはOracleが事前に用意しているデフォルトのバックアップ出力先があります。
確認方法は下記参照。
筆者の環境では何も設定されていませんでした。
デフォルトのアーカイブログの出力先 --デフォルトのアーカイブログの出力先 SQL> SHOW PARAMETER DB_RECOVERY_FILE_DEST   NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string db_recovery_file_dest_size big integer 0   --または SQL> SELECT name FROM v$recovery_file_dest;   レコードが選択されませんでした。
 
アーカイブログの追加修正、削除
log_archive_dest_1 へ追加して行きます。
--追加 SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/opt/oracle/oradata/ORCLCDB/arch/';   システムが変更されました。   --削除する場合 SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='';   システムが変更されました。   --確認 col name for a20 col value for a43 SQL> SELECT name,value FROM v$parameter WHERE name = 'log_archive_dest_1';   NAME VALUE -------------------- ------------------------------------------- log_archive_dest_1 LOCATION=/opt/oracle/oradata/ORCLCDB/arch/   --USE_DB_RECOVERY_FILE_DESTに設定する SQL> SHOW PARAMETER DB_RECOVERY_FILE_DEST   NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string db_recovery_file_dest_size big integer 0 SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='/opt/oracle/oradata/ORCLCDB/archbk/';   行1でエラーが発生しました。: ORA-02097: 指定した値が無効なので、パラメータを変更できません。 ORA-19802: DB_RECOVERY_FILE_DEST_SIZEなしでDB_RECOVERY_FILE_DESTを使用できません   --サイズを先に設定します。 --高速リカバリ領域のサイズを設定 SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=2G;   システムが変更されました。   --再度設定します SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='/opt/oracle/oradata/ORCLCDB/archbk/';   システムが変更されました。   --確認 set line 100 col NAME_COL_PLUS_SHOW_PARAM FORM A26; col TYPE form A12; col VALUE_COL_PLUS_SHOW_PARAM form A50; SQL> SHOW PARAMETER DB_RECOVERY_FILE_DEST   NAME TYPE VALUE -------------------------- ------------ --------------------------------------- db_recovery_file_dest string /opt/oracle/oradata/ORCLCDB/archbk/ db_recovery_file_dest_size big integer 2G
 
アーカイブログ変更後の確認
反映結果を確認するには手動でアーカイブログを出力して確認してみます。
  --通常のアーカイブログの出力前確認 SQL> !ls -l /opt/oracle/oradata/ORCLCDB/arch/ 合計 0   --高速リカバリ領域の出力前確認 SQL> !ls -l /opt/oracle/oradata/ORCLCDB/archbk/ 合計 0 --手動でログスイッチします。 SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;   --通常のアーカイブログの出力前確認 SQL> !ls -l /opt/oracle/oradata/ORCLCDB/arch/ 合計 38468 -rw-r-----. 1 oracle oinstall 39390720 1月 2 19:06 1_24_1061726795.dbf   --高速リカバリ領域の出力前確認 SQL> !ls -lR /opt/oracle/oradata/ORCLCDB/archbk/ 合計 0   --アーカイブ先を確認 SQL> archive log list データベース・ログ・モード アーカイブ・モード 自動アーカイブ 有効 アーカイブ先 /opt/oracle/oradata/ORCLCDB/arch/ 最も古いオンライン・ログ順序 23 アーカイブする次のログ順序 25 現行のログ順序 25   --アーカイブ先が USE_DB_RECOVERY_FILE_DEST になっていないので変更します SQL> !mv /opt/oracle/oradata/ORCLCDB/archbk/ /opt/oracle/oradata/ORCLCDB/flash_recovery_area/   --下記のパラメータを削除します SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='';   --高速リカバリ領域を再設定します SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='/opt/oracle/oradata/ORCLCDB/flash_recovery_area/'; システムが変更されました。   --高速リカバリ領域の出力前確認 SQL> !ls -lR /opt/oracle/oradata/ORCLCDB/flash_recovery_area/ NAME TYPE VALUE -------------------------- ------------ -------------------------------------------------- db_recovery_file_dest string /opt/oracle/oradata/ORCLCDB/flash_recovery_area/ db_recovery_file_dest_size big integer 2G   --アーカイブ先を確認 SQL> archive log list データベース・ログ・モード アーカイブ・モード 自動アーカイブ 有効 アーカイブ先 USE_DB_RECOVERY_FILE_DEST 最も古いオンライン・ログ順序 23 アーカイブする次のログ順序 25 現行のログ順序 25   --ログスイッチします SQL> ALTER SYSTEM ARCHIVE LOG CURRENT; システムが変更されました。   --ファイルの確認をします SQL> !ls -l /opt/oracle/oradata/ORCLCDB/flash_recovery_area/ 合計 0 drwxr-x---. 3 oracle oinstall 24 1月 2 19:24 ORCLCDB   --ORCLCDB 配下にarchivelog/YYYY_MM_DD ディレクトリが作成されアーカイブログが作成されていることが確認できました。 SQL> !ls -lR /opt/oracle/oradata/ORCLCDB/flash_recovery_area/ /opt/oracle/oradata/ORCLCDB/flash_recovery_area/: 合計 0 drwxr-x---. 3 oracle oinstall 24 1月 2 19:24 ORCLCDB /opt/oracle/oradata/ORCLCDB/flash_recovery_area/ORCLCDB: 合計 0 drwxr-x---. 3 oracle oinstall 24 1月 2 19:24 archivelog /opt/oracle/oradata/ORCLCDB/flash_recovery_area/ORCLCDB/archivelog: 合計 0 drwxr-x---. 2 oracle oinstall 38 1月 2 19:24 2022_01_02 /opt/oracle/oradata/ORCLCDB/flash_recovery_area/ORCLCDB/archivelog/2022_01_02: 合計 152 -rw-r-----. 1 oracle oinstall 155136 1月 2 19:24 o1_mf_1_25_jx2zcc67_.arc
以上です。