Oracle 11g解锁myconnection用户失败,遇ORA-01918错误求助
解决Oracle 11g小写用户名解锁问题
问题根源
Oracle默认会把未用双引号包裹的用户名自动转为大写存储,但如果创建用户时是用双引号指定的小写(比如CREATE USER "myconnection" ...),那么用户名会以小写形式存入数据库。直接用大写或无引号的小写执行解锁命令,数据库匹配不到对应的用户,就会抛出ORA-01918错误。
解决步骤
确认用户是否存在
执行以下查询验证小写用户的存在性:SELECT username FROM dba_users WHERE username = 'myconnection';也可以用更通用的写法规避大小写干扰:
SELECT username FROM dba_users WHERE LOWER(username) = 'myconnection';执行正确的解锁命令
必须用英文半角双引号包裹小写用户名,执行解锁操作:ALTER USER "myconnection" ACCOUNT UNLOCK;验证解锁结果
执行以下语句确认用户状态已变为解锁:SELECT username, account_status FROM dba_users WHERE username = 'myconnection';
额外注意事项
- Oracle 11g默认
SEC_CASE_SENSITIVE_LOGON参数为TRUE,开启大小写敏感认证,但用户名存储规则始终是:无引号的用户名自动转大写,带双引号的保留原大小写。 - 后续登录该用户时,同样需要用双引号包裹用户名,例如:
sqlplus "myconnection"/your_password@your_database
内容的提问来源于stack exchange,提问作者Stack.Flow
相关产品推荐
相关产品推荐

