成為MySQL DBA後,再看ORACLE資料庫(二、監聽與連線)

海布里_MySQL發表於2024-05-27

一、監聽器的啟動

ORACLE啟動完成後,可以透過sqlplus / as sysdba連線資料庫,但是這個只是本地連線,無法透過tcp/ip遠端訪問資料庫,這時候就要啟動ORAClE的監聽器。啟動監聽器的命令是lsnrctl start,啟動成功後,可以觀察到1521埠也隨之監聽,這時候就能透過ip加埠遠端訪問資料庫了。在MySQL中沒有監聽器這個概念,本地和遠端的連線主要透過使用者來區分,root@localhost代表的是透過本地socket方式連線,root@ip代表的是透過tcp/ip連線。

二、兩個配置檔案

1. 客戶端的tnsnames.ora檔案
tnsnames.ora檔案是在客戶端配置的網路服務名檔案,用於客戶端連線oracle資料庫,在$ORACLE_HOME/network/admin目錄下。透過該檔案中定義的service_name,就可以透過sqlplus或其他客戶端工具透過服務名進行遠端訪問資料庫。

2. 服務端的listener.ora檔案

listener.ora檔案是在資料庫服務端配置的監聽器配置檔案,我配置的listener.ora檔案中,主要有LISTENER資訊,包含了監聽的協議、地址以及埠等資訊。這裡,我們用的是動態註冊,所謂動態註冊是指當例項啟動之後,由後臺程序PMON在監聽器中註冊資料庫服務資訊。在動態序號產生器制下,將不再需要在listener.ora檔案中定義服務名資訊。使用動態註冊,是由資料庫例項主動向監聽器註冊,因此監聽器可以知道資料庫例項的狀態,在RAC環境下,某個例項出現故障時,動態服務註冊功能可以快速自動的failover客戶端請求到其他例項。使用lsnrctl status可以檢視監聽器的狀態,動態註冊的服務名,由於監聽器確切地知道例項的狀態,所以正常狀態通常顯示為READY,而對於靜態註冊的服務名,則狀態顯示為UNKNOW。

三、Easy Connect方式

使用Easy Connect方式連線資料庫,不需要配置tnsnames.ora檔案,可以直接使用ip+埠+服務名連線資料庫。而開啟Easy Connect方式,需要在sqlnet.ora檔案中設定NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT),這個是預設設定的。Easy Connect方式連線資料庫簡單方便,類似mysql -u -h -p這種連線串的形式。

四、監聽器日誌

監聽器日誌位於$ORACLE_BASE/diag/tnslsnr/host/listener/trace目錄下,在ORACLE中遇到客戶端與資料庫連線異常時,除了需要檢查客戶端配置,資料庫和監聽器的狀態,還需要排查監聽器日誌有無異常。

相關文章