Oracle

Oracle【オンラインREDOログ】ログファイルのサイズ変更を解説


 

OracleのオンラインREDOログファイルのファイルサイズの変更方法をおしえて下さい。

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

 
今回は、OracleのオンラインREDOログファイルのサイズ変更を解説していきます。

 

オンラインREDOログファイル

作業の流れを記します。

追加要件

1.一時的に使用するREDOロググループを2つ以上作成する。

2.今使用しているREDOロググループを削除します。

3.REDOロググループの設定したいサイズで再作成します。

4.1.で実施した一時的に作成したロググループを削除します。

 

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
に接続されました。

 

変更前の状態を確認

筆者の環境では、グループが3つあり、メンバーはそれぞれ2つずつの構成です。

 変更前の状態を確認
 
--グループ数とメンバー数を確認
SQL> SELECT group#,members FROM v$log;
    GROUP#    MEMBERS
---------- ----------
         1          2
         2          2
         3          2
 
--REDOログファイルのパスを確認
SQL> col group# for 999
SQL> col member for a42
SQL> SELECT group#,member FROM v$logfile ORDER BY group#;
GROUP# MEMBER
------ ------------------------------------------
     1 /opt/oracle/oradata/ORCLCDB/redo01.log
     1 /opt/oracle/oradata/ORCLCDB/redo01_01.log
     2 /opt/oracle/oradata/ORCLCDB/redo02_01.log
     2 /opt/oracle/oradata/ORCLCDB/redo02.log
     3 /opt/oracle/oradata/ORCLCDB/redo03_01.log
     3 /opt/oracle/oradata/ORCLCDB/redo03.log
 
--実ファイルを確認
SQL> !ls -l /opt/oracle/oradata/ORCLCDB/redo*.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 12:57 /opt/oracle/oradata/ORCLCDB/redo01.log
-rw-r-----. 1 oracle oinstall 209715712 12月 30 16:35 /opt/oracle/oradata/ORCLCDB/redo01_01.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 16:20 /opt/oracle/oradata/ORCLCDB/redo02.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 16:20 /opt/oracle/oradata/ORCLCDB/redo02_01.log
-rw-r-----. 1 oracle oinstall 209715712 12月 29 16:44 /opt/oracle/oradata/ORCLCDB/redo03.log
-rw-r-----. 1 oracle oinstall 209715712 12月 30 16:35 /opt/oracle/oradata/ORCLCDB/redo03_01.log
 
--カレントを確認
SQL> SELECT group#, status FROM v$log;
GROUP# STATUS
------ ----------------
     1 INACTIVE
     2 CURRENT
     3 INACTIVE
 
--ファイルサイズを確認
SQL> SELECT group#, members, bytes/1024/1024 as MB FROM v$log;
GROUP#    MEMBERS         MB
------ ---------- ----------
     1          2        200
     2          2        200
     3          2        200

 

REDOログファイルグループを追加

今使用しているREDOログはOracleを起動中にリサイズできないので、一時的にREDOロググループを作成します。

ここでは4,5を追加します。

 
 
--REDOログファイルグループを追加
SQL> ALTER DATABASE ADD LOGFILE GROUP 4
SQL> ('/opt/oracle/oradata/ORCLCDB/redo04.log','/opt/oracle/oradata/ORCLCDB/redo04_01.log') SIZE 200M;
データベースが変更されました。
SQL> ALTER DATABASE ADD LOGFILE GROUP 5
SQL> ('/opt/oracle/oradata/ORCLCDB/redo05.log','/opt/oracle/oradata/ORCLCDB/redo05_01.log') SIZE 200M;
データベースが変更されました。
 
--ファイルを確認
SQL> !ls -l /opt/oracle/oradata/ORCLCDB/redo*.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 12:57 /opt/oracle/oradata/ORCLCDB/redo01.log
-rw-r-----. 1 oracle oinstall 209715712 12月 30 16:35 /opt/oracle/oradata/ORCLCDB/redo01_01.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 16:39 /opt/oracle/oradata/ORCLCDB/redo02.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 16:39 /opt/oracle/oradata/ORCLCDB/redo02_01.log
-rw-r-----. 1 oracle oinstall 209715712 12月 29 16:44 /opt/oracle/oradata/ORCLCDB/redo03.log
-rw-r-----. 1 oracle oinstall 209715712 12月 30 16:35 /opt/oracle/oradata/ORCLCDB/redo03_01.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 16:37 /opt/oracle/oradata/ORCLCDB/redo04.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 16:37 /opt/oracle/oradata/ORCLCDB/redo04_01.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 16:38 /opt/oracle/oradata/ORCLCDB/redo05.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 16:38 /opt/oracle/oradata/ORCLCDB/redo05_01.log

 

追加後の状態を確認

 追加後の状態を確認
--追加後の状態を確認
 
SQL> SELECT group#, status FROM v$log;
GROUP# STATUS
------ ----------------
     1 INACTIVE
     2 CURRENT
     3 INACTIVE
     4 UNUSED
     5 UNUSED

REDOロググループ4、5が追加されています。

まだ未使用なので、ステータスはUNUSEDであることが分かります。

 

REDOロググループ4,5をCURRENTにする

 
 
--ログスイッチする
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
ALTER SYSTEM ARCHIVE LOG CURRENT
*
行1でエラーが発生しました。:
ORA-00258: NOARCHIVELOGモードの手動アーカイブではログ指定が必要です。
--筆者の環境ではNOARCHIVELOGモードだったので上記のエラーが表示しました。
 
--下記のコマンドでログスイッチします。
SQL> ALTER SYSTEM SWITCH LOGFILE;
システムが変更されました。
 
--ステータスの確認
SQL> SELECT group#, status FROM v$log;
GROUP# STATUS
------ ----------------
     1 INACTIVE
     2 ACTIVE
     3 INACTIVE
     4 CURRENT
     5 UNUSED
 
--グループ4がCURRENTになりました。
--グループ1,3はINACTIVEになっているので削除ができます。
--通常ステータスがACTIVE状態で削除しようとするとORAエラーが発生しますが、
--筆者の環境はノーアカイブモードなので問題なく削除できました。
 
--REDOロググループ1~3を削除する
SQL> ALTER DATABASE DROP LOGFILE GROUP 1;
データベースが変更されました。
SQL> ALTER DATABASE DROP LOGFILE GROUP 2;
データベースが変更されました。
SQL> ALTER DATABASE DROP LOGFILE GROUP 3;
データベースが変更されました。
 
--ステータス確認
SELECT group#, status FROM v$log;
GROUP# STATUS
------ ----------------
     4 CURRENT
     5 UNUSED

 

REDOログを再作成する

論理削除したREDOロググループ1~3の物理ファイルをOSのコマンドで削除して行きます。

 
--削除前確認
SQL> !ls -l /opt/oracle/oradata/ORCLCDB/redo*.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 12:57 /opt/oracle/oradata/ORCLCDB/redo01.log
-rw-r-----. 1 oracle oinstall 209715712 12月 30 16:35 /opt/oracle/oradata/ORCLCDB/redo01_01.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 17:51 /opt/oracle/oradata/ORCLCDB/redo02.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 17:51 /opt/oracle/oradata/ORCLCDB/redo02_01.log
-rw-r-----. 1 oracle oinstall 209715712 12月 29 16:44 /opt/oracle/oradata/ORCLCDB/redo03.log
-rw-r-----. 1 oracle oinstall 209715712 12月 30 16:35 /opt/oracle/oradata/ORCLCDB/redo03_01.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 18:16 /opt/oracle/oradata/ORCLCDB/redo04.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 18:16 /opt/oracle/oradata/ORCLCDB/redo04_01.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 16:38 /opt/oracle/oradata/ORCLCDB/redo05.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 16:38 /opt/oracle/oradata/ORCLCDB/redo05_01.log
 
--削除
SQL> !rm /opt/oracle/oradata/ORCLCDB/redo01.log
SQL> !rm /opt/oracle/oradata/ORCLCDB/redo01_01.log
SQL> !rm /opt/oracle/oradata/ORCLCDB/redo02.log
SQL> !rm /opt/oracle/oradata/ORCLCDB/redo02_01.log
SQL> !rm /opt/oracle/oradata/ORCLCDB/redo03.log
SQL> !rm /opt/oracle/oradata/ORCLCDB/redo03_01.log
 
--削除後確認
SQL> !ls -l /opt/oracle/oradata/ORCLCDB/redo*.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 18:20 /opt/oracle/oradata/ORCLCDB/redo04.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 18:20 /opt/oracle/oradata/ORCLCDB/redo04_01.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 16:38 /opt/oracle/oradata/ORCLCDB/redo05.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 16:38 /opt/oracle/oradata/ORCLCDB/redo05_01.log

補足

OMF(Oracle Managed Files)を使用している場合は

ALTER DATABASE DROP LOGFILE GROUP コマンドでOS上のファイルも同時に削除されます。

筆者の環境ではOMFを使用していないので、OSコマンドを使用して削除しました。

表領域削除時に使用する

INCLUDING CONTENTS AND DATAFILES のようなオプションはないみたいです。

 

REDOグループ再作成

 REDOロググループ再作成
 
--REDOグループ1~3を100MBで作成します。
SQL> ALTER DATABASE ADD LOGFILE GROUP 1
SQL> ('/opt/oracle/oradata/ORCLCDB/redo01.log' , '/opt/oracle/oradata/ORCLCDB/redo01_01.log') size 100M;
 
SQL> ALTER DATABASE ADD LOGFILE GROUP 2
SQL> ('/opt/oracle/oradata/ORCLCDB/redo02.log' , '/opt/oracle/oradata/ORCLCDB/redo02_01.log') size 100M;
 
SQL> ALTER DATABASE ADD LOGFILE GROUP 3
SQL> ('/opt/oracle/oradata/ORCLCDB/redo03.log' , '/opt/oracle/oradata/ORCLCDB/redo03_01.log') size 100M;

 

ステータスの確認

一時グループの追加時と同様にステータスが UNUSED になります。

 
 
--確認
SQL> SELECT group#, status FROM v$log;
GROUP# STATUS
------ ----------------
     1 UNUSED
     2 UNUSED
     3 UNUSED
     4 CURRENT
     5 UNUSED

 

ログスイッチでカレントグループの切替

手動でログスイッチを行い、REDOロググループ4~5が INACTIVE の状態にします。

 ログスイッチでカレントグループの切替
--ログスイッチでカレントグループの切替
 
SQL> ALTER SYSTEM SWITCH LOGFILE;
システムが変更されました。
SELECT group#, status FROM v$log;
GROUP# STATUS
------ ----------------
     1 CURRENT
     2 UNUSED
     3 UNUSED
     4 ACTIVE
     5 UNUSED
 
SQL> alter system checkpoint;
 
システムが変更されました。
 
SQL> SELECT group#, status FROM v$log;
GROUP# STATUS
------ ----------------
     1 CURRENT
     2 UNUSED
     3 UNUSED
     4 INACTIVE
     5 UNUSED

 

削除

 削除
 
--削除
SQL> ALTER DATABASE DROP LOGFILE GROUP 4;
データベースが変更されました。
SQL> ALTER DATABASE DROP LOGFILE GROUP 5;

 

ログ切替後の状態

 ログ切替後の状態
 
--ログ切替後の状態
SQL> SELECT group#, status FROM v$log;
GROUP# STATUS
------ ----------------
     1 CURRENT
     2 UNUSED
     3 UNUSED
 
--ログスイッチする
SQL> ALTER SYSTEM SWITCH LOGFILE;
システムが変更されました。
SQL> SELECT group#, status FROM v$log;
GROUP# STATUS
------ ----------------
     1 ACTIVE
     2 CURRENT
     3 UNUSED
 
--再度ログスイッチする
SQL> ALTER SYSTEM SWITCH LOGFILE;
システムが変更されました。
 
--確認
SQL> SELECT group#, status FROM v$log;
GROUP# STATUS
------ ----------------
     1 ACTIVE
     2 ACTIVE
     3 CURRENT

 

REDO ロググループの変更後サイズを確認

 REDO ロググループの変更後サイズを確認
--REDO ロググループの変更後サイズを確認
 
SQL> SELECT group#, members, bytes/1024/1024 as MB FROM v$log;
GROUP#    MEMBERS         MB
------ ---------- ----------
     1          2        100
     2          2        100
     3          2        100
 
--REDOログメンバの状態、記載されたパスにファイルがあることを確認
SQL> col group# for 999
SQL> col member for a42
SQL> SELECT group#,member FROM v$logfile ORDER BY group#;
GROUP# MEMBER
------ ------------------------------------------
     1 /opt/oracle/oradata/ORCLCDB/redo01.log
     1 /opt/oracle/oradata/ORCLCDB/redo01_01.log
     2 /opt/oracle/oradata/ORCLCDB/redo02.log
     2 /opt/oracle/oradata/ORCLCDB/redo02_01.log
     3 /opt/oracle/oradata/ORCLCDB/redo03.log
     3 /opt/oracle/oradata/ORCLCDB/redo03_01.log
6行が選択されました。
 
--実ファイルを確認
SQL> !ls -l /opt/oracle/oradata/ORCLCDB/redo*.log
-rw-r-----. 1 oracle oinstall 104858112  1月  1 19:38 /opt/oracle/oradata/ORCLCDB/redo01.log
-rw-r-----. 1 oracle oinstall 104858112  1月  1 19:38 /opt/oracle/oradata/ORCLCDB/redo01_01.log
-rw-r-----. 1 oracle oinstall 104858112  1月  1 19:38 /opt/oracle/oradata/ORCLCDB/redo02.log
-rw-r-----. 1 oracle oinstall 104858112  1月  1 19:38 /opt/oracle/oradata/ORCLCDB/redo02_01.log
-rw-r-----. 1 oracle oinstall 104858112  1月  1 19:43 /opt/oracle/oradata/ORCLCDB/redo03.log
-rw-r-----. 1 oracle oinstall 104858112  1月  1 19:43 /opt/oracle/oradata/ORCLCDB/redo03_01.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 18:41 /opt/oracle/oradata/ORCLCDB/redo04.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 18:41 /opt/oracle/oradata/ORCLCDB/redo04_01.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 16:38 /opt/oracle/oradata/ORCLCDB/redo05.log
-rw-r-----. 1 oracle oinstall 209715712  1月  1 16:38 /opt/oracle/oradata/ORCLCDB/redo05_01.log
 
--OS上に残ったファイルを削除
SQL> !rm /opt/oracle/oradata/ORCLCDB/redo04.log
SQL> !rm /opt/oracle/oradata/ORCLCDB/redo04_01.log
SQL> !rm /opt/oracle/oradata/ORCLCDB/redo05.log
SQL> !rm /opt/oracle/oradata/ORCLCDB/redo05_01.log
 
--確認
SQL> !ls -l /opt/oracle/oradata/ORCLCDB/redo*.log
-rw-r-----. 1 oracle oinstall 104858112  1月  1 19:38 /opt/oracle/oradata/ORCLCDB/redo01.log
-rw-r-----. 1 oracle oinstall 104858112  1月  1 19:38 /opt/oracle/oradata/ORCLCDB/redo01_01.log
-rw-r-----. 1 oracle oinstall 104858112  1月  1 19:38 /opt/oracle/oradata/ORCLCDB/redo02.log
-rw-r-----. 1 oracle oinstall 104858112  1月  1 19:38 /opt/oracle/oradata/ORCLCDB/redo02_01.log
-rw-r-----. 1 oracle oinstall 104858112  1月  1 19:46 /opt/oracle/oradata/ORCLCDB/redo03.log
-rw-r-----. 1 oracle oinstall 104858112  1月  1 19:46 /opt/oracle/oradata/ORCLCDB/redo03_01.log

以上です。

-Oracle
-, , ,