2026-03-12 20:23:15
This commit is contained in:
62
vg/redolog_remove_extra_member.sql
Normal file
62
vg/redolog_remove_extra_member.sql
Normal file
@@ -0,0 +1,62 @@
|
||||
|
||||
/*
|
||||
*
|
||||
* Author : Vishal Gupta
|
||||
* Purpose : Remove extra online redolog members.
|
||||
* Version :
|
||||
* Parameters : None
|
||||
*
|
||||
*
|
||||
* Revision History:
|
||||
* ===================
|
||||
* Date Author Description
|
||||
* --------- ------------ -----------------------------------------
|
||||
* 17-DEC-15 Vishal Gupta Created
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
set serveroutput on
|
||||
BEGIN
|
||||
-- Remove extra redo log member from non-current online redologs
|
||||
FOR i in
|
||||
(SELECT 'alter database drop logfile member '''
|
||||
|| max(lf.member)
|
||||
|| '''' sqltext
|
||||
, l.status
|
||||
FROM v$log l
|
||||
JOIN v$logfile lf ON lf.group# = l.group#
|
||||
WHERE l.members = 2
|
||||
and l.status NOT IN ('CURRENT')
|
||||
group by l.group#, l.status
|
||||
ORDER BY l.group#
|
||||
)
|
||||
LOOP
|
||||
dbms_output.put_line(i.sqltext || ';');
|
||||
execute immediate i.sqltext;
|
||||
END LOOP;
|
||||
|
||||
-- Switch current online redo and remove extra member
|
||||
FOR i in
|
||||
(SELECT 'alter database drop logfile member '''
|
||||
|| max(lf.member)
|
||||
|| '''' sqltext
|
||||
, 'alter system archive log instance ''' || i.instance_name || ''' current' sqltext2
|
||||
, l.status
|
||||
FROM v$log l
|
||||
JOIN v$logfile lf ON lf.group# = l.group#
|
||||
JOIN gv$instance i ON i.inst_id = l.thread#
|
||||
WHERE l.members = 2
|
||||
and l.status = 'CURRENT'
|
||||
group by l.group#, i.instance_name, l.status
|
||||
ORDER BY l.group#, i.instance_name
|
||||
)
|
||||
LOOP
|
||||
dbms_output.put_line(i.sqltext2 || ';');
|
||||
execute immediate i.sqltext2;
|
||||
dbms_output.put_line(i.sqltext || ';');
|
||||
execute immediate i.sqltext;
|
||||
END LOOP;
|
||||
END;
|
||||
/
|
||||
|
||||
Reference in New Issue
Block a user