SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY
*
ERROR at line 1:
ORA-16139: media recovery required
三. Switchover
3.1 主库操作:
(1)查看状态:
sql>select switchover_status from v$database;
(2)切换
sql> alter database commit to switchover to physical standby with session shutdown;
SQL> shutdown immediate;
SQL> startup;
SQL> alter database mount standby database;
SQL> recover managed standby database disconnect;
3.2 备库操作:
SQL> alter database commit to switchover to primary with session shutdown;
SQL> shutdown immediate
SQL> startup
四. 对Failover 过程的研究
4.1 Failover 日志
Thu Mar 17 15:01:47 2011
alter database activate standby database
Thu Mar 17 15:01:47 2011
ALTER DATABASE ACTIVATE [PHYSICAL] STANDBY DATABASE (dave)
--我们切换的时候,命令写全命令,db 自动补全了
RESETLOGS after complete recovery through change 1255060
Resetting resetlogs activation ID 808909668 (0x3036fb64)
-- resetlogs了. 这就以为着产生一个新的incarnation。 online redo 会被清空
Online log /u01/app/oracle/oradata/dave/redo01.log: Thread 1 Group 1 was previously cleared
Online log /u01/app/oracle/oradata/dave/redo02.log: Thread 1 Group 2 was previously cleared
Online log /u01/app/oracle/oradata/dave/redo03.log: Thread 1 Group 3 was previously cleared
Standby became primary SCN: 1255058
Thu Mar 17 15:01:48 2011
Setting recovery target incarnation to 3
--修改incarnation版本
Thu Mar 17 15:01:48 2011
Converting standby mount to primary mount.
--将standby 转成 primary
Thu Mar 17 15:01:48 2011
ACTIVATE STANDBY: Complete - Database mounted as primary (dave)
Completed: alter database activate standby database
--完成active
Thu Mar 17 15:01:59 2011
Shutting down instance: further logons disabled
--关闭实例
Thu Mar 17 15:01:59 2011
Stopping background process CJQ0
Thu Mar 17 15:01:59 2011
Stopping background process MMNL
Thu Mar 17 15:01:59 2011
Stopping background process MMON
Thu Mar 17 15:01:59 2011
Shutting down instance (immediate)
License high water mark = 7
Thu Mar 17 15:01:59 2011
Stopping Job queue slave processes, flags = 7
Thu Mar 17 15:01:59 2011
Job queue slave processes stopped
All dispatchers and shared servers shutdown
Thu Mar 17 15:02:35 2011
ARC1: Archival disabled due to shutdown: 1089
Shutting down archive processes
Archiving is disabled
Thu Mar 17 15:02:45 2011
ARCH shutting down
ARC0: Archival stopped
Thu Mar 17 15:02:50 2011
ARCH shutting down
ARC1: Archival stopped
Thu Mar 17 15:07:04 2011
SHUTDOWN: Active processes prevent shutdown operation
Thu Mar 17 15:07:50 2011
ALTER DATABASE CLOSE NORMAL
Thu Mar 17 15:07:50 2011
ORA-1109 signalled during: ALTER DATABASE CLOSE NORMAL...
Thu Mar 17 15:07:50 2011
ALTER DATABASE DISMOUNT
Completed: ALTER DATABASE DISMOUNT
ARCH: Archival disabled due to shutdown: 1089
Shutting down archive processes
Archiving is disabled
Archive process shutdown avoided: 0 active
ARCH: Archival disabled due to shutdown: 1089
Shutting down archive processes
Archiving is disabled
Archive process shutdown avoided: 0 active
Thu Mar 17 15:08:13 2011
Starting ORACLE instance (normal)
--开始重新启动实例
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Picked latch-free SCN scheme 2
Autotune of undo retention is turned on.
IMODE=BR
ILAT =18
LICENSE_MAX_USERS = 0
SYS auditing is disabled
ksdpec: called for event 13740 prior to event group initialization
Starting up ORACLE RDBMS Version: 10.2.0.4.0.
System parameters with non-default values:
processes = 150
__shared_pool_size = 113246208
__large_pool_size = 4194304
__java_pool_size = 25165824
__streams_pool_size = 0
nls_territory = AMERICA
sga_target = 247463936
control_files = /u01/app/oracle/oradata/dave/control01.ctl, /u01/app/oracle/oradata/dave/control02.ctl, /u01/app/oracle/oradata/dave/control03.ctl
db_block_size = 8192
__db_cache_size = 100663296
compatible = 10.2.0.1.0
log_archive_config = dg_config=(dave_pd,dave_st)
log_archive_dest_1 = location=/u01/archivelog valid_for=(all_logfiles,all_roles) db_unique_name=dave_st
log_archive_dest_2 = service=dave_pd reopen=120 lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=dave_pd
log_archive_dest_state_1 = ENABLE
log_archive_dest_state_2 = ENABLE
standby_archive_dest = /u01/archivelog
fal_client = dave_st
fal_server = dave_pd
db_file_multiblock_read_count= 16
standby_file_management = AUTO
undo_management = AUTO
undo_tablespace = UNDOTBS1
remote_login_passwordfile= EXCLUSIVE
db_domain =
dispatchers = (PROTOCOL=TCP) (SERVICE=daveXDB)
job_queue_processes = 10
background_dump_dest = /u01/app/oracle/admin/dave/bdump
user_dump_dest = /u01/app/oracle/admin/dave/udump
core_dump_dest = /u01/app/oracle/admin/dave/cdump
audit_file_dest = /u01/app/oracle/admin/dave/adump
db_name = dave
db_unique_name = dave_st
open_cursors = 300
pga_aggregate_target = 81788928
PMON started with pid=2, OS id=5909
PSP0 started with pid=3, OS id=5911
MMAN started with pid=4, OS id=5913
DBW0 started with pid=5, OS id=5915
LGWR started with pid=6, OS id=5917
CKPT started with pid=7, OS id=5919
SMON started with pid=8, OS id=5921
RECO started with pid=9, OS id=5923
CJQ0 started with pid=10, OS id=5925
MMON started with pid=11, OS id=5927
Thu Mar 17 15:08:14 2011
starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...
MMNL started with pid=12, OS id=5929
Thu Mar 17 15:08:14 2011
starting up 1 shared server(s) ...
Thu Mar 17 15:08:15 2011
ALTER DATABASE MOUNT
Thu Mar 17 15:08:19 2011
Setting recovery target incarnation to 3
Thu Mar 17 15:08:19 2011
Successful mount of redo thread 1, with mount id 808884895
Thu Mar 17 15:08:19 2011
Database mounted in Exclusive Mode
Completed: ALTER DATABASE MOUNT
Thu Mar 17 15:08:19 2011
ALTER DATABASE OPEN
Thu Mar 17 15:08:19 2011
Assigning activation ID 808884895 (0x30369a9f)
LGWR: STARTING ARCH PROCESSES
ARC0 started with pid=16, OS id=5937
Thu Mar 17 15:08:19 2011
ARC0: Archival started
ARC1: Archival started
LGWR: STARTING ARCH PROCESSES COMPLETE
ARC1 started with pid=17, OS id=5939
LNS1 started with pid=18, OS id=5941
Thu Mar 17 15:08:22 2011
Thread 1 advanced to log sequence 2 (thread open)
Thu Mar 17 15:08:23 2011
ARC0: STARTING ARCH PROCESSES
Thu Mar 17 15:08:23 2011
ARC1: Becoming the 'no FAL' ARCH
ARC1: Becoming the 'no SRL' ARCH
Thu Mar 17 15:08:23 2011
Thread 1 opened at log sequence 2
Current log# 2 seq# 2 mem# 0: /u01/app/oracle/oradata/dave/redo02.log
Successful open of redo thread 1
Thu Mar 17 15:08:23 2011
******************************************************************
LGWR: Setting 'active' archival for destination LOG_ARCHIVE_DEST_2
******************************************************************
Thu Mar 17 15:08:23 2011
ARC1: LGWR is actively archiving destination LOG_ARCHIVE_DEST_2
Thu Mar 17 15:08:23 2011
ARC2: Archival started
ARC0: STARTING ARCH PROCESSES COMPLETE
ARC0: Becoming the heartbeat ARCH
ARC2 started with pid=19, OS id=5943
Thu Mar 17 15:08:23 2011
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
Thu Mar 17 15:08:23 2011
SMON: enabling cache recovery
Thu Mar 17 15:08:24 2011
Successfully onlined Undo Tablespace 1.
Dictionary check beginning
Dictionary check complete
Thu Mar 17 15:08:24 2011
SMON: enabling tx recovery
Thu Mar 17 15:08:24 2011
Database Characterset is ZHS16GBK
Opening with internal Resource Manager plan
where NUMA PG = 1, CPUs = 1
replication_dependency_tracking turned off (no async multimaster replication found)
Starting background process QMNC
QMNC started with pid=20, OS id=5945
Thu Mar 17 15:08:26 2011
LOGSTDBY: Validating controlfile with logical metadata
Thu Mar 17 15:08:26 2011
LOGSTDBY: Validation complete
Completed: ALTER DATABASE OPEN
4.2 对Failover 的补充说明
在4.1 中看了Failover 的整个过程,DB 会进行一次resetlogs。 这个是个很有意思的过程。
(1) resetlogs 会产生一个新的incarnation。 这个会影响我们的RMAN 恢复。 我们查看一下:
RMAN> list incarnation;
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 DAVE 808637274 PARENT 1 30-JUN-05
2 2 DAVE 808637274 PARENT 446075 14-MAR-11
3 3 DAVE 808637274 CURRENT 1255061 17-MAR-11
这个时候,我们只能恢复incarnation 为3之内的信息,如果要恢复到其他版本的信息,要保证对应备份集存在的同时,在使用reset database incarnation to 3或者其他的版本。 之后在恢复。
(2)看下归档日志
先看备库:
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
6
SQL> select sequence#,applied from v$archived_log;
(4)在次验证归档信息
主库:
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
9
SQL> alter system switch logfile;
System altered.
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
10
SQL> select sequence#,applied from v$archived_log;
SEQUENCE# APP
---------- ---
8 NO
7 NO
9 NO
9 YES
10 YES
10 NO
6 rows selected.
SQL> select sequence#,first_change#,next_change# from v$log_history;