【发布时间】:2013-09-15 08:37:26
【问题描述】:
我有一个在 solaris 上运行的 jenkins 设置。我已经使用 jenkins ssh 插件在具有 oracle 数据库的远程 Windows 2008 R2 服务器上配置了一个运行 .bat 文件的作业。 .bat 文件在 oracle 数据库中执行 RMAN 还原。我有一个在 Windows 2008 R2 服务器上运行的 openssh 服务器。当我在较小的数据库上进行恢复时,运行时间不到 30 分钟,一切正常。但是当数据库很大并且恢复需要 3 个小时以上时,jenkins 作业会挂起,即使作业所执行的 rman 还原在服务器上成功完成。
这是我在 jenkins ssh 插件命令窗口中运行的命令:
/cygdrive/C/OpenSSH/bin/SSH_ImportTEST_DB.bat TEST3
这就是 .bat 文件的作用。
- 为 RMAN 还原准备数据库(以系统用户身份运行少量 sql 命令)
- 运行 RMAN 恢复
- 再运行几个 sql 命令,让数据库可供所有用户使用,重置密码。
第 1 步和第 2 步工作正常,但 jenkins 作业仅显示为正在运行第 2 步,即使它已在远程服务器上完成。如果 rman restore 运行超过 3 小时,它永远不会执行第 3 步。
X:\oracle\admin\TEST3\scripts>rman auxiliary cmdfile=X:\oracle\admin\TEST3\scripts\restore_db2.sql log=Y:\oracle\NightlyBackup\Prod\restore_MSIPTST3.log
RMAN> 2>
这是restore_db2.sql 包含的内容:
DUPLICATE DATABASE TO TEST3 BACKUP LOCATION 'Y:\oracle\NightlyBackup\Prod';
exit;
我尝试了不带退出命令的restore_db2.sql,但这也无济于事。
我在运行 jenkins 的服务器上的 ssh_config 中配置了ServerAliveInterval 60。我还在 openssh 服务器上的 sshd_config 中配置了ClientAliveInterval 60 以排除超时。
有人可以帮忙吗?
【问题讨论】:
-
您是否验证过 ssh 连接确实保持活动状态?如果您在 Jenkins 主机或从机上启动嗅探器,您是否每分钟都看到空 ssh 数据包?数据库恢复完成后
rman进程消失了吗? -
如何在 Jenkins 主机或远程服务器上启动嗅探器?
rman进程在完成还原后立即退出。我已经通过 Windows 任务管理器进程选项卡对此进行了监控。恢复完成后,ssh 也消失了。