暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

AutoDG oracle 11G dataguard 自动搭建小工具

原创 红领巾 2022-06-07
1741

因为时不时要搭个oracle 的dataguard,想偷个懒,根据自己的一些理解做了一个自动配置环境,

自动rman duplicate 复制来实现搭建oracle dg 的小工具,工具目前还不是特别完善,希望圈内各位前辈多多指点,多踩踩,有兴趣的小伙伴可以一起完善完善;


AutoDG oracle dataguard 自动搭建小工具,目前只支持linux 平台,Oracle11g 及以上版本

github代码连接:https://github.com/theone1900

功能参数使用说明
##check 参数 主库环境预检查

主要检查数据库版本是否大于11201
主库归档模式 & force_logging 是否开启
主库密码文件orapwd$SID是否存在
主库是否使用spfile
##prepare 参数 主库环境检查,主备环境初始化,自动搭建oracle dataguard

主库更新tnsnames.ora
下载主库tnsnames.ora,orapwd 密码文件
本地备库tnsnames.ora orapwd 文件同步
本地备库adump 等目录配置
本地备库listener.ora 初始化
本地备库pfile 初始化
本地备库启动到 nomount 状态
本地备库执行rman duplicate 命令
使用事项

4、配置 autodg 参数文件,config.toml 相关参数配置说明见 conf/config.toml

5、主库环境检查
$ ./autodg --config config.toml --mode check

6、自动配置dataguard 环境编辑,数据库同步备份等
$ ./autodg --config config.toml --mode prepare
prepare 模式

/* 数据库开启归档以及补充日志 */
-- 开启归档【必须选项】
alter database archivelog;
-- 强制日志【必须选项】
ALTER DATABASE force log ;


若直接在命令行中用 `nohup` 启动程序,可能会因为 SIGHUP 信号而退出,建议把 `nohup` 放到脚本里面且不建议用 kill -9,如:

```shell
#!/bin/bash
nohup ./autodg -config config.toml --mode check > nohup.out &


check 参数执行日志如下:
[2022/06/01 14:17:02.877 +08:00] [INFO] [server.go:197] ["Check oracle DBVersion"] [Dbversion=11.2.0.4.0]
[2022/06/01 14:17:02.979 +08:00] [INFO] [server.go:208] ["Get oracle SID"] [SID=crm]
[2022/06/01 14:17:03.278 +08:00] [INFO] [server.go:221] ["Get oracle Archived_Mode"] [Archived_Mode=ARCHIVELOG]
[2022/06/01 14:17:03.368 +08:00] [INFO] [server.go:231] ["Get oracle Force_Logging"] [Force_Logging=YES]
[2022/06/01 14:17:03.455 +08:00] [INFO] [server.go:243] ["Check oracle SPFILE status"] [Spfile="there is a spfile"]


prepare 参数执行日志如下:

[2022/06/02 10:48:33.776 +08:00] [INFO] [server.go:26] ["AutoDG--ORACLE DataGuard AutoConfig . Copyright © 2022-2099 HuangLinJie"]
[2022/06/02 10:48:36.854 +08:00] [INFO] [server.go:35] ["prepare DG"] ["Check Primary DB version "=]
[2022/06/02 10:48:36.854 +08:00] [INFO] [oracle.go:96] ["get oracle RDBMS_VERSION start"]
[2022/06/02 10:48:36.920 +08:00] [INFO] [oracle.go:103] ["get oracle RDBMS_VERSION finished"] [RDBMS_VERSION=11.2.0.4.0] [CMDS="select VALUE from NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_RDBMS_VERSION'"] [cost=66.1735ms]
[2022/06/02 10:48:36.921 +08:00] [INFO] [server.go:53] ["prepare DG"] ["Get Primary DB oracle_sid"=]
[2022/06/02 10:48:36.921 +08:00] [INFO] [oracle.go:14] ["get oracle oracle_sid start"]
[2022/06/02 10:48:36.998 +08:00] [INFO] [oracle.go:23] ["get oracle oracle_sid finished"] [CMDS="select value from v$parameter where NAME='instance_name'"] [cost=77.009ms]
[2022/06/02 10:48:36.998 +08:00] [INFO] [server.go:60] ["prepare DG"] ["Get Primary DB db_name"=]
[2022/06/02 10:48:36.998 +08:00] [INFO] [oracle.go:33] ["get oracle db_name start"]
[2022/06/02 10:48:37.072 +08:00] [INFO] [oracle.go:40] ["get oracle db_name finished"] [CMDS="select value from v$parameter where NAME='db_name'"] [cost=73.7813ms]
[2022/06/02 10:48:37.072 +08:00] [INFO] [server.go:64] ["prepare DG"] ["Get Primary DB db_name"=crm]
[2022/06/02 10:48:37.072 +08:00] [INFO] [server.go:68] ["prepare DG"] ["Get Primary DB db_unique_name"=]
[2022/06/02 10:48:37.072 +08:00] [INFO] [oracle.go:50] ["get oracle db_unique_name start"]
[2022/06/02 10:48:37.148 +08:00] [INFO] [oracle.go:57] ["get oracle db_unique_name finished"] [CMDS="select value from v$parameter where NAME='db_unique_name'"] [cost=76.2214ms]
[2022/06/02 10:48:37.148 +08:00] [INFO] [server.go:75] ["prepare DG"] ["Get Primary DB (Sinage & RAC)"=]
[2022/06/02 10:48:37.148 +08:00] [INFO] [oracle.go:113] ["get oracle cluster_database start"]
[2022/06/02 10:48:37.223 +08:00] [INFO] [oracle.go:120] ["get oracle cluster_database finished"] [CMDS="select VALUE from v$parameter where name='cluster_database'"] [cost=73.9347ms]
[2022/06/02 10:48:37.223 +08:00] [INFO] [server.go:79] ["prepare DG"] ["Get Primary DB (Sinage & RAC)"="##This is a Single node DataBase"]
[2022/06/02 10:48:37.223 +08:00] [INFO] [server.go:90] ["prepare DG"] ["Check Primary DB arch log mode"=]
[2022/06/02 10:48:37.223 +08:00] [INFO] [oracle.go:65] ["get oracle log_mode start"]
[2022/06/02 10:48:37.291 +08:00] [INFO] [oracle.go:72] ["get oracle log_mode finished"] [CMDS="select LOG_MODE from v$database"] [cost=68.2916ms]
[2022/06/02 10:48:37.292 +08:00] [WARN] [server.go:100] ["prepare DG"] ["oracle db is running in ARCHIVELOG mode"=ARCHIVELOG]
[2022/06/02 10:48:37.292 +08:00] [INFO] [server.go:105] ["prepare DG"] ["Check Primary DB FORCE_LOGGING mode "=]
[2022/06/02 10:48:37.292 +08:00] [INFO] [oracle.go:80] ["get oracle force_logging start"]
[2022/06/02 10:48:37.361 +08:00] [INFO] [oracle.go:87] ["get oracle force_logging finished"] [CMDS="select force_logging from v$database"] [cost=69.522ms]
[2022/06/02 10:48:37.362 +08:00] [INFO] [server.go:117] ["prepare DG"] ["oracle db is running in FORCE_LOGGING mode"=YES]
[2022/06/02 10:48:37.362 +08:00] [INFO] [server.go:123] ["prepare DG"] ["Check Primary DB orapw file"=]
[2022/06/02 10:48:37.762 +08:00] [INFO] [server.go:137] ["prepare DG"] ["There is orapw$sid"="1\n"]
[2022/06/02 10:48:37.762 +08:00] [INFO] [server.go:142] ["prepare DG"] ["Download Primary DB orapw file "=/oracle/app/oracle/product/11.2.0/db/dbs/orapwcrm]
[2022/06/02 10:48:38.508 +08:00] [INFO] [server.go:147] ["prepare DG"] ["Update Primary DB tnsnames.ora file "=/oracle/app/oracle/product/11.2.0/db/network/admin/tnsnames.ora]
[2022/06/02 10:48:38.934 +08:00] [INFO] [server.go:152] ["prepare DG"] ["Download Primary DB tnsnames.ora file "=/oracle/app/oracle/product/11.2.0/db/network/admin/tnsnames.ora]
[2022/06/02 10:48:39.747 +08:00] [INFO] [server.go:157] ["prepare DG"] ["Init standby DB tnsnames.ora file "=./network/admin/tnsnames.ora]

。。。。。。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论