在数据库迁移脚本中, alter tablespace $ts read only;这句可能会僵死,原因是之前有sql语句的事务阻塞了导致的,可以通过下面的方法来查询:
这句sql是查出alter tablespace这句sql的地址号,结果如下,红色为地址号
SQL_TEXT SADDR
---------------------------------------- ----------------
alter tablespace tbs_tts1 read only 0000040634C0D8B8
2、执行 sql:
SELECT SES_ADDR, START_SCNB
FROM V$TRANSACTION
ORDER BY START_SCNB;
这句sql是查询阻塞的事务,并按先后顺序排列,结果如下,红色为alter tablespace的事务号,在它的上面有个事务被阻塞了,因此它要等待,之前的事务号是:2976616884,sql地址是0000040634C254F8
3、 执行sql:
SELECT T.SES_ADDR, S.USERNAME, S.MACHINE
FROM V$SESSION S, V$TRANSACTION T
WHERE T.SES_ADDR = S.SADDR
ORDER BY T.SES_ADDR
此sql语句查出是哪个用户以及哪个机器导致了事物被阻塞了,结果如下,可以看到0000040634C254F8是用户RT_ADMIN导致的,他的机器名是isdweb1
4 、知道事务的 ses_addr 号后就可以查询它的所有东西了,如它的 sql 语句是多少, session 号是多少等都可以查出来,这样就能定位出导致数据库僵死的原因了。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24015283/viewspace-709154/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24015283/viewspace-709154/