首先做一系列的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. Appium + python - TouchAction操作

    from appium import webdriverfrom appium.webdriver.common.touch_action import TouchActionfrom appium. ...

  2. day03_12/13/2016_bean的管理之初始化和销毁

  3. C++ friend关键字

    友元:友元函数 友元类. 友元函数:不属于任何类,只是在类中声明一下(可以放在 private 或者 public,没有区别),告诉这个类,这个函数是你的朋友,当然朋友不是白当的:这个函数可以访问你的 ...

  4. scala的枚举

    package com.test.scala.test /** * 枚举 */ object Enum extends Enumeration { val Red,Yellow,Green=Value ...

  5. 兼容浏览器 div固定浏览器窗口底部 浮动div

    css内容: <style type="text/css"> #ken_BB { padding-right:30px; text-align: center; col ...

  6. Spring Cloud (7) 服务容错保护-Hystrix服务降级

    在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以互相调用,在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高可用,单个服务通常会集群 ...

  7. jQuery文档就绪

    很多jQuery代码都有如下片段: $(document).ready(function(){ //代码 }) 作用就是等文档结构加载完成后再去执行function中的代码,功能类似于window.o ...

  8. [Windows Server 2012] MySQL安全加固

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

  9. 基于zk“临时顺序节点“的分布式锁

    import org.apache.zookeeper.*; import org.apache.zookeeper.data.Stat; import java.io.IOException; im ...

  10. 微信小程序animation

    wxml <view class="background" animation="{{rotateData}}"> </view>< ...