oracle 长事务处理过程

1.定位具体xid和sql,可以看到回滚段大小,具体的sqlid

SQL> @trans

SID SERIAL# USERNAME USED_UBLK USED_UREC STATUS START_DATE XID
-------- -------- ------------- ----------- ----------- -------- -------------------- ----------------
497 6069 SYS 1 1 ACTIVE 20-APR-23 050011008E0B0000

select sid,sql_id,OSUSER,PROCESS,MACHINE,TERMINAL,PROGRAM,MODULE,PREV_SQL_ID from v$session where sid='497';
SQL> /

     SID SQL_ID        OSUSER            PROCESS             MACHINE          TERMINAL             PROGRAM          MODULE                 PREV_SQL_ID
-------- ------------- -------------------- ------------------------ -------------------- ------------------------------ -------------------- ------------------------------ -------------
     497           oracle            20819             vm01          pts/1              sqlplus@vm01 (TNS V1 sqlplus@vm01 (TNS V1-V3)         37drwtbf84008
SQL> @sqltext
Parameter 1,SQL_ID (required):

Enter value for 1: 37drwtbf84008
37drwtbf84008
==============================
insert into hrz values(100)

2.得到session当前执行情况

COL operation FORMAT A40
select substr(opname,1,40) operation,
SOFAR/TOTALWORK current_per,
to_char(START_TIME,'MON dd HH24:MI:SS') start_time,
to_char(LAST_UPDATE_TIME,'MON dd HH24:MI:SS') LAST_UPDATE_TIME,
TIME_REMAINING,
ELAPSED_SECONDS
from v$session_longops b
where b.sid = &sid ;

 注意:V$SESSION_LONGOPS显示运行时间超过6秒(绝对时间)的各种操作的状态。这些操作目前包括许多备份和恢复功能,统计数据收集和查询执行DML提交回滚信息

要监视查询执行进度,必须使用基于成本的优化器,并且必须:

将TIMED_STATISTICS或SQL_TRACE参数设置为true

使用DBMS_STATS包收集对象的统计信息

这样才能做一个相对准确的预估值。


着重关注:
current_per,当前完成工作的百分比TIME_REMAINING,ELAPSED_SECONDS 预估完成时间
以上信息反映了oracle预测的任务完成时间。

3.这里定位出具体语句可以在看一下语句具体是什么原因没有提交是不是数据库自身问题

联系应用是否是程序本身问题,如果应用依赖表中数据

SQL> alter system kill session '497,6069';

System altered.

4.出现了等待事件并且有绑定变量情况

SQL> @sqlbind
Enter value for 1: 37drwtbf84008

详:v$sql_bind_capture

显示SQL游标使用的绑定变量的信息,但是不是所有绑定变量数值都显示,只有绑定变量的类型很简单(不包括LONG、LOB和ADT数据类型),并且绑定变量在SQL语句的WHERE或HAVING子句中使用才显示。

5.查看有没有死锁

SQL> delete from hrz where id=400;
delete from hrz where id=400
                      *
ERROR at line 1:
ORA-00060: deadlock detected while waiting for resource
Deadlock graph:
                                          ------------Blocker(s)-----------  ------------Waiter(s)------------
Resource Name                             process session holds waits serial  process session holds waits serial
TX-00060014-00000BA1-5C2156EE-00000000         33     456     X        42441      61     489           X  33870
TX-0007001F-00000B93-5C2156EE-00000000         61     489     X        33870      33     456           X  42441

注:联系应用处理死锁影响问题

 

posted @ 2023-04-20 16:14  蚌壳里夜有多长  阅读(141)  评论(0编辑  收藏  举报