Global_name从何处来?

http://www.eygle.com/archives/2007/11/howto_change_global_name.html

我们应该都很熟悉global_name这个词,在进行db link的创建时,通常都需要关注一下global_name.
注意,我这里说的不是初始化参数global_names。

通过视图global_name可以获得当前参数的设置:

SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------
WAPDB.REGRESS.RDBMS.DEV.US.ORACLE.COM

 

那么这个global_name视图的数据来自何处呢?
通过global_name视图的创建语句我们可以获得如下信息:

create or replace view global_name
(global_name)
as
select value$ from sys.props$ where name = 'GLOBAL_DB_NAME'

 

我们看到global_name中的信息实际上是来自props$内部表的,取得的信息是其中的global_db_name字段。

SQL> select value$ from sys.props$ where name = 'GLOBAL_DB_NAME';

VALUE$
--------------------------------------------------
WAPDB.REGRESS.RDBMS.DEV.US.ORACLE.COM

SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------
WAPDB.REGRESS.RDBMS.DEV.US.ORACLE.COM

 

这里得到的是通常数据库创建的缺省设置,在生产环境中,我们可以通过如下命令来修改Global_name:

SQL> alter database rename global_name to WAPDB.EYGLE.COM;

Database altered

SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------
WAPDB.EYGLE.COM

 

这个global_name为什么很重要呢?
因为在创建db link的时候,db Link的最终格式与此相关,实际上global_name由两部分组成,DB_NAME和DB_DOMAIN。在创建db link的时候,Oracle会自动将db_domain作为后缀添加上去。而且一旦加入就很难变更。

所以在进行高级复制、Streams复制等配置时,最好首先将多个节点的global_name规划好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章