带双引号用户名的sqlplus连接字符串

sqlplus connection string with a user name in double quotes

我想知道具有双引号名称的用户应该如何登录?

create user test_default identified by test_pass;
GRANT CREATE SESSION TO test_default;

sqlplus test_default/test_pass@localhost/DBRAZRAB <-- works fine, I'm connected
create user "test_lowercase" identified by test_pass;
GRANT CREATE SESSION TO "test_lowercase";

sqlplus "test_lowercase"/test_pass@localhost/DBRAZRAB <-- ORA-01017: invalid username/password; logon denied

SQL*另外:19.0.0.0.0 版 - 1 月 5 日星期三生产 12:34:56 2022

版本 19.3.0.0.0

我想,我应该以某种方式修改连接字符串,但是如何?

在我的 Windows 机器上,当尝试启动 SQLPlus 或 SQLcl 并使用相同的命令登录时,区分大小写似乎没有保留。

您可以做的一个选择是使用像 sqlplus /nolog 这样的命令启动 SQLPlus(或 SQLcl),然后像这样使用 conn 命令连接:

C:\temp>sqlplus /nolog

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jan 5 14:41:21 2022
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

SQL> conn "test_lowercase"/test_pass@tnsinfo
Connected.
SQL>

当然,您可以做到 - 前提是您知道怎么做:)

正在创建用户,blabla - 它有效,如您所知:

SQL> connect sys as sysdba
Enter password:
Connected.
SQL> create user "test_lowercase" identified by test_pass;

User created.

SQL> grant create session to "test_lowercase";

Grant succeeded.

SQL> connect "test_lowercase"/test_pass
Connected.
SQL> exit
Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

但是,您可以使用 sqlplus 可执行文件从操作系统连接吗?

c:\Temp>sqlplus "test_lowercase"/test_pass

SQL*Plus: Release 11.2.0.2.0 Production on Sri Sij 5 20:46:04 2022

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

ERROR:
ORA-01017: invalid username/password; logon denied

糟糕!那不行。

但是,如果您 转义 双引号,那么它就可以工作:

c:\Temp>sqlplus \"test_lowercase\"/test_pass

SQL*Plus: Release 11.2.0.2.0 Production on Sri Sij 5 20:46:09 2022

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL>

哒哒哒!