`
mikixiyou
  • 浏览: 1098960 次
  • 性别: Icon_minigender_1
  • 来自: 南京
博客专栏
C3c8d188-c0ab-3396-821d-b68331e21226
Oracle管理和开发
浏览量:353148
社区版块
存档分类
最新评论

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

阅读更多

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] ” 一文。

 

 

分享到:
评论
1 楼 zealotpz 2014-02-26  
不错,原来是用户oracle 的所属组的问题

相关推荐

    Oracle 11gr2连Oracle 19c 报ORA-28040 ORA-01017解决方法.pdf

    Oracle数据库不同版本间的客户端与服务端的连接问题通常涉及到安全和兼容性配置,这篇文章主要讲述了在Oracle 11g R2客户端尝试连接Oracle 19c服务端时,遇到了两个特定的错误:ORA-28040和ORA-01017,以及如何解决...

    oracle重启报错ORA-00702解决办法

    然而,在日常运维过程中,我们可能会遇到各种错误,比如“ORA-00702”就是其中之一。这个错误通常在尝试重启Oracle数据库服务时出现,意味着数据库实例在启动过程中遇到了问题。本文将详细介绍如何在Windows和Linux...

    oracle错误ora-00257解决办法

    在实际工作中,遇到Oracle错误时,除了直接解决错误外,还需要了解错误的根本原因,以防止类似问题的再次发生。定期检查数据库健康状况,优化归档策略,以及及时更新和备份数据库都是维护数据库稳定运行的关键措施。

    oracle12c ORA-01017: 用户名/口令无效; 登录被拒绝 解决方案

    oracle12c程序连接时异常: ORA-01017: 用户名/口令无效; 登录被拒绝 的解决方案。

    ora-01033:oracle initialization or shutdown in progress 解决方法

    ### ora-01033: Oracle Initialization or Shutdown in Progress 解决方法 #### 一、问题背景及原因 **标题**: “ora-01033: Oracle initialization or shutdown in progress 解决方法” **描述**: “ora-01033: ...

    远程登录并启动oracle数据库 解决ORA-01031

    ### 远程登录并启动Oracle数据库及解决ORA-01031问题 #### 引言 在Oracle数据库管理过程中,远程登录与启动数据库是非常重要的操作之一。这不仅能够提高数据库管理员的工作效率,还能帮助他们更好地监控和维护...

    ora-01031禁止操作系统集成的身份验证方式

    使用conn / as sysdba进入数据库,报错ORA-01031: insufficient privileges

    解决ORA-01033 ORACLE 正在初始化或关闭

    - 使用`sqlplus`工具登录数据库,首先以管理员身份运行命令`sqlplus / as sysdba`。 - 关闭数据库:`shutdown normal`,等待数据库完全关闭。 - 启动数据库至挂载状态:`startup mount`。 - 数据库恢复:`...

    如何解决ORACLE11G里面ORA-24247 网络访问被访问控制列表 (ACL) 拒绝 错误

    - 首先,需要以具有足够权限的用户身份登录到Oracle数据库。例如,使用`sys`用户并以`SYSDBA`角色登录: ```sql SQL> Conn / as sysdba; 已连接。 ``` 2. **创建ACL** - 使用`DBMS_NETWORK_ACL_ADMIN.CREATE_...

    ora-227101错误解决办法

    在Oracle数据库管理与维护的过程中,遇到各种错误代码是家常便饭,其中“ORA-227101”错误虽然在题目中被误标,实际案例中展示的是“ORA-27101”错误,这是一个较为常见的问题,通常发生在数据库服务未能正确启动或...

    离线误删空间文件导致的ORA-01033及ORA-01145问题的解决办法

    - 使用sys用户身份以sysdba模式登录到SQL*Plus。 ```sql conn sys/oracle@orcl as sysdba ``` 2. **创建新的数据文件**: - 首先创建一个新的数据文件来替代原来的MIS.DBF文件。 ```sql alter database ...

    ora-01033错误解决方法

    使用命令 `C:\>sqlplus "/as sysdba"` 进入 SQL*Plus 并以 sysdba 身份登录,从而获得最高权限进行数据库管理操作。 3. **执行数据库关闭与重启** - 使用 `SQL>shutdown immediate` 命令立即关闭数据库。如果...

    ORA-01033ORACLE错误解决

    ### ORA-01033 Oracle 初始化或关闭进行中错误解决方案 在处理数据库系统时,遇到ORA-01033错误是一个常见的问题,尤其是对于Oracle数据库的管理员和技术人员而言。这一错误通常出现在数据库初始化或关闭的过程中,...

    expdp 中ORA-39002、ORA-39070错误详解及解决办法

    在使用Oracle数据库进行数据泵导出操作(expdp)时,可能会遇到错误ORA-39002和ORA-39070。ORA-39002通常表示遇到了无效的操作,而ORA-39070则指出无法打开日志文件。这两个错误通常会伴随其他错误信息,如ORA-29283...

    Oracle用sysdba登录问题

    当使用SYSDBA模式登录Oracle数据库时,实际上是在告诉数据库服务器:“我是以系统管理员的身份登录,请赋予我最高权限。”这种方式并不需要提供具体的用户名和密码,而是利用操作系统(OS)级别的身份验证机制来确认...

    解决启动数据库时ORA-03113问题

    首先,使用 sqlplus 工具以 sysdba 权限连接到数据库: sqlplus / as sysdba; 然后,启动数据库到 mount 状态: SQL>startup mount; 接下来,查询当前数据库的日志文件信息: SQL>select * from v$log; 从查询...

    ORACLE 11G导入到10G的命令

    ### ORACLE 11G导入到10G的命令 #### 概述 在Oracle数据库管理系统中,有时候需要将一个版本的数据迁移到另一个版本中,例如从Oracle 11G迁移到10G。这种迁移可能涉及到数据兼容性、结构差异等问题。本文将详细...

    ORACLE DBMS STATS ERROR

    1. **以SYSDBA身份登录**:使用`sqlplus "/as sysdba"`命令启动SQL*Plus。 2. **限制模式启动数据库**:运行`startup restrict`命令以限制模式启动数据库,这将阻止用户连接,确保在验证和重编译期间不会干扰其他...

    oracle登录报错案例分析

    3. **再次尝试登录Oracle**:重新登录后,使用SQL*Plus工具以`/as sysdba`的方式尝试登录数据库,此时应该不会再收到权限不足的错误。 #### 总结 通过上述案例分析,我们可以了解到当遇到Oracle登录权限不足的问题...

    oracle sysdba 密码解释

    在Oracle数据库中,`SYSDBA`是一种特殊的权限,允许用户以系统管理员的身份连接到数据库。拥有此权限的用户可以执行一系列高级管理任务,例如启动和关闭数据库实例、管理用户权限等。默认情况下,`SYS`用户拥有`...

Global site tag (gtag.js) - Google Analytics