环境说明: 本实验环境是一个节点的rac + 单节点 asm dg database 与 grid 版本是 11.2.0.4 。
提别提醒 如果是多节点集群,操作时需要特别注意 thread 。
一. 主库操作
1.1 查看redo 信息
SQL> col member for a60
SQL> select group#,type, member from v$logfile;
GROUP# TYPE MEMBER
---------- ------- --------------------------------------------------------
3 ONLINE +DATA/devdb/onlinelog/group_3.263.936769395
3 ONLINE +FLASH/devdb/onlinelog/group_3.259.936769401
2 ONLINE +DATA/devdb/onlinelog/group_2.262.936769383
2 ONLINE +FLASH/devdb/onlinelog/group_2.258.936769389
1 ONLINE +DATA/devdb/onlinelog/group_1.261.936769373
1 ONLINE +FLASH/devdb/onlinelog/group_1.257.936769379
4 STANDBY +DATA/devdb/onlinelog/group_4.267.938494955
4 STANDBY +FLASH/devdb/onlinelog/group_4.278.938494963
5 STANDBY +DATA/devdb/onlinelog/group_5.268.938494969
5 STANDBY +FLASH/devdb/onlinelog/group_5.279.938494975
6 STANDBY +DATA/devdb/onlinelog/group_6.269.938494981
6 STANDBY +FLASH/devdb/onlinelog/group_6.280.938494985
7 STANDBY +DATA/devdb/onlinelog/group_7.270.938495005
7 STANDBY +FLASH/devdb/onlinelog/group_7.281.938495013
14 rows selected.
SQL> select group#,thread#,archived,status, bytes/1024/1024 from v$log;
GROUP# THREAD# ARC STATUS BYTES/1024/1024
---------- ---------- --- ---------------- ---------------
1 1 YES INACTIVE 50
2 1 YES INACTIVE 50
3 1 NO CURRENT 50
1.2 修改standby redo
SQL> alter database drop logfile group 4;
Database altered.
SQL> alter database drop logfile group 5;
Database altered.
SQL> alter database drop logfile group 6;
Database altered.
SQL> alter database drop logfile group 7;
Database altered.
SQL> select group#,type, member from v$logfile;
GROUP# TYPE MEMBER
---------- ------- ------------------------------------------------
3 ONLINE +DATA/devdb/onlinelog/group_3.263.936769395
3 ONLINE +FLASH/devdb/onlinelog/group_3.259.936769401
2 ONLINE +DATA/devdb/onlinelog/group_2.262.936769383
2 ONLINE +FLASH/devdb/onlinelog/group_2.258.936769389
1 ONLINE +DATA/devdb/onlinelog/group_1.261.936769373
1 ONLINE +FLASH/devdb/onlinelog/group_1.257.936769379
6 rows selected.
添加standby redo
SQL> alter database add standby logfile thread 1 group 4 size 60m,group 5 size 60m,group 6 size 60m,group 7 size 60m;
Database altered.
SQL> select group#,type, member from v$logfile;
GROUP# TYPE MEMBER
---------- ------- --------------------------------------------------
3 ONLINE +DATA/devdb/onlinelog/group_3.263.936769395
3 ONLINE +FLASH/devdb/onlinelog/group_3.259.936769401
2 ONLINE +DATA/devdb/onlinelog/group_2.262.936769383
2 ONLINE +FLASH/devdb/onlinelog/group_2.258.936769389
1 ONLINE +DATA/devdb/onlinelog/group_1.261.936769373
1 ONLINE +FLASH/devdb/onlinelog/group_1.257.936769379
4 STANDBY +DATA/devdb/onlinelog/group_4.267.938747301
4 STANDBY +FLASH/devdb/onlinelog/group_4.278.938747305
5 STANDBY +DATA/devdb/onlinelog/group_5.268.938747309
5 STANDBY +FLASH/devdb/onlinelog/group_5.279.938747313
6 STANDBY +DATA/devdb/onlinelog/group_6.269.938747317
6 STANDBY +FLASH/devdb/onlinelog/group_6.280.938747321
7 STANDBY +DATA/devdb/onlinelog/group_7.270.938747325
7 STANDBY +FLASH/devdb/onlinelog/group_7.281.938747327
14 rows selected.
1.3 修改Online redo
SQL> select group#,thread#,archived,status, bytes/1024/1024 from v$log;
GROUP# THREAD# ARC STATUS BYTES/1024/1024
---------- ---------- --- ---------------- ---------------
1 1 YES INACTIVE 50
2 1 YES INACTIVE 50
3 1 NO CURRENT 50
先处理inactive, 它表示已经完成规定的,可以删除。
SQL> alter database drop logfile group 1;
Database altered.
注意: 至少要2个redo组
SQL> alter database add logfile thread 1 group 1 size 60m;
Database altered.
SQL> select group#,thread#,archived,status, bytes/1024/1024 from v$log;
GROUP# THREAD# ARC STATUS BYTES/1024/1024
---------- ---------- --- ---------------- ---------------
1 1 YES UNUSED 60
2 1 YES INACTIVE 50
3 1 NO CURRENT 50
SQL> alter database drop logfile group 2;
Database altered.
SQL> alter database add logfile thread 1 group 2 size 60m;
Database altered.
SQL> alter system switch logfile;
System altered.
SQL> select group#,thread#,archived,status, bytes/1024/1024 from v$log;
GROUP# THREAD# ARC STATUS BYTES/1024/1024
---------- ---------- --- ---------------- ---------------
1 1 NO CURRENT 60
2 1 YES UNUSED 60
3 1 YES ACTIVE 50
说明:ACTIVE 表示正在归档
等一会后
SQL> select group#,thread#,archived,status, bytes/1024/1024 from v$log;
GROUP# THREAD# ARC STATUS BYTES/1024/1024
---------- ---------- --- ---------------- ---------------
1 1 NO CURRENT 60
2 1 YES UNUSED 60
3 1 YES INACTIVE 50
SQL> alter database drop logfile group 3;
Database altered.
SQL> alter database add logfile thread 1 group 3 size 60m;
Database altered.
SQL> select group#,thread#,archived,status, bytes/1024/1024 from v$log;
GROUP# THREAD# ARC STATUS BYTES/1024/1024
---------- ---------- --- ---------------- ---------------
1 1 NO CURRENT 60
2 1 YES UNUSED 60
3 1 YES UNUSED 60
OK,至此,主库完成。
二. 备库操作
2.1 查看信息
SQL> col member for a60
SQL> select group#,type, member from v$logfile;
GROUP# TYPE MEMBER
---------- ------- --------------------------------------------------
3 ONLINE +DATA/phydb/onlinelog/group_3.268.938177101
3 ONLINE +FLASH/phydb/onlinelog/group_3.262.938177103
2 ONLINE +DATA/phydb/onlinelog/group_2.267.938177097
2 ONLINE +FLASH/phydb/onlinelog/group_2.261.938177099
1 ONLINE +DATA/phydb/onlinelog/group_1.266.938177093
1 ONLINE +FLASH/phydb/onlinelog/group_1.260.938177095
4 STANDBY +DATA/phydb/onlinelog/group_4.262.938176937
4 STANDBY +FLASH/phydb/onlinelog/group_4.256.938176939
5 STANDBY +DATA/phydb/onlinelog/group_5.263.938176941
5 STANDBY +FLASH/phydb/onlinelog/group_5.257.938176943
6 STANDBY +DATA/phydb/onlinelog/group_6.264.938176945
6 STANDBY +FLASH/phydb/onlinelog/group_6.258.938176945
7 STANDBY +DATA/phydb/onlinelog/group_7.265.938176947
7 STANDBY +FLASH/phydb/onlinelog/group_7.259.938176949
14 rows selected.
SQL> select group#,thread#,archived,status, bytes/1024/1024 from v$log;
GROUP# THREAD# ARC STATUS BYTES/1024/1024
---------- ---------- --- ---------------- ---------------
1 1 YES CURRENT 50
2 1 YES CLEARING 50
3 1 YES CLEARING 50
2.2 处理standby redo
对于standby 上redo的处理之前,我们要先停掉redo 的apply:否则报错 ORA-01156
SQL> alter database recover managed standby database cancel;
SQL> alter database drop logfile group 4;
Database altered.
SQL> alter database drop logfile group 5;
Database altered.
SQL> alter database drop logfile group 6;
Database altered.
SQL> alter database drop logfile group 7;
Database altered.
SQL> alter database add standby logfile thread 1 group 4 size 60m,group 5 size 60m,group 6 size 60m,group 7 size 60m;
Database altered.
SQL> select group#,type, member from v$logfile;
GROUP# TYPE MEMBER
---------- ------- -------------------------------------------------
3 ONLINE +DATA/phydb/onlinelog/group_3.268.938177101
3 ONLINE +FLASH/phydb/onlinelog/group_3.262.938177103
2 ONLINE +DATA/phydb/onlinelog/group_2.267.938177097
2 ONLINE +FLASH/phydb/onlinelog/group_2.261.938177099
1 ONLINE +DATA/phydb/onlinelog/group_1.266.938177093
1 ONLINE +FLASH/phydb/onlinelog/group_1.260.938177095
4 STANDBY +DATA/phydb/onlinelog/group_4.265.938720451
4 STANDBY +FLASH/phydb/onlinelog/group_4.259.938720453
5 STANDBY +DATA/phydb/onlinelog/group_5.264.938720457
5 STANDBY +FLASH/phydb/onlinelog/group_5.258.938720463
6 STANDBY +DATA/phydb/onlinelog/group_6.263.938720465
6 STANDBY +FLASH/phydb/onlinelog/group_6.257.938720469
7 STANDBY +DATA/phydb/onlinelog/group_7.262.938720471
7 STANDBY +FLASH/phydb/onlinelog/group_7.256.938720475
14 rows selected.
2.3 处理online redo
先将standby_file_management设为手动:
SQL> alter system set standby_file_management=manual;
System altered.
SQL> alter database clear logfile group 2;
Database altered.
SQL> alter database drop logfile group 2;
Database altered.
SQL> alter database add logfile thread 1 group 2 size 60m;
Database altered.
SQL> select group#,thread#,archived,status, bytes/1024/1024 from v$log;
GROUP# THREAD# ARC STATUS BYTES/1024/1024
---------- ---------- --- ---------------- ---------------
1 1 YES CURRENT 50
2 1 YES UNUSED 60
3 1 YES CLEARING 50
SQL> alter database clear logfile group 3;
Database altered.
SQL> alter database drop logfile group 3;
Database altered.
SQL> alter database add logfile thread 1 group 3 size 60m;
Database altered.
SQL> select group#,thread#,archived,status, bytes/1024/1024 from v$log;
GROUP# THREAD# ARC STATUS BYTES/1024/1024
---------- ---------- --- ---------------- ---------------
1 1 YES CURRENT 50
2 1 YES UNUSED 60
3 1 YES UNUSED 60
SQL> alter database recover managed standby database disconnect from session;
Database altered.
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT='AUTO';
System altered.
-- 到主库手动切换几次redo
SQL> alter system switch logfile;
System altered.
SQL> alter system switch logfile;
System altered.
--查看备库的redo:
SQL> select group#,thread#,archived,status, bytes/1024/1024 from v$log;
GROUP# THREAD# ARC STATUS BYTES/1024/1024
---------- ---------- --- ---------------- ---------------
1 1 YES CLEARING 50
2 1 YES CLEARING 60
3 1 YES CURRENT 60
SQL> alter database recover managed standby database cancel;
Database altered.
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT='MANUAL';
System altered.
SQL> select group#,thread#,archived,status, bytes/1024/1024 from v$log;
GROUP# THREAD# ARC STATUS BYTES/1024/1024
---------- ---------- --- ---------------- ---------------
1 1 YES CLEARING 50
2 1 YES CLEARING 60
3 1 YES CURRENT 60
SQL> alter database clear logfile group 1;
Database altered.
SQL> alter database drop logfile group 1;
Database altered.
SQL> alter database add logfile thread 1 group 1 size 60m;
Database altered.
SQL> select group#,thread#,archived,status, bytes/1024/1024 from v$log;
GROUP# THREAD# ARC STATUS BYTES/1024/1024
---------- ---------- --- ---------------- ---------------
1 1 YES UNUSED 60
2 1 YES CLEARING 60
3 1 YES CURRENT 60
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT='AUTO';
System altered.
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
主库测试:
SQL> alter system switch logfile;
System altered.
SQL> alter system switch logfile;
System altered.
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
77
备库查看是否同步:
SQL> select sequence#,applied from v$archived_log;
。。。。。
76 YES
77 IN-MEMORY
69 rows selected.
一切正常。