日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle事务数统计,Oracle 查询事务数

發布時間:2023/12/10 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle事务数统计,Oracle 查询事务数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

查詢“的”

首先想到的是v$transaction, 確認這個思路是否正確:

執行下面語句:

SQL> select * from v$transaction;

no rows selected

SQL>

發現居然為空,why? 這時恍然大悟,v$transaction記錄的是當前事務,下面來驗證下:

SQL> conn test/test

sE9H5[O;|$E24558279Connected.ITPUB個人空間u3da4T%}B

SQL>

x1bVeljI$r24558279SQL>

i+ubQ.e*\Ks&k24558279SQL> insert into ttt values('1','2','3','4','5');

1 row created.

SQL>

我們先不提交,這時看看v$transaction表的情況:

SQL> select XIDUSN,XIDSLOT,XIDSQN,STATUS from v$transaction;

XIDUSN XIDSLOT XIDSQN STATUS

6w1n L\?#J`24558279 ---------- ---------- ---------- ----------------

u8E:@CRM/~#?x(|7E24558279 10 17 22579 ACTIVE

SQL>

發現已經 有了一個事務記錄,這時我們commit

SQL> commit;

Commit complete.

SQL>

再來看看v$transaction表:

SQL> select XIDUSN,XIDSLOT,XIDSQN,STATUS from v$transaction;

no rows selected

SQL>

好,已經為空,正面v$transaction視圖確實是記錄 的是當前未提交事務

這個方法行不通,那我們還有什么好辦法嗯?

這時,如果屬性或者STATSPACK的朋友會說,報告里不是有個事務數嗎?

不錯,確實有每秒事務數,可是我要查詢的是每天的事務數,怎么辦?

好,既然沒秒的知道了,那每天的我*60*60*24 不就是每天的嗎?

確實如此,我們分析一份報告看看:

Transactions:916.9

我們看這個每秒的事務數是916.9 ,那么916.9*60*60*24=79220160,每天的事務數是79220160,到此我們介紹了查詢每秒事務數的方法和查詢每天事務數的方法。

還有沒有第二種方法呢?

答案是必須的。

還是awr/STATSPACK報告,既然我們要查詢的是事務數,那么事務數和什么有關系呢?當然是commit啦,如果我們知道了commit數,那么也就是變向知道了事務數,所以第二種方法還是在awr/STATSPACK報告里,這時相信有朋友已經想到了,不錯和你想的一樣就是

user commits827,280916.901.00

這時大家該有疑問了?

上面說每天79220160次 ,怎么現在變成827,280次了,不錯,問的好!我前面沒說這份報告取的是一天的,實際這份報告取的是15分鐘零4秒的,那我們來算下:

828877.6 那為什么會多呢?因為916.9是四舍五入的。

好第二種方法介紹完

我就不賣官司了,下面給大家介紹第三種方法

我們用實現:

首先我們看看查詢每秒事務數的sql寫法:

SQL> col METRIC_UNIT for a30

lb(I.O4V#Om6F24558279SQL> select instance_number,

"A$Qm"_!sq?24558279 2 metric_unit,ITPUB個人空間r.z/|-Qg'{#\:swN

3 trunc(begin_time) time,

Ofj-k F24558279 4 round(avg(average), 2) average

%BU~Vlu24558279 5 from DBA_HIST_SYSMETRIC_SUMMARY

1Cfbo,A&m3b:AJ24558279 6 where metric_unit = 'Transactions Per Second'

!Zn6YC.g Z/i/k24558279 7 and begin_time >=ITPUB個人空間7@/eujaEy@#\

8 to_date('2013-01-21 00:00:00', 'yyyy-mm-dd hh24:mi:ss')

up:ZFh8SlP)m2Yx24558279 9 and begin_time < to_date('2013-01-22 00:00:00', 'yyyy-mm-dd hh24:mi:ss')ITPUB個人空間Fb{|5n},U

10 group by instance_number, metric_unit, trunc(begin_time)

nJ.gf"n pXT&q24558279 11 order by instance_number;

INSTANCE_NUMBER METRIC_UNIT TIME AVERAGE

2G-['a(S4J*Py&xO24558279--------------- ------------------------------ ------------ ----------ITPUB個人空間:V|&aQc#hMZ.a~xZ

1 Transactions Per Second 21-JAN-13 .17

測試環境空庫,我們發現每秒事務數很少

下面是查詢每天事務數:

SQL> select instance_number,

Dd2r0\^io24558279 2 metric_unit,

x@Ra%C9i!A@24558279 3 trunc(begin_time) time,ITPUB個人空間4f0ub%o!K9w/ie3G

4 avg(average)*60*60*24 "Transactions Per Day"

c&H4p2yDK&^4e24558279 5 from DBA_HIST_SYSMETRIC_SUMMARY

-AV~od-Dq3?_24558279 6 where metric_unit = 'Transactions Per Second'

EHH P!L7BU24558279 7 and begin_time >=

.Yz}.}p8PaEY24558279 8 to_date('2013-01-21 00:00:00', 'yyyy-mm-dd hh24:mi:ss')

3~I-`$V%j @t2|"E24558279 9 and begin_time < to_date('2013-01-22 00:00:00', 'yyyy-mm-dd hh24:mi:ss')ITPUB個人空間7y.J5x(KK E&i#a&A8b

10 group by instance_number, metric_unit, trunc(begin_time)

Lc6~I"P24558279 11 order by instance_number;

INSTANCE_NUMBER METRIC_UNIT TIME Transactions Per Day

4NbXT'~6d24558279--------------- ------------------------------ ------------ --------------------

(?KW-G9v+GN2H24558279 1 Transactions Per Second 21-JAN-13 14727.5308

是否還有第四種方法呢?

不錯確實有,請看官方文檔:

4.52.37 Number of Transactions (per second)

下面我把官方文檔貼出來,大家共同學習:

DeltaCommits + DeltaRollbacks where:

DeltaCommits: difference of 'select value from v$sysstat where name='user commits'' between sample end and start

DeltaRollbacks: difference of 'select value from v$sysstat where name='user rollbacks'' between sample end and start

在2個時間段分別執行上面語句,把2個結果相減即可得出這段時間內的事務數。

根據這個方法,我寫出查詢某個用戶的時間段內事務數的方法:

select s.USERNAME,sum(se.VALUE) "session transaction number",sum(sy.VALUE) " transaction number" from v$session s,v$sesstat se,v$sysstat sy

6g8F.V^Le.r\ _2G24558279where s.sid=se.SID and se.STATISTIC#=sy.STATISTIC#

u1eJ1e%T24558279and sy.NAME='user commits'

5j#g'@.~ nQ+m24558279and s.USERNAME=upper('&username')ITPUB個人空間rbk6nYx@"|$S0B+s

group by s.USERNAME;

使用方法和上面的一樣,需要在2個時間段分別運行改腳本,把執行結果相減,即可得出該時間段內的事務數

總結

以上是生活随笔為你收集整理的oracle事务数统计,Oracle 查询事务数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。