[英]How to use password containing @ with sqlplus 18, 19 or 21 on linux?
我的 ORACLE 帐户带有 at 符号 (@) 到密码。
我使用的是 sqlplus 12,我可以使用以下语法处理这个特殊字符:
sqlplus 'USER/\"@PWD\"@SERVER:1521/BASE'
现在使用 sqlplus 19,这不再起作用了。 并且在多个操作系统(RHEL7 RHEL8 CentOS7)上经过多次测试(sqlplus v18 v19和v21),问题是一样的。 我已经测试了很多逃生方法并在整个互联网上搜索,但没有找到任何有效的方法。
这个问题似乎特定于 @ 符号,我可以逃避一个! 以 \\ 为例。
编辑:我需要自动化这个,所以人机交互的解决方案不能解决我的问题。
您可以通过在sqlplus
内部进行连接来解决此问题,顺便说一下,如果您想将连接封装在 shell 脚本中,这会更好。
让我向您展示(Oracle 19c over Red Hat 7)
SQL> select version from v$instance ;
VERSION
-----------------
19.0.0.0.0
SQL> create user test identified by "Ora@xde1" ;
User created.
SQL> grant connect to test ;
Grant succeeded.
如果在命令行中连接,它不起作用
sqlplus test/"Ora@xde1"
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Sep 10 13:07:28 2021
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified
但是,如果你在里面连接,它确实有效
sqlplus /nolog
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Sep 10 13:08:05 2021
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
SQL> conn test/"Ora@xde1"
Connected.
SQL> select 1 from dual ;
1
----------
1
根据@Roberto Hernandez 的回答,我使用他的解决方案进行了一些修改以在脚本内部工作,而无需交互输入密码:
sqlplus /nolog << EOF\\nconn /""@:1521/\\n@""
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.