通过 chef recipe 调用,SQLPLUS 无法识别 Windows 12R2 中的 Oracle_Home 环境变量
Posted
技术标签:
【中文标题】通过 chef recipe 调用,SQLPLUS 无法识别 Windows 12R2 中的 Oracle_Home 环境变量【英文标题】:Called through chef recipe, SQLPLUS unable to identify Oracle_Home environment variable in Windows 12R2 【发布时间】:2018-09-07 13:44:01 【问题描述】:我正在使用厨师客户端运行厨师食谱,它设置 ORACLE_BASE、ORACLE_HOME 和 ORACLE_SID 环境变量,然后执行 oracle sql 脚本来创建数据库实例。
使用 Windows 批处理文件 (.bat) 设置环境变量
SET ORACLE_BASE=C:\<ora_base>
SET ORACLE_HOME=C:\<ora_base>product\12.2.0
然后在同一个批处理文件中执行sql脚本文件。
<Dir>\path\product\12.2.0\dbhome_1\bin\sqlplus /nolog @C:\files\myscript.sql
我也在上面的代码中使用了厨师资源“批处理”,仍然抛出了同样的错误。 Sqlplus 看不到 oracle_home 环境变量。
STDERR:初始化 SQL*Plus 时出现错误 6 SP2-0667:找不到消息文件 sp1.msb SP2-0750:您可能需要将 ORACLE_HOME 设置为您的 Oracle 软件目录
为什么 oracle_home 对厨师食谱执行不可见? 有人可以提供一种解决方案来执行 sql 脚本而不会出现此错误。
【问题讨论】:
您是否尝试过在系统级别设置环境变量? (控制面板 -> 系统 -> 高级系统设置 -> 环境变量) 为什么您设置的 ORACLE_HOME 与您启动 SQL*Plus 的位置不匹配? 【参考方案1】:您的ORACLE_HOME
与您启动 SQL*Plus 的路径不匹配。有点难以确定,因为您有不同的缩短版本,但您似乎刚刚离开了 dbhome_1
部分:
SET ORACLE_BASE=C:\<ora_base>
SET ORACLE_HOME=C:\<ora_base>\product\12.2.0\dbhome_1
或者可能,如果它们不同:
SET ORACLE_BASE=<Dir>\path
SET ORACLE_HOME=<Dir>\path\product\12.2.0\dbhome_1
【讨论】:
嗨,亚历克斯,非常感谢!!!这就是原因,我添加了 ORACLE_HOME=C:\以上是关于通过 chef recipe 调用,SQLPLUS 无法识别 Windows 12R2 中的 Oracle_Home 环境变量的主要内容,如果未能解决你的问题,请参考以下文章
如何在chef recipe中包含application.properties文件中的属性
使用 Ruby/Chef Recipe for Vagrant 导入 Mysql 数据库
厨师:为啥跳过“include_recipe”步骤中的资源?