您的位置:首页 > 其它

检查Windows下的动态链接库文件(DLL)被哪些进程占用

2015-11-18 22:56 423 查看
检查Windows下的动态链接库文件(DLL)被哪些进程占用。

注意:本文所说的DLL可以是Oracle DLL ,也可以是 System DLL

在Windows下打过Oracle bundle patch的人都有类似的经验:

Oracle开头的服务都停止了,但是patch还是打不上,提示oci.dll被占用。

出现此类原因,大多数都是没有仔细阅读随patch一起的readme.html文档造成的。

一般而言,出现DLL被占用,是由于DTC(Distributed Transaction Coordinator)服务没有关闭导致的.并且在readme.html文档中,有明确要求“要关闭Distributed Transaction Coordinator服务”

那好了,大家可能会想:对于oci.dll被占用,我从readme.html上得到经验,去关闭XXXX服务就行了。

那对于其他的DLL呢?在F:\oracle\product\10.2.0\db_1\BIN下的DLL多了去了,给出一个DLL名称,怎么去查该DLL被哪个进程锁定?

mos文章Script for Checking Services, DLL Locks, Oracle Processes Before Applying A Patch (文档 ID 454040.1)给出了一个脚本,该脚本的名称为PREPATCH.BAT,请到如下链接中下载:http://download.csdn.net/detail/msdnchina/9281087

1.下载到本地之后,解压开,放到E:\下(其他盘符或者其他目录均可),

2. cmd下进入到E:\下,运行此"PREPATCH.BAT"即可。如下是运行的日志: 

SCRIPT  : PREPATCH.BAT
PURPOSE : PRECHECK BEFORE APPLYING A PATCH

DISCLAIMER
===========
This script will check the Inventory Pointer,Services,DLL Locks,Oracle Process.

The Script Requires The following Inputs :
----------------------------------------------------
ORACLE_SID
ORACLE_HOME
ORACLE_HOME_NAME

Enter The ORACLE_SID [] :FS  --->手工输入FS,注意一定要用大写!!!

Enter The ORACLE_HOME [] :F:\oracle\product\10.2.0\db_1 --->手工输入

Enter The ORACLE_HOME_NAME [] :OraDb10g_home1 --->手工输入(从C:\Program Files\Oracle\Inventory\ContentsXML\inventory.xml文件中获得ORACLE_HOME_NAME)

=========================================

ORACLE_SID Is Set As FS
ORACLE_HOME Is Set As F:\oracle\product\10.2.0\db_1
ORACLE_HOME_NAME Is As OraDb10g_home1

=========================================

请按任意键继续. . .

MENU
====

1) CHECK THE WINDOWS INVENTORY POINTER LOCATION
2) CHECK THE ORACLE SERVICES
3) CHECK IF ANY DLLS IN THE ORACLE_HOME IS LOCKED
4) LIST ALL THE ORACLE PROCESS
5) CHECK IF A PARTICULAR DLL IS LOCKED
6) CHECK THE PROCESSOR INFORMATION
7) CHECK FOR MONTECITO PROCESSOR
8) EXIT

Please Select A Choice[8]: 5 ---->选择5

CHECKING IF A PARICULAR DLL IS LOCKED
-------------------------------------

Enter The DLL Name [ oci.dll ]: oraclient10.dll---->手工敲入DLL的名字

映像名称                       PID 模块
========================= ======== ============================================
TNSLSNR.EXE                   1292 oraclient10.dll
oracle.exe                    5512 oraclient10.dll

请按任意键继续. . .


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: