在linux 操作系统的数据库服务器上,使用”sqlplus / as sysdba” 登录Oracle 10.2 数据库实例时,登录失败,显示ORA-01031:  权限不足。

在数据库所在服务器上登录的操作,使用的是操作系统认证方式登录数据库实例。在出现“ORA-01031 “ 的错误错误时,首先去检查sqlnet.ora 文件中SQLNET.AUTHENTICATION_SERVICES 项的配置信息。这种分析是被很多人推荐,在互联网上也有很多帖子都提及到。

大致得到的结论是:

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

2 、在linux 下,在SQLNET.AUTHENTICATION_SERVICES 的值设置为ALL ,或者不设置的情况下,OS 验证才能成功;设置为其他任何值都不能使用OS 认证。

首先肯定一点,这种分析方法是没有错的。我在碰到这种问题时,首先去分析的也是这个文件的配置。

但在本案例中,sqlnet.ora 文件的内容如下:

[oracle@mikitradedb1 ~]$ more /u01/app/oracle/product/10.0.2/db_1/network/admin/sqlnet.ora

# sqlnet.ora Network Configuration File: /u01/app/oracle/product/10.0.2/db_1/network/admin/sqlnet.ora

# Generated by Oracle configuration tools.

NAMES.DIRECTORY_PATH= (TNSNAMES)

你会不会认为,还要坚持实例的初始化参数remote_login_passwordfile ,还有密码文件。而这两点是在异地服务器上使用sysdba 身份登录数据库实例时才会用到,现在情况是在本地数据库服务器上登录数据库实例。

(miki 西游 @mikixiyou 原文链接: mikitp://mikixiyou.iteye.com/blog/1584891 )

再分析一下操作系统用户登录操作系统后再访问数据库实例的行为。

使用sysdba 身份连接数据库实例,使用的认证方式是操作系统认证,而这一认证操作过程是操作系统根据它管理的信息去校验该用户是否可以连接数据库的过程。

因此,需要进一步分析的是,操作系统如果判断oracle 用户符合认证条件。很显然,我们这里的oracle 用户的权限被操作系统或者oracle 系统拒绝了。

Oracle 认为,需要满足下列条件的用户才能使用系统认证方式连接数据库实例。

1 、系统用户oracle 必须属于一个特定的组

该用户必须属于OSDBA 组才能以sysdba 身份登录。这里的OSDBA 组在不同类型的操作系统上,名称会不一样。在unix 系统上名称为“dba ” ,而在windows 系统上名称则为“ORA_DBA ” 。

2 、 sqlnet.authentication_services 的参数必须设置正确

在unix 系统上,该参数值必须设置为ALL ,或者不设置;在windows 上,它必须设置为NTS 。

我们回到环境中去检查系统用户oracle 的所属组的情况。

[oracle@mikitradedb1 ~]$ id oracle

uid=501(oracle) gid=501(oinstall) groups=501(oinstall)

发现该用户只属于oinstall ,而没有dba 。

因此,我们在root 环境下使用usermod 对该用户进行调整。如下所示:

[root@mikitradedb1 ~]# usermod -G oinstall,dba -g oinstall oracle

[root@mikitradedb1 ~]# id oracle

uid=501(oracle) gid=501(oinstall) groups=501(oinstall),503(dba)

再次验证sysdba 身份登录操作,如下所示:

[root@mikitradedb1 ~]# su - oracle

[oracle@mikitradedb1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Wed Jul 11 09:47:50 2012

Copyrigmiki (c) 1982, 2007, Oracle.   All Rigmikis Reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

结果显示已经是登录成功,问题就在oracle 用户没有在dba 组中。

总而言之,在本地以sysdba 身份登录数据库实例时,碰到ORA-01031 权限不足的错误,需要系统用户所在的组是否有dba 和sqlnet.ora 文件中sqlnet.authentication_services 是否配置正确。

如果还有问题,还有一种方法可以继续分析。使用操作系统分析工具对sqlplus 应用进行分析。

Linux: 
strace -o /tmp/strace_sysdba.output -cfT sqlplus / as sysdba

AIX, Solaris: 
truss -fea -o /tmp/truss_sysdba.output sqlplus / as sysdba

HP-UX: 
tusc -afpo /tmp/tusc_sysdba.output -aef sqlplus / as sysdba

分析工具使用方法可以参考mikitp://mikixiyou.iteye.com/admin/blogs/1489090

根据分析内容,可以进一步判断问题所在。

本文主要参考资料为Oracle 的“Troubleshooting ORA-1031: Insufficient Privileges While Connecting As SYSDBA [ID 730067.1] ” 一文。

转载于:https://www.cnblogs.com/zhangkaimin/p/3997729.html

以sysdba身份登录oracle报ORA-1031权限不足错误之完美分析相关推荐

  1. linux环境下登录ORACLE 报ORA-12547: TNS:lost contact错误

    1.sqlplus / as sysdba 登录数据库报ora-12574 2.切换oracle 用户----> su oracle user/password (此处为oracle用户的用户名 ...

  2. 新版本eclipse Neon 4.6.1,登录git报401 没有权限

    新版本eclipse Neon 4.6.1,登录git报401 没有权限 经过查找原因竟然是新的eclipse需要进行update.比较坑,新版eclipse竟然需要先更新一下才能用! eclipse ...

  3. 本机未装Oracle数据库时Navicat for Oracle 报错:Cannot create oci environment 原因分析及解决方案

    本机未装Oracle数据库时Navicat for Oracle 报错:Cannot create oci environment 原因分析及解决方案 参考文章: (1)本机未装Oracle数据库时N ...

  4. mysql ora01031_本地以sysdba 身份登录数据库实例时,报错ORA-01031 权限不足

    在linux 操作系统的数据库服务器上,使用"sqlplus / as sysdba" 登录Oracle 10.2 数据库实例时,登录失败,显示ORA-01031:  权限不足. ...

  5. Oracle 报ora 12541 12560

    问题描述,收到反馈Oracle用户登录时提示ora12541,no listener错误. 远程连接后,发现plsql之前登录的都能正常使用,查询都是正常的,但是如果新增加一个用户登录就会提示ora1 ...

  6. php js 报错信息,JavaScript中错误异常的分析(附示例)

    本篇文章给大家带来的内容是关于JavaScript中错误异常的分析(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 我的建议是不要隐藏错误,勇敢地抛出来.没有人会因为代码出现 ...

  7. Oracle报错1031,dataguard 归档日志报1031错误的一次处理

    oracle rac dataguard 归档日志报1031错误  操作系统 red  hat5.4  oracle 10.2.0.5 rac日志报错如下 Tue Jun 21 15:33:16 CS ...

  8. oracle sys dba 01031,SYS用户登录Oracle报错ORA-01031: insufficient privileges

    今天,自己写了一个脚本在测试环境运行脚本的时候,导致数据库异常的宕掉之后,然后重新连接就出现了下面的问题,下面是场景还原与解决的过程: [oracle@seiang ~]$ sqlplus / as ...

  9. sqlplus 登录oracle 报ERROR: ORA-01034:ORACLE not available ORA-27101:shared memory realm does not exit

    1 先看oracle的监听和oracle的服务是否都启动了.启动oracle监听: cmd的命令行窗口下,输入lsnrctl start,回车即启动监听. 2 查看oracle的sid叫什么,比如创建 ...

最新文章

  1. Samba amp; Nginx - Resource temporarily unavailable
  2. 可视化深度学习模型的训练误差和验证误差
  3. 获取邮箱通讯录,msn好友列表的C#源码
  4. 如何在python中找到两个日期时间对象之间的时差?
  5. mini mp3模块 输出_小米有品众筹魔方mini电脑主机
  6. linux fedora安装、运行mybase7.3.5报错:error while loading shared libraries: libpng12.so.0
  7. iOS之仿QQ点赞按钮粒子效果的实现
  8. cas 4.2.7 官方手册_海城市地区,保险手册核验的简单流程
  9. 2019数据技术嘉年华·金融峰会6月28日落地深圳,参会的六大理由
  10. C++函数使用规范建议
  11. 目标检测(七)--Fast R-CNN
  12. bbs小项目整理(六)(消息发布)
  13. 数学建模_混合赌博模型
  14. 计算机怎么用函数算出成绩自评,SPSSAU一众新功能上线:高级公式、综合得分一键计算!...
  15. S3C2440 由ADS移植到 RealView MDK kile4
  16. opengl win32窗口的建立
  17. SAP FI 科目代码
  18. Egret的eui的使用
  19. Oracle基础包之DBMS_RLS(八)
  20. ORACLE中dual的详解及其故障恢复

热门文章

  1. html 怎么播放avi视频,iPhone4S视频格式播放巧用苹果转换器
  2. flutter-webview的坑用到第三方插件的
  3. Mac OS X 10.9.3 Beta 8升级教程
  4. wegame饥荒一直连接中_23万人捧场热血传奇怀旧版,WeGame拯救计划,前景如何?...
  5. 计算机类和鼠标类是什么关系,常见鼠标的种类
  6. java dicom cmove_关于dcm4che DICOM Toolkit:C-Move与C-Get
  7. 查看TensorFlow的版本和路径
  8. Steve J. Luck推出最新ERPs独家视频课程
  9. APK在AndroidManifest.xml常用权限总结
  10. 机器狗背上枪成了无人杀手,6.5mm口径1200米射程,制造商已与美澳军队广泛合作...