【发布时间】:2018-09-26 18:52:18
【问题描述】:
我需要在厨师食谱中运行一些 SQL 脚本文件。
当我使用下面的batch 资源执行食谱时,什么都没有发生。
batch 'cdb_scripts' do
architecture :x86_64
code <<-EOH
C:\\app\\Administrator\\product\\12.2.0\\dbhome_1\\bin\\sqlplus /nolog @C:\\app\\scri\\CreateDB.sql
C:\\app\\Administrator\\product\\12.2.0\\dbhome_1\\bin\\sqlplus /nolog @C:\\app\\scri\\CreateDBFiles.sql
C:\\app\\Administrator\\product\\12.2.0\\dbhome_1\\bin\\sqlplus /nolog @C:\\app\\scri\\CreateDBCatalog.sql
EOH
not_if {File.exists?('C:\scri\cdb')}
end
每个脚本都需要相当长的时间来运行,只有在前一个脚本完成后我才需要继续执行下一个脚本。 上面的代码没有执行任何操作。
我使用execute资源如下:
execute 'test_script_execute' do
environment ({"ORACLE_SID" => "orclsid"})
command "C:\\app\\Administrator\\product\\12.2.0\\dbhome_1\\bin\\sqlplus.exe -s sys/Password_123@orclsid as sysdba @C:\\app\\scri\\CreateDB.sql"
only_if {some_guard_condition}
timeout 1800
end
这只是记录“execute[test_script_execute] 运行成功”。 但是脚本没有运行。
在任务管理器中,sqlplus.exe 正在运行。似乎是挂起而不是执行。
有人可以给我一个可行的建议,让我按顺序运行多个 SQL 文件而不会相互重叠吗?
谢谢
【问题讨论】:
-
将日志级别调高至
trace(或debug,如果不在Chef 14 上)并查看命令输出。它可能正在等待用户输入,这意味着永远等待。 -
我需要使用 pfile 创建 spfile,然后还要创建一个数据库。环境变量也是使用先前的配方设置的,该配方将它们设置在系统变量下。当我运行
"ORACLE_HOME\bin\oradim.exe -new -sid orclsid -startmode manual -pfile='C:\app\Administrator\product\12.2.0\dbhome_1\database\initorclsid .ora';"时,它被创建了,但是 spfile 创建脚本没有运行,并且日志中也没有显示失败消息(在跟踪日志级别下)
标签: chef-infra oracle12c chef-recipe