This article explains the steps for multiplexing redologs in oracle RAC. Multiplexing means to keep multiple copies of redo log in different diskgroup. It is similar to that of multiplexing in standalone, Only change is RAC will have threads for node.
i.e a 2 node RAC will have 2 threads. So while adding redolog group, we need to mention the thread parameter. Basically, we need to add new redolog groups in required diskgroup and drop the old ones.
1. Current redo log status:
col member for a56 set pagesize 299 set lines 299 select l.group#, l.thread#, f.member, l.archived, l.status, (bytes/1024/1024) "Size (MB)" from v$log l, v$logfile f where f.group# = l.group# order by 1,2; GROUP# THREAD# MEMBER ARCHIVED STATUS Size (MB) ------ ------- ---------------------------------------------------------------------- ---------- ---------- --------- 1 1 +DATA/PREPROD/redo01.log YES ACTIVE 50 2 1 +DATA/PREPROD/redo02.log NO CURRENT 50 3 2 +DATA/PREPROD/redo03.log YES INACTIVE 50 4 2 +DATA/PREPROD/redo04.log NO CURRENT 50
Currently, the redologs are under +DATA diskgroup, which we will multiplex to +REDOA,+REDOB diskgroup and resize to 5G each.
2. Add logfile groups for node 1 :(THREAD 1)
ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 5 ('+REDOA','+REDOB') SIZE 5G; ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 6 ('+REDOA','+REDOB') SIZE 5G;
3. Add logfile groups for node 2 : (THREAD 2)
ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 9 ('+REDOA','+REDOB') SIZE 5G; ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 10 ('+REDOA','+REDOB') SIZE 5G;
4. Drop the old redolog groups:
col member for a56 set pagesize 299 set lines 299 select l.group#, l.thread#, f.member, l.archived, l.status, (bytes/1024/1024) "Size (MB)" from v$log l, v$logfile f where f.group# = l.group# order by 1,2; GROUP# THREAD# MEMBER ARCHIVED STATUS Size (MB) ------ ------- ---------------------------------------------------------------------- ---------- ---------- --------- 1 1 +DATA/PREPROD/redo01.log YES INACTIVE 50 ---- >>> 2 1 +DATA/PREPROD/redo02.log NO CURRENT 50 ----->>> 3 2 +DATA/PREPROD/redo03.log YES INACTIVE 50 ----->>> 4 2 +DATA/PREPROD/redo04.log NO CURRENT 50 ----->>> 5 1 +REDOA/PREPROD/ONLINELOG/group_5.256.943101611 YES UNUSED 5120 5 1 +REDOB/PREPROD/ONLINELOG/group_5.256.943101623 YES UNUSED 5120 6 1 +REDOA/PREPROD/ONLINELOG/group_6.257.943101633 YES UNUSED 5120 6 1 +REDOB/PREPROD/ONLINELOG/group_6.257.943101643 YES UNUSED 5120 9 2 +REDOA/PREPROD/ONLINELOG/group_9.258.943101671 YES UNUSED 5120 9 2 +REDOB/PREPROD/ONLINELOG/group_9.258.943101679 YES UNUSED 5120 10 2 +REDOA/PREPROD/ONLINELOG/group_10.259.943101687 YES UNUSED 5120 10 2 +REDOB/PREPROD/ONLINELOG/group_10.259.943101695 YES UNUSED 5120
The old redolog groups are 1,2,3,4. And We can drop only the redolog groups whose status is INACTIVE.
Currently group 1, 3 are INACTIVE. Let’s drop them first.
alter database drop logfile group 1; alter database drop logfile group 3;
col member for a56 set pagesize 299 set lines 299 select l.group#, l.thread#, f.member, l.archived, l.status, (bytes/1024/1024) "Size (MB)" from v$log l, v$logfile f where f.group# = l.group# order by 1,2; GROUP# THREAD# MEMBER ARCHIVED STATUS Size (MB) ------ ------- ---------------------------------------------------------------------- ---------- ---------- --------- 2 1 +DATA/PREPROD/redo02.log NO CURRENT 50 ---->>> 4 2 +DATA/PREPROD/redo04.log NO CURRENT 50 ---->>> 5 1 +REDOA/PREPROD/ONLINELOG/group_5.256.943101611 YES UNUSED 5120 5 1 +REDOB/PREPROD/ONLINELOG/group_5.256.943101623 YES UNUSED 5120 6 1 +REDOA/PREPROD/ONLINELOG/group_6.257.943101633 YES UNUSED 5120 6 1 +REDOB/PREPROD/ONLINELOG/group_6.257.943101643 YES UNUSED 5120 9 2 +REDOA/PREPROD/ONLINELOG/group_9.258.943101671 YES UNUSED 5120 9 2 +REDOB/PREPROD/ONLINELOG/group_9.258.943101679 YES UNUSED 5120 10 2 +REDOA/PREPROD/ONLINELOG/group_10.259.943101687 YES UNUSED 5120 10 2 +REDOB/PREPROD/ONLINELOG/group_10.259.943101695 YES UNUSED 5120
Now we need to drop group 2, 4. But their status is CURRENT. So any attempt to drop these loggroups will result in below error.
ORA-01623: log 1 is current log for instance test (thread 1) – cannot drop
So to make them inactive, switch logfiles multiple time, till the status changes to INACTIVE.
alter system switch logfile; alter system switch logfile; alter system switch logfile; col member for a56 set pagesize 299 set lines 299 select l.group#, l.thread#, f.member, l.archived, l.status, (bytes/1024/1024) "Size (MB)" from v$log l, v$logfile f where f.group# = l.group# order by 1,2; GROUP# THREAD# MEMBER ARCHIVED STATUS Size (MB) ------ ------- ---------------------------------------------------------------------- ---------- ---------- --------- 2 1 +DATA/PREPROD/redo02.log YES INACTIVE 50 --->>> 4 2 +DATA/PREPROD/redo04.log YES INACTIVE 50 --->>> 5 1 +REDOA/PREPROD/ONLINELOG/group_5.256.943101611 NO CURRENT 5120 5 1 +REDOB/PREPROD/ONLINELOG/group_5.256.943101623 NO CURRENT 5120 6 1 +REDOA/PREPROD/ONLINELOG/group_6.257.943101633 YES INACTIVE 5120 6 1 +REDOB/PREPROD/ONLINELOG/group_6.257.943101643 YES INACTIVE 5120 9 2 +REDOA/PREPROD/ONLINELOG/group_9.258.943101671 YES ACTIVE 5120 9 2 +REDOB/PREPROD/ONLINELOG/group_9.258.943101679 YES ACTIVE 5120 10 2 +REDOA/PREPROD/ONLINELOG/group_10.259.943101687 NO CURRENT 5120 10 2 +REDOB/PREPROD/ONLINELOG/group_10.259.943101695 NO CURRENT 5120
As now both are in the INACTIVE state, Let’s drop them.
alter database drop logfile group 2; alter database drop logfile group 4; col member for a56 set pagesize 299 set lines 299 select l.group#, l.thread#, f.member, l.archived, l.status, (bytes/1024/1024) "Size (MB)" from v$log l, v$logfile f where f.group# = l.group# order by 1,2; GROUP# THREAD# MEMBER ARCHIVED STATUS Size (MB) ------ ------- ---------------------------------------------------------------------- ---------- ---------- --------- 5 1 +REDOA/PREPROD/ONLINELOG/group_5.256.943101611 NO CURRENT 5120 5 1 +REDOB/PREPROD/ONLINELOG/group_5.256.943101623 NO CURRENT 5120 6 1 +REDOA/PREPROD/ONLINELOG/group_6.257.943101633 YES INACTIVE 5120 6 1 +REDOB/PREPROD/ONLINELOG/group_6.257.943101643 YES INACTIVE 5120 9 2 +REDOA/PREPROD/ONLINELOG/group_9.258.943101671 YES ACTIVE 5120 9 2 +REDOB/PREPROD/ONLINELOG/group_9.258.943101679 YES ACTIVE 5120 10 2 +REDOA/PREPROD/ONLINELOG/group_10.259.943101687 NO CURRENT 5120 10 2 +REDOB/PREPROD/ONLINELOG/group_10.259.943101695 NO CURRENT 5120
Now all the old the redolog groups were dropped. With this multiplexing activity completed.
For resizing redolog groups , we can follow the same above steps.
For any queries, please post in our FORUM.