一.什么是注冊
注冊就是將數據庫作為一個服務注冊到監聽程序。客戶端不需要知道數據庫名和實例名,只需要知道該數據庫對外提供的服務名就可以申請連接到數據庫。這個服務名可能與實例名一樣,也有可能不一樣。
在數據庫服務器啟動過程中,數據庫服務器會向監聽程序注冊相應的服務(無論何時啟動一個數據庫,默認地都有兩條信息注冊到監聽器中:數據庫服務器對應的實例和服務。)
相當于是這樣:在數據庫服務器和客戶端之間有一監聽程序(Listener),在監聽程序中,會記錄相應數據庫對應的服務名(一個數據庫可能對應有多個服務名),當客戶端需要連接數據庫時,只需要提供服務名,就可以建立客戶端和服務器之間的連接。
二、動態注冊
動態注冊是在instance啟動的時候PMON進程根據init.ora中的instance_name,service_names兩個參數將實例和服務動態注冊到listener中。
首先要在init.ora中指定instance_name,service_names兩個參數的值。在sqlplus下通過show parameter service_names 和show parameter instance_name可以查看這兩個參數的值。
注冊到監聽器中的實例值從init.ora文件中的instance_name參數取得。如果該參數沒有設定值,那么它將取init.ora文件中的db_name的值。如果在RAC中配置,您必須將集群中每個實例的instance_name參數設置為一個唯一的值。
注冊到監聽器中的服務值從init.ora文件中的參數service_names取得。如果該參數沒有設定值,數據庫將拼接init.ora文件中的 db_name和db_domain的值來注冊自己。如果選擇提供service_names值,您可以使用完全限定的名稱(比如 orcl.oracle.com)或縮寫的名稱(比如orcl)。如果選擇縮寫的名稱并設置了db_domain參數,注冊到監聽器中的服務將是 service_name值和db_domain值的拼接。例如下面的設置將導致服務orcl.oracle.com被注冊到監聽器中:
db_domain=oracle.com
service_names=orcl ;
采取動態注冊方法時,listener.ora中的內容如下:
SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME = D:/oracle/product/10.2.0/db_1)(PROGRAM = extproc)))
可選擇的是,您可以在service_names參數中指定多個服務值,值之間用逗號格開,這對于共享服務器配置是很有用的。
動態注冊默認只注冊到默認的監聽器上(名稱是LISTENER、端口是1521、協議是TCP),因為pmon只會動態注冊port等于1521的監聽,否則pmon不能動態注冊listener,如果需要向非默認監聽注冊,則需要配置local_listener參數!
將監聽的信息添加到tnsnames.ora 文件中。 注意,是tnsnames.ora 文件, 因為pmon在動態注冊監聽時要從tnsnames.ora中讀取相關信息。
LISTENER =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = DaveDai)(PORT = 1522)))
然后以sys用 主站蜘蛛池模板: 彩票| 花垣县| 获嘉县| 军事| 灵武市| 阿拉善左旗| 舟曲县| 防城港市| 宁明县| 衡阳县| 灵武市| 泰宁县| 昌邑市| 迁安市| 福清市| 广西| 闽侯县| 儋州市| 崇明县| 兴和县| 桦甸市| 丰宁| 屯昌县| 岳普湖县| 宜川县| 肃南| 屯昌县| 陇西县| 凯里市| 稻城县| 呼和浩特市| 东港市| 安达市| 财经| 博客| 辽阳县| 沛县| 墨竹工卡县| 双流县| 南通市| 天峻县|