今天接到朋友电话,关于从9.2.0.1升级到9.2.0.8出现的问题,在windows平台,报的错误如下:
写入文件'D:oracleora92BINorapls9.dll'时出错,[D:oracleora92BINorapls9.dll(另一个程序正在使用此文件,进程无法访问.)]
从错误上来看,这个文件orapls9.dll肯定是被其它的进程调用了。到得所有的服务都关闭的确认之后,有点迷惑了,会是哪个进程还在使用? 我的思路是这样,把相应的进程杀了,就可以继续升级.
找进程可以用命令:tasklist /m orapls9.dll
杀进程可以用命令:orakill或者taskkill
后来朋友反馈说,杀了线程,接着又有线程调用orapls9.dll,看来这个根本就杀不了。这个可能与Windows平台有关,线程从属进程,杀了线程后,进程可以再开线程,Windows只有一个Oracle总进程。由于时间的原因,朋友用exp/imp方式升级,不在现场,也不能亲自操作,只能电话里讲了。后来,上metalink查找相应的信息,orapls9.dll会被Distributed Transaction Coordinator服务调用到,如果这个服务开了,就得关了。此外提供了多种方法:
1,上面提到的杀进程方法.
2,把机器启动动安全模式下.
3,从环境变量PATH里把Oracle相关信息删除,停相应的服务,重启,然后升级,升级完了,再把Oracle相关信息设置回去.
4,另外一个可能,检查ORACLE_HOME下的文件是否设置成了只读状态.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/45188/viewspace-1030008/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/45188/viewspace-1030008/