一、环境描述
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
转载请标注源文链接,否则追究法律责任!