如何从命令行调用 ODI 场景并等待其执行
Posted
技术标签:
【中文标题】如何从命令行调用 ODI 场景并等待其执行【英文标题】:How to call ODI Scenario from command line and wait for its execution 【发布时间】:2020-02-08 15:36:07 【问题描述】:我想从命令行调用 ODI 场景并等待它完成。我正在使用 ODI 12c 并安装了独立代理。我已经发现您可以使用 startscen.cmd 命令并且它对我有用。唯一的问题是 cmd 没有等待场景完成。有什么建议可以实现这样的目标吗?
我的 .bat 文件如下所示:
cd C:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\bin
call startScen.cmd "-INSTANCE=CITestAgent" MAPPING 1_0_0 GLOBAL "-SESSION_NAME=TEST_RUN" "-AGENT-URL=http://localhost:20910/oraclediagent"
cd C:\Users\Redekera\documents\testFiles
"C:\Users\REDEKERA\Documents\instantclient_19_3\sqlplus.exe" db_user/pw@db/scheme @run_tests_lieferschein.sql
在该命令之后,我想通过 sql*plus 运行 sql,这需要等到场景完成。
感谢大家的帮助:)
【问题讨论】:
这是什么意思?为什么不将它添加到批处理中 在该命令之后还有另一个,需要等到场景完成。 作为开始,你可以告诉 cmd 等待特定时间timeout /t 30
然后在时间完成后开始执行 sql plus。
@Moudiz 已经考虑过了,但我认为这不是一个合适的解决方案。不知道场景需要执行多长时间,取决于我要调用的场景和数据量...
嗨@AaronR。您需要运行命令行的机器上的操作系统是什么?
嗨@F.Lazarescu Windows
【参考方案1】:
默认情况下,startscen.cmd 将等待执行结束返回。
这可以通过参数-ASYNC=yes
更改以异步启动执行。在这种情况下,它将返回对检查执行状态有用的 SESSION 编号。
【讨论】:
你是对的,startScen.cmd 等待执行结束..【参考方案2】:如果您希望仅在第一个命令成功退出时执行第二个命令:
execute scenario command && sql*plus command
摘自here
主要思想是“&&”符号!
【讨论】:
结合第一个答案也是个好主意,但是当您必须在 2 个命令之间更改目录时,批处理的外观如何? cd 更改目录 && 执行 senario 命令 && 更改目录 && sql*plus 命令以上是关于如何从命令行调用 ODI 场景并等待其执行的主要内容,如果未能解决你的问题,请参考以下文章