1.動態註冊
是instance啟動的時候pmon程序根據init.ora中的instance_name,service_names兩個引數將例項和服務動態註冊到listener中。
sys>show parameter service_names
sys>show parameter instance_name
註冊到***的例項值從init.ora檔案中的instance_name引數取得,如果該引數沒有設定值,那麼久取db_name的值。如果在rac中配置,必須保證每個例項instance_name引數設定唯一。
註冊到***的服務值從init.ora檔案中的service_name取得,如果沒有設定,資料庫將拼接init.ora中的db_name和db_domain的值來註冊自己。
動態註冊listener.ora配置檔案
sid_list_listener =
(sid_list =
(sid_desc =
(sid_name = pl***tproc)
(program = extproc)))
動態註冊預設只註冊到預設的***上(名稱是listener、埠是1521、協議是tcp),因為pmon只會動態註冊port等於1521的監聽,否則pmon不能動態註冊listener,如果需要向非預設監聽註冊,則需要配置local_listener引數!
然後以sys使用者執行:
sql> alter system set local_listener=listener;
sql> alter system register;
或者:sql> alter system set local_listener='(address = (protocol = tcp)(host = 10.1.1.128)(port = 1522))';
sql> alter system register;
系統已更改。
2.靜態註冊
靜態註冊時,listener.ora中的global_dbname向外提供服務名,listener.ora中的sid_name提供註冊的例項名。
oracle例項執行後,監聽程式啟動時,根據listener.ora的配置註冊相應的服務。
其中global_dbname對應的是oracle對外的服務名,即初始化引數裡的service_names
而sid_name對應的是oralce例項的名稱,即初始化引數裡的instance_name
[oracle@oracle admin]$ cat listener.ora
sid_list_listener =
(sid_list =
(sid_desc =
(global_dbname = orclg)(
sid_name = orcl))
)#listener =
# (description_list =
# (description =
# (address = (protocol = tcp)(host = 10.1.1.128)(port = 1521))
# )
# )
#這部分有沒有都沒關係,注釋就是預設listener
[oracle@oracle admin]$ cat tnsnames.ora
vm128 =
(description =
(address = (protocol = tcp)(host = 10.1.1.128)(port = 1521))
(connect_data =
(server = dedicated)
(service_name = orclg))
)
oracle listener靜態註冊與動態註冊
對於這個listener註冊,之前都隨便配的,反正都能配好,也能正常執行。找了個文章看看,2,原來它們的區別在這啊!汗啊 動態註冊 自己在listener檔案中指明sid 和service name,listener啟動的時候,會從listener檔案中讀取到!靜態註冊 不需要自己指定sid和ser...
Oracle listener靜態註冊和動態註冊
一 什麼是註冊?註冊就是將資料庫作為乙個服務註冊到監聽程式。客戶端不需要知道資料庫名和例項名,只需要知道該資料庫對外提供的服務名就可以申請連線到資料庫。這個服務名可能與例項名一樣,也有可能不一樣。在資料庫伺服器啟動過程中,資料庫伺服器會向監聽程式註冊相應的服務,無論何時啟動乙個資料庫,預設地都有兩條...
Oracle Listener啟動失效
在一次windows優化大師優化後,我的xp中裝的oracle伺服器的listener 不能啟動了,看了網上的一些資料,找到了原因,是因為登錄檔中的配置服務配置資訊被刪除調了,解決方式把一下資訊重新匯入到登錄檔中 windows registry editor version 5.00 hkey l...