日期:2014-05-16  浏览次数:20696 次

ORA-12571:信息包写入错误

Oracle中关于该参数的解释:

?

SQLNET.AUTHENTICATION_SERVICES


Purpose

Use the parameter SQLNET.AUTHENTICATION_SERVICES to enable one or more authentication services. If authentication has been installed, it is recommended that this parameter be set to either none or to one of the authentication methods.


Default
None

?

Values
Authentication Methods Available with Oracle Net Services:

?

* none? for no authentication methods. A valid username and password can be used to access the database.
* all? ?for all authentication methods
* nts?? for Windows NT native authentication

?

Windows NT native authentication

An authentication method that enables a client single login access to a Windows NT server and a database running on the server.


An authentication method that enables a client single login access to a Windows NT server and a database running on the server.

?

从oracle的解释可以知道,SQLNET.AUTHENTICATION_SERVICES=(NTS)是WINDOWS系统专用的,对linux/UNIX是不适用的。个人猜测NTS应该指NT Server.

?

测试: 设置SQLNET.AUTHENTICATION_SERVICES=(ALL)?时

?

C:\Documents and Settings\Administrator>sqlplus /nolog

SQL*Plus: Release 10.1.0.2.0 - Production on 星期四 7月 23 15:33:18 2009

Copyright (c) 1982, 2004, Oracle.? All rights reserved.

SQL> connect / as sysdba;
ERROR:
ORA-12641: 验证服务无法初始化

?

?

一个简单的总结:
1、在windows下,SQLNET.AUTHENTICATION_SERVICES必须设置为NTS或者ALL(10.2版本好像可以,未测试,10.1 版本设置为ALL无法通过OS认证,显示ORA-12641: 验证服务无法初始化)才能使用OS认证;不设置或者设置为其他任何值(包括NONE)都不能使用OS认证。


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

?

Windows2000 环境下 System 文件坏掉了,不能启动,修复以后机器是启动了,但发现原来的 Oracle 服务都不见了,也没有什么重要的数据,就重装了一遍,装完以后一切正常,连接 Oracle 正常,重启动机器以后发现连接 Oracle 出现错误: ORA-12571 TNS 包写入程序失败。用 SQLPLUS /NOLOG 也不能正常连接,报 ORA-03113 错误。

?

解决办法:

打开 ora92\network\admin\sqlnet.ora

将参数 SQLNET.AUTHENTICATION_SERVICES= (NTS) 改为 :

SQLNET.AUTHENTICATION_SERVICES= (NONE)

即可成功解决这个问题 . 这个问题导致原因很多 .

?

原因分析:

我的情况估计是由于域 (NAMES.DEFAULT_DOMAIN) 在系统恢复的时候出错了,具体是什么至今没有搞清楚 但是解决办法倒是被我搞定。操作系统大概真的需要重装一遍了,