註冊就是將數據庫做爲一個服務註冊到監聽程序中。客戶端不須要知道數據庫名和實例名,只須要知道該數據庫對外提供的服務名就能夠申請連接到數據庫。這個服務名能夠與數據庫名同樣,也有可能不同。服務器
在數據庫服務啓動的過程當中,數據庫服務器會像監聽程序註冊相應的服務,不管什麼時候啓動數據庫,默認的都有兩條信息註冊到監聽器中,數據庫服務器對應的實例和服務,客戶端和服務器之間的連接,只須要提供一個服務名就能夠了。oracle
2、區分動態註冊和靜態註冊ide
(1)使用listener.ora文件判斷spa
動態註冊blog
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(PROGRAM = extproc)
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oradata\orcl)
)
)進程
靜態註冊get
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(PROGRAM = extproc)
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oradata\orcl)
)
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = D:\oradata\orcl)
(SID_NAME = ORCL)
)
(SID_DESC =
(GLOBAL_DBNAME = orcl1)
(ORACLE_HOME = D:\oradata\orcl)
(SID_NAME = ORCL)
)
)it
經過查看雖然能夠大體看出,可是這種方法並不能和明確的現實數據庫在運行時的實際狀況io
(2)使用lsnrctl status命令
3、動態注冊
動態註冊是在instance啓動的時候PMON(Process Monitor進程監視器)進程根據INIT.ORA中的instance_name,service_name兩個參數將實例和服務註冊到監聽器中.
動態註冊時的listener.ora的文件內容以下
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(PROGRAM = extproc)
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oradata\orcl)
)
)
因爲動態註冊須要pmon進程,因此監聽必須在數據庫啓動以前啓動,不然動態註冊將失敗;在數據庫運行的過程當中,若是重啓監聽也會形成動態註冊失敗
動態註冊只是註冊默認的監聽器上(名稱是listener、端口是152一、協議時TCP),若是須要向非默認的監聽註冊,則須要改變local_listener參數
將監聽的信息添加到tnsnames.ora 文件中。 注意,是tnsnames.ora 文件, 由於pmon在動態註冊監聽時要從tnsnames.ora中讀取相關信息。
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DaveDai)(PORT = 1522))
)
而後以sys用戶運行:
SQL> alter system set local_listener=listener;
SQL> alter system register;
或者:
SQL> alter system set LOCAL_LISTENER='(ADDRESS = (PROTOCOL = TCP)(HOST = DaveDai)(PORT = 1522))';
SQL> alter system register;
動態註冊的好處是簡單方便,可是容易發生註冊失敗
4、靜態註冊
靜態註冊就是實例啓動時讀取listener.ora文件的配置,將實例和服務註冊到監聽程序中
靜態註冊時的listener.ora中的內容以下
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(PROGRAM = extproc)
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oradata\orcl)
)
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = D:\oradata\orcl)
(SID_NAME = ORCL)
)
(SID_DESC =
(GLOBAL_DBNAME = orcl1)
(ORACLE_HOME = D:\oradata\orcl)
(SID_NAME = ORCL)
)
)
golbal_dbname是數據庫對外提供的服務名,sid_name是實例名,該文件說明數據庫是單實例數據庫,實例名爲orcl,向外提供了兩個服務orcl和orcl1.
靜態註冊的好處能夠總結爲
一、監聽不是最先啓動
二、數據庫運行期間,監聽發成重啓
三、oracle實例尚未open
當發生上述三種狀況時,不會發生監聽註冊失敗。