半自动化搭建Data Guard的想法和实践(二)
关于半自动化搭建Data Guard,自己花了一些时间,总算是把这件事情继续推进了一下,还是再啰嗦一句,为什么不自动化,因为安全。主库就是主库,任何变更都要手工检查审核,自动化的工作在备库和中控端来完成。我希望自己的脚本能够只知道主库的IP,不用一次又一次连过去配置和检查,当然要完成自动化还是半自动化,有些网友也提醒的极是,那就是规范和标准。
预先条件:
1.目前的设计是基于11.2.0.4的版本,当然这个很容易定制,在此是作为一个基本的标准,作为环境的初始化和Data Guard对的搭建的基线。
2.默认主库是开启了DG Broker,即dg_broker_start=true,这个是DG Broker配置的必备要求,为什么要这么配置,因为这个工具确实很方便实用,强烈推荐。
3.数据库主库启用了spfile,这个是DG Broker的一个基本要求,而且本身spfile也是提倡使用的。
而一套主库环境和另外一台未知的服务器要搭建Data Guard环境,还是有很多的依赖条件。这些细节之处不检查,后期的工作就无从开展,所以自己在写脚本的过程中越来越意识到这些的重要性,因为在后期的脚本中验证再详细再完整,这些预先条件不满足,最后还是无功而返,所以我们可以考虑一个统一的检查脚本来评估,可以就pass,失败就failed.
大体列举了一些检查项,如下:
主备软件版本一致
主库IP确为主库
主库没有其他的数据库实例
备库没有其它的数据库实例
主备库的磁盘空间情况
主备库的操作系统检查
是否已存在其他备库,已存在备库是否为ADG,备库的compatible
主备库的CPU资源
主备库的内核参数情况
主库是否启用spfile(需要判断是否满足DG Broker的要求)
主库是否开启DG Broker
主备ORACLE_HOME一致
主库启用归档模式
主库DG Broker启用
有些可能还需要进一步确认和整理,但是这个脚本是搭建的基础,这些条件可以设定一个阈值,比如主备库的CPU资源,不能差太多,主库64c,备库8c这种是需要提前判断出来的。主备库的版本不同这些也是需要提前发现的。
而实现的脚本需要配置一个文件autodg.cnf
export db_name=statdb1
export pri_db_unique_name=statdb1
export pri_db_ip_addr=10.127.133.9
export std_db_unique_name=statdb2
export std_db_ip_addr=10.127.133.4
标示主备库的信息即可。
脚本的运行效果如下,先实现了一部分功能,是中控端的操作,剩下的就是主库端,备库端了。
10.127.133.9
NAME DATABASE_ROLE OPEN_MODE
--------- ---------------- --------------------
STATDB1 PRIMARY READ WRITE
Databases:
statdb1 - Primary database
statdb3 - Physical standby database
NAME VALUE
------------------------------ --------------------------------------------------
db_file_name_convert
db_name statdb1
db_unique_name statdb1
dg_broker_start TRUE
local_listener statdb1
log_file_name_convert
standby_file_management AUTO
.
RAC LOG_MODE INST_ID INSTANCE_NA HOST_NAME VERSION STATUS STARTUP_TIME
----- ---------- ---------- ----------- --------------- --------------- -------- ---------------------
NO ARCHIVELOG 1 statdb1 statdb1.test.com 11.2.0.3.0 OPEN 07:06:10 23-DEC-13
,PRIMARY
.
ORACLE_HOME is:/U01/app/oracle/product/11.2.3/db_1
statdb1 - Primary database SCN:712764:CURRENT
.
statdb1 - Physical standby database
Intended State: APPLY-ON
Transport Lag: 0 seconds
Apply Lag: 0 seconds
HOST = 10.127.133.9
PORT = 1521
SERVICE_NAME = statdb1
BACKUP ORACLE LEVEL CONF FILES ...DONE
.
Run below scripts to open firewall
./open_firewall.sh 10.127.133.9 1521 10.127.133.4
./open_firewall.sh 10.127.133.4 1521 10.127.133.9
这个过程会从主库抓取配置文件的信息,然后在中控端做变更和补充,拷贝到备库端。
脚本的内容比较长,可能涉及若干个文件,我近几天提供一个下载的链接,感兴趣可以下载试用。
正文到此结束