当前位置: 代码迷 >> 综合 >> oracle 10gR2 监听器启动报错1067同时操作系统日志报: 错误模块名称: ntdll.dll
  详细解决方案

oracle 10gR2 监听器启动报错1067同时操作系统日志报: 错误模块名称: ntdll.dll

热度:24   发布时间:2023-12-15 07:48:27.0

一、环境描述

VMware虚拟机+ WINDOWS SERVER 2008 R2 + ORACLE 10G 单机

二、问题描述:

数据库监听器无法启动,监听服务启动时报错:【错误1067:进程意外中止】

偶尔服务能够启动,但很快又自动关闭

 

三、问题解决

WINDOWS下的监听的启动依赖于服务的启动,用命令“lsnrctl start"启动也没有任何日志输出,以下介绍一下如果trace跟踪监听器的启动:

添加以下内容至监听的配置文件$ORACLE_HOME\NETWORK\ADMIN\listener.ora

LSNRCTL_TRACE_LEVEL=16
LSNRCTL_TRACE_FILE=lsnrctl_<pid>.trc
LSNRCTL_TRACE_DIRECTORY=d:\oracle\product\10.2.0\db_1\network\trace
LSNRCTL_TRACE_UNIQUE=ON
LSNRCTL_TRACE_TIMESTAMP=ON

而后手工启动监听lsnrctl start

在目录d:\oracle\product\10.2.0\db_1\network\trace下能看到相应的trace文件.其实trace文件对故障排查相当有帮助的,希望大家能掌握数据库的各种trace办法

非常遗憾的是,此次并没有从trace文件中获得有用的线索,下面粘出部分trace内容:

 

其中尝试过以下方法:

1. 修改监听器配置中HOST=选项采用主机名或IP,

2. 用NETCA命令新建一个监听服务名称如LISTENER1(默认监听器名称是LISTENER)

3. 修改监听的默认端口1521,采用其他冷僻端口,如15220

4. 重新安装ORACLE的安装目录,采用新安装目录去创建、配置监听

 

结果都无济于事。

 

由于,生产库必须于第二天8点对外提供服务,在做以上操作的同时,新建一台虚拟操作系统为WINDOWS server 2008 R2的服务器,将数据库的物理文件(参数文件,控制文件,数据文件,日志文件等)拷至新服务器上,准备数据库迁移工作。

 

接下来有新的发现,在检查操作系统日志文件时候发现以下报错:

错误应用程序名称: TNSLSNR.exe,版本: 0.0.0.0,时间戳: 0x4c298ebb
错误模块名称: <span style="color:#ff0000;"><strong>ntdll.dll</strong></span>,版本: 6.1.7601.18247,时间戳: 0x521eaf24
异常代码: 0xc0000374
错误偏移量: 0x00000000000c4102

后来从系统管理员处得到了解,服务器于2013年11月接受了WINDOWS update,下载并安装了部分系统补丁,但操作系统并未重启过。对此我们可以看出,c:\Windows\SYSTEM32\ntdll.dll文件其实发生损坏.而ntdll.dll文件很多应用软件都会访问到.

 

对此,强烈建议关闭windows的"系统自动更新"

 

接下来在新服务器上做以下操作,在此不再赘述:

1. 安装数据库10.2.0.4,升级安装目录至10.2.0.5

    (windows server 2008 R2已经不能直接安装10.2.0.1基础版本的软件,至少要装10.2.0.4)

2. 准备参数文件,归档目录,bdump udump cdump等目录

3. 打开数据库实例,mount数据库,打开数据库

4. 检查应用联通性,数据完整性

 

 

对此,我们建议大家在故障排错的过程中,不要仅仅将目录放在数据库本身,而需要从多方面(主机,存储,网络,系统日志等)入手排查问题.

 

-------------------------------------------------------------------------------------------------

本文来自于我的技术博客 http://blog.csdn.net/robo23

转载请标注源文链接,否则追究法律责任!

 

  相关解决方案