你在迁移数据的时候选择了先删除数据,然后再迁移,应该是删除数据的时候包“锁超时”了,需要检查目的端数据库对应的表是否有事务未提交。参考下面的命令:
定位锁等待问题
1.查看被挂起的事务(TRX_ID)
SELECT VTW.ID AS TRX_ID, VS.SESS_ID , VS.SQL_TEXT , VS.APPNAME , VS.CLNT_IP FROM V$TRXWAIT VTW LEFT JOIN V$TRX VT ON ( VTW.ID=VT.ID ) LEFT JOIN V$SESSIONS VS ON ( VT.SESS_ID=VS.SESS_ID );
2.通过挂起事务ID(TRX_ID)找到它等待的事务(WAIT_FOR_ID)
SELECT WAIT_FOR_ID,WAIT_TIME FROM V$TRXWAIT WHERE ID=321646;
3.通过等待事务ID(WAIT_FOR_ID)定位到连接以及执行的语句
SELECT VT.ID AS TRX_ID, VS.SESS_ID , VS.SQL_TEXT , VS.APPNAME , VS.CLNT_IP FROM V$TRX VT LEFT JOIN V$SESSIONS VS ON ( VT.SESS_ID=VS.SESS_ID ) WHERE VT.ID = 321643;
4.关闭所等待的SQL
SP_CLOSE_SESSION关闭等待事务(SESS_ID);
你在迁移数据的时候选择了先删除数据,然后再迁移,应该是删除数据的时候包“锁超时”了,需要检查目的端数据库对应的表是否有事务未提交。参考下面的命令:
定位锁等待问题
1.查看被挂起的事务(TRX_ID)
SELECT VTW.ID AS TRX_ID, VS.SESS_ID , VS.SQL_TEXT , VS.APPNAME , VS.CLNT_IP FROM V$TRXWAIT VTW LEFT JOIN V$TRX VT ON ( VTW.ID=VT.ID ) LEFT JOIN V$SESSIONS VS ON ( VT.SESS_ID=VS.SESS_ID );
2.通过挂起事务ID(TRX_ID)找到它等待的事务(WAIT_FOR_ID)
SELECT WAIT_FOR_ID,WAIT_TIME FROM V$TRXWAIT WHERE ID=321646;
3.通过等待事务ID(WAIT_FOR_ID)定位到连接以及执行的语句
SELECT VT.ID AS TRX_ID, VS.SESS_ID , VS.SQL_TEXT , VS.APPNAME , VS.CLNT_IP FROM V$TRX VT LEFT JOIN V$SESSIONS VS ON ( VT.SESS_ID=VS.SESS_ID ) WHERE VT.ID = 321643;
4.关闭所等待的SQL
SP_CLOSE_SESSION关闭等待事务(SESS_ID);