首页 > 数据库 > Oracle > dblink 触发的 ora-03150处理
接到朋友的求助,说业务无法使用.该环境为是跨dblink连库导致的故障。
远程上去看了环境:
1)192.168.1.74 服务器1,oracle11.2.0.4 实例sid1,单机Windows,使用test1账号链接的服务器2;
2)192.168.1.200 服务器2,oracle11.2.0.4 实例sid2,单机Windows.
分析故障过程
1)使用plsql登录1.74服务器,查询触发报错的dblink。select 1 from dual@to_200;【转圈卡死】
2)使用plsql登录1.200,用dblink的账号直接登录。【转圈卡死】
3)直接到1.200服务器,用dblink的账号登录sqlplus test1/test1 【转圈卡死】
到这里就比较奇怪了,还是卡死,然后库又是11g,windows系统为2016,接着怀疑是触发了11g的密码延迟认证。【找到阻塞源,
kill掉了还是一样出现问题。】
4)问用户是否有修改过test1的密码,他们说没有。排查到这里根据经验那必然是windows端口被占用了,导致并发大,引起延迟认证问题。
4)使用端口查看,发现大量的端口被一个dns.exe的程序占用(如图被占用了5024个)。通过分析这个是dns相关的,不影响业务。
5)停掉dns服务器,释放端口
6)再次
kill会话
7)设置密码延迟参数。
ALTER SYSTEM SET EVENT =
'28401 TRACE NAME CONTEXT FOREVER, LEVEL 1' SCOPE = SPFILE;
8)在这个过程中通过触发器跟踪也能证明这一点。
1、尽量远离windows来跑业务,对于并发较大的业务,端口重用、超时不能使用默认的值。默认windows可用端口数量并未放完。重用时间也慢。
2、windows应及时更新操作系统补丁,防止类似bug出现。(dns.ext占用大量端口)
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/27147296/viewspace-3115524/ ,如需转载,请注明出处,否则将追究法律责任。