在Oracle的默認設置當中,監聽的配置文件會默認存放在$ORACLE_HOME/network/admin/listener.ora文件中,在該文件中存放了Oracle的監聽配置信息,在其同目錄下有tns的配置文件tnsnames.ora文件和sqlnet.ora文件。
在前一段時間操作ERP數據庫的時候發現一個問題:在進程中提及到的監聽程序(假設監聽程序的名字爲ALTER)在$ORACLE_HOME/network/admin/listener.ora文件中沒有相關的配置信息,經多方查找並請教公司大牛之後,找到在$ORACLE_HOME/network/admin下的一個子目錄中,例如:$ORACLE_HOME/network/admin/abc/listener.ora中找到了監聽器ALTER的相關配置信息。
當時,第一個疑問是,做了什麼的配置能夠是監聽程序知道有這個文件的存在呢?(肯定不會自動識別的吧?)
所以,找問題,然後找到了TNS_ADMIN這個環境變量上。僅以此文做一個測試記錄:
OS:rhel5.4
DB:oracle 10g R2
$ORACLE_HOME=/u02/app/oracle/product/10.2.0/db_1
將原來的監聽程序停掉:
$ oracle@model ~> lsnrctl status
新建目錄(爲了營造一個反差比較大的情況,這裏選擇一個不屬於ORACLE_HOME的路徑):
$ oracle@model ~> mkdir /home/oracle/admin/
$ oracle@model ~> cd /home/oracle/admin/
$ oracle@model ~/admin> touch listener.ora
在listener.ora文件中添加如下內容進行監聽服務的靜態註冊:
SID_LIST_HELLO_WORLD =
HELLO_WORLD =
這個時候啓動監聽程序:
$ oracle@model ~> lsnrctl start HELLO_WORLD
這個時候會報出下面的錯誤信息:
TNS-01151: Missing listener name, HELLO_WORLD, in LISTENER.ORA
因爲在監聽程序啓動的時候,會默認的查找$ORACLE_HOME/network/admin/listener.ora文件來查找你需要啓動的監聽信息,現在裏面沒有,所以根本啓動不了了!
下面我們添加如下一個環境變量:
$ oracle@model ~> export TNS_ADMIN=/home/oracle/admin/
再次啓動HELLO_WORLD監聽程序:
$ oracle@model ~> lsnrctl start HELLO_WORLD
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 22-NOV-2012 00:17:06
Copyright (c) 1991, 2005, Oracle.
Starting /u02/app/oracle/product/10.2.0/db_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 10.2.0.1.0 - Production
System parameter file is /home/oracle/admin/listener.ora
Log messages written to /u02/app/oracle/product/10.2.0/db_1/network/log/hello_world.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1530)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1530)))
STATUS of the LISTENER
------------------------
Alias
Version
Start Date
Uptime
Trace Level
Security
SNMP
Listener Parameter File
Listener Log File
Listening Endpoints Summary...
Services Summary...
Service "hello" has 1 instance(s).
The command completed successfully
監聽器啓動成功!可見在TNS_ADMIN環境變量發揮了相關的作用。那之前的配置能否正常啓動呢?
$ oracle@model ~/admin> lsnrctl start
結果就不截出來了,爲了證明啓動成功呢,我們截出來進程來看一下:
$ oracle@model ~/admin> ps -ef | grep tns | grep -v grep
oracle
oracle
ORACLE配置非默認位置的監聽程序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.