We decided to increase the Redo Log size to 100MB.
The Redo Logs must be dropped and recreated for changing the redo log size. It can be done online without shutting down the database. However, you need to make sure that the Redo Group being dropped should be INACTIVE when you do this.
We have the following Log Groups and members:
SQL> select * from v$logfile;And the status of the Log Groups is:
GROUP# STATUS TYPE MEMBER IS_RECOVE
------ ------- ----- --------- ---------
2 ONLINE /app01/oratest/oradata/BOTI/BOTI/redo02.log NO
1 ONLINE /app01/oratest/oradata/BOTI/BOTI/redo01.log NO
SQL> select * from v$log;Here we see that the Group# 1 is being used Currently and the Group# 2 though not being used Currently, however is ACTIVE (means if the Database crashes now, you will need this Group for recovery.) We need to make this group Inactive before proceeding ahead:
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIVE STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --------- --------------
1 1 12 52428800 1 NO CURRENT 1156736 27-JAN-11
2 1 11 52428800 1 YES ACTIVE 1156732 27-JAN-11
For this, execute a checkpoint:
SQL> alter system checkpoint;Now again check the status of the Redo Groups:
System altered.
SQL> select * from v$log;The group 2 is now Inactive. Hence we can proceed with dropping this group:
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --------- --------
1 1 12 52428800 1 NO CURRENT 1156736 27-JAN-11
2 1 11 52428800 1 YES INACTIVE 1156732 27-JAN-11
SQL> alter database drop logfile group 2;What went wrong ???
alter database drop logfile group 2
*
ERROR at line 1:
ORA-01567: dropping log 2 would leave less than 2 log files for instance BOTI (thread 1)
ORA-00312: online log 2 thread 1: '/app01/oratest/oradata/BOTI/BOTI/redo02.log'
It’s a basic requirement in Oracle Database that there should always be a minimum 2 Redo Log Groups available with the Database. Hence we can not drop any Redo Group if there are only 2 Groups.
To overcome this issue, we need to add one more Redo group to the database.
Execute the following step:
SQL> alter database add logfile group 3 '/app01/oratest/oradata/BOTI/BOTI/redo03.log' size 100M;Now check the logfiles:
Database altered.
SQL> select * from v$logfile;… and the status of the Groups:
GROUP# STATUS TYPE MEMBER IS_RECOVE
---------- --------------------- --------------------- -
3 ONLINE /app01/oratest/oradata/BOTI/BOTI/redo03.log NO
2 ONLINE /app01/oratest/oradata/BOTI/BOTI/redo02.log NO
1 ONLINE /app01/oratest/oradata/BOTI/BOTI/redo01.log NO
SQL> select * from v$log;The status of the new Group is UNUSED because it has never been used.
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIVE STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --------- ---------
1 1 12 52428800 1 NO CURRENT 1156736 27-JAN-11
2 1 11 52428800 1 YES INACTIVE 1156732 27-JAN-11
3 1 0 104857600 1 YES UNUSED 0
Now, we have 3 Redo Groups in our database. We can now proceed with Dropping Redo Group# 2.
SQL> alter database drop logfile group 2;Also, delete the file ‘/app01/oratest/oradata/BOTI/BOTI/redo02.log’ from File system also.
Database altered.
Now add the Redo Group 2 back to the database with changed Redo size:
SQL> alter database add logfile group 2 '/app01/oratest/oradata/BOTI/BOTI/redo02.log' size 100M;Now we have to drop the 1st Redo Log Group. Before that, we need to change the status of this group:
Database altered.
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_RECOVE
---------- --------------------- --------------------- --------
3 ONLINE /app01/oratest/oradata/BOTI/BOTI/redo03.log NO
2 ONLINE /app01/oratest/oradata/BOTI/BOTI/redo02.log NO
1 ONLINE /app01/oratest/oradata/BOTI/BOTI/redo01.log NO
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --------- --------------
1 1 12 52428800 1 NO CURRENT 1156736 27-JAN-11
2 1 0 104857600 1 YES UNUSED 0
3 1 0 104857600 1 YES UNUSED 0
SQL> alter system switch logfile;Still the Grpoup is in Active status. Issue a checkpoint:
System altered.
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --------- ---- -----
1 1 12 52428800 1 YES ACTIVE 1156736 27-JAN-11
2 1 13 10485760 1 NO CURRENT 1157376 27-JAN-11
3 1 0 104857600 1 YES UNUSED 0
SQL> alter system checkpoint;Now we can drop the Redo Group# 1.
System altered.
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --------- -------
1 1 12 52428800 1 YES INACTIVE 1156736 27-JAN-11
2 1 13 104857600 1 NO CURRENT 1157376 27-JAN-11
3 1 0 104857600 1 YES UNUSED 0
SQL> alter database drop logfile group 1;Delete the file ‘/app01/oratest/oradata/BOTI/BOTI/redo01.log’ from OS.
Database altered.
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --------- -----
2 1 13 104857600 1 NO CURRENT 1157376 27-JAN-11
3 1 0 104857600 1 YES UNUSED 0
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBEs IS_RECOVE
---------- --------------------- ---------------------
3 ONLINE /app01/oratest/oradata/BOTI/BOTI/redo03.log NO
2 ONLINE /app01/oratest/oradata/BOTI/BOTI/redo02.log NO
Now we need to add this group back to the database with 100MB Redo Log file:
SQL> alter database add logfile group 1 '/app01/oratest/oradata/BOTI/BOTI/redo01.log' size 100M;Here we can see that all the Redo Groups are now showing 100MB size (column BYTES).
Database altered.
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --------- ----------
1 1 0 104857600 1 YES UNUSED 0
2 1 13 104857600 1 NO CURRENT 1157376 27-JAN-11
3 1 0 104857600 1 YES UNUSED 0
SQL> select * from v$logfile;Though it’s suggested that you should keep 3 groups, if you want you can drop the Redo Group 3 which we added for this exercise.
GROUP# STATUS TYPE MEMBER IS_RECOVE
---------- --------------------- -----------------
3 ONLINE /app01/oratest/oradata/BOTI/BOTI/redo03.log NO
2 ONLINE /app01/oratest/oradata/BOTI/BOTI/redo02.log NO
1 ONLINE /app01/oratest/oradata/BOTI/BOTI/redo01.log NO
SQL> alter database drop logfile group 3;Redo Log file size changed from 50M to 100M.
Database altered.
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_RECOVE
------- ------- -------------- ---------------------
2 ONLINE /app01/oratest/oradata/BOTI/BOTI/redo02.log NO
1 ONLINE /app01/oratest/oradata/BOTI/BOTI/redo01.log NO
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TIME
------ ---------- ---------- ---------- ---------- --------- ---------
1 1 0 104857600 1 YES UNUSED 0
2 1 13 104857600 1 NO CURRENT 1157376 27-JAN-11
SQL> alter system switch logfile;
System altered.
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIVE STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --------- ----------
1 1 14 104857600 1 NO CURRENT 1157584 27-JAN-11
2 1 13 104857600 1 YES ACTIVE 1157376 27-JAN-11
Apps Dba
Sukhwinder Singh
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.