Switchover转换
 
Step 1: switchover 切换先前检查
(1)确保主备两端log_archive_config和db_unique_name参数都已经正确设置。
需要注意的是,主备两端db_unique_name不能一样。
 
(2)在备库检查MRP进程是否正在运行
SQL> SELECT PROCESS FROM V$MANAGED_STANDBY WHERE PROCESS LIKE 'MRP%';
 
(3)在主库检查是否是REAL TIME APPLY模式
SQL> SELECT RECOVERY_MODE FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID=2;
 
RECOVERY_MODE
-----------------------
MANAGED REAL TIME APPLY
 
如果不是,需要执行如下:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
 
(4)在备库检查LOG_ARCHIVE_MAX_PROCESSES 参数是否为4或者更高
SQL> show parameter LOG_ARCHIVE_MAX_PROCESSES
 
(5)检查备库online redo log 文件已经被清除
SQL> SELECT DISTINCT L.GROUP# FROM V$LOG L, V$LOGFILE LF
WHERE L.GROUP# = LF.GROUP#
AND L.STATUS NOT IN ('UNUSED', 'CLEARING','CLEARING_CURRENT');
 
SQL>ALTER DATABASE CLEAR LOGFILE GROUP <ORL GROUP# from the query above>;
如果报如下错误:
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 2;
ALTER DATABASE CLEAR LOGFILE GROUP 2
*
ERROR at line 1:
ORA-01156: recovery or flashback in progress may need access to files
 
需要 执行 recover managed standby database cancel;
更改之后再执行 recover managed standby database using current logfile disconnect;
 
确定备库db_file_name_convert、log_file_name_convert两个参数已经设置,若未设置,可能会报如下错误:
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 3;
ALTER DATABASE CLEAR LOGFILE GROUP 3
*
ERROR at line 1:
ORA-19527: physical standby redo log must be renamed
ORA-00312: online log 3 thread 1: '/data/crfdb11/redo03.log'
 
 
(6)确保没有大的GAP产生
在主库查询当前的归档序列
SQL> SELECT THREAD#, SEQUENCE# FROM V$THREAD;
 
验证备库已应用到。
SQL> SELECT THREAD#, MAX(SEQUENCE#) FROM V$ARCHIVED_LOG WHERE APPLIED = 'YES' AND RESETLOGS_CHANGE# = (SELECT RESETLOGS_CHANGE# FROM V$DATABASE_INCARNATION WHERE STATUS = 'CURRENT') GROUP BY THREAD#;
 
(7)检查备库临时表空间是否存在
SQL> SELECT TMP.NAME FILENAME, BYTES, TS.NAME TABLESPACE FROM V$TEMPFILE TMP, V$TABLESPACE TS WHERE TMP.TS#=TS.TS#;
 
(8)检查备库数据文件表空间是否有offline的
SQL> SELECT NAME FROM V$DATAFILE WHERE STATUS='OFFLINE';
 
SQL> ALTER DATABASE DATAFILE ‘datafile-name’ ONLINE;
 
 
Step 2: 主库JOB的处理
SQL> SELECT * FROM DBA_JOBS_RUNNING; 
 
SQL> SELECT OWNER, JOB_NAME, START_DATE, END_DATE, ENABLED
FROM DBA_SCHEDULER_JOBS
WHERE ENABLED='TRUE'
AND OWNER <> 'SYS';
 
SQL> SHOW PARAMETER job_queue_processes
 
SQL> ALTER SYSTEM SET job_queue_processes=0 SCOPE=BOTH SID=’*’;
 
SQL> EXECUTE DBMS_SCHEDULER.DISABLE( <job_name> );
 
Step 3: 停止中间件
 
Step 4: 查看主库switchover 状态
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
--------------------
TO STANDBY
附: A:switchover_status出现session active/not allowed
当出现session active的时候表示还有活动的session,则运行
Alter database commit to switchover to physical standby with session shutdown;
当出现not allowed时,在官方文档说转换会不成功,但是我测试的时候成功了。
B.ora- 01153: an incompatible media recovery is active
运行下面代码
Alter database recover managed standby database disconnect from session;
 
Step 5: 将主库切换成备库
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO STANDBY WITH SESSION SHUTDOWN;
 
Step 6: 查看备库 switchover 状态
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
TO PRIMARY
附:若不是用此语句切换:
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY with session shutdown
补充:若出现:ORA-16139: media recovery required
是因为没有执行:
alter database recover managed standby database disconnect from session;
 
Step 7: 将备库切换成主库
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
 
Step 8: 打开新主库
SQL> ALTER DATABASE OPEN;
 
Step 9: 更正不匹配的临时文件
SQL> SELECT TMP.NAME FILENAME, BYTES, TS.NAME TABLESPACE
FROM V$TEMPFILE TMP, V$TABLESPACE TS
WHERE TMP.TS#=TS.TS#;
 
Step 10: 重启新备库
SQL> SHUTDOWN ABORT;
 
SQL> STARTUP MOUNT;
 SQL> alter database open read only;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
Step 11: 更改服务器IP地址
这个可以用xmanager 连过去,在界面上改,也可以直接用命令来修改。
vi /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/init.d/network restart
 
Step 12: JOB的处理
SQL> ALTER SYSTEM SET job_queue_processes=<value> scope=both sid=’*’
 
SQL> EXECUTE DBMS_SCHEDULER.ENABLE(<for each job name>);
 
Step 13: 在主库查看log_archive_dest 参数的状态是否有效
因为这里与监听和启动顺序有关,如果值为error,则归档不能传送到备库。
SQL>select status,database_mode from v$archive_dest_status;
Status状态为valid即可。 如果有错误,一般都是启动顺序和监听问题。如果启动顺序没有问题,那么就把主库重新启动一下。
 
Step 14: 修改参数及tnsnames.ora文件
参考搭建文档在主库和备库修改以下参数
主库先修改此参数:
alter system set db_unique_name='orcl' scope=spfile;
 
重启后再修改下面参数:
alter system set log_archive_dest_1='location=/data/arch valid_for=(all_logfiles,all_roles) db_unique_name=orcl' sid='*';
alter system set log_archive_dest_2='service=standby lgwr async COMPRESSION=ENABLE valid_for=(online_logfiles,primary_role) db_unique_name=standby' scope=both;
alter system set fal_server=orcl scope=both sid='*';
alter system set log_archive_config='dg_config=(orcl,standby)' scope=both sid='*';
 
备库先修改此参数:
alter system set db_unique_name='standby' scope=spfile;
 
重启后再修改下面参数:
alter system set log_archive_dest_1='location=/data/arch valid_for=(all_logfiles,all_roles) db_unique_name=standby' sid='*';
alter system set log_archive_dest_2='' scope=both;
alter system set fal_server=orcl scope=both sid='*';
alter system set log_archive_config='dg_config=(orcl,standby)' scope=both sid='*';
 
修改参数完之后,修改 tnsnames.ora文件,把 orcl 和 STANDBY 的 HOST对换。
 
Step 15: 验证同步状态
在主库运行:
SQL> alter system switch logfile;
然后在主备库分别运行:
SQL>select sequence#,applied from v$archived_log;
确保applied都为YES。
如果用:
SQL> select max(sequence#) from v$archived_log;
查看,如果主备库显示的一致,则只能表明归档已经传送到了备库,并不能表明该归档已经应用。而applied 状态为YES,就表明该归档已经应用到了备库。
如果等了很长时间applied 都无法应用,可以尝试一下方法:
SQL>alter database recover managed standby database cancel;
SQL>alter database recover managed standby database disconnect from session;
这2个语句是取消recover manager,在启动它。
 
 
 
Switchover切换失败处理步骤
Step 1: 先关闭主库
SQL>shutdown immediate;
 
Step 2: 关闭备库
SQL>recover managed standby database cancel;
SQL>shutdown immediate;
 
Step 3: 在主库上的操作
SQL>startup mount;
SQL> alter database commit to switchover to primary;
SQL>alter database open;
SQL>alter system set log_archive_dest_2='service=standby_db' scope=both;
 
Step 4: 在备库上的操作
SQL>startup mount;
SQL>alter database recover managed standby database disconnect from session;
 
Step 5: 主库切换日志,在备库上的alert日志上查看是否成功。
 
 
 
 

11G、12C Data Guard Physical Standby Switchover转换参考手册的更多相关文章

  1. 11.2 Data Guard Physical Standby Switchover Best Practices using SQL*Plus (Doc ID 1304939.1)

    11.2 Data Guard Physical Standby Switchover Best Practices using SQL*Plus (Doc ID 1304939.1) APPLIES ...

  2. Data Guard Physical Standby - RAC Primary to RAC Standby 使用第二个网络 (Doc ID 1349977.1)

    Data Guard Physical Standby - RAC Primary to RAC Standby using a second network (Doc ID 1349977.1) A ...

  3. 18c & 19c Physical Standby Switchover Best Practices using SQL*Plus (Doc ID 2485237.1)

    18c & 19c Physical Standby Switchover Best Practices using SQL*Plus (Doc ID 2485237.1) APPLIES T ...

  4. 12c Data guard Switchover Best Practices using SQLPLUS (Doc ID 1578787.1)

    12c Data guard Switchover Best Practices using SQLPLUS (Doc ID 1578787.1) APPLIES TO: Oracle Databas ...

  5. DG - physical standby switchover切换过程

    一.切换前检查1.检查备库已经全部接收到主库的redo如果是最大可用性.最大保护性模式,可以在primary端查看v$archive_dest_status,确认是否所有的redo已经传送到备库#在主 ...

  6. oracle 11g physical standby switchover

    简介 SWITCHOVERS主要是在计划停机维护时用来降低DOWNTIME,如硬件维护.操作系统升级或是数据库rolling upgrade, 也可用来进行特殊情况下的数据库迁移. SWITCHOVE ...

  7. 建立ORACLE10G DATA GUARD---&gt;Physical Standby

    下面是我自己建Physical Standby,按照下面的步骤一步我一步,当然,打造成功,以下步骤可以作为建筑物Data Guard结构操作手册. HA和DG差额:HA:可以做IP切换自己主动  DG ...

  8. Data Guard 之 浅析Switchover与Failover

    Data Guard主从库之间的角色切换分为以下两种:1)SwitchoverSwithchover通常都是人为的有计划的进行角色互换,比如升级等.它通常都是无损的,即不会有数据丢失.其执行主要分为两 ...

  9. Notes from Data Guard

    There are two types of Standby databases: 1, Physical standby database block-for-block basis the phy ...

随机推荐

  1. Coderfroces 862 B . Mahmoud and Ehab and the bipartiteness

     Mahmoud and Ehab and the bipartiteness Mahmoud and Ehab continue their adventures! As everybody in ...

  2. jquery表单动态添加元素及PHP处理

    tijiao.php页面代码: if(isset($_POST['cp1'])){    echo '<pre>';    print_r($_POST); $num=((count($_ ...

  3. tsp问题——遗传算法解决

    TSP问题最简单的求解方法是枚举法. 它的解是多维的.多局部极值的.趋于无穷大的复杂解的空间.搜索空间是n个点的全部排列的集合.大小为(n-1)! .能够形象地把解空间看成是一个无穷大的丘陵地带,各山 ...

  4. 与TCP/IP协议的初次见面(一)

    与TCP/IP协议的初次见面(一) 前言 今下午刚才女朋友那边回来,唉,算是情人节去找她吧,穷屌丝住不起好酒店,住的打折酒店,只是女朋友来姨妈了,万幸啊,牙还疼得不行,这几天光照应她了,没空写博客了. ...

  5. ESP8266学习笔记4:ESP8266的SmartConfig

    今天花了将近一天的时间来研究ESP8266的SmartConfig功能,这个应该算是wifi云产品的标配.这篇文章先把SmartConfig操作一遍,我还写了还有一篇文章梳理了物理层的详细协议,点击这 ...

  6. CSS3的属性选择器

    CSS3中新增了许多选择器,今天零度给大家说说CSS3的属性选择器. 与CSS2相比,CSS3新增了3种属性选择器:[attr^=value].[attr$=value].[attr*=value]: ...

  7. POJ 2394 Dijkstra

    题意: 思路: 裸的Dijkstra 爆敲一发模板 //By SiriusRen #include <queue> #include <cstdio> #include < ...

  8. 用SSL保Samba安全

    用SSL保Samba安全          在企业中用Samba做为文件服务器是非常容易的事了,那如何保证存储数据的安全,如何保证数据传输的安全呢?我以前介绍过通过Samba安全级别和加装防病毒软件在 ...

  9. SSH远程快速登录Linux

    SSH远程快速登录Linux        使用SSH管理linux服务器,通常要使用ssh,然后输入用户,密码,其实只要配置一个文件就可以方便登录.假设要登录server域名是www.interne ...

  10. C/C++(数据结构栈的实现)

    栈的实现 特点FILO(先进后出) 假设栈的空间为8 top == 0 不能出栈,已到栈底 top == 8 不能入栈,已到栈顶 top始终指向一个待插入的位置 push操作,1.写入数据,2.top ...