首先做一系列的check

check 当前primary 的 standby redo log是否存在

SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER                                                  IS_
---------- ------- ------- ------------------------------------------------------- ---
ONLINE /oracle_asm/standby/itid1/datafile/itid/redo03.log NO
ONLINE /oracle_asm/standby/itid1/datafile/itid/redo02.log NO
ONLINE /oracle_asm/standby/itid1/datafile/itid/redo01.log NO
STANDBY /oracle_asm/standby/itid1/standby_redo/slog1.rdo NO
STANDBY /oracle_asm/standby/itid1/standby_redo/slog2.rdo NO
STANDBY /oracle_asm/standby/itid1/standby_redo/slog3.rdo NO
STANDBY /oracle_asm/standby/itid1/standby_redo/slog4.rdo NO

check standby 的redo log是否存在

SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER                                                  IS_
---------- ------- ------- ------------------------------------------------------- ---
3 ONLINE /oracle_asm/standby/itid2/datafile/itid/redo03.log NO
2 ONLINE /oracle_asm/standby/itid2/datafile/itid/redo02.log NO
1 ONLINE /oracle_asm/standby/itid2/datafile/itid/redo01.log NO
4 STANDBY /oracle_asm/standby/itid1/standby_redo/slog1.rdo NO
5 STANDBY /oracle_asm/standby/itid1/standby_redo/slog2.rdo NO
6 STANDBY /oracle_asm/standby/itid1/standby_redo/slog3.rdo NO
7 STANDBY /oracle_asm/standby/itid2/standby_redo/slog1.rdo NO
8 STANDBY /oracle_asm/standby/itid2/standby_redo/slog2.rdo NO
9 STANDBY /oracle_asm/standby/itid2/standby_redo/slog3.rdo NO
10 STANDBY /oracle_asm/standby/itid2/standby_redo/slog4.rdo NO
11 STANDBY /oracle_asm/standby/itid2/datafile/log1.rdo NO
12 STANDBY /oracle_asm/standby/itid2/datafile/log2.rdo NO
13 STANDBY /oracle_asm/standby/itid2/datafile/log3.rdo NO

oops 现在才发现之前创建standby的时候创建的standby redo log太多了。其实group 11 12 13 是我想创建成为redo log的。但是不小心的加上了standby参数。从这里也可以看出创建standby redo 和 redo 的命令就在于有没有standby 这个参数。 不过奇怪的是,既然我创建redo的命令错了,那么为什么还是有redo生成了呢? 这个也许是oracle自己生成的。

check primary的 log_archive_dest_n参数

SQL> select name,value from v$parameter where name like 'log_archive_dest_%' and name not like '%state%' and value is not null;

NAME                         VALUE
---------------------------- ------------------------------------------------------------------------------------
log_archive_dest_1 LOCATION=/oracle_asm/standby/itid1/arch
log_archive_dest_2 SERVICE=itid2 SYNC VALID_FOR=( ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=itid2
log_archive_dest_3 LOCATION=/oracle_asm/standby/itid1/arch_from_standbyredo VALID_FOR=(STANDBY_LOGFILE,
STANDBY_ROLE)

check standby的 log_archive_dest_n参数

SQL> select name,value from v$parameter where name like 'log_archive_dest_%' and name not like '%state%' and value is not null;

NAME                         VALUE
---------------------------- ------------------------------------------------------------------------------------
log_archive_dest_1 LOCATION=/oracle_asm/standby/itid2/arch
log_archive_dest_2 SERVICE=itid1 ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=itid1
log_archive_dest_3 LOCATION=/oracle_asm/standby/itid2/arch_from_standbyredo VALID_FOR=(STANDBY_LOGFILE,
STANDBY_ROLE)

查看primary的datafile 和 logfile convert设置

SQL> show parameter db_file_name_convert

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string /oracle_asm/standby/itid2/data
file/itid, /oracle_asm/standby
/itid1/datafile/itid
SQL> show parameter log_file_name_convert NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_file_name_convert string /oracle_asm/standby/itid2/data
file/itid, /oracle_asm/standby
/itid1/datafile/itid

查看standby的datafile和 logfile convert 设置

SQL> show parameter db_file_name_convert

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string /oracle_asm/standby/itid1/data
file/itid, /oracle_asm/standby
/itid2/datafile/itid
SQL> show parameter log_file_name_convert NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_file_name_convert string /oracle_asm/standby/itid1/data
file/itid, /oracle_asm/standby
/itid2/datafile/itid

check primary的 FAL设置

SQL> show parameter fal

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
fal_client string
fal_server string itid2

check standby的 FAL 设置

SQL> show parameter fal

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
fal_client string
fal_server string itid1

check primary的standby_file_management

SQL> show parameter STANDBY_FILE_MANAGEMENT

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_file_management string AUTO

check standby的standby_file_management

SQL> show parameter STANDBY_FILE_MANAGEMENT

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_file_management string AUTO

check primary是否可以进行转换

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
TO STANDBY

转换primary为standby

SQL> alter database commit to switchover to physical standby with session shutdown;

Database altered.

据说这一步会把control file 备份到当前session的trace。

check standby 可以转化成primary

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
TO PRIMARY

要注意的是这一步必须是在primary ->  standby之后才有效否则的话返回的结果就是not allowed

turn standby to primary

SQL> alter database commit to switchover to primary with session shutdown;

Database altered.

open 新的primary database

SQL> select status from v$instance;

STATUS
------------
MOUNTED SQL> alter database open; Database altered.

在11gr2中turn standby to primary之后 新的primary是mount状态。

在新的standby上应用redo

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION
*
ERROR at line 1:
ORA-01665: control file is not a standby control file

这一步遇到了错误说不是standby control file

通过下列步骤可以fix

SQL> shutdown abort
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started. Total System Global Area 502181888 bytes
Fixed Size 1345912 bytes
Variable Size 385877640 bytes
Database Buffers 109051904 bytes
Redo Buffers 5906432 bytes
Database mounted.
SQL> alter database open read only
2 ; Database altered. SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION; Database altered.

虽然我不知道为什么这样会fix。

check一下redo传输和应用的情况

primary端的日志archive情况如下

SQL> select NAME,SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG  where sequence#>104 ORDER BY SEQUENCE#;

NAME                                                     SEQUENCE# FIRST_TIM NEXT_TIME
------------------------------------------------------- ---------- --------- ---------
/oracle_asm/standby/itid2/arch/1_105_840039496.dbf 105 12-MAR-14 12-MAR-14
itid1 105 12-MAR-14 12-MAR-14
/oracle_asm/standby/itid2/arch/1_106_840039496.dbf 106 12-MAR-14 12-MAR-14
itid1 106 12-MAR-14 12-MAR-14

standby端日志apply如下

SQL> SELECT NAME,SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG WHERE sequence#>100 ORDER BY SEQUENCE#;

NAME                                                                              SEQUENCE# APPLIED
-------------------------------------------------------------------------------- ---------- ---------
itid2 101 YES
/oracle_asm/standby/itid1/arch/1_101_840039496.dbf 101 YES
itid2 102 NO
/oracle_asm/standby/itid1/arch/1_102_840039496.dbf 102 YES
/oracle_asm/standby/itid1/arch/1_103_840039496.dbf 103 YES
itid2 103 NO
/oracle_asm/standby/itid1/arch/1_104_840039496.dbf 104 YES
/oracle_asm/standby/itid1/arch/1_105_840039496.dbf 105 YES
/oracle_asm/standby/itid1/arch/1_106_840039496.dbf 106 NO
/oracle_asm/standby/itid1/arch_from_standbyredo/1_106_840039496.dbf 106 IN-MEMORY

dataguard switchover to physical stnadby的更多相关文章

  1. [Oracle] DataGuard switchover

    Oracle DataGuard switchover 2013/07/11 Tag.Data Guard,primary,standby,switchover 切换前primary site和sta ...

  2. 4.1 ORACLE DATAGUARD SWITCHOVER 步骤

    验证主库是否能执行角色转换到备库 原主库执行 SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE; SWITCHOVER_STATUS --------- ...

  3. [Oracle][DATAGUARD] 关于确认PHYSICAL STANDBY的同期状况的方法

    补上简单的确认PHYSICAL STANDBY的同期状况的方法: ODM TEST CASE===================Name = TC#1010_3 ####Primary#### SQ ...

  4. DG_Oracle DataGuard Switchover主备节点切换(案例)

    2014-06-09 Created By BaoXinjian Thanks and Regards http://wenku.baidu.com/view/dc9f00d349649b6648d7 ...

  5. Oracle Dataguard之switchover

    Oracle Dataguard的角色转换包含两类:Switchover和Failover.Switchover指主备之间角色转换,主库降为备库,备库升级为主库.而failover则是指主库出现问题时 ...

  6. 【DATAGUARD】物理dg的switchover切换(五)

    [DATAGUARD]物理dg的switchover切换(五) 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其 ...

  7. Oracle DataGuard主备切换(switchover)

    Oracle DataGuard主备切换可以使用传统的手动命令切换,也可以使用dgmgr切换,本文记录手动切换. (一)将主库切换为物理备库 STEP1:查看主库状态 SQL> SELECT O ...

  8. DG - physical standby switchover切换过程

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

  9. 11G、12C Data Guard Physical Standby Switchover转换参考手册

    Switchover转换   Step 1: switchover 切换先前检查 (1)确保主备两端log_archive_config和db_unique_name参数都已经正确设置. 需要注意的是 ...

随机推荐

  1. url参数为数组

    //url中state参数为数组 ?baseline_id=12&version_id=34&state[]=complete&state[]=hangup&state ...

  2. 【BZOJ4025】二分图(可撤销并查集+线段树分治)

    题目: BZOJ4025 分析: 定理:一个图是二分图的充要条件是不存在奇环. 先考虑一个弱化的问题:保证所有边出现的时间段不会交叉,只会包含或相离. 还是不会?再考虑一个更弱化的问题:边只会出现不会 ...

  3. flask 三剑客

    1.flask中的httpresponse @app.route("/") # app中的route装饰器 def index(): # 视图函数 return "Hel ...

  4. Linq学习(一)-初涉Linq

    一.何谓LINQ LINQ:Language Integrated Query语言集成查询,其本质是对ADO.NET结果集通过反射连同泛型特性转换成对象集,实现OR模型的转换 二.优点与缺点 优点:封 ...

  5. sql server 无法创建数据库,错误代码:1807

    SQL Server 不能创建数据库,发生错误:1807 :未能获得数据库 'model' 上的排它锁.请稍后重试操作. declare   @sql   varchar(100)     while ...

  6. fieldset ----- 不常用的HTML标签

    fieldset 元素可将表单内的相关元素分组. <fieldset> 标签将表单内容的一部分打包,生成一组相关表单的字段. 当一组表单元素放到 <fieldset> 标签内时 ...

  7. 如何修改wampserver中mysql中字符编码的解决方案

    因为我用的一般都是utf8,所以有必要改一下: 打开mysql控制台,输入密码登录之后,执行命令: show variables like ‘%char%’; 注意引号的中英文格式以及最后面的分号不要 ...

  8. CSS——dispaly、overflow、visibility、opacity

    隐藏盒子: 1.overflow:hidden;             隐藏盒子超出的部分. 2.display: none;                    隐藏盒子,而且不占位置.(用的最 ...

  9. [Windows Server 2003] 服务器安全加固

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:服务器安全加固 ...

  10. java 向上,向下转型

    在对Java学习的过程中,对于转型这种操作比较迷茫,特总结出了此文.例子参考了<Java编程思想>. 目录 几个同义词 向上转型与向下转型 例一:向上转型,调用指定的父类方法 例二:向上转 ...