暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

关于Easy Connect Naming Method连接

原创 黄宸宁 2013-06-24
1304

网上有很多关于Easy Connect Naming Method的文档,但是只是说在sqlnet.ora通过设置NAMES.DIRECTORY_PATH= (EZCONNECT)的方式来实现,这里的sqlnet.ora到底是指的客户端还是服务器端?

通过下面的实验来证明:

服务端主机名为secdb1(192.168.100.25,实例名为PROD),客户端主机名为ora10g

一、在服务器端设置sqlnet.ora,客户端不设置的情况

[oracle@secdb1 admin]$ 
[oracle@secdb1 admin]$ cat sqlnet.ora
NAMES.DIRECTORY_PATH=(tnsnames)
[oracle@secdb1 admin]$


当NAMES.DIRECTORY_PATH=(tnsnames)的时候,是不允许使用简单连接方式的。


客户端未设置sqlnet.ora


[oracle@ora10g admin]$ 
[oracle@ora10g admin]$ ls -lrt sqlnet.ora*
-rw-r--r-- 1 oracle oinstall 32 Jun 24 23:21 sqlnet.ora.bak
[oracle@ora10g admin]$
[oracle@ora10g admin]$


在客户端使用简单连接PROD数据库


[oracle@ora10g admin]$ 
[oracle@ora10g admin]$ ls -lrt sqlnet.ora*
-rw-r--r-- 1 oracle oinstall 32 Jun 24 23:21 sqlnet.ora.bak
[oracle@ora10g admin]$
[oracle@ora10g admin]$ sqlplus system/oracle@192.168.100.25:1521/prod

SQL*Plus: Release 10.2.0.5.0 - Production on Mon Jun 24 23:36:52 2013

Copyright (c) 1982, 2010, Oracle. All Rights Reserved.

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
PROD

SQL>


在客户端通过简单连接可以成功,看来服务器端的sqlnet.ora中的NAMES.DIRECTORY_PATH并未对客户端的简单连接造成影响。


二、客户端设置sqlnet.ora的情况


为了更加有力地证明服务器端的sqlnet.ora中的NAMES.DIRECTORY_PATH对客户端的简单连接无影响,首先还是保留服务器段的sqlnet.ora,内容依然为NAMES.DIRECTORY_PATH=(tnsnames)


在客户端的$ORACLE_HOME/network/admin目录下配置sqlnet.ora


[oracle@ora10g admin]$ 
[oracle@ora10g admin]$ cat sqlnet.ora
NAMES.DIRECTORY_PATH=(tnsnames)
[oracle@ora10g admin]$
[oracle@ora10g admin]$

下面尝试在客户端使用简单连接


[oracle@ora10g admin]$ 
[oracle@ora10g admin]$ sqlplus system/oracle@192.168.100.25:1521/prod

SQL*Plus: Release 10.2.0.5.0 - Production on Mon Jun 24 23:43:11 2013

Copyright (c) 1982, 2010, Oracle. All Rights Reserved.

ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified


Enter user-name:
ERROR:
ORA-01017: invalid username/password; logon denied


Enter user-name:
ERROR:
ORA-01017: invalid username/password; logon denied


SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus
[oracle@ora10g admin]$
[oracle@ora10g admin]$

报ORA-01017错误,看来只有客户端的sqlnet.ora才会对简单连接起到作用。


继续测试,修改客户端的sqlnet.ora并进行测试


[oracle@ora10g admin]$ 
[oracle@ora10g admin]$ cat sqlnet.ora
NAMES.DIRECTORY_PATH= (EZCONNECT)
[oracle@ora10g admin]$
[oracle@ora10g admin]$
[oracle@ora10g admin]$ sqlplus system/oracle@192.168.100.25:1521/prod

SQL*Plus: Release 10.2.0.5.0 - Production on Mon Jun 24 23:45:35 2013

Copyright (c) 1982, 2010, Oracle. All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
PROD

SQL>

修改sqlnet.ora为NAMES.DIRECTORY_PATH= (EZCONNECT)的时候,客户端可以使用简单连接,进一步说明简单连接确实是受客户端的sqlnet.ora影响。


结论:


简单连接的NAMES.DIRECTORY_PATH= (EZCONNECT)只要设置在客户端的sqlnet.ora即可。


注意:


在没有配置sqlnet.ora或则sqlnet.ora为空的时候,是默认允许简单连接的,其根本原因是,默认情况下NAMES.DIRECTORY_PATH的值为hostname,而hostname是允许简单连接的


 


关于NAMES.DIRECTORY_PATCH的说明如下:


NAMES.DIRECTORY_PATH

Purpose

Use the parameter NAMES.DIRECTORY_PATH to specify the order of the naming methods used for client name resolution lookups.

Default

NAMES.DIRECTORY_PATH=(tnsnames, onames, hostname)

Values


Table 5-1 NAMES.DIRECTORY_PATH Values

Naming Method Value
Description

tnsnames (local naming naming method)
Set to resolve a net service name through the tnsnames.ora file on the client.

See Also: Oracle Database Net Services Administrator's Guide

ldap (directory naming naming method)
Set to resolve a database service name, net service name, or net service alias through a directory server.

See Also: Oracle Database Net Services Administrator's Guide

ezconnect or hostname (easy connect naming or host naming method)
Select to enable clients to use a TCP/IP connect identifier, consisting of a host name and optional port and service name.

See Also: Oracle Database Net Services Administrator's Guide

cds (CDS external naming method)
Set to resolve an Oracle database name in a Distributed Computing Environment (DCE) environment.

See Also: Oracle Database Advanced Security Administrator's Guide

nis (Network Information Service (NIS) external naming method)
Set to resolve service information through an existing NIS.

See Also: Oracle Database Net Services Administrator's Guide

Example

NAMES.DIRECTORY_PATH=(tnsnames, onames)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论