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