我有一个连接到 oracle 10g 数据库的 bash 脚本。
第一步,它使用以下命令从“配置”文件中获取一些变量
. /path/to/my/configfile.ini
在配置文件中有一些变量:
export USRID=myUser
export USRID_PASS=myPassword
export USR_PASS="$USRID/$USRID_PASS@myDatabase"
然后它实际上使用以下命令通过 sqlplus 连接:
sqlplus -s $usr_pass
除了可怕的安全和设计问题(这个脚本已经存在了 5 年)。这实际上是在我们的一个 UNIX 服务器中完成它的工作,而不是在另一个。
当我使用 运行脚本时bash -x
,我可以看到命令扩展为:
sqlplus -s myUser/myPassword@myDatabase
...应该可以正常工作(并且实际上在一台服务器上工作),但故障服务器中的响应是:
错误:ORA-01017:用户名/密码无效;登录被拒绝
SP2-0306:无效选项。用法:CONN[ECT] [logon] [AS {SYSDBA|SYSOPER}] 其中 ::= [/][@] | SP2-0306:无效选项。
我猜它对 bash 的作用比对 oracle 的作用更大,但我不是 bash 专家。我缺少一些配置或细节吗?
编辑:
试图进一步确定问题,我现在在第三个开发服务器中运行两个版本的脚本,并且在不同的测试中,如果我这样做,登录可以工作:
sqlplus -s $usrid/$usrid_pass@myDatabase
但不是当我尝试:
sqlplus -s $usr_pass
所以它有点烦人。
除此之外,我还要检查配置文件同步过程……当我有新的东西时,我会告诉你的。谢谢大家。