Oracle 19c中ORA-01017登录拒绝问题求助
ORA-01017: 用户名/密码无效;登录被拒绝 问题排查
问题场景
在Oracle 19c中执行以下操作后,无法登录用户:
- 通过
sqlplus / as sysdba登录数据库 - 创建用户:
create user "c##keyan" identified by "keyan123";
- 授予权限:
grant connect to "c##keyan"; grant dba to "c##keyan"; grant resource to "c##keyan"; grant create session to "c##keyan";
- listener.ora配置:
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = ORCL) (ORACLE_HOME = H:\WINDOWS.X64_193000_db_home) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = ORCL) (ORACLE_HOME = H:\WINDOWS.X64_193000_db_home) ) )
- tnsnames.ora配置:
ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )
执行sqlplus c##keyan/keyan123@//localhost:1521/orcl时触发ORA-01017: invalid username/password; logon denied错误。
核心原因
创建用户时使用双引号包裹了用户名"c##keyan"和密码"keyan123",Oracle会将其视为区分大小写的标识符。而登录时直接输入c##keyan/keyan123,Oracle会自动将其转换为大写C##KEYAN/KEYAN123,与数据库中存储的大小写敏感的用户名/密码不匹配,导致登录失败。
解决方法
方法1:登录时使用双引号包裹标识符
执行以下命令登录,确保用户名和密码的大小写与创建时一致:
sqlplus "c##keyan"/"keyan123"@//localhost:1521/orcl
方法2:重新创建不区分大小写的用户
如果不需要大小写敏感的用户名/密码,创建时去掉双引号(Oracle默认会将标识符转换为大写存储):
-- 先删除原用户(如果需要) drop user "c##keyan" cascade; -- 创建不区分大小写的用户 create user c##keyan identified by keyan123; -- 重新授予权限 grant connect, dba, resource, create session to c##keyan;
此时登录时输入c##keyan/keyan123或C##KEYAN/KEYAN123均可正常登录。
额外验证步骤
- 检查远程登录密码文件配置:
确保参数值为show parameter remote_login_passwordfile;EXCLUSIVE或SHARED,若不是则修改后重启数据库:alter system set remote_login_passwordfile=EXCLUSIVE scope=spfile; shutdown immediate; startup; - 确认监听器状态正常:
执行lsnrctl status,检查ORCL服务是否已成功注册。
内容的提问来源于stack exchange,提问作者Keyan
相关产品推荐
相关产品推荐

