监听问题的常见处理方法

来源:这里教程网 时间:2026-03-03 13:39:24 作者:

在介绍监听问题之前,先来介绍一下动态监听和静态监听,可以参阅: 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 以上就是监听问题的总结,后续如有其它,再进行补充。

相关推荐