DG-学习一

来源:互联网 发布:淘宝商城名牌男装短袖 编辑:程序博客网 时间:2024/06/09 21:50

DG-学习一

首先说下dataguard中的LOG_ARCHIVE_DEST_2值中我们通常需要写明的使用什么进程去写日志到远程,使用异步还是同步,官方文档上的例子中都是采用异步(ASYNC),异步写的好处就是不需要等待网络IO结束再继续,特别是在生产中强烈建议使用异步,然后说的是使用哪个进程写,一般分为LGWR和ARCH两个进程,ARCH只能是在归档切换时才写到远程端,而LGWR等触发归档时写,它会在LGWR写入REDO的时候写,所以一般是选择LGWR进程。一般生产配的是 LGWR ASYNC,这样再加上目标端添加standby logfile就能实现(实时应用)REAL-APPLY。

查询归档使用了那个进行进程我们可以使用如下SQL查。

源端查询如下:

select sequence#,creator,registrar,applied,fal from v$archived_logorder by 1;

 SEQUENCE# CREATOR REGISTRAPPLIED   FAL

---------- ------- ------- --------- ---

        87 ARCH    ARCH   NO        NO

        88 ARCH    ARCH   NO        NO

        88 LGWR    LGWR   YES       NO

        89 LGWR    LGWR   YES       NO

        89 ARCH    ARCH   NO        NO

        90 ARCH    ARCH   NO        NO

        90 ARCH    ARCH   YES       YES

由于我配置的是LGWR ASYNC,所以这里看出我使用的是LGWR写到远程,但是队列号90却不一样,其实90号使用ARCH进程,是因为当目标端出现了GAP(归档缺失),然后目标端会根据我们配置的FAL_SERVER和FAL_CLIENT两个参数通过FAL去指定的server找缺失的归档,然后通过ARCH传递到指定的目标端。

还有一个是说下关于结束应用日志时,使用recover managed standby database cancel和recovermanaged standby database区别,cancel是我们比较常用的,应用日志终止,finish也是终止(它是完成的意思),所以使用finish会把源端还没传完的日志传完,不管redo写没写满,全部传过来,但是使用finish之后,再想recover就不可以,已经和源端切断了联系。假如客户终止应用日志时使用了finish时,我们该如何做才能恢复dataguard的应用呢。我是如下做的(其实应该算初始化)

1.      先把目标端的库shutdown

Shutdown immediate

 

2.      先在源端生成一个standby controlfile.

backup current controlfile for standby format  '/orabak/rman/ctl__%d_%T_%s_%p';

 

3.      启动目标端到nomount状态

 Alter database nomount;

 

4.      恢复控制文件

Restore controlfile from ‘//orabak/rman/XXX’;

注:这里可以不使用restore standby controlfile,只要备份成standby就行,或者普通备份控制文件在这里使用restore standby controlfile,保险起见的话两边都使用standby controlfile也可以。

 

5.      打开数据库到mount状态

Alter database mount standby database;

6.      恢复数据库

Recover database;

 

7.      创建standby controlfile(如果源端已经创建了standby logfile那么不需要)

alter database add standby logfile '/oracle/oradata/sdb/std_redo01.log'size 50M;

alter database add standby logfile'/oracle/oradata/sdb/std_redo02.log' size 50M;

alter database add standby logfile'/oracle/oradata/sdb/std_redo03.log' size 50M;

 

8.      应用日志

Recover managed standby databasedisconnect;

 Recover managed standby database using currentlogfile disconnect;(Real-apply)

最后应用日志恢复正常,这其实算一次重新初始化。

0 0
原创粉丝点击