分享

oracle各种name

 沙文主义 2012-05-04

ORACLE有很多NAME,初学者是比较容易搞起来。这里我简单介绍下,有兴趣的同学可以深入下。(当初我也搞了很长时间才弄明白,时间一长感念又有点糊了)

DATBASE GLOBAL NAME

DATBASE GLOBAL NAME 可以简单的理解为 db_name+domain_name(如果没有domain_name则database global name等同于db_name) DB NAME 数据库名 DOMAIN NAME 域名。(这里的域是ORACLE自定义的域可以与NETWORK上的域相同也可以不同。)

为什么要有database global name? 主要是为了在分布式环境中更好的管理具有相同DB_NAME的数据库,以方便维护,减少差错。(名字可以自定义,系统不会硬性约束的) 比如9C 上海有个PASS9 DB 北京也有个PASS9 DB DB的NAME都叫 MEMDB。为了能够区分这两个DB就引进了GLOBAL DB 如果上海的domain_name=sh.the9.com ,db_name=memdb 北京的domain_name=bj.the9.com , db_name=memdb

上海的database global name 就是 memdb. sh.the9.com 
北京的database global name 就是 memdb. bj.the9.com

database global name 只是个名字定义,默认的情况是等于db_name+点+domain_name。但你也可以定义,在相同Q的domain中也可以定义相同的几个database global name。。 database global name的定义会影响到 db_link的命名(在global_names参数为'true'的情况下)

db_unique_name

DATBASE UNIQUE NAME

昨天我说的是db_unique_name 即在一定的服务集群中定义DB的唯一名字。 如在dataguard环境中可能一台主机有5台备机。这6台服务器具有相同的DB_NAME,DOMAIN_NAME,GLOBAL_NAME。为了管理方便,需要设置一个能够唯一区别他们的名字。于是db_unique_name就诞生了。

下面简单介绍下ORACLE其他几个NAME

INSTANCE NAME

INSTANCE NAME

INSTANCE NAME 实例名称 默认情况等于SID

SERVICE NAME

SERVICE NAME

SERVICE NAME 面向CLIENT的服务名称 默认情况等于DATABASE GLOBAL NAME

在8i以后(含8i),client连接server是通过service name。

下面是client的TNSNAME.ORA中的一段(与SQL SERVER的网络配置一样, 只不过SQL SERVER的配置是写在注册表中,而ORACLE是写在TNSNAME.ORA文件中)


TESDB=

(DESCRIPTION =
 (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.198.131)(PORT = 1521))
 )
 (CONNECT_DATA =
   (SERVICE_NAME = TESDB)
 )
)

可以看出从客户端连接DB SERVER需要 3个要素 主机地址,端口号,服务号 (连接的方法是 SQLPLUS 用户名@TESDB) 大多数DB都是这样的。 当然 SERVICE_NAME可以自定义。比如 你可以把SERVICE_NAME改成 TEST .但在SERVER改完后,需要在CLIENT中的TNSNAME.ORA做相应的修改。否则可能造成客户端无法连接。

再贴一段TNSNAME.ORA,与上面不同的是,客户端连接的是RAC环境。 大家都知道RAC是多个INSTANCE 作用于同一个DB.也就是说INSTANCE_NAME有多个,而DB_NAME,DATABAS GLOBAL NAME SERVICE_NAME是一个。


DSRAC1 =

(DESCRIPTION =
 (ADDRESS = (PROTOCOL = TCP)(HOST = dsrac1-vip)(PORT = 1521))
 (CONNECT_DATA =
   (SERVER = DEDICATED)
   (SERVICE_NAME = dsrac)
   (INSTANCE_NAME = dsrac1)
 )
)

这里可以看出 当连接 DSRAC1 时(sqlplus sys@ DSRAC1)我连接的INSTANCE 是dsrac1. 这就是 INSTANCE_NAME 的主要作用之一。

ORACLE SID

SID DB的 SYSTEM ID. 这个 SYSTEM ID 主要是和OS相关的。当你定义好SID后 会在主机上建立很多以SID命名的进程 如 ora_psp0_tesdb ora_mman_tesdb ora_dbw0_tesdb ora_lgwr_tesdb ora_ckpt_tesdb ora_smon_tesdb ora_reco_tesdb

因此SID在一台主机上只能是唯一的。 很多时候我们处理的DB是相对比较简单的环境,主要是单机(非RAC,非DG,非分布式),在这种情况下默认的名字都是同一的即DB_NAME=INSTANCE_NAME=SERVICE_NAME=GLOBAL_NAME=SID

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多