db_name、sid、service_name 、ORACLE_UNQNAME,globle_name区别:
1.db_name:
数据库名称,数据库创建好后不可以修改,除非使用nid(9i之后的版本)更改,RAC多节点除外
2.db_domain:
定义一个数据库所在的域,主要是为了区分RAC多节点数据库
3.Global_name:
缺省值为db_name.db_domain, 如果要修改Global_name,只能用ALTER DATABASE RENAME GLOBAL_NAME TO
4.oracle_sid(ORACLE SYSTEM IDENTIFIER):
数据库实例名称,同一个db_name可以对应多个oracle_sid,数据库创建好后会自动在$ORACLE_HOME/dbs创建init+oracle_sid,orapw+oracle_id,spfile+oracle_sid这些文件. instance_name是oracle数据库参数。而ORACLE_SID是操作系统的环境变量,ORACLE_SID必须与instance_name的值一致
5.db_unique_name:
在HA环境中,data guard会经常使用到,和db_name不同,在dg环境中,主从库都有一样的db_name,虽然他们并不是一个库,跟rac不一样。
6.service_name:
该参数是在8i引进,在8i以前,我们用SID来表示标识数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多个网络服务名,设置繁琐。
为了方便并行环境中的设置,引进了Service_name参数,该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。该参数的缺省值为Db_name. Db_domain,即等于Global_name。一个数据库可以对应多个Service_name,以便实现更灵活的配置。该参数与SID没有直接关系,即不必Service name 必须与SID一样。
设置多个service_name命令如下:
alter system set service_name = name1,name2 scope=spfile sid='jhdb1'|sid='*';
在tns文件中如何分别指定service_name
my_name1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.9.46)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = name1)
)
)
my_name2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.9.46)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = name2)
)
)