ITPub博客

首页 > 数据库 > Oracle > ORACLE在“域”上的问题【转】

ORACLE在“域”上的问题【转】

原创 Oracle 作者:pcsh 时间:2009-11-23 17:14:11 0 删除 编辑

查看G:oracle10.2.0NETWORKADMINsqlnet.ora文件内容如下:

# sqlnet.ora Network Configuration File: #G:oracle10.2.0NETWORKADMINsqlnet.ora
# Generated by Oracle configuration tools.

# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES=(NONE)

SQLNET.AUTHENTICATION_SERVICES 参数解释:数据库的认证方式:

一种是操作系统认证方式;一种是密码文件认证方式.

sqlnet.ora文件中的:SQLNET.AUTHENTICATION_SERVICES= (NTS/NONE)
NTS:
操作系统认证
NONE:
口令文件认证

NTS:操作系统认证表示只要你登陆到操作系统上的OS用户在ORA_DBA GROUP里,你不需要SYSDBA的密码就可以直接登陆,直接在cmd里运行
sqlplus "/as sysdba"
即可以以SYSDBA身份登陆数据库。

NONE:口令文件认证表示你不能登陆到OS上,但是通过如下方法后可以以SYSDBA身份登登陆数据库系统里:建立passwordfile密码文件,确保REMOTE_PASSWORDFILE = EXCLUSIVE.这样就可以通过ORACLE客户端sqlplussys/password@tnsnameas sysdba以SYSDBA身份登陆到数据库系统里。

为了确保rman备份工具能通过os认证登陆到数据库系统,修改G:oracle10.2.0NETWORKADMINsqlnet.ora文件内容
SQLNET.AUTHENTICATION_SERVICES=(NONE)
改为:
SQLNET.AUTHENTICATION_SERVICES=(NTS)

这样ORACLE的本地OS认证就没问题了,RMAN也能直接通过OS认证登陆数据库进行备份(不需要提供数据库密码)。

但是由于数据库client机c1跟数据库服务器db1(开文档开头环境说明)不在同一个域,C1库连接数据库时报ora-12638 身份证明检索失败的错误。查看client机c1的G:oracle10.2.0NETWORKADMINsqlnet.ora文件内容如下:
SQLNET.AUTHENTICATION_SERVICES= (NTS)

查看METALINK后ORACLE官方提供的解决方法如下:修改客户端G:oracle10.2.0NETWORKADMINsqlnet.ora文件内容
SQLNET.AUTHENTICATION_SERVICES= (NTS)
为
SQLNET.AUTHENTICATION_SERVICES= (NONE)

问题解决。

Oracle 解释如下:
Either create trust between the two domains or change the client or
server
SQLNET.AUTHENTICATION_SERVICES such that NTS in not negotiated in the connection handshake.
NTS is only negotiated if both client and server have SQLNET.AUTHENTICATION_SERVICES
set to NTS.

i.e. SQLNET.AUTHENTICATION_SERVICES=NONE

总结如下:
Site(A, Server)
Windows 2003(处于DR1域中), oracle9206(opatch5)
Site(B, Client) windows
环境(2000,2003,处于DR2域中),oracle 数据库或客户端

Site(A),Site(B) 的oraclenetworkadmin目录下都有文件sqlnet.ora该文件中都有这一项 SQLNET.AUTHENTICATION_SERVICES= (NTS)

现象1、当Site(B)以域domain (此域不同于site(A)的域)身份登录机器时,并且Site(A),Site(B) 中的sqlnet.ora 都有这一项 SQLNET.AUTHENTICATION_SERVICES=(NTS) 时,则会出现:

SQL> connectUSERNAME/PASSWORD@TNSNAME
ERROR:
ORA-12638: Credential retrieval failed


Warning: You are no longer connected to ORACLE.
SQL>

现象2(接上)、此时,若把客户端Site(B) 的 sqlnet.ora文件中的这一项 SQLNET.AUTHENTICATION_SERVICES 被注释掉
#SQLNET.AUTHENTICATION_SERVICES= (NTS)
或 SQLNET.AUTHENTICATION_SERVICES= (NONE),则均可以正常连接数据库
SQL> connect
USERNAME/PASSWORD@TNSNAME
Connected.

现象3、当客户端Site(B)以本机身份登录时,则不论 Site(B) 的 sqlnet.ora文件中的这一项 SQLNET.AUTHENTICATION_SERVICES = (NTS) 还是被注释掉
#SQLNET.AUTHENTICATION_SERVICES= (NTS)
或 SQLNET.AUTHENTICATION_SERVICES= (NONE),均可以正常连接数据库
SQL> connect
USERNAME/PASSWORD@TNSNAME
Connected.

原因:Site(A)与Site(B)为不同的域,并且Site(A),Site(B)都采用操作系统认证(NTS)方式,则需要双方建立信任关系,要不就一方不采用(NTS)认证。如:
SQLNET.AUTHENTICATION_SERVICES=NONE
或
#SQLNET.AUTHENTICATION_SERVICES=NTS

解决方法:
1
、对两个域建信任关系(没测试此方法)。
2
、数据库或客户端的sqlnet.ora 中的 SQLNET.AUTHENTICATION_SERVICES=(NONE)或被注释掉 #SQLNET.AUTHENTICATION_SERVICES。

[@more@]无

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/13442480/viewspace-1028973/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: ORACLE登陆包描述
下一篇: 专
请登录后发表评论 登录
全部评论

注册时间:2012-01-30

  • 博文量
    78
  • 访问量
    2137282