Oracle

Oracle【アーカイブログファイル】初心者でもわかるように解説


 

Oracleのアーカイブログをおしえて下さい。

 
こんにちはユキトモです。

 
今回は、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

以上です。

-Oracle
-, ,