こんにちはユキトモです。
今回は、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
以上です。