在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

ORACLE中怎么找到未提交事务的SQL语句

113次阅读
没有评论

共计 3621 个字符,预计需要花费 10 分钟才能阅读完成。

自动写代码机器人,免费开通

这篇文章主要介绍了 ORACLE 中怎么找到未提交事务的 SQL 语句,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。

在 Oracle 数据库中,我们能否找到未提交事务(uncommit transactin)的 SQL 语句或其他相关信息呢?关于这个问题,我们先来看看实验测试吧。实践出真知。

首先,我们在会话 1(SID=63) 中构造一个未提交的事务,如下所:

SQL  create table test
 2 as
 3 select * from dba_objects;
 
Table created.
SQL  select userenv(sid) from dual;
 
USERENV(SID)
--------------
 63
 
SQL  delete from test where object_id=12;
 
1 row deleted.
 
SQL

然后我们在会话 2(SID=70) 中,我们使用下面 SQL 查询未提交的 SQL 语句。如下所示:

SQL  select userenv(sid) from dual;
 
USERENV(SID)
--------------
 70
 
SQL  
SQL  SET SERVEROUTPUT ON SIZE 99999;
SQL  EXECUTE PRINT_TABLE( SELECT SQL_TEXT FROM V$SQL S,V$TRANSACTION T WHERE S.LAST_ACTIVE_TIME=T.START_DATE 
SQL_TEXT : delete from test where object_id=12
-----------------
SQL_TEXT : select
grantee#,privilege#,nvl(col#,0),max(mod(nvl(option$,0),2))from objauth$ where
obj#=:1 group by grantee#,privilege#,nvl(col#,0) order by grantee#
-----------------
SQL_TEXT : SELECT /* OPT_DYN_SAMP */ /*+ ALL_ROWS
IGNORE_WHERE_CLAUSE NO_PARALLEL(SAMPLESUB)
opt_param(parallel_execution_enabled ,  false) NO_PARALLEL_INDEX(SAMPLESUB)
NO_SQL_TUNE */ NVL(SUM(C1),0), NVL(SUM(C2),0) FROM (SELECT /*+
IGNORE_WHERE_CLAUSE NO_PARALLEL(TEST) FULL(TEST) NO_PARALLEL_INDEX(TEST)
*/ 1 AS C1, CASE WHEN  TEST . OBJECT_ID =12 THEN 1 ELSE 0 END AS C2 FROM  TEST 
SAMPLE BLOCK (6.134372 , 1) SEED (1)  TEST ) SAMPLESUB
-----------------
SQL_TEXT : select col#, grantee#,
privilege#,max(mod(nvl(option$,0),2)) from objauth$ where obj#=:1 and col# is
not null group by privilege#, col#, grantee# order by col#, grantee#
-----------------
SQL_TEXT : select
type#,blocks,extents,minexts,maxexts,extsize,extpct,user#,iniexts,NVL(lists,6553
5),NVL(groups,65535),cachehint,hwmincr,
NVL(spare1,0),NVL(scanhint,0),NVL(bitmapranges,0) from seg$ where ts#=:1 and
file#=:2 and block#=:3
-----------------
PL/SQL procedure successfully completed.

ORACLE 中怎么找到未提交事务的 SQL 语句

如上所示,这个 SQL 我们会查出很多不相关的 SQL 语句,接下来我们可以用下面的 SQL 查询(改用 SQL Developer 展示,因为 SQL*Plus,不方便展示),如下所示,这个 SQL 倒不会查出不相关的 SQL。但是这个 SQL 能胜任任何场景吗?答案是否定的。

SELECT S.SID
 ,S.SERIAL#
 ,S.USERNAME
 ,S.OSUSER 
 ,S.PROGRAM 
 ,S.EVENT
 ,TO_CHAR(S.LOGON_TIME, YYYY-MM-DD HH24:MI:SS) 
 ,TO_CHAR(T.START_DATE, YYYY-MM-DD HH24:MI:SS) 
 ,S.LAST_CALL_ET 
 ,S.BLOCKING_SESSION 
 ,S.STATUS
 ,( 
 SELECT Q.SQL_TEXT 
 FROM V$SQL Q 
 WHERE Q.LAST_ACTIVE_TIME=T.START_DATE 
 AND ROWNUM =1) AS SQL_TEXT 
FROM V$SESSION S, 
 V$TRANSACTION T 
WHERE S.SADDR = T.SES_ADDR;

ORACLE 中怎么找到未提交事务的 SQL 语句

我们知道,在 ORACLE 里第一次执行一条 SQL 语句后,该 SQL 语句会被硬解析,而且执行计划和解析树会被缓存到 Shared Pool 里。方便以后再次执行这条 SQL 语句时不需要再做硬解析。但是 Shared Pool 的大小也是有限制的,不可能无限制的缓存所有 SQL 的执行计划,它使用 LRU 算法管理库高速缓存区。所以有可能你要找的 SQL 语句已经不在 Shared Pool 里面了,它从 Shared Pool 被移除出去了。如下所示,我们使用 sys.dbms_shared_pool.purge 人为构造 SQL 被移除出 Shared Pool 的情况。如下所示:

SQL  col sql_text for a80;
SQL  select sql_text
 2 ,sql_id
 3 ,version_count
 4 ,executions 
 5 ,address
 6 ,hash_value
 7 from v$sqlarea where sql_text 
 8 like  delete from test% 
 
SQL_TEXT SQL_ID VERSION_COUNT EXECUTIONS ADDRESS HASH_VALUE
------------------------------------ ------------- ------------- ---------- ---------------- ----------
delete from test where object_id=12 5xaqyzz8p863u 1 1 0000000097FAE648 3511949434
 
SQL  exec sys.dbms_shared_pool.purge( 0000000097FAE648,3511949434 , C 
 
PL/SQL procedure successfully completed.
 
SQL

此时我们查询到的 SQL 语句,是一个不相关的 SQL 或者其值为 Null。

ORACLE 中怎么找到未提交事务的 SQL 语句

接下来我们回滚 SQL 语句,然后继续新的实验测试,如下所示,在会话 1(SID=63) 里面执行了两个 DML 操作语句,都未提交事务。

SQL  delete from test where object_id=12;
 
1 row deleted.
 
SQL  update test set object_name= kkk  where object_id=14;
 
1 row updated.
 
SQL

接下来,我们使用 SQL 语句去查找未提交的 SQL,发现只能捕获最开始执行的 DELETE 语句,不能捕获到后面执行的 UPDATE 语句。这个实验也从侧面印证了,我们不一定能准确的找出未提交事务的 SQL 语句。

ORACLE 中怎么找到未提交事务的 SQL 语句

所以结合上面实验,我们基本上可以给出结论,我们不一定能准确找出未提交事务的 SQL 语句,这个要视情况或场景而定。存在这不确定性。

感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“ORACLE 中怎么找到未提交事务的 SQL 语句”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计3621字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 青青在线精品 | 精品日本亚洲一区二区三区 | 9久9久女女热精品视频免费观看 | 国产在线成人一区二区 | 免费看美女的网站 | 护士的小嫩嫩好紧好爽 | 久久国产精品亚洲77777 | 欧美日韩国产一区二区 | 日韩综合无码一区二区 | 无码精品国产一区二区三区免费 | 欧美成人综合视频 | 亚洲国产精品久久精品 | 亚洲三区在线观看无套内射 | a免费在线 | 国产精品99在线观看 | 忘忧草www中文在线资源 | 一二三四视频在线社区7 | 午夜在线网站 | 欧美激情视频一区二区免费 | 黄色成人免费网站 | 一级欧美毛片成人免费视频 | 毛片其地| 在线观看国产一区二区三区 | 免费 欧美 自拍 在线观看 | 国产一级特黄aa大片免费 | 亚洲精品一级一区二区三区 | 少妇高潮一区二区三区99 | 99精品视频在线观看 | a级做爰毛片视频免费看 | 四虎www成人影院 | 黄色片子免费看 | 国内精品久久久久久影院老狼 | 日本护士毛茸茸 | 黑丝影院| 日本一级黄色 | 在线播放成人毛片免费视 | 玩弄丰满少妇人妻视频 | 香港三级精品三级在线专区 | 免费伊人网 | 精品少妇人妻av无码专区 | 国产粉嫩 |