SQLPlus:在脚本中使用特殊字符作为密码

Posted

技术标签:

【中文标题】SQLPlus:在脚本中使用特殊字符作为密码【英文标题】:SQLPlus: using special character for password in script 【发布时间】:2014-07-28 08:03:38 【问题描述】:

我对密码中的特殊字符“@”有疑问。 我不知道如何将带有此特殊字符的密码传递给脚本文件并使用 sqlplus 连接的问题。

例如,我有用户“test_user”,密码为“temp123@”。对于通过 sqlplus 登录,我使用以下带有转义的字符串:sqlplus test_user/\"temp123@\"@some-db:1521/SID

效果很好。对于我的情况,我需要将密码作为 sql 脚本的参数传递。例如,我有以下脚本来连接(实际上是使用几对登录名/密码来一次更新许多用户的脚本):

-- @deploy.sql
connect &&2./&&3.@&&1.

由于 sqlplus 无法正确解释带有“@”的密码,因此失败。我尝试了许多来自 google 的转义建议,但其中大部分都适用于 sqlplus 调用时的连接字符串。对于我来说,它需要传递给脚本的参数。

【问题讨论】:

【参考方案1】:

使用:cmd.exe 而不是 powershell 窗口

if not : 

在 powershell 窗口中:sqlplus 'login/\"P@$$w0rd\"@TNS_NAME'

在cmde.exe中:sqlplus login/\"P@$$w0rd\"@TNS_NAME

【讨论】:

【参考方案2】:

连接字符串中只需要引号:

connect &&2./"&&3."@&&1.

【讨论】:

以上是关于SQLPlus:在脚本中使用特殊字符作为密码的主要内容,如果未能解决你的问题,请参考以下文章

sqlplus连接oracle数据库--密码含特殊字符

Oracle用户密码含有特殊字符应当如何处理

ORACLE 用户的 密码 支持哪些特殊字符,不支持哪些字符?

我应该如何将密码(包含特殊字符)作为命令行参数传递?

shell脚本中怎样对特殊字符进行处理 一串密码在加密前对密码中的!@#$%等特殊字符进行处理(加上‘’)。

linux变量里有特殊字符脚本会对其处理吗