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;