通过 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:\\product\12.2.0 而不是 ORACLE_HOME=C:\\product\12.2.0\dbhome_1 这是正确的路径。

以上是关于通过 chef recipe 调用,SQLPLUS 无法识别 Windows 12R2 中的 Oracle_Home 环境变量的主要内容,如果未能解决你的问题,请参考以下文章

如何在chef recipe中包含application.properties文件中的属性

使用 Ruby/Chef Recipe for Vagrant 导入 Mysql 数据库

厨师:为啥跳过“include_recipe”步骤中的资源?

在 Ubuntu 14.04 上安装 readline 包的 Chef 失败

如何在 Chef 中自定义 tomcat 食谱

带内连接和限制的mysql子查询