問題一:什麼是靜態註冊和動態註冊
- 靜態註冊:用酒店的例子,靜態註冊就像是酒店的前臺,什麼時候去都有人在,有沒有房間需要你先詢問,然後她再檢視。如果有就可以入住了。
靜態註冊就是這樣,監聽程式就是前臺,前臺不知道例項的任何資訊,只有客戶請求時才檢查例項是否存在。 - 動態註冊:用蹲坑的例子,就是你上大號,你看見廁所的門從裡面鎖上,就知道里面有人。
在oracle中動態註冊的資料庫,必定是已經啟動的。如果例項關閉,註冊資訊就消失。
問題二:怎樣查詢是靜態註冊還是動態註冊?
方法是用lsnrctl status命令:
UNKNOWN------》是靜態註冊
READY/BLOCKED(備用資料庫)-------》是動態註冊
問題三:靜態註冊的原理
從listener.ora檔案中讀取資訊:
GLOBAL_DBNAME:向外提供服務的名字
SID_NAME: 註冊的例項名
問題四:動態註冊的原理
PMON程序去資料庫引數中找資訊:
service_name:相當於靜態註冊的GLOBAL_DBNAME資訊
instance_name:相當於靜態註冊的SID_NAME資訊
預設埠是1521,建議更改,方法是修改引數:local_listener
修改方法:
ALTER SYSTEM SET LOCAL_LISTENER='' scope=both;
local_listener
可以設定tnsname.ora中寫好的的服務名,也可以直接將網路設定寫進去,例如:
ALTER SYSTEM SET LOCAL_LISTENER = '(ADDRESS = (PROTOCOL=TCP)(HOST=192. 168.2.1)(PORT=1526))' SCOPE=BOSH;