Oracle Redo Log 文件扩容

某数据库有3个Log Group,每个Group中的Redo Log文件大小为200MB,需要扩大到1GB。也就是最终需要变成如下:

SQL> select bytes from v$log;

     BYTES
----------
1073741824
1073741824
1073741824

实际上,没有所谓的扩容命令。只需把老的Log Group删除,然后添加新Log Group并指定大小为1GB。

假设status为current的为Log Group 1,我们可以先重建Log Group 2和3:

-- 操作必须在CDB$ROOT中进行
connect / as sysdba
ALTER DATABASE DROP LOGFILE GROUP 3;
ALTER DATABASE ADD LOGFILE GROUP 3 ('+DATAC1') SIZE 1G;
ALTER DATABASE DROP LOGFILE GROUP 2;
ALTER DATABASE ADD LOGFILE GROUP 2 ('+DATAC1') SIZE 1G;

然后做Log Swicth:

ALTER SYSTEM SWITCH LOGFILE;
ALTER SYSTEM CHECKPOINT;
ALTER DATABASE DROP LOGFILE GROUP 1;
ALTER DATABASE ADD LOGFILE GROUP 1 ('+DATAC1') SIZE 1G;

如果不switch logfile,则会报如下错:

SQL> ALTER DATABASE DROP LOGFILE GROUP 1;
ALTER DATABASE DROP LOGFILE GROUP 
*
ERROR at line 1:
ORA-01623: log 1 is current log for instance orcl (thread 1) - cannot drop
ORA-00312: online log 1 thread 1:
'+RECO/DB0410_NRT12N/ONLINELOG/group_1.551.1136542627'

如果不做checkpoint,则可能报如下错:

SYS@orcl>ALTER DATABASE DROP LOGFILE GROUP 1;
ALTER DATABASE DROP LOGFILE GROUP 1
*
ERROR at line 1:
ORA-01624: log 1 needed for crash recovery of instance orcl (thread 1)
ORA-00312: online log 1 thread 1:
'+DATAC1/ORCL/ONLINELOG/group_1.551.1136542627'

2023年5月22日下午6点,又做了一次,从1G改为2G:

SYS@orcl>select group#, bytes, status from v$log;

    GROUP#      BYTES STATUS
---------- ---------- ----------------
         1 1073741824 CURRENT
         2 1073741824 INACTIVE
         3 1073741824 INACTIVE

ALTER DATABASE DROP LOGFILE GROUP 3;
ALTER DATABASE ADD LOGFILE GROUP 3 ('+DATAC1') SIZE 2G;
ALTER DATABASE DROP LOGFILE GROUP 2;
ALTER DATABASE ADD LOGFILE GROUP 2 ('+DATAC1') SIZE 2G;

SYS@orcl>select group#, bytes, status from v$log;

    GROUP#      BYTES STATUS
---------- ---------- ----------------
         1 1073741824 CURRENT
         2 2147483648 UNUSED
         3 2147483648 UNUSED

SYS@orcl>ALTER SYSTEM SWITCH LOGFILE;

System altered.

SYS@orcl>select group#, bytes, status from v$log;

    GROUP#      BYTES STATUS
---------- ---------- ----------------
         1 1073741824 ACTIVE
         2 2147483648 CURRENT
         3 2147483648 UNUSED

SYS@orcl>ALTER DATABASE DROP LOGFILE GROUP 1;
ALTER DATABASE DROP LOGFILE GROUP 1
*
ERROR at line 1:
ORA-01624: log 1 needed for crash recovery of instance orcl (thread 1)
ORA-00312: online log 1 thread 1:
'+DATAC1/ORCL/ONLINELOG/group_1.551.1137263455'


SYS@orcl>ALTER SYSTEM CHECKPOINT;

System altered.

SYS@orcl>ALTER DATABASE DROP LOGFILE GROUP 1;

Database altered.

SYS@orcl>ALTER DATABASE ADD LOGFILE GROUP 1 ('+DATAC1') SIZE 2G;

Database altered.

SYS@orcl>select group#, bytes, status from v$log;

    GROUP#      BYTES STATUS
---------- ---------- ----------------
         1 2147483648 UNUSED
         2 2147483648 CURRENT
         3 2147483648 UNUSED

猜你喜欢

转载自blog.csdn.net/stevensxiao/article/details/130773591