监听问题的常见处理方法
在介绍监听问题之前,先来介绍一下动态监听和静态监听,可以参阅:
http://blog.itpub.net/12679300/viewspace-1969620/
根据日常的工作经验,监听有关的问题,常见的有如下几点(以下均以windows为例):
1.动态监听问题
动态监听注册失败,通常会报“监听找不到相关的服务”等,该报错通常会出现在windows操作系统下,处理办法有两种:
(1) 第一种处理 办法是登录数据库 ,然后注册服务:
sqlplus / as sysdba
SQL> alter system register
(2) 如果第一种方法解决不了问题,我们将动态监听修改为静态监听,监听文件类似如下:
2.监听日志太大问题
监听日志文件超过4G,现象是数据库连接工具连接数据库时卡顿,同时监听服务在启动时也会出现卡顿,这时很可能是监听日志文件过大的问题导致的,处理办法是进入到数据库安装路径下的监听日志路径,以windows为例,路径如下:
C:\app\Administrator\diag\tnslsnr\WIN-CGJ06AGK74N\listener\trace
进入到该路径后会看到一个listener.log日志文件,我们可以先确定一下该文件的大小 ,如果已经达到4G,可以直接删除该监听文件,或者备份到其他路径,然后删除该文件,之后重启监听,问题就可以得到解决。
3.监听端口问题
在有些oracle数据库中使用的不是默认端口1521,而是其他端口,这时我们在连接数据库时就需要使用相应的端口,确认端口的方法:
我们在cmd窗口中输入 lsnrctl status:
4. 端口映射问题
在有些项目中需要做内外网的端口映射,映射完之后,可能内网数据库端口是1521,而外网端口是映射端口。当我们的项目中有端口映射的时候,一定要注意区分开来,在内外网中使用相应的端口。
5. 监听配置文件问题
有些同事在通过数据库管理工具删除监听重新配置后,监听无法 正常启动,原因是通过工具删除监听时,监听文件内容仍保留了,以至于再重新配置时,监听文件的内容是混乱的,导致监听无法正常启动,此时我们可以手动修改监听文件:
例如路径为 :C:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN
比如这里我们修改为动态监听:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\app\Administrator\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = WIN-CGJ06AGK74N)(PORT = 1521))
)
)
ADR_BASE_LISTENER = C:\app\Administrator
以下就是配置混乱的例子:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\app\Administrator\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(SID_NAME = ORCL)
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = C:\app\Administrator\product\11.2.0\dbhome_1)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = WIN-CGJ06AGK74N)(PORT = 1521))
)
)
ADR_BASE_LISTENER = C:\app\Administrator
可以看到上面的配置中既有动态监听的配置,又有静态监听的配置,此时我们启动监听时肯定是无法正常启动的;
这里的处理方法是要么修改为动态监听,要么修改为静态监听,动态监听如上所述,静态监听如下:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = ORCL)
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = C:\app\Administrator\product\11.2.0\dbhome_1)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = WIN-CGJ06AGK74N)(PORT = 1521))
)
)
ADR_BASE_LISTENER = C:\app\Administrator
以上就是监听问题的总结,后续如有其它,再进行补充。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69902769/viewspace-2644693/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/69902769/viewspace-2644693/