最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何配置Oracle 12c DG服务在Windows平台下自动启动
时间:2026-06-24 08:54:57 编辑:袖梨 来源:一聚教程网
Oracle 12c DG在Windows下无法通过服务自动启动Broker,必须手动执行STARTUP MOUNT并启动DMON进程;ORACLE_HOME和ORACLE_SID需硬编码进服务配置,且Windows服务账户须对$ORACLE_HOMEdbs有完全控制权限。
oracle 12c dg在windows下无法靠服务“自动启动”实现dg broker接管,必须手动触发startup mount + 启动dmon进程,否则备库始终处于挂起状态。
Windows服务默认不加载用户环境变量,ORACLE_HOME和ORACLE_SID必须硬编码
系统服务(如OracleServiceORCL)以LocalSystem或指定用户身份运行,完全不读取NT_USER_PROFILE或USERPROFILE下的.bat/.ps1环境设置。常见错误是服务启起来后sqlplus / as sysdba报ORA-12162: TNS:net service name is incorrectly specified——本质是ORACLE_HOME未设或指向错误路径。
- 修改注册表项
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesOracleService<SID>,在ImagePath值末尾追加-p "ORACLE_HOME=C:apporacleproduct12.1.0dbhome_1" -p "ORACLE_SID=orcl"(仅适用于Oracle 12.1+,旧版需用ORADIM重建服务) - 更稳妥的做法:用
sc命令重建服务,显式注入环境变量:sc delete OracleServiceORCLoradim -new -sid orcl -intpwd password -startmode manualsc config OracleServiceORCL binPath= "C:apporacleproduct12.1.0dbhome_1binoracle.exe ORCL -p "ORACLE_HOME=C:apporacleproduct12.1.0dbhome_1" -p "ORACLE_SID=orcl""
- 验证方式:服务启动后,在任务管理器中找到
oracle.exe进程 → 右键“属性”→“详细信息”页签 → 查看“命令行”是否含正确-p参数
Broker不随服务自启,必须在MOUNT后手动启动DMON
Windows服务只负责拉起实例,但DMON是Data Guard Broker的后台进程,它依赖V$DATAGUARD_CONFIG视图就绪、dr1<sid>.dat和dr2<sid>.dat文件存在且可写。服务启动时若直接STARTUP(即OPEN),Broker根本不会初始化;而若服务设为STARTUP MOUNT,又没后续动作,DMON永远不出现。
- 不能把
STARTUP MOUNT写进服务启动参数——Windows服务不支持SQL命令链式执行 - 必须另建一个计划任务或服务依赖脚本,在
OracleService<SID>启动成功后触发:sqlplus /nolog <<EOFconnect / as sysdbastartup mount;exit;EOFdgmgrl / <<EOFenable configuration;exit;EOF
- 关键检查点:
ps -ef | findstr dmon(PowerShell中用Get-Process -Name *dmon*)必须能看到进程;dgmgrl / show configuration返回Configuration Status: SUCCESS
备库日志应用不会自动恢复,RECOVER MANAGED STANDBY DATABASE状态不持久
即使DMON起来了,SELECT PROCESS, STATUS FROM V$MANAGED_STANDBY仍可能显示MRP0为WAIT_FOR_LOG或NOT APPLYING。这是因为Broker下发的恢复命令(如RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT)是一次性动作,OS重启后不重放。
- Broker配置里
Protection Mode设为MAXIMUM PERFORMANCE或MAXIMUM AVAILABILITY,避免MAXIMUM PROTECTION导致主库不可达时备库强制SHUTDOWN ABORT - 务必禁用
Fast-Start Failover(除非已部署OBSERVER),否则重启后FSFO引擎卡在WAITING FOR REDO会阻塞MRP进程 - 最简兜底方案:在上述启动脚本末尾追加一行
sqlplus / as sysdba @recover.sql,其中recover.sql内容为:ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
真正容易被忽略的是dr1<sid>.dat和dr2<sid>.dat的权限问题:Windows服务账户必须对$ORACLE_HOMEdbs有**完全控制**权限,否则DMON静默失败,连告警日志都不写——查不到错误,只看到dgmgrl连不上、V$DATAGUARD_STATUS为空。
相关文章
- 天猫双十一大促活动开启 - 2026年超值购物指南 06-24
- 蹭饭网 - 免费美食社交平台 06-24
- 绝地求生PUBG账号购买平台推荐 安全靠谱的买号网站对比 06-24
- 300分左右的优质大专院校推荐 - 2026年高性价比选择 06-24
- 全明星觉醒 进阶全能队阵容搭配与实战攻略 06-24
- 沙石镇时光 知识加点推荐与最优分配方案 06-24