一、切换脚本
1:主库执行alter database set standby database to maximize availability;
//之后备库应用完归档日志后也自动变成maximize availability,主库宕机后备库还是maximize availability状态
2:主库执行shutdown immediate并startup
3:备库执行alter database recover managed standby database cancel;
4:备库创建standby redo log
先在主库查询有多少组redo log,有N组redo log就建立N+1组standby log,redo log多大,standby log也建立多大
alter database add standby logfile
group 4 '/u01/app/oracle/oradata/orcl/standby_redo04.log' size 50M,
group 5 '/u01/app/oracle/oradata/orcl/standby_redo05.log' size 50M,
group 6 '/u01/app/oracle/oradata/orcl/standby_redo06.log' size 50M,
group 7 '/u01/app/oracle/oradata/orcl/standby_redo07.log' size 50M;
5:备库执行alter database recover managed standby database disconnect from session;(再应用主库重启时产生的归档日志,主库那刻产生的归档日志可能因为主库重启或备库执行alter database recover managed standby database cancel没有应用到)
6:备库执行alter database recover managed standby database cancel;
7:备库执行alter database recover managed standby database using current logfile disconnect from session;
二、切换日志
primary
SQL> select OPEN_MODE,DB_UNIQUE_NAME,PROTECTION_MODE,SWITCHOVER_STATUS from v$database;
OPEN_MODE DB_UNIQUE_NAME PROTECTION_MODE SWITCHOVER_STATUS
-------------------- ------------------------------ -------------------- --------------------
READ WRITE orcl MAXIMUM PERFORMANCE TO STANDBY
SQL> alter database set standby database to maximize availability;
Database altered.
SQL> select OPEN_MODE,DB_UNIQUE_NAME,PROTECTION_MODE,SWITCHOVER_STATUS from v$database;
OPEN_MODE DB_UNIQUE_NAME PROTECTION_MODE SWITCHOVER_STATUS
-------------------- ------------------------------ -------------------- --------------------
READ WRITE orcl MAXIMUM AVAILABILITY FAILED DESTINATION
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 209235968 bytes
Fixed Size 1335528 bytes
Variable Size 180358936 bytes
Database Buffers 20971520 bytes
Redo Buffers 6569984 bytes
Database mounted.
Database opened.
SQL> select OPEN_MODE,DB_UNIQUE_NAME,PROTECTION_MODE,SWITCHOVER_STATUS from v$database;
OPEN_MODE DB_UNIQUE_NAME PROTECTION_MODE SWITCHOVER_STATUS
-------------------- ------------------------------ -------------------- --------------------
READ WRITE orcl MAXIMUM AVAILABILITY FAILED DESTINATION
SQL> /
OPEN_MODE DB_UNIQUE_NAME PROTECTION_MODE SWITCHOVER_STATUS
-------------------- ------------------------------ -------------------- --------------------
READ WRITE orcl MAXIMUM AVAILABILITY FAILED DESTINATION
SQL> /
OPEN_MODE DB_UNIQUE_NAME PROTECTION_MODE SWITCHOVER_STATUS
-------------------- ------------------------------ -------------------- --------------------
READ WRITE orcl MAXIMUM AVAILABILITY FAILED DESTINATION
SQL> select OPEN_MODE,DB_UNIQUE_NAME,PROTECTION_MODE,SWITCHOVER_STATUS from v$database;
OPEN_MODE DB_UNIQUE_NAME PROTECTION_MODE SWITCHOVER_STATUS
-------------------- ------------------------------ -------------------- --------------------
READ WRITE orcl MAXIMUM AVAILABILITY FAILED DESTINATION
standby
SQL> select OPEN_MODE,DB_UNIQUE_NAME,PROTECTION_MODE,SWITCHOVER_STATUS from v$database;
OPEN_MODE DB_UNIQUE_NAME PROTECTION_MODE SWITCHOVER_STATUS
-------------------- ------------------------------ -------------------- --------------------
READ ONLY WITH APPLY ora10g MAXIMUM PERFORMANCE NOT ALLOWED
SQL> alter database recover managed standby database cancel;
Database altered.
SQL> alter database add standby logfile
2 group 4 '/u01/app/oracle/oradata/orcl/standby_redo04.log' size 50M,
3 group 5 '/u01/app/oracle/oradata/orcl/standby_redo05.log' size 50M,
4 group 6 '/u01/app/oracle/oradata/orcl/standby_redo06.log' size 50M,
5 group 7 '/u01/app/oracle/oradata/orcl/standby_redo07.log' size 50M;
Database altered.
SQL> alter database recover managed standby database disconnect from session;
Database altered.
SQL> alter database recover managed standby database cancel;
Database altered.
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
SQL> select OPEN_MODE,DB_UNIQUE_NAME,PROTECTION_MODE,SWITCHOVER_STATUS from v$database;
OPEN_MODE DB_UNIQUE_NAME PROTECTION_MODE SWITCHOVER_STATUS
-------------------- ------------------------------ -------------------- --------------------
READ ONLY WITH APPLY ora10g MAXIMUM AVAILABILITY NOT ALLOWED
三、切换测试
primary
SQL> insert into scott.emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
2 values ('9991', 'SMITH', 'CLERK', '7902', to_date('17-12-1980', 'dd-mm-yyyy'), '800', null, '20');
1 row created.
SQL> select count(*) From scott.emp;
COUNT(*)
----------
21
SQL> commit;
SQL> select process,status,pid,client_process,client_pid,group#,sequence#,block#
2 from v$managed_standby;
PROCESS STATUS PID CLIENT_P CLIENT_PID GROUP# SEQUENCE# BLOCK#
--------- ------------ ---------- -------- ---------- ---------- ---------- ----------
ARCH CLOSING 19054 ARCH 19054 N/A 92 1
ARCH CLOSING 19056 ARCH 19056 2 92 1
ARCH CONNECTED 19058 ARCH 19058 N/A 0 0
ARCH CLOSING 19060 ARCH 19060 3 93 1
LGWR WRITING 19028 LGWR 19028 1 94 393
SQL>
SQL> select process,status,pid,client_process,client_pid,group#,sequence#,block#
2 from v$managed_standby;
PROCESS STATUS PID CLIENT_P CLIENT_PID GROUP# SEQUENCE# BLOCK#
--------- ------------ ---------- -------- ---------- ---------- ---------- ----------
ARCH CLOSING 19054 ARCH 19054 N/A 92 1
ARCH CLOSING 19056 ARCH 19056 2 92 1
ARCH CONNECTED 19058 ARCH 19058 N/A 0 0
ARCH CLOSING 19060 ARCH 19060 3 93 1
LGWR WRITING 19028 LGWR 19028 1 94 419
SQL> select process,status,pid,client_process,client_pid,group#,sequence#,block#
2 from v$managed_standby;
PROCESS STATUS PID CLIENT_P CLIENT_PID GROUP# SEQUENCE# BLOCK#
--------- ------------ ---------- -------- ---------- ---------- ---------- ----------
ARCH CLOSING 19054 ARCH 19054 N/A 92 1
ARCH CLOSING 19056 ARCH 19056 2 92 1
ARCH CONNECTED 19058 ARCH 19058 N/A 0 0
ARCH CLOSING 19060 ARCH 19060 3 93 1
LGWR WRITING 19028 LGWR 19028 1 94 422
standby
SQL> select count(*) From scott.emp;
COUNT(*)
----------
20
SQL> /
COUNT(*)
----------
21
SQL> select process,status,pid,client_process,client_pid,group#,sequence#,block#
2 from v$managed_standby;
PROCESS STATUS PID CLIENT_P CLIENT_PID GROUP# SEQUENCE# BLOCK#
--------- ------------ ---------- -------- ---------- ---------- ---------- ----------
ARCH CONNECTED 13249 ARCH 13249 N/A 0 0
ARCH CONNECTED 13252 ARCH 13252 N/A 0 0
ARCH CLOSING 13254 ARCH 13254 5 92 1
ARCH CLOSING 13256 ARCH 13256 4 93 1
MRP0 APPLYING_LOG 28070 N/A N/A N/A 94 391
RFS IDLE 28111 N/A 19058 N/A 0 0
RFS IDLE 28113 UNKNOWN 19060 N/A 0 0
RFS IDLE 28115 LGWR 19028 1 94 391
RFS IDLE 28117 UNKNOWN 19054 N/A 0 0
9 rows selected.
SQL> select process,status,pid,client_process,client_pid,group#,sequence#,block#
2 from v$managed_standby;
PROCESS STATUS PID CLIENT_P CLIENT_PID GROUP# SEQUENCE# BLOCK#
--------- ------------ ---------- -------- ---------- ---------- ---------- ----------
ARCH CONNECTED 13249 ARCH 13249 N/A 0 0
ARCH CONNECTED 13252 ARCH 13252 N/A 0 0
ARCH CLOSING 13254 ARCH 13254 5 92 1
ARCH CLOSING 13256 ARCH 13256 4 93 1
MRP0 APPLYING_LOG 28070 N/A N/A N/A 94 430
RFS IDLE 28111 N/A 19058 N/A 0 0
RFS IDLE 28113 UNKNOWN 19060 N/A 0 0
RFS IDLE 28115 LGWR 19028 1 94 430
RFS IDLE 28117 UNKNOWN 19054 N/A 0 0
9 rows selected.
SQL> select * from v$standby_log;
GROUP# DBID THREAD# SEQUENCE# BYTES BLOCKSIZE USED ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME LAST_CHANGE# LAST_TIME
---------- ---------------------------------------- ---------- ---------- ---------- ---------- ---------- --- ---------- ------------- --------- ------------ --------- ------------ ---------
########## 1282391501 1 94 52428800 512 231936 YES ACTIVE 1665815 25-JUN-19 1666222 25-JUN-19 1666222 25-JUN-19
########## UNASSIGNED 1 0 52428800 512 512 NO UNASSIGNED 0 0 0
########## UNASSIGNED 0 0 52428800 512 512 YES UNASSIGNED 0 0 0
########## UNASSIGNED 0 0 52428800 512 512 YES UNASSIGNED 0 0 0
SQL> /
GROUP# DBID THREAD# SEQUENCE# BYTES BLOCKSIZE USED ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME LAST_CHANGE# LAST_TIME
---------- ---------------------------------------- ---------- ---------- ---------- ---------- ---------- --- ---------- ------------- --------- ------------ --------- ------------ ---------
########## 1282391501 1 94 52428800 512 241152 YES ACTIVE 1665815 25-JUN-19 1666245 25-JUN-19 1666245 25-JUN-19
########## UNASSIGNED 1 0 52428800 512 512 NO UNASSIGNED 0 0 0
########## UNASSIGNED 0 0 52428800 512 512 YES UNASSIGNED 0 0 0
########## UNASSIGNED 0 0 52428800 512 512 YES UNASSIGNED 0 0 0
SQL> /
GROUP# DBID THREAD# SEQUENCE# BYTES BLOCKSIZE USED ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME LAST_CHANGE# LAST_TIME
---------- ---------------------------------------- ---------- ---------- ---------- ---------- ---------- --- ---------- ------------- --------- ------------ --------- ------------ ---------
########## 1282391501 1 94 52428800 512 241664 YES ACTIVE 1665815 25-JUN-19 1666245 25-JUN-19 1666245 25-JUN-19
########## UNASSIGNED 1 0 52428800 512 512 NO UNASSIGNED 0 0 0
########## UNASSIGNED 0 0 52428800 512 512 YES UNASSIGNED 0 0 0
########## UNASSIGNED 0 0 52428800 512 512 YES UNASSIGNED 0 0 0
SQL> /
GROUP# DBID THREAD# SEQUENCE# BYTES BLOCKSIZE USED ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME LAST_CHANGE# LAST_TIME
---------- ---------------------------------------- ---------- ---------- ---------- ---------- ---------- --- ---------- ------------- --------- ------------ --------- ------------ ---------
########## 1282391501 1 94 52428800 512 242176 YES ACTIVE 1665815 25-JUN-19 1666245 25-JUN-19 1666245 25-JUN-19
########## UNASSIGNED 1 0 52428800 512 512 NO UNASSIGNED 0 0 0
########## UNASSIGNED 0 0 52428800 512 512 YES UNASSIGNED 0 0 0
########## UNASSIGNED 0 0 52428800 512 512 YES UNASSIGNED 0 0 0
SQL> /
GROUP# DBID THREAD# SEQUENCE# BYTES BLOCKSIZE USED ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME LAST_CHANGE# LAST_TIME
---------- ---------------------------------------- ---------- ---------- ---------- ---------- ---------- --- ---------- ------------- --------- ------------ --------- ------------ ---------
########## 1282391501 1 94 52428800 512 242688 YES ACTIVE 1665815 25-JUN-19 1666245 25-JUN-19 1666245 25-JUN-19
########## UNASSIGNED 1 0 52428800 512 512 NO UNASSIGNED 0 0 0
########## UNASSIGNED 0 0 52428800 512 512 YES UNASSIGNED 0 0 0
########## UNASSIGNED 0 0 52428800 512 512 YES UNASSIGNED 0 0 0