首先做一系列的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. 我们的微信小程序开发

    基于微信小程序的系统开发准备工作 腾讯推出微信小程序也有一段时间了,在各种行业里面也都掀起一阵阵的热潮,很多APP应用被简化为小程序的功能迅速推出,同时也根据小程序的特性推出各种独具匠心的应用,相对传 ...

  2. [Swift通天遁地]九、拔剑吧-(13)创建页面的景深视差滚动效果

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  3. Elasticsearch索引的操作,利用kibana(如何创建/删除一个es的索引?)

    我们已经通过索引一篇文档创建了一个新的索引 .这个索引采用的是默认的配置,新的字段通过动态映射的方式被添加到类型映射.现在我们需要对这个建立索引的过程做更多的控制:我们想要确保这个索引有数量适中的主分 ...

  4. linux 防火墙关闭

     systemctl status firewalld.servicesystemctl status iptables.service关闭防火墙,selinux15:54:43运维-李浩 2017/ ...

  5. 【洛谷2926/BZOJ1607】[USACO08DEC]Patting Heads拍头(筛法)

    题目: 洛谷2926 (截止至本博客发表时,BZOJ1607题面有误,正确题面请到洛谷2926查看) 分析: = 一句话题意:给定\(n\)个数\(\{a_i\}\),求对于每个\(a_i\)有多少个 ...

  6. Android webview js 调用java方法报错"Uncaught TypeError: Object [object Object] has no method xx

    webview开发,在Android4.4下js调用java方法报错"Uncaught TypeError: Object [object Object] has no method,同样的 ...

  7. DAO模式详解

    DAO模式 数据访问层(DAO): 数据的增.删.改.查操作: 业务逻辑层(service): 业务来往的操作,需要调用数据访问层则调用数据访问层,传递数据: 表现层(UI): 呈现数据,用户交互. ...

  8. Java—将文件夹压缩为zip文件

    import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java ...

  9. Linux Shell 小知识

    ${} ——变量替换 通常 $var 与 ${var} 没有区别,但是用 ${} 会比较精确的界定变量名称的范围. name='Ace' echo "result1: my name is ...

  10. Centos6.6 安装基于系统认证的vsftp服务

    一.介绍 vsftp是一款文件服务器软件,在文件共享,代码更新,文件备份中也是经常用到,以下是基本安装环境: 1)CentOS6.6 2)vsftpd-2.2.2 二.安装 $ yum install ...