在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] ”
一文。
分享到:
相关推荐
Oracle数据库不同版本间的客户端与服务端的连接问题通常涉及到安全和兼容性配置,这篇文章主要讲述了在Oracle 11g R2客户端尝试连接Oracle 19c服务端时,遇到了两个特定的错误:ORA-28040和ORA-01017,以及如何解决...
然而,在日常运维过程中,我们可能会遇到各种错误,比如“ORA-00702”就是其中之一。这个错误通常在尝试重启Oracle数据库服务时出现,意味着数据库实例在启动过程中遇到了问题。本文将详细介绍如何在Windows和Linux...
在实际工作中,遇到Oracle错误时,除了直接解决错误外,还需要了解错误的根本原因,以防止类似问题的再次发生。定期检查数据库健康状况,优化归档策略,以及及时更新和备份数据库都是维护数据库稳定运行的关键措施。
oracle12c程序连接时异常: ORA-01017: 用户名/口令无效; 登录被拒绝 的解决方案。
### ora-01033: Oracle Initialization or Shutdown in Progress 解决方法 #### 一、问题背景及原因 **标题**: “ora-01033: Oracle initialization or shutdown in progress 解决方法” **描述**: “ora-01033: ...
### 远程登录并启动Oracle数据库及解决ORA-01031问题 #### 引言 在Oracle数据库管理过程中,远程登录与启动数据库是非常重要的操作之一。这不仅能够提高数据库管理员的工作效率,还能帮助他们更好地监控和维护...
使用conn / as sysdba进入数据库,报错ORA-01031: insufficient privileges
- 使用`sqlplus`工具登录数据库,首先以管理员身份运行命令`sqlplus / as sysdba`。 - 关闭数据库:`shutdown normal`,等待数据库完全关闭。 - 启动数据库至挂载状态:`startup mount`。 - 数据库恢复:`...
- 首先,需要以具有足够权限的用户身份登录到Oracle数据库。例如,使用`sys`用户并以`SYSDBA`角色登录: ```sql SQL> Conn / as sysdba; 已连接。 ``` 2. **创建ACL** - 使用`DBMS_NETWORK_ACL_ADMIN.CREATE_...
在Oracle数据库管理与维护的过程中,遇到各种错误代码是家常便饭,其中“ORA-227101”错误虽然在题目中被误标,实际案例中展示的是“ORA-27101”错误,这是一个较为常见的问题,通常发生在数据库服务未能正确启动或...
- 使用sys用户身份以sysdba模式登录到SQL*Plus。 ```sql conn sys/oracle@orcl as sysdba ``` 2. **创建新的数据文件**: - 首先创建一个新的数据文件来替代原来的MIS.DBF文件。 ```sql alter database ...
使用命令 `C:\>sqlplus "/as sysdba"` 进入 SQL*Plus 并以 sysdba 身份登录,从而获得最高权限进行数据库管理操作。 3. **执行数据库关闭与重启** - 使用 `SQL>shutdown immediate` 命令立即关闭数据库。如果...
### ORA-01033 Oracle 初始化或关闭进行中错误解决方案 在处理数据库系统时,遇到ORA-01033错误是一个常见的问题,尤其是对于Oracle数据库的管理员和技术人员而言。这一错误通常出现在数据库初始化或关闭的过程中,...
在使用Oracle数据库进行数据泵导出操作(expdp)时,可能会遇到错误ORA-39002和ORA-39070。ORA-39002通常表示遇到了无效的操作,而ORA-39070则指出无法打开日志文件。这两个错误通常会伴随其他错误信息,如ORA-29283...
当使用SYSDBA模式登录Oracle数据库时,实际上是在告诉数据库服务器:“我是以系统管理员的身份登录,请赋予我最高权限。”这种方式并不需要提供具体的用户名和密码,而是利用操作系统(OS)级别的身份验证机制来确认...
首先,使用 sqlplus 工具以 sysdba 权限连接到数据库: sqlplus / as sysdba; 然后,启动数据库到 mount 状态: SQL>startup mount; 接下来,查询当前数据库的日志文件信息: SQL>select * from v$log; 从查询...
### ORACLE 11G导入到10G的命令 #### 概述 在Oracle数据库管理系统中,有时候需要将一个版本的数据迁移到另一个版本中,例如从Oracle 11G迁移到10G。这种迁移可能涉及到数据兼容性、结构差异等问题。本文将详细...
3. **再次尝试登录Oracle**:重新登录后,使用SQL*Plus工具以`/as sysdba`的方式尝试登录数据库,此时应该不会再收到权限不足的错误。 #### 总结 通过上述案例分析,我们可以了解到当遇到Oracle登录权限不足的问题...
在Oracle数据库中,`SYSDBA`是一种特殊的权限,允许用户以系统管理员的身份连接到数据库。拥有此权限的用户可以执行一系列高级管理任务,例如启动和关闭数据库实例、管理用户权限等。默认情况下,`SYS`用户拥有`...
1. **以SYSDBA身份登录**:使用`sqlplus "/as sysdba"`命令启动SQL*Plus。 2. **限制模式启动数据库**:运行`startup restrict`命令以限制模式启动数据库,这将阻止用户连接,确保在验证和重编译期间不会干扰其他...