Oracle分散式系統中的全域性資料庫名

eric0435發表於2017-08-03

在分散式系統中,每個資料庫都有一個唯一的全域性資料庫名。全域性資料庫名能唯一標識系統中的一個資料庫。在分散式系統中一個主要的任務就是建立與管理全域性資料庫名。

1.全域性資料庫名的組成
一個全域性資料庫名由兩部分組成:一個資料庫名與一個域名。在資料庫建立時資料庫名與域名是由以下引數來決定的。
資料庫名:db_name 小於等於30個字元,例如sales
域名: db_domain 必須遵守標準網際網路規則。域名中的級別必須透過點號進行分隔並且域名的順序是從葉子到根,從左到右。

db_domain引數只是在資料庫建立時被使用的一個很重要的引數,它與db_name引數一起來決定全域性資料庫名。全域性資料庫名是被儲存在資料字典中。必須透過alter database語句來改變全域性資料庫名,不能透過修改引數檔案中的db_domain引數來進行修改。

決定是否強制執行全域性資料庫名
在本地資料庫中建立資料鏈路指定名稱時會根據是否強制執行全域性資料庫名來生成鏈路名。如果本地資料庫強制執行全域性資料庫名,那麼你必須像使用遠端資料庫全域性資料庫名作為資料鏈路名。例如,如果連線到本地資料庫hq,並且想建立一個連線到遠端資料庫的mfg的資料鏈路,並且本地資料庫強制執行全域性資料庫名,那麼必須使用mfg全域性資料庫名作為鏈路名。

在建立資料鏈路時也可以使用服務名作為資料庫鏈路名的一部分。例如,如果使用服務名sn1和sn2來連線資料庫hq.example.com,並且全域性資料庫名被強制執行時,那麼可以對資料庫hq建立以下鏈路名:
hq.example.com@sn1
hq.example.com@sn2

為了判斷資料庫是否啟用了全域性資料庫名,可以檢查資料庫初始化引數檔案或查詢v$parameter檢視。例如,為了檢視對資料庫mfg是否強制執行全域性資料庫名,可以執行以下語句來進行查詢:

SQL> col name format a12
SQL> col value format a6
SQL> select name, value from v$parameter  where name = 'global_names'
  2  /

NAME         VALUE
------------ ------
global_names FALSE

檢視全域性資料庫名
可以查詢檢視global_name來檢視全域性資料庫名

SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
JYPDB

修改全域性資料庫名中的域名
可以使用alter database語句來改變全域性資料庫名中的域名。在資料庫建立之後,修改db_domain引數不會影響全域性資料庫名或資料庫鏈路名。下面的例子顯示重新命名全域性資料庫名的語句,database是資料庫名,domain是網路域名:

alter database rename global_name to database.domain;

修改全域性資料庫名的操作如下:
1.判斷當前的全域性資料庫名:

SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
JY

2.執行alter database語句來修改全域性資料庫名

SQL> alter database rename global_name to jy.jydba.net;

Database altered.

3.查詢檢視global_name來檢查新的全域性資料庫

SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
JY.JYDBA.NET

4.修改全域性資料庫名中的域名
使用alter database語句來修改全避資料庫名中的域名。在資料庫建立之後,修改初始化引數db_domain不會影響全域性資料庫名或對資料庫鏈路名的解析。下面的例子顯示了修改全域性資料庫名的語法,database是資料庫名,domain是網路域名:

alter database rename global_name to database.domain;

使用下面的過程來修改全域性資料庫名中的域名:
1.判斷當前全域性資料庫名。

SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
JY.JYDBA.NET

2.使用alter database語句來修改全域性資料庫名

SQL> alter database rename global_name to jy.changde.net;
Database altered

3.查詢global_name表來檢查新的全域性資料庫名

SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
JY.CHANGDE.NET

下面將介紹修改全域性資料庫名的場景
在這種情況下,可以修改本地資料庫的全域性資料庫名中的域名部分。也可以使用全域性名來建立資料鏈路來測試資料庫是如何解析鏈路名的。

1.連線到jy.jydba.net並查詢global_name資料字典檢視來判斷當前的資料為全域性名:

SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
JY.JYDBA.NET

2.查詢v$parameter檢視來判斷db_domain引數的當前值

SQL> select name, value from v$parameter where name = 'db_domain';
NAME                            VALUE
------------------------------- ----------------
db_domain

3.建立一個連線到資料庫sjjh的資料鏈路,保指定全域性名的一部分:

SQL> create database link dblink_test using 'sjjh';
Database link created

資料庫會透過將本地資料庫的全域性資料庫名中的域名部分增加到資料鏈路的全域性名中

4.查詢user_db_links來判斷資料鏈路的域名

SQL> select db_link from user_db_links;
DB_LINK
--------------------------------------------------------------------------------
DBLINK_TEST.JYDBA.NET

查詢結果顯示,本地資料庫的全域性名中的域名jydba.net被用來作為資料鏈路的域名

5.因為要將資料庫jy移到changde.net這個域中,所以執行以下操作

SQL> alter database rename global_name to jy.changde.net;
Database altered

SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
JY.CHANGDE.NET

6.查詢v$parameter發現db_domain引數並沒有修改

SQL> select name, value from v$parameter where name = 'db_domain';
NAME                            VALUE
------------------------------- ----------------
db_domain

這也就說明了db_domain引數是獨立於alter database rename global_name語句的。alter database語句決定了全域性資料庫名中的域名。

7.可以建立另一個資料鏈路來連線資料庫sjjh,並查詢user_db_links來檢視資料鏈路中的域名

SQL> create database link dblink_cs using 'sjjh';
Database link created

SQL> select db_link from user_db_links;
DB_LINK
--------------------------------------------------------------------------------
DBLINK_CS.CHANGDE.NET
DBLINK_TEST.JYDBA.NET

可以看到新建立的資料鏈路的域名,是使用當前本地資料庫全域性資料庫名中的域名。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2143004/,如需轉載,請註明出處,否則將追究法律責任。

相關文章