ORA-01017: invalid username/password; logon denied

现场在数据库linux服务器上
sqlplus / as sysdba
ERROR:
ORA-01017: invalid username/password; logon denied

可能与下列两个参数有关
1.remote_login_passwordfile = none | exclusive |shared  位于$ORACLE_HOME/dbs/spfile$ORACLE_SID.ora参数文件中
  none : 不使用密码文件认证
  exclusive :要密码文件认证,自己独占使用(默认值)
  shared :要密码文件认证,不同实例dba用户可以共享密码文件
 
2. $ORACLE_HOME/network/admin/sqlnet.ora 
  SQLNET.AUTHENTICATION_SERVICES = none | all | ntf(windows)
  none : 表示关闭操作系统认证,只能密码认证
  all : 用于linux或unix平台,关闭本机密码文件认证,采用操作系统认证,但远程<异机>可以使用密码文件认证
  nts : 用于windows平台
  
show parameter remote_login_passwordfile 为none的话,要改为EXCLUSIVE
还与SQLNET.AUTHENTICATION_SERVICES这个参数有关。

在公司内部机器上的linux做了一个实验:
show parameter remote_login_passwordfile 为EXCLUSIVE,说明与这个参数没有关系。

确认$ORACLE_HOME/network/admin/sqlnet.ora中,没有SQLNET.AUTHENTICATION_SERVICES这个参数的配置。
当配置SQLNET.AUTHENTICATION_SERVICES = none的时候,重现了不能登陆的问题。
当配置SQLNET.AUTHENTICATION_SERVICES = ALL的时候,可以登陆。

到现场配置:
$ORACLE_HOME/network/admin/sqlnet.ora 中配置SQLNET.AUTHENTICATION_SERVICES = ALL,发现还是不能登陆。
使用strace调试
[oracle@DB ~]$ strace sqlplus / as sysdba
看到这一段:
access("/oracle/product/11.2.0.4/dbhome_1/network/admin/sqlnet.ora", F_OK) = 0
open("/oracle/product/11.2.0.4/dbhome_1/network/admin/sqlnet.ora", O_RDONLY) = 6
fcntl(6, F_SETFD, FD_CLOEXEC)           = 0
fstat(6, {st_mode=S_IFREG|0644, st_size=246, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fc83c985000
read(6, "# sqlnet.ora Network Configurati"..., 4096) = 246
read(6, "", 4096)                       = 0
close(6)                                = 0

munmap(0x7fc83c985000, 4096)            = 0
access("/home/oracle/.sqlnet.ora", F_OK) = 0
open("/home/oracle/.sqlnet.ora", O_RDONLY) = 6
fcntl(6, F_SETFD, FD_CLOEXEC)           = 0
fstat(6, {st_mode=S_IFREG|0777, st_size=38, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fc83c985000
read(6, "SQLNET.AUTHENTICATION_SERVICES=("..., 4096) = 38
read(6, "", 4096)                       = 0
close(6)   
  
    神奇了,有/home/oracle/.sqlnet.ora这一个文件,里面配置的内容是SQLNET.AUTHENTICATION_SERVICES = none,改为ALL之后,sqlplus / as sysdba可以登陆了。问题解决了,但为什么会加载.sqlnet.ora这个文件,完全没有搞懂。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值