在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配置非默认位置的监听程序
精选 转载上一篇:【DBA之路】关于连接不上数据库
下一篇:问题解决方法
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Oracle-redo日志挖掘sql redo 日志挖掘
-
oracle listener
监听 listener
oracle 监听 -
ORACLE清理、截断监听日志文件(listener.log)
连接”,当然这个不是真理,不会绝对出现,只是发生在老旧的32bit Linux或Unix系统下面,真实的原因是一些32bit O...
oracle 截断监听日志文件 清理listener.log 日志文件 sed