部署Oracle 11gR2 Data Guard安装记录(2)


相关文章:
        《部署Oracle 11gR2 Data Guard安装记录(1)》
http://space.itpub.net/?uid-23135684-action-viewspace-itemid-757896

        如果主数据库或备用数据库使用的是ASM,那么在设置LOG_FILE_NAME_CONVERT和DB_FILE_NAME_CONVERT两个初始化参数时一定注意,详情参考文章:《Duplicate Active Database Failing with: RMAN-03009, ORA-17628》http://space.itpub.net/23135684/viewspace-757998

        也就是说,如果使用的是ASM,那么指定路径时不能光指定磁盘组的名称,必须指定全路径,例如:+DBFILE1/ractest/onlinelog/。

        这里对主数据库是RAC,备用数据库是单机的standby log做以下说明:
1).首先从主数据库执行duplicate active database命令复制备用数据库之后,在备用库上包含了主数据库所有的在线Redo日志和Standby Redo日志(包括镜像的Redo日志)。
2).对于主数据库是RAC,备用数据库是单机的情况,在备用数据库上一直有两个Standby Redo Log处于活动状态,接收来自不同主数据库实例的在线Redo Log同步。
SQL> select group#,thread#,sequence#,status from v$standby_log;

    GROUP#    THREAD#  SEQUENCE# STATUS
---------- ---------- ---------- ----------
         5          1        154 ACTIVE
         6          1          0 UNASSIGNED
         7          1          0 UNASSIGNED
         8          2        120 ACTIVE
         9          2          0 UNASSIGNED
        10          2          0 UNASSIGNED

6 rows selected.

        下面再讨论一下主库是RAC,备用库是单机的switchover过程:

1).首先在主库完成以下操作:

SQL> select dest_id,thread#,max(sequence#) from v$archived_log group by dest_id,thread#;

   DEST_ID    THREAD# MAX(SEQUENCE#)
---------- ---------- --------------
         2          1            153
         1          2            119
         1          1            153
         2          2            119

SQL> alter system switch logfile;

System altered.

SQL> select dest_id,thread#,max(sequence#) from v$archived_log group by dest_id,thread#;

   DEST_ID    THREAD# MAX(SEQUENCE#)
---------- ---------- --------------
         2          1            154
         1          2            120
         1          1            154
         2          2            120

确保Data Guard环境正常工作。

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

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

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY ;
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY
*
ERROR at line 1:
ORA-01105: mount is incompatible with mounts by other instances
必须先停止其他实例,只保留一个实例。

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY ;

Database altered.

SQL> shutdown immediate
ORA-01092: ORACLE instance terminated. Disconnection forced
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
[oracle@rhel1 admin]$ sql

SQL*Plus: Release 11.2.0.2.0 Production on Tue Apr 9 01:43:09 2013

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup mount
ORACLE instance started.

Total System Global Area  784998400 bytes
Fixed Size                  2230600 bytes
Variable Size             486540984 bytes
Database Buffers          289406976 bytes
Redo Buffers                6819840 bytes
Database mounted.
SQL> alter database open read only;

Database altered.

2).接下来在备用库上执行以下操作:

SQL> alter database recover managed standby database cancel;

Database altered.

操作主库之前已经cancel;

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY
*
ERROR at line 1:
ORA-16139: media recovery required

需要做一下恢复操作。

SQL> alter database recover managed standby database;

alter database recover managed standby database
*
ERROR at line 1:
ORA-01013: user requested cancel of current operation

前台恢复操作,一定时间后按下Ctrl+C终止。

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

Database altered.

SQL> ALTER DATABASE OPEN;

Database altered.

SQL> select database_role from v$database;

DATABASE_ROLE
----------------
PRIMARY

备库已经变成了主库,切换成功。

3).在原来的主数据库执行以下操作:

SQL> select database_role from v$database;

DATABASE_ROLE
----------------
PHYSICAL STANDBY

原有的主库已经变成了备用库。

4).启动原来主库的其他实例。

SQL> startup          
ORACLE instance started.

Total System Global Area  784998400 bytes
Fixed Size                  2230600 bytes
Variable Size             473958072 bytes
Database Buffers          301989888 bytes
Redo Buffers                6819840 bytes
Database mounted.
Database opened.
SQL> select database_role,open_mode from v$database;

DATABASE_ROLE    OPEN_MODE
---------------- --------------------
PHYSICAL STANDBY READ ONLY

作为备库实例启动正常。

5).在现有主库做一下日志切换测试。

SQL> alter system switch logfile;

System altered.

SQL> select dest_id,thread#,max(sequence#) from v$archived_log group by dest_id,thread#;

   DEST_ID    THREAD# MAX(SEQUENCE#)
---------- ---------- --------------
         2          1            160
         1          2            121
         1          1            160
         2          2            122

SQL>  alter system switch logfile;

System altered.

SQL> r
  1*  alter system switch logfile

System altered.

SQL> select dest_id,thread#,max(sequence#) from v$archived_log group by dest_id,thread#;

   DEST_ID    THREAD# MAX(SEQUENCE#)
---------- ---------- --------------
         2          1            162
         1          2            121
         1          1            162
         2          2            122

SQL> select dest_id,thread#,max(sequence#) from v$archived_log group by dest_id,thread#;

   DEST_ID    THREAD# MAX(SEQUENCE#)
---------- ---------- --------------
         2          1            162
         1          2            121
         1          1            162
         2          2            122
       从上面的日志切换测试来看,首先日志传输服务工作正常,且只有thread 1在工作,因为现有的主库是单实例嘛。

在现有的备库上执行以下查询:
SQL> select group#,thread#,status from v$standby_log;

    GROUP#    THREAD# STATUS
---------- ---------- ----------
         5          1 ACTIVE
         6          1 UNASSIGNED
         7          1 UNASSIGNED
         8          2 UNASSIGNED
         9          2 UNASSIGNED
        10          2 UNASSIGNED

6 rows selected.

       从上面的查询可以看出,只有一个Standby Redo Log在工作,也是因为主库变成了单实例数据库。

--end--


请使用浏览器的分享功能分享到微信等