解决方案为:
如果没有时间直接看总结就OK
GGSCI> edit params mgr
目录
译:Microsoft Windows Server服务器OGG进程的启动/重启—第1部分
Manager(管理器)
AUTOSTART(自动启动)
AUTORESTART(自动重启)
Process Status and Checkpoint File(进程状态和检查点文件)
Scenario #1 – Process is RUNNING, then Abends from SQL Server instance shutdown(场景#1 -进程正在运行,然后因为 SQL Server实例关闭而停止)
Scenario #2 – Process is manually stopped and re-Started against offline SQL Server Instance or Database(场景#2 -对脱机SQL Server实例或数据库手动停止和重启)
Oracle GoldenGate on Microsoft Windows Server Process Start/Restart – Part 2
Microsoft Windows Server服务器OGG启动/重启—第2部分
Summary(总结)
原文链接:Oracle GoldenGate on Microsoft Windows Server Process Start/Restart – Part 1
我很荣幸与Mack Bell分享今天的部落格。Mack是Oracle的GoldenGate for SQL Server的产品经理,也是我在使用该产品时遇到的任何问题和问题的主要联系人。Mack已经出现在我所有其他关于Oracle GoldenGate 12.2以及之前版本的博客和论文的评论列表中。当我们在Microsoft SQL Server上讨论GoldenGate时,Mack和我见证了这一切!
如果您将GoldenGate进程设置为在Windows服务器启动时自动启动,那么您可能遇到了这样一个问题:所有GoldenGate进程都启动了,但如果源或目标数据库还不可用,则OGG会立即停止。您可能还在使用AUTORESTART特性,并希望它重新启动进程并再次尝试连接数据库,但是您发现这并没有发生。
在这两部分的博客中,Mack解释到底是为什么,让我们深入的了解到自动启动和重启GoldenGate流程, 看看我们能否解释为什么有时候事情并不像你所期望的那样有效,以及如何才能得到你所期望的结果。
首先,让我们研究一下Manager流程,看看需要什么设置它才能在Windows上自动启动。管理器进程是所有其他GoldenGate进程的父进程,管理器可以在Windows服务器环境中运行两种模式。第一种模式(适合于测试)是从GGSCI开始的,它将管理器作为用户进程运行。
GGSCI>start mgr
您将注意到,在这种模式下,管理器以用户进程的形式运行,并带有该用户的凭据,当用户注销服务器时,管理器将关闭。同样,这对于测试目的来说很好,但是对于您在生产环境中使用的内容却不是这样。
对于生产环境,您希望将Manager安装为Windows服务。这是通过以下命令在GGSCI中完成的:
GGSCI>shell install addservice
“shell”命令指示GGSCI运行OS级别的命令,在本例中是install.exe可执行文件位于GoldenGate主目录中,但您也可以从命令提示符直接运行install.exe,并传递给它“addservice”参数。Install.exe还有其他可用选项,您可以通过检查其帮助文件来查看这些选项:
GGSCI>shell install help
到现在,在将管理器作为服务添加时,我们将接受默认选项,即在Windows启动时自动启动管理器。
现在管理器Manager将作为Windows服务运行,该服务将在服务器启动时自动启动,那么如何才能自动启动其他GoldenGate进程,例如提取Extracts和复制Replicats?为此,我们修改管理器的参数文件中使用到的AUTOSTART参数:
GGSCI> edit params mgr
对于本例,我将简单地使用通配符来启动提取Extract和复制Replicat进程,但是我也可以列出单独的进程,比如AUTOSTART EXTRACT extname。保存参数文件并启动(或重新启动)管理器之后,您将注意到,您已经注册的任何GoldenGate进程将在管理器启动时启动。
接下来,如果一个GoldenGate进程“终止”,而您希望它尝试自动重新启动,该怎么办?我们可以使用Manager的AUTORESTART特性来实现这一点。在此设置下,管理器将尝试自动重新启动以前正在运行的进程,默认次数为两次,间隔为两分钟,然后重试。您可以调整这些设置,我鼓励您查看GoldenGate参考指南,了解可用的选项和设置。
使用此新参数保存管理器的参数文件后,重新启动管理器以使新设置生效。
好了,都准备了,是吗?由于我们将本文的重点放在为什么进程似乎不会在您希望它们自动重启的时候自动重启,所以我必须首先解释Manager如何知道进程需要重启,这是由于在该进程的检查点文件中记录了状态。每个GoldenGate提取Extract或复制Replicat都有一个检查点文件,在那个位置存储了许多其他的信息,记录最后一个已知状态status。只有在status状态是RUNNING时,管理器才会尝试重新启动进程。被Stopped (停止命令)或被Killed (终止通讯)的进程不在自动重启之列。
我们来看几个不同的情形;一个用于说明管理器何时重启进程,另一个用于说明管理器何时不重启进程。
我启动了我的管理器,它自动启动了我的其他进程。现在,我将关闭存储源和目标数据库的SQL Server实例,并再次检查进程的状态。Extract (EXT2008)和Replicat (REP2008)与数据库有活动连接,并且已经连接并更新了检查点,使其处于“RUNNING”状态。当我停止数据库服务时,这两个进程将把它们的状态更改为“ABENDED”,并且管理器将尝试重新启动它们。
我将等待几分钟,检查Manager的报告文件,看看它是否尝试重新启动,但是由于SQL Server实例仍然脱机,此时进程将无法进入运行状态。
这是来自管理器报告文件的信息,但由于数据库实例仍处于脱机状态,所以进程仍处于ABENDED状态。
现在,在下一次重新启动之前,我将再次启动SQL Server实例,然后等待管理器重新启动进程并检查它们的状态。
这一次,所有进程再次运行,管理器的重启逻辑成功。但在移动到下一个场景,让我指出一个关键观察点,那就是Manager的自动重新启动逻辑功能:提取Extract和Replicat从运行的状态到关闭状态,并且在检查点信息中这两个进程的状态变为了终止,检查点将通知Manager,自动重启规则规则将生效。
对于这个场景,我将声明一个情况,即管理人员没有尝试重新启动GoldenGate流程,然后解释为什么会这样。
让我们从一组正在运行的GoldenGate进程开始,然后手动停止它们。
接下来,我将关闭SQL Server实例,然后手动重启两个GoldenGate进程。
继续第1部分的内容:最近的博客条目Microsoft Windows Server服务器OGG进程的启动/重启, 我将再次与Oracle GoldenGate产品管理团队的Mack Bell合作,描述启动和运行GoldenGate流程所需的行为和需求。
在我们的第一篇文章中,我们讨论了如何将Manager进程安装为Windows服务,以及如何设置GoldenGate流程自动启动和重新启动,但是我们也提到了一个场景,以及在您希望它们自动重启的时候进程可能不会重新启动的原因。
我们将进入这个话题第2部分,我们将向您展示两个额外的Manager进程特性,可以帮助延迟启动为了让数据库优先启动,借此希望避免由于数据库不可用而需要重新启动进程的情况。
首先,快速回顾一下。您可以在Manager中使用AUTOSTART和AUTORESTART参数,但取决于GoldenGate进程的最后一个良好检查点,如果提取Extract或复制Replicat将要连接的数据库尚未启动,则AUTORESTART特性可能不会尝试重新启动该进程。
那么,在尝试启动GoldenGate进程连接数据库之前,可以做些什么来为数据库提供足够的时间,尤其是在服务器启动或重新启动时?
这个参数可以添加到manager与一个给定的参数中设置分钟数指示Manger延迟执行自动启动功能, 因此,在使用AUTOSTART参数设置的其他进程启动之前,允许SQL Server实例和数据库有时间上线。
例如,假设您的源或目标数据库在服务器启动并运行后通常只需几分钟即可联机。使用BOOTDELAYMINUTES,我们可以将分钟设置为SQL Server和数据库都将启动和运行的某个平均时间值,例如5分钟。
GGSCI>edit params mgr
一个非常重要的注意事项是,BOOTDELAYMINUTES必须是Manager参数列表中的第一个参数。
此时,您可以重新启动Windows系统,然后监视Manager服务在启动其他GoldenGate进程之前的延迟。希望此时SQL Server实例和数据库都已联机。
在将Manager注册为服务时,安装程序中的另一个选项是添加WAITFORSERVICE选项,该选项将为Manager服务创建一个依赖项,该依赖项必须在管理器服务启动之前得到满足。
您可以使用SQL Server实例服务名称(不要使用显示名称),例如“MSSQL$SQL2008R2”作为依赖项,这样,在SQL Server实例启动之前,管理器不会启动。
在本文的第1部分中,我们已经将管理器安装为服务,为了添加新的WAITFORSERVICE选项,我们需要卸载和重新安装管理器服务,并添加新的选项。
GGSCI>shell install deleteservice
GGSCI>shell install addservice waitforservice MSSQL$SQL2008R2
您可以检查管理器的服务属性,现在可以看到它对SQL服务器实例具有依赖性,下一次服务器启动时,管理器将被延迟,直到SQL服务器实例启动。
虽然没有一个特定的方法在线源或目标数据库都启动后启动GoldenGate,通过使用BOOTDELAYMINUTES或WAITFORSERVICE,或两者的结合,你可以延迟GoldenGate过程启动的时间为了让SQL服务器实例和数据库启动,从而避免在第1部分中给出的场景中,由于数据库脱机,GoldenGate进程最初无法启动,并且不会尝试重新启动,因为最后一次已知的运行状态不是异常终止。