前一天遇到一例database link问题,仅供大家参考:

数据库是运行在Windows 2003上的Oracle 9i

先来看看故障现象,维护人员发现数据库上的job不能正常执行。用TOAD手工调用job的存储过程,TOAD一直阻塞。

经过这个故障的过程如下:

1.      在TOAD中手工执行存储过程,TOAD挂起。
2. 用sqlplus连接到数据库,检查v$session_wait,发现执行存储过程的会话正在等待library cache pin。
3. 通过x$kglob与v$session_wait,发现等待library cache pin的SQL语句为:
         select flag from account@zw.world ....
4. 手工执行此SQL,客户端挂起。怀疑是数据链路问题,执行select * from dual@zw.world,客户端也挂起。
5. 在sqlplus下,新建数据库zw_link,执行select * from dual@zw_link,执行此SQL仍然会导致客户端挂起。
6. 怀疑数据库服务器不能正常接连到ZW库。在数据库服务器上用sqlplus连接ZW库:
       sqlplus xxx/xxx@zw
    这时数据库服务器(windows系统)弹出一对话框,windows木马防火墙提示是否允许sqlplus程序访问zw的IP地址的信息。看来是由于木马防火墙引起的问题。
7. 查看系统中运行的进程,发现windows木马防火墙软件是通过线程注入到其他进程的方式,对进程的网络访问进行控制。在进程要访问网络时,弹出对话框选择是否允许访问网络,但ORACLE进程是以服务方式运行的,没有设置为与桌面交互,所以弹 出的对话框不能显示,所以一直处于等待状态。
8. 去掉windows木马防火墙的自动启动,重启服务器,删除windows木马防火墙,检查数据库链接已经正常。
9. 手工执行存储过程,存储过程正常执行。检查存储过程运行产生的日志,也显示正常。至此问题解决。

看来现在的防病毒,防木马的工具也是越来越“厉害”了。

Trackback

no comment untill now

Add your comment now