Eri*_*ler 31 oracle transactions
我正在寻找一种方法来确定当前会话中是否存在未提及的INSERT,UPDATE或DELETE语句.一种方法是使用当前sid检查v $ lock,但这需要对v $ lock的读访问权限,如果DBA不想授予它,这将是一个问题.任何其他方式(除了跟踪应用程序发出的所有数据库命令)?
Vin*_*rat 40
您可以检查您的会话是否有一行V$TRANSACTION(显然需要对此视图具有读取权限):
SQL> SELECT COUNT(*)
FROM v$transaction t, v$session s, v$mystat m
WHERE t.ses_addr = s.saddr
AND s.sid = m.sid
AND ROWNUM = 1;
COUNT(*)
----------
0
SQL> insert into a values (1);
1 row inserted
SQL> SELECT COUNT(*)
FROM v$transaction t, v$session s, v$mystat m
WHERE t.ses_addr = s.saddr
AND s.sid = m.sid
AND ROWNUM = 1;
COUNT(*)
----------
1
SQL> commit;
Commit complete
SQL> SELECT COUNT(*)
FROM v$transaction t, v$session s, v$mystat m
WHERE t.ses_addr = s.saddr
AND s.sid = m.sid
AND ROWNUM = 1;
COUNT(*)
----------
0
Run Code Online (Sandbox Code Playgroud)
Mat*_*son 32
这是我通常使用的查询,
select s.sid
,s.serial#
,s.username
,s.machine
,s.status
,s.lockwait
,t.used_ublk
,t.used_urec
,t.start_time
from v$transaction t
inner join v$session s on t.addr = s.taddr;
Run Code Online (Sandbox Code Playgroud)
小智 9
使用下面的查询找出待处理的交易。
如果它返回一个值,则表示有待处理的事务。
这是查询:
select dbms_transaction.step_id from dual;
参考资料:
http
:
//www.acehints.com/2011/07/how-to-check-pending-transaction-in.html http://www.acehints.com/p/site-map.html
SELECT * FROM V$TRANSACTION
WHERE STATUS='ACTIVE';
Run Code Online (Sandbox Code Playgroud)
请参阅:http: //forums.oracle.com/forums/thread.jspa?threadID = 691061
| 归档时间: |
|
| 查看次数: |
141914 次 |
| 最近记录: |