解决Oracle ORA-01031、ORA-12560、ORA-28000、ORA-12638

在使用Oracle数据库过程中经常会遇一些报错,方便以后遇到可以“手起刀落”,在此做个汇总,所有的解决方案都是“亲测可用”,但不排除还有其他解决方案, 此篇博客也会随着问题出现解决一直更新!


   ORA-01031

问题场景:在sqlplus中使用conn / as sysdba;登录时报“ORA-01031: insufficient privileges”的错误!

问题原因:

1、在windows下,SQLNET.AUTHENTICATION_SERVICES必须设置为NTS或者ALL才能使用OS认证;不设置或者设置为其他任何值都不能使用OS认证。

2、使用sysdba 身份连接数据库实例,使用的认证方式是操作系统认证,而这一认证操作过程是操作系统根据它管理的信息去校验该用户是否可以连接数据库的过程?因此,需要进一步分析的是,操作系统判断oracle 用户是否符合认证条件。

解决问题 1 :

在windows中,是通过sqlnet.ora这个文件来实现验证机制控制的。当你装完数据库并用netca创建了监听,就会生成这个文件。通常默认是下面内容:

# This file is actually generated by netca. But if customers choose to 
# install "Software Only", this file won't exist and without the native 
# authentication, they will not be able to connect to the database on NT.

SQLNET.AUTHENTICATION_SERVICES = (None)

SQLNET.AUTHENTICATION_SERVICES = (None)  更改为  SQLNET.AUTHENTICATION_SERVICES = (NTS)后重启监听,再次尝试conn / as sysdba;即显示连接成功;

解决问题 2 :

当我们的sqlnet.ora文件中已经是 SQLNET.AUTHENTICATION_SERVICES = (NTS)了,还是报“ORA-01031: insufficient privileges”的错误!很显然,我们这里的oracle 用户的权限被操作系统或者oracle 系统拒绝了。

在“本地用户和组”里面,将administrator(管理员用户)用户加入到ORA_DBA组里,再登陆数据库:sqlplus   / as sysdba;

大功告成!

 


  ORA-12560

问题场景:数据库正常,实例正常,listener正常,数据库参数也是正常。就是不能sqlplus / as sysdba登录数据库;

问题原因:右键“我的电脑”选择属性,进入高级系统环境变量设置,查看Path路径,发现D:\oracle\product\11.2.0\client_1等路径放到了oracle11g数据库服务路径前面;

解决问题:将数据库服务的路径前置即可解决ORA-12560:TNS:协议适配器错误。

如:更改之前path路径“ D:\oracle\product\11.2.0\client_1;D:\app\app\product\11.2.0\dbhome_1\bin;”,

       更改之后“D:\app\app\product\11.2.0\dbhome_1\bin;D:\oracle\product\11.2.0\client_1;”


  ORA-28000

问题场景:使用账号密码无法登陆数据库;

问题原因: 查看listener.log日志可以查看导致锁用户的ip;查看FAILED_LOGIN_ATTEMPTS设置的值,

select * from dba_profiles

该值表示允许用户登录失败次数,超过设定值即锁定用户;

解决问题:使用conn / as sysdba 登录后解锁锁定的用户;

alter user test(锁定的用户名) account unlock;
commit;

另外!设置FAILED_LOGIN_ATTEMPTS的值:

alter profile default limit FAILED_LOGIN_ATTEMPTS 30; //30表示次数
commit;

 不限次数登陆失败后锁用户配置;

alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;
commit;

  ORA-12638

问题场景:使用账号密码登陆时提示“身份证明检索失败”;

问题原因: 因为Oracle的高级安全性验证导致;

解决问题:开始 -> 程序 -> Oracle -> Configuration and Migration Tools ->
Net Manager→本地→概要文件→Oracle高级安全性→验证→去掉所选方法中的 "NTS";               --2019年7月18日

 

注:文章内有部分内容引用其他博主的解决方法,如有介者请联系本人修改!学而无境,共勉!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值