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規劃好。

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