【问题标题】:Jenkins job stuck running a .bat file trough on a remote ssh server(windows 2008 R2)Jenkins 作业卡在远程 ssh 服务器上运行 .bat 文件槽(windows 2008 R2)
【发布时间】: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 文件的作用。

  1. 为 RMAN 还原准备数据库(以系统用户身份运行少量 sql 命令)
  2. 运行 RMAN 恢复
  3. 再运行几个 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 也消失了。

标签: jenkins openssh rman


【解决方案1】:

将您的 Windows 客户端设置为 jenkins slave,因为 cygwin openssh 不是远程作业的正确方法。在您的情况下,我会推荐 Java Web Start 选项。配置示例发布于:https://wiki.jenkins-ci.org/display/JENKINS/Step+by+step+guide+to+set+up+master+and+slave+machines

【讨论】:

    猜你喜欢
    • 2015-10-07
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-02
    相关资源
    最近更新 更多