大家好,这里是公众号 DBA学习之路,分享一些学习数据库路上的知识和经验。

@TOC

前言

这两天折腾 Windows 安装 OGGMA 21.19 MSSQL,因为 OGGMA 官方文档主要面向 Linux/Unix 环境,在 Windows 平台部署时遇到了两个问题,在网上没有搜索到解决方案,新版 MOS 也是摆设,好在最后问题顺利解决了。

本文记录一下问题发生以及解决的过程,希望本次排错经历能为在 Windows 平台部署 OGG 的同仁提供参考,避免因环境差异而踩坑。

问题记录

问题一

OGGMA 第一次安装失败,删除所有文件重新安装,已经删除所有注册表已经服务。

第二次安装到这一步报错:

经查询百度,提示都是 Linux 版本,需要删除 inventory 文件 /u01/app/oraInventory/ContentsXML/inventory.xml 中的记录:

1
<HOME NAME="OraHome1" LOC=".../ogg" TYPE="O" IDX="3"/>

但是我这台是 Windows,而且是 MSSQL,不知道 inventory 文件在哪里,最后在注册表找到了这个位置:

1
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE

找到 C:\Program Files\Oracle\Inventory\ContentsXML 目录下的 inventory 文件:

编辑文件找到这一行删掉即可:

结束安装进程,重新执行安装:

问题解决。

问题二

执行 bat 脚本报错:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-----------------------------------------------------
Oracle GoldenGate Install As Service Script
-----------------------------------------------------

OGG_HOME=C:\ogg\oggma
OGG_ETC_HOME=C:\ogg\ogginst\sm\etc
OGG_VAR_HOME=C:\ogg\ogginst\sm\var

Enter Microsoft Windows Username : .\Administrator
Enter password:************
Registering Service Manager...
[SC] StartService 失败 1053:

服务没有及时响应启动或控制请求。

请按任意键继续. . .

但是服务是成功创建的:

不过无法启动:

可以看到服务对应的执行文件是 C:\ogg\oggma\bin\OracleGoldenGate.cmd

查看文件内容:

1
2
3
4
5
6
@echo off
REM Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
setlocal
for %%F in (%0) do set OGG_BIN=%%~dpF
PATH=%OGG_BIN%;%OGG_BIN%..\lib\;%PATH%
ServiceManager.exe %*

可以看到这个批处理脚本是用于启动 ServiceManager.exe,为什么会启动失败,手动执行试试:

1
2
3
4
C:\ogg\oggma\bin>cd C:\ogg\oggma\bin

C:\ogg\oggma\bin>call ServiceManager.exe
Service Manager is terminating because it cannot load the inventory from 'C:\ogg\oggma\etc\conf/deploymentRegistry.dat'

deploymentRegistry.dat 这个文件的实际位置是 C:\ogg\ogginst\sm\etc\conf

为什么会被识别到 C:\ogg\oggma\etc\conf/ 目录下呢?

难道跟我配置的 OGG_HOME 有关?

删掉之后再次执行,靠,还真是,好了!

看来还是习惯作怪,Linux 安装的习惯拿到 Windows 上了,导致问题发生!

再次手动启动服务,成功运行:

问题解决!

写在最后

这两个问题解决后,其他的就没什么问题了,oggca 的配置方式参考 Linux 即可。