oracle監(jiān)聽啟動(dòng)不了的問題 收藏
1 問題描述 oracle數(shù)據(jù)庫在服務(wù)器上運(yùn)行正常,但是不能通過網(wǎng)絡(luò)連接(即使用客戶端不能連接數(shù)據(jù)庫,在服務(wù)器端正常,診斷的初步原因?yàn)楸O(jiān)聽器問題)。在服務(wù)器端使用以下命令:
bash-3.1$ cd $ORACLE_HOME/bin
bash-3.1$ ./lsnrctl
LSNRCTL> status
結(jié)果出現(xiàn):
CONNECT (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
然后就停止不動(dòng)了,使用
LSNRCTL> start
后沒有任何反應(yīng),其結(jié)果是監(jiān)聽器啟動(dòng)不了。
2 分析問題
首先,使用以下命令
bash-3.1$ cd $ORACLE_HOME/network/admin
bash-3.1$ dir
后,發(fā)現(xiàn)listener.ora和tnsnames.ora文件都在該目錄下,然后
bash-3.1$ gedit listener.ora
里面有部分內(nèi)容如下:
LISTENER =
(DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) (ADDRESS = (PROTOCOL = TCP)(HOST = RHEL)(PORT = 1521)) ) ) 然后,再查看tnsnames.ora文件
bash-3.1$ gedit tnsnames.ora
里面的內(nèi)容如下:
ORCL =
(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = RHEL)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) 使用hostname命令來查看主機(jī)名是否有錯(cuò),如下
bash-3.1$ hostname
得到的結(jié)果是:RHEL
至此,這兩個(gè)文件都很正常,說明監(jiān)聽的配置是沒有問題的,于是想到問題可能出在服務(wù)器的IP上。
查看一下服務(wù)器的網(wǎng)絡(luò)配置,果然發(fā)現(xiàn)原來服務(wù)器有多個(gè)IP地址處于活躍狀態(tài),而我們的ORACLE監(jiān)聽的是主機(jī)名(我的機(jī)器是RHEL,可以從上面的紅色字體中看到)。因此,當(dāng)服務(wù)器上出現(xiàn)多個(gè)活躍的IP時(shí),監(jiān)聽器就無法確定該監(jiān)聽哪個(gè)IP,這樣就會(huì)出現(xiàn)監(jiān)聽無法啟動(dòng)的問題。
3 解決問題
解決的辦法是直接將監(jiān)聽器配置為監(jiān)聽IP,其解決的辦法是,修改上述的兩個(gè)文件(listener.ora和tnsnames.ora文件)中的紅色字體標(biāo)記的地方,將原來的主機(jī)名改為你所要監(jiān)聽的IP地址(指你的數(shù)據(jù)庫服務(wù)器向應(yīng)用程序提供的IP地址,我的數(shù)據(jù)庫服務(wù)器的IP是192.168.0.110),我的更改是:
修改listener.ora文件中的LISTENER,修改后為:
LISTENER =
(DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.110)(PORT = 1521)) ) ) 然后再修改tnsnames.ora中的ORCL,修改后為:
ORCL =
(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.110)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) 然后,在重啟監(jiān)聽器即可,其具體做法為:
bash-3.1$ ./lsnrctl
LSNRCTL> stop
LSNRCTL> start
監(jiān)聽器成功啟動(dòng),至此,問題圓滿解決。
4 結(jié)束語
監(jiān)聽器無法啟動(dòng)的問題,一般情況下是監(jiān)聽的配置問題或者是主機(jī)IP的問題。該問題也可能出現(xiàn)在“主機(jī)IP被修改”的情況。如果你經(jīng)常需要更改主機(jī)IP,但是你的主機(jī)只有一個(gè)網(wǎng)卡的話,那么監(jiān)聽配置最好用主機(jī)名,如果你的主機(jī)有多個(gè)網(wǎng)卡,那么監(jiān)聽配置最好用你的數(shù)據(jù)庫服務(wù)器IP。當(dāng)然,修改配置的話,還可以用圖形界面的來改,在windows下直接使用net manager來改,如果是linux系統(tǒng)的話,可以使用$ORACLE_HOME/bin目錄下的netmgr命令來調(diào)出圖形界面。
Li Rong-Hua,2009.1.8記
本文來自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/mitedu/archive/2009/01/08/3733028.aspx |
|