您的位置:首页 > 数据库

通过global_dbname和dbname访问数据库的不同

2014-06-19 17:01 267 查看
两者的主要区别是:

全局数据库名访问 用于客户端和服务端在2个不同的域之间

数据库名(实例名)访问 用于客户端和服务端在同一个域内

数据库名访问举例:

只需要在客户端的tnsname.ora文件中配置如下信息:

ORA11G_243 = // ORA11G_243 可随便定义

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = xxxx)) //服务端IP地址和端口根据实际情况填写

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = xxxx) //服务名填写服务端数据库实例名,即SID

)

)

全局数据库名访问举例:

首先在服务端修改监听文件listener.ora,配置如下信息:

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = ora11g)

(ORACLE_HOME = /oracle/app/product/11g/db)

(SID_NAME = ora11g)

)

(SID_DESC =

(GLOBAL_DBNAME = ora11g.home1) // 这里就是全局数据库名,通常格式为 db_name.db_domain

(ORACLE_HOME = /oracle/app/product/11g/db)

(SID_NAME = ora11g) //服务端数据库实例名,即SID

)

)

然后重启监听

再修改客户端的tnsname.ora文件,配置如下:

ORA11G_243 = // ORA11G_243 可随便定义

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = xxxx)) //服务端IP地址和端口根据实际情况填写

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = xxxx) //服务名填写服务端所配置的global_name,即全局数据库名 )

)

当客户端有连接请求过来时,服务端监听器会拿listener.ora中的GLOBAL_NAME同连接请求的SERVICE_NAME对比,如果连接请求中是SID(oracle9i之前常用)而不是SERVICE_NAME,则不检查GLOBAL_NAME,而是对监听器设置的SID_NAME进行匹配
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: