首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用bash变量时的Sqlplus登录错误: SP2-0306:无效选项

使用bash变量时的Sqlplus登录错误: SP2-0306:无效选项
EN

Stack Overflow用户
提问于 2011-07-01 16:17:49
回答 4查看 67K关注 0票数 4

我有一个bash脚本,它连接到oracle 10g数据库。

在第一步中,它使用以下命令从"config“文件中获取一些变量

代码语言:javascript
运行
复制
. /path/to/my/configfile.ini

在配置文件中有一些变量:

代码语言:javascript
运行
复制
export USRID=myUser
export USRID_PASS=myPassword
export USR_PASS="$USRID/$USRID_PASS@myDatabase"

然后它实际上通过sqlplus使用以下命令进行连接:

代码语言:javascript
运行
复制
sqlplus -s $usr_pass

可怕的安全和设计问题(这个脚本已经存在5年了)。这实际上是在我们的一个UNIX服务器上完成它的工作,而不是在另一个UNIX服务器上。

当我使用bash -x运行脚本时,可以看到命令扩展为:

代码语言:javascript
运行
复制
sqlplus -s myUser/myPassword@myDatabase

...which应该做得很好(实际上是在一台服务器上工作),但是失败服务器中的响应是:

错误: ORA-01017:无效用户名/密码;登录被拒绝

SP2-0306:无效选项。用法:连接为{SYSDBA\SYSOPER},其中::= /x-SP2-0306:无效选项。

我猜它对bash的作用大于对甲骨文的作用,但我不是bash专家。我遗漏了什么配置或细节吗?

编辑:

为了更好地解决这个问题,我现在在第三个开发服务器上运行两个版本的脚本,在不同的测试中,如果我使用以下方式登录就可以了:

代码语言:javascript
运行
复制
sqlplus -s $usrid/$usrid_pass@myDatabase

但当我试着:

代码语言:javascript
运行
复制
sqlplus -s $usr_pass

所以有点烦人。

除此之外,我还要检查te配置文件同步过程.我有新发现时会告诉你的。谢谢大家。

EN

回答 4

Stack Overflow用户

发布于 2011-07-01 16:57:57

这一信息非常明确:

  • 您已经成功地联系了数据库
  • 提供的凭据是错误的

这表明您的客户端配置没有任何问题。

所以,这就让你

  • 用户/pw组合是错误的
  • 你还没有联系到你认为你有

的数据库

可能性:

  • 确保您可以连接从命令行提供的凭据。
  • 使用tnsping检查正在联系的主机和实例,验证它是否正确。此命令的输出应该告诉您要连接到的主机、端口和实例/服务。如果错误,请检查tnsnames.ora文件中的别名。
  • ( @OMG
  • )建议,如果您使用的是11g,请确保密码中的情况是正确的
票数 6
EN

Stack Overflow用户

发布于 2018-01-01 01:54:27

这对我有用:连接用户/“密码”,我想如果密码包含像'@‘这样的特殊字符,我们需要使用"“作为密码。

票数 3
EN

Stack Overflow用户

发布于 2011-07-02 04:55:48

这是一个愚蠢的问题,但您确定您是在两个unix服务器上使用bash外壳吗?

我会试着替换

代码语言:javascript
运行
复制
export USR_PASS="$USRID/$USRID_PASS@myDatabase"

使用导出USR_PASS="${USRID}/${USRID_PASS}@myDatabase“

以确保正确地解释变量。

作为最后,异国情调,但密码是否包含任何字符以外的基本阿尔法-数字和标点符号。因为10g不区分大小写,所以将小写密码转换为大写,这可能会对重音字符造成奇怪的影响。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6550542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档