您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關如何理解Oracle分布式系統中的全局數據庫名,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
在分布式系統中,每個數據庫都有一個唯一的全局數據庫名。全局數據庫名能唯一標識系統中的一個數據庫。在分布式系統中一個主要的任務就是創建與管理全局數據庫名。
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
可以看到新創建的數據鏈路的域名,是使用當前本地數據庫全局數據庫名中的域名。
看完上述內容,你們對如何理解Oracle分布式系統中的全局數據庫名有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。