oracle監聽 動態註冊與靜態註冊

 

oracle監聽 動態註冊與靜態註冊  

1、什麼是註冊數據庫

註冊就是將數據庫做爲一個服務註冊到監聽程序中。客戶端不須要知道數據庫名和實例名,只須要知道該數據庫對外提供的服務名就能夠申請連接到數據庫。這個服務名能夠與數據庫名同樣,也有可能不同。服務器

在數據庫服務啓動的過程當中,數據庫服務器會像監聽程序註冊相應的服務,不管什麼時候啓動數據庫,默認的都有兩條信息註冊到監聽器中,數據庫服務器對應的實例和服務,客戶端和服務器之間的連接,只須要提供一個服務名就能夠了。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

當發生上述三種狀況時,不會發生監聽註冊失敗。

相關文章
相關標籤/搜索