首先做一系列的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. 适用于zTree 、EasyUI tree、EasyUI treegrid

    #region          System.Text.StringBuilder b_appline = new System.Text.StringBuilder();        Syste ...

  2. BigInteger、BigDecimal类的使用详解

    我们都知道在java里边long算是存储长度比较大的了,但是如果有很大的数我们应该怎么处理呢,不用怕,java还为我们准备了一个BigInteger的类,那么这个类到底能存储多大的数呢,这个一时还真不 ...

  3. 题解报告:hdu 2149 Public Sale(巴什博弈)

    题目链接:acm.hdu.edu.cn/showproblem.php?pid=2149 Problem Description 虽然不想,但是现实总归是现实,Lele始终没有逃过退学的命运,因为他没 ...

  4. 自动保存草稿 asp+ajax自动存稿功能详解(转自影子)

    自动保存草稿功能的原理 我们都知道网页是一种无状态的,每次都需要请求,响应,当一次请求完成后就与服务器断开连接了,所以我们不能像网页一样实现实时的交互功能,但是为了满足更多的需求一个比较无敌的程序员还 ...

  5. JS——sort

    1.a-b升序 <script> var arr = [2, 3, 1, 5, 0]; function compare(a, b) { return a - b; } console.l ...

  6. java攻城狮之路--复习JDBC(数据库连接池 : C3P0、DBCP)

    复习数据库连接池 : C3P0.DBCP 1.数据库连接池技术的优点: •资源重用:      由于数据库连接得以重用,避免了频繁创建,释放连接引起的大量性能开销.在减少系统消耗的基础上,另一方面也增 ...

  7. asp.net MVC 下拉多级联动及编辑

    多级联动实现,附源码.当前,部分代码是参与博客园其它网友. 新增,前台代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2 ...

  8. [Windows Server 2003] IIS自带FTP安装及配置方法

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

  9. nc的简单使用

    1.传输文件: 目的主机监听 nc -l 监听端口<未使用端口>  > 要接收的文件名 nc -l 6666 > filename.tar 源主机发起请求 nc  目的主机ip ...

  10. 【sqli-labs】 less50 GET -Error based -Order By Clause -numeric -Stacked injection(GET型基于错误的整型Order By从句堆叠注入)

    报错没有关闭,直接可以用UpdateXml函数 http://192.168.136.128/sqli-labs-master/Less-50/?sort=1 and UpdateXml(1,conc ...