建立DATAGUARD最大保护模式-测试手记

建立DATAGUARD最大保护模式(自写)

(备注:本文档符合最大保护模式,所有参数均为最大保护模式下适用,其他模式不适用)

1、主库,启动归档,打开强制归档。

alter database archivelog;

alter database force logging;

2、创建standby日志。

alter database add standby logfile group 4 ('D:\oracle\product\10.2.0\oradata\orcl\standbyredo04.log') size 50m;

3、创建备库用的控制文件。

alter database create standby controlfile as 'd:\standbycontrol01.ctl';

4、创建pfile参数文件。

create pfile from spfile;

5、修改主库pfile参数文件。

增加以下内容:

    *.DB_UNIQUE_NAME='PRIMARY'

    *.LOG_ARCHIVE_CONFIG='DG_CONFIG=(PRIMARY,STANDBY)'

    *.LOG_ARCHIVE_DEST_1='LOCATION=D:\oracle\product\10.2.0\oradata\ARCH\ MANDATORY REOPEN=60 MAX_FAILURE=3 VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PRIMARY'

    *.LOG_ARCHIVE_DEST_2='SERVICE=STANDBY LGWR SYNC AFFIRM VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=STANDBY'

    *.LOG_ARCHIVE_DEST_STATE_1=ENABLE

    *.LOG_ARCHIVE_DEST_STATE_2=ENABLE

    *.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

    *.LOG_ARCHIVE_FORMAT=ORCL_%T_%S_%R.ARC

    *.FAL_CLIENT = 'PRIMARY'

    *.FAL_SERVER = 'STANDBY'

*.STANDBY_FILE_MANAGEMENT =AUTO

pfile参数文件启动后,创建spfile文件,然后用spfile启动数据库。

6、修改主库listenernet解析配置文件。(这部分主要的目的是要保证两边数据库要互相能够登录,所以在启动DG之前,一定要用从各自主机上用sqlplus登录,尝试能不能登录,记得用sys用户登录要加上as sysdba,否则会报异常错误,由于备库会处于mount状态,经过验证,在mount下,动态注册监听会导致远程sqlplussys用户登录会报错,所以备库还是使用静态注册监听)(NET部分配置,可以使用NETCA来配置,只是从主库上建立到备库的连接时,由于没有启动或者处于mount状态,只能用sys用户来做测试,输入本地服务名主要和log_archive_dest_2中的service后面的服务名相关,要一样才能让主库进行解析,备库一样配置的目的,主要为了切换之后可以正常使用.

由于备库没有启动,所以用netca配置可能不灵光,还是推荐直接用配置文件的方式做。

listener.ora配置

    SID_LIST_LISTENER =

    (SID_LIST =

下增加: (SID_DESC =

        (SID_NAME = orcl)

        (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)

        (PROGRAM = orcl)

        )

        就是增加一个静态监听注册,其实主库可以不这样配置,但是为了以后切换之后,可以正常使用,所以还是按照standby数据要求来配置。

tnsnames.ora配置

增加:

PRIMARY =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = orcl)

    )

  )

 

STANDBY =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.1.11)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = orcl)

    )

  )

7、复制文件到备库:数据库数据文件,生成出来的控制文件,做好的pfile参数文件,日志文件,以及修改过的listener.oratnsnames.ora。这里和网上的不太一样,但是我推荐还是将联机日志文件全部复制到备库。

8、修改备库上的pfile文件

    *.DB_UNIQUE_NAME='STANDBY'

    *.LOG_ARCHIVE_CONFIG='DG_CONFIG=(PRIMARY,STANDBY)'

    *.LOG_ARCHIVE_DEST_1='LOCATION=D:\oracle\product\10.2.0\oradata\ARCH\ MANDATORY REOPEN=60 MAX_FAILURE=3 VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=STANDBY'

    *.LOG_ARCHIVE_DEST_2='SERVICE=PRIMARY LGWR SYNC AFFIRM VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PRIMARY'

    *.LOG_ARCHIVE_DEST_STATE_1=ENABLE

    *.LOG_ARCHIVE_DEST_STATE_2=ENABLE

    *.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

    *.LOG_ARCHIVE_FORMAT=ORCL_%T_%S_%R.ARC

    *.FAL_CLIENT = 'STANDBY'

    *.FAL_SERVER = 'PRIMARY'

    *.STANDBY_FILE_MANAGEMENT =AUTO

9、检查listener.oratnsnames.ora文件配置是否正确,主要可能是目录不太一样。

10、将控制文件复制2份,复制到和主库一样的位置,并且文件名改成和主库一样的。

11、将数据文件复制到和主库一样的位置。

12、将修改好的pfile参数文件,复制到db_1\database下。

13、将listener.oratnsnames.ora复制到到db_1\network\admin下。

14、备库上的文件夹要创建和主库一样的。主要有D:\oracle\product\10.2.0\admin\orcl下的6个文件夹,D:\oracle\product\10.2.0\flash_recovery_areaD:\oracle\product\10.2.0\oradata下的数据文件存放文件夹及归档日志文件夹。

15pfilelistener.oratnsnames.ora修改检查复制完成,数据文件、联机日志文件及控制文件复制完成之后,可以开始了。

16、创建服务:oradim -new -sid orcl -startmode m

17、生成密码文件:orapwd file='D:\oracle\product\10.2.0\db_2\database\pwdorcl.ora' password=XXXX entris=5;

18、用pfile参数文件启动数据库到mount状态,创建spfile,然后用spfile重新启动到mount状态,由于在复制过来的时候,带过来了关于standby日志的配置,这里最好是删除之后重新建立:

alter database drop standby logfile group 4;

alter database add standby logfile group 4 ('D:\oracle\product\10.2.0\oradata\orcl\standbyredo04.log') size 50m;

19、启动备库中的redo实时应用:

alter database recover managed standby database using current logfile disconnect from session;

19、回到主库:

sqlplus来检查一下standby 数据库能不能正常登陆。记得用SYS用户登录,加上as sysdba

20、启动主库到mount状态,mount状态下修改主库到最大保护模式:

alter database set standby database to maximize protection;

21、启动正常,说明DG建立成功。

 

22、数据库切换

主库执行:

Alter database commit to switchover to phiscal standby with session shutdown;

Shutdown immediate

Startup mount

备库执行:

Alter databse commit to switchover to primary;

可能需要执行一下redo应用之后,才能切换

Alter databse recover managed standby database disconnect from session;

Alter databse commit to switchover to primary;

主要是备库切换过来之后,由于是双向都是最大保护,所以要备库能连接到主库,所以首先要在备库上执行sqlplus,看看能不能正常登录到主库,也有可能登录不上,那么有可能是主库的listener.ora的服务名不一样,将备库中tnsnames.ora中的service_name改成要主库一样的就可以了,这主要是因为主库和备库都配置了db_unique_name,listener.ora有netca配置的时候,可能会将db_unique_name配置为服务名,但是oracle_sid还是orcl,这个要务必注意。

总结 :

一、DG主要,是有参数文件的参数来确定,只要正确,建立一般没有问题,每种DG保护模式参数都不一样,不能套用。

二 、DG启动,则是有SQLPLUS命令来控制的,参数正确,命令执行就没有问题。

三、DG中的NET部分非常重要,很多错误可能会发生在NET配置部分,由于DB_UNIQUE_NAME的设立,可能会导致listener.ora中的配置和一般的不一样,也就是里面的服务名和oracle_sid 不一定是一样的,这点要注意,如果不一样,也需要改动太多,只要将对面的数据库(主库或者备库)中的tnsnames.ora中的service_name改成一样就可以了,尽量不要修改太多。


本 文档 已经经过3次验证,没有问题,如果有错误,一定要仔细看看参数是否正确,配置是否一致,NET部分是否支持相互正常登录。再三提醒,本文档中的参数,只适合DG最大保护模式,其他模式,可能需要更改.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9606200/viewspace-757947/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9606200/viewspace-757947/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值