Oracle 11g DataGuard使用总结

Oracle 11g的dataguard相比于10g来说,最优越的特性应该算就是active dataguard了,这一点改进在很大意义上促使用户需要把数据库从10g升级到11g,读写分离在这个时候得到了升华,而且在后台会根据需要进行数据的同步,相比于使用10g,想读数据的时候把数据库启动到read only 阶段,但这个时候不接受日志同步数据,如果需要同步数据还需要把数据库再启动到mount阶段,感觉还是比较繁琐的。

11g的active dataurad功能很强大,同时搭建的时候使用rman 的duplicate选项在11g也得到了很大的改进,我们不需要专门去做一个备份,就可以直接在备库上通过duplicate把数据文件从主库传送到备库,同时做恢复,整个过程更加简洁。

当然了一般的系统是一主一备,关键的系统甚至要一主两备,如果系统多了,手工管理很容易搞糊涂,这个时候还是用加强版的dg broker来做吧,以前在10g的时候感觉还是手工管理,手工switchover,failover比较踏实,因为也在10g的过程中switchover,failover出现过一些问题,算是留下了一些阴影,到了11g的时候,工作中大量使用,就尝试着自己试了试,发现确实很好,而且搭建备库步骤比手工搭建要轻松的多。所以还是需要拥抱变化,勇敢接受新事物,一方面可以给自己疗伤,一方面恢复使用的信心,至少在灾难发生的时候回临危不乱。

我们来简单看一个例子,怎么结合dg broker来搭建dataguard,步骤相比手工要简化很多,而且可靠性要高很多,因为人为去做的检查点,在dg broker的检查中都会去做。

出了设置主库为归档模式,force logging之外。

我们所要做的就是配置网络监听。当然这个也不是难点,listener.ora tnsnames.ora主备是很相似的。

比如我们使用1523的端口在primary和standby之间互联

listener.ora  主库和备库的host部分不一样


LISTENER_1523 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 10.xxxxx.45)(PORT = 1523))
      )
    )
  )

SID_LIST_LISTENER_1523 =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = test11g)
      (ORACLE_HOME = /DATA/app/oracle/product/11.2.0.4)
      (SID_NAME = test11g)
  )
  ) 

tnsnames.ora 主库备库一致
TEST11G =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.xxxxx.45)(PORT = 1523))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = test11g)
    )
  )

STEST11G =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.xxxxxx.46)(PORT = 1523))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = test11g)
    )
 )

然后就是使用tnsping开始检查,检查防火墙,等等
 添加备库日志
 主库查看日志情况,可以使用下面的方法检查一下。
SQL> select member,group#,status from v$logfile
 MEMBER                                                GROUP# STATUS
 -------------------------------------------------- ---------- -------
 /DATA/app/oracle/oradata/test11g/redo03.log                3
 /DATA/app/oracle/oradata/test11g/redo02.log                2
 /DATA/app/oracle/oradata/test11g/redo01.log                1
 SQL> select group#,status,bytes,blocksize,status from v$log;
    GROUP# STATUS                BYTES  BLOCKSIZE STATUS
 ---------- ---------------- ---------- ---------- ----------------
          1 INACTIVE          52428800        512 INACTIVE
          2 CURRENT            52428800        512 CURRENT
          3 INACTIVE          52428800        512 INACTIVE
添加备库日志的语句类似:
ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 '/DATA/app/oracle/oradata/test11g/redo04.log' SIZE 524288000;
修改下面的数据库参数,
alter system set standby_file_management=auto scope=both;
 alter system set dg_broker_start=TRUE scope=both;
alter system set local_listener=TEST11G scope=both;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/336f81c0cb80cd27ae0ec1b442daf9af.html