我本机的Orace数据库有段时间没用了,今天登录时竟然报错:
C:/>sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.1.0 - Production on Wed Dec 7 15:22:18 2005
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
ERROR:
ORA-01041: internal error. hostdef extension doesn't exist
改用passwordfile认证:
C:/>sqlplus "sys/manager as sysdba"
SQL*Plus: Release 9.2.0.1.0 - Production on Wed Dec 7 16:53:01 2005
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
ERROR:
ORA-03113: end-of-file on communication channel
网上baigoo一下,看到这个帖子( http://www.cnoug.org/viewthread.php?tid=62619)很受启发,
9楼发现登录本机没有问题,但登录域则出现上述问题,解决办法就是当登录域时,
修改sqlnet.ora,去掉OS认证方式。
我的情况正是如此,最近由于公司管理的需要,所有机器都改为登录域。
我把sqlnet.ora中的参数SQLNET.AUTHENTICATION_SERVICES= (NTS)注释掉或改值为NONE,再登录,都能成功。
我也测试了另一种情况,即保留参数设置不变,注销OS用户然后登录本机,再连接数据库,成功。
至此,可以确认此现象与OS用户的认证方式有关。在登录域的情况下,OS的用户认证已移交给域服务器完成,而数据库的网络服务不能识别这一点,至于能否通过配置实现域认证,我还没找到相关论述,正在研究中。