长久以来在lsnrctl>status中总有类似的信息,具体如下:
LSNRCTL> status
正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
LISTENER 的 STATUS
------------------------
别名 DBLISTENER
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
启动日期 10-8月 -2010 18:29:59
正常运行时间 0 天 4 小时 27 分 40 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 C:\oracle\product\10.2.0\db_1\network\admin\listener.ora
监听程序日志文件 C:\oracle\product\10.2.0\db_1\network\log\dblistener.log
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xxxx)(PORT=1521)))
服务摘要..
服务 "PLSExtProc" 包含 1 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1
个处理程序...
服务 "test" 包含 2 个例程。
例程 "test", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
例程 "test", 状态 READY, 包含此服务的 1 个处理程序...
服务 "testXDB" 包含 1 个例程。
LSNRCTL>
其中test是SID,而这个testXDB又是什么呢?今天在客户那边解决一个与DB相关的端口冲突的问题,在客户那里另外一干做java开发的一帮兄弟的tomcat怎么也启动不了了,于是拉来了我,解决,netstat,ps一顿诊断之后,发现8080应该是被占用了,于是询问开发人员关于8080,还有其他的东西在用吗?开发人员介绍了环境。诊断之后,断定为oracle的XDB在搞鬼,摘录网上大家遇到的问题,这也终于明白一点,我上面提到的在监听中的"testXDB"是干什么用的了:
从Oracle
9i开始,Oracle的安装缺省包含了XDB。在启动数据库后,Oracle
XDB的http服务将会自动占用了8080端口,这给使用或JBoss、Tomcat进行java
web开发的人造成了许多不必要的麻烦。
本文将主要介绍修改XDB的http和ftp服务端口的3种方法。
1.使用dbms_xdb包修改端口设置
使用sys登录sqlplus
sqlplus sys/syspassword as sysdba
执行如下的脚本:
============================
-- Change the HTTP/WEBDAV port from 8080 to 8081
call dbms_xdb.cfg_update(updateXML(
dbms_xdb.cfg_get()
, '/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()'
, 8081))
/
-- Change the FTP port from 2100 to 2111
call dbms_xdb.cfg_update(updateXML(
dbms_xdb.cfg_get()
, '/xdbconfig/sysconfig/protocolconfig/ftpconfig/ftp-port/text()'
, 2111))
/
COMMIT;
EXEC dbms_xdb.cfg_refresh;
2.使用OEM
console
选择数据库,XML
Database,Configuration。更改XDB的有关设置。
3.修改SPFILE[SID名].ORA文件,去掉数据库的初始化参数:
这个文件是Oracle的启动配置文件dispatchers='(PROTOCOL=TCP)
(SERVICE=XDB)',将会禁止XDB的http和ftp服务。
下面我们来重启计算机,或者在服务中重启OracleService[SID名]这个服务。重启后可能无法使用Enterprise
Manager Console和其他客户端连接,这时请大家使用Oracle的Configuration and Migration
Tools/Net Configuration
Assistant工具删除监听器,然后新建一个监听器,最后重启监听器。
EOF