因為時不時要搭個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]
。。。。。。




