yangtingkun
===========================================================
Oracle确定连接方式的优先级
===========================================================

前两天在使用10g的简化连接方式的时候突然想到的问题,如果TNSNAMES.ORA中的配置名称恰好是另一个数据库的简化连接方式,Oracle会连接到哪个数据库。

今天有时间,做了个简单的测试。


首先通过简化连接方式连接远端的数据库:

SQL> CONN YANGTK/YANGTK@172.25.1.100/TEST1已连接。
SQL> SELECT * FROM GLOBAL_NAME;

GLOBAL_NAME
-----------------------------------------------------
TEST1.YANGTINGKUN

下面在本地的TNSNAMES.ORA中配置另一个数据库,但是配置的名称为172.25.1.100/TEST1

172.25.1.100/test1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ytk-thinkpad)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ytk102.ytk_thinkpad)
)
)

添加了这个配置后,保存TNSNAMES.ORA文件的修改,再次执行上面的连接操作,检查当前连接的数据库:

SQL> CONN YANGTK/YANGTK@172.25.1.100/TEST1已连接。
SQL> SELECT * FROM GLOBAL_NAME;

GLOBAL_NAME
---------------------------------------------------
YTK102.YTK_THINKPAD

这次TNSNAMES.ORA中的配置起了作用。看来Oracle应该是出于后向兼容性的考虑,仍然先查询TNSNAMES.ORA文件,在文件中找不到对应的配置信息,才会尝试使用简化连接方式。

这时如果将数据库简化连接方式稍做调整:

SQL> CONN YANGTK/YANGTK@172.25.1.100:1521/TEST1已连接。
SQL> SELECT * FROM GLOBAL_NAME;

GLOBAL_NAME
--------------------------------------------------
TEST1.YANGTINGKUN

只要简化连接方式和TNSNAMES.ORA中的配置不符就可以连接到目标数据库。同时Oracle的这种特性,在TNSNAMES.ORA中进行配置的时候,尽量不要使用和简易连接方式相近似的名字,这样可以避免不必要的错误。

yangtingkun 发表于:2008.04.04 23:49 ::分类: ( ORACLE ) ::阅读:(616次) :: 评论 (0)

发表评论
标题

在此添加评论
表情符号: smile laughing tongue angry crying sad wassat wink

称呼

邮箱地址(可选)

个人主页(可选)

 authimage


切换风格
新闻聚合
博客日历
文章归档...
最新发表...
最新评论...
最多阅读文章...
最多评论文章...
博客统计...
Blog信息
网站链接...