oracle包写入程序失败_ORA-1031权限不足 TNS-12571包写入程序失败

在windown 操作系统的数据库服务器上,使用“sqlplus  / as sysdba" 登录11.2.0.1数据库,显示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 文件的修改内容如下:

SQLNET.AUTHENTICATION_SERVICES = NONE 改为SQLNET.AUTHENTICATION_SERVICES = NTS就可以了。

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

总之:修改了sqlnet.ora文件的参数,就可以正常连接,不报错了。

问题又来了,sqlplus跟服务名,又不能连接了。于是开始检查监听,TNS文件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值