【问题标题】:How to run a batch of sql files in a chef recipe如何在厨师食谱中运行一批 sql 文件
【发布时间】: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


【解决方案1】:

我找到了一种方法来简化需求并执行一批脚本。 我创建了一个批处理文件并在那里添加了 sql 脚本调用。它工作完美。 不幸的是,没有直接的方法可以直接调用没有错误的 sql 脚本文件。 如果您有类似的要求,可以使用以下代码 sn-ps。

在我放的批处理文件里面

ORACLE_HOME\bin\sqlplus /nolog @C:\script_path\myscriptscall.sql

在 myscriptscall.sql 中

set verify off
echo on 
spool C:\logs_path\scriptlogs.log

@C:\script_path\sqlscript1.sql
@C:\script_path\sqlscript2.sql
@C:\script_path\sqlscript3.sql

spool off
exit;

确保在执行后“退出”,否则程序将挂起。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 2013-08-21
    • 1970-01-01
    相关资源
    最近更新 更多