hansi sessiya daha cox redo generasiya edir

2
Hansı sessiya daha çox redo log generasiya edir Bugün hansı SQL sorğusu daha çox redo log generasiya edir, onu tapmağa çalışacayıq. Öncəlikə aşağıdakı sorğu vasitəsi ilə hansı sessiya və sessiyaların redo generasiya etdiyini müəyyən edək: SELECT s.sid, s.serial#, s.username, s.program, i.block_changes FROM v$session s, v$sess_io i WHERE s.sid = i.sid AND i.block_changes > 0 ORDER BY 5 DESC, 1; block_changes sütunu bizə sessiyada blokun nə qədər dəyişdiyini göstərir. Qeyd: Siz block_changes > 0 şərtini yuxarıdakı sorğudan yiğışdıraraq tam nəticəyə baxa bilərsiniz. Lakin əgər siz transaksiyadakı undo qeydin və undo bloklarının miqdarını görmək istəsəz? Bunun üçün: SELECT s.sid, s.serial#, s.username, s.program, s.machine, t.used_ublk, t.used_urec FROM v$session s, v$transaction t WHERE s.taddr = t.addr ORDER BY 6, 7 desc; Aşağıdakı sorğu vasitəsi ilə (müəyyən perioda) dəyişilmiş obyektlərin blokların qeyd listəsini görmək olar : SELECT dhso.object_name, object_type, SUM (db_block_changes_delta) FROM dba_hist_seg_stat dhss, dba_hist_seg_stat_obj dhso, dba_hist_snapshot dhs WHERE dhs.snap_id = dhss.snap_id AND dhs.instance_number = dhss.instance_number AND dhss.obj# = dhso.obj# AND dhss.dataobj# = dhso.dataobj# AND begin_interval_time BETWEEN TO_DATE ('20-12-2012 00:00:00', 'DD-MM-YYYY HH24:mi:ss') AND TO_DATE ('20-12-201223:59:59', 'DD-MM-YYYY HH24:mi:ss') GROUP BY dhso.object_name, object_type HAVING SUM (db_block_changes_delta) > 0 ORDER BY 2, SUM (db_block_changes_delta) DESC Hansı SQL sorğu (sql text) görmək istədikdə: SELECT distinct dbms_lob.substr(sql_text,4000,1), optimizer_mode, module FROM dba_hist_sqlstat dhss, dba_hist_snapshot dhs, dba_hist_sqltext dhst WHERE upper(dhst.sql_text) LIKE '%AZ_PAY%' AND dhss.snap_id=dhs.snap_id AND dhss.instance_Number=dhs.instance_number AND dhss.sql_id = dhst.sql_id --and rownum<2; Qeyd: Siz əlavə sütunlarıda sorğuda qeyd ederək daha ətraflı məlumatlar əldə edə bilərsiniz, belə ki :

Upload: ulfet-tanriverdiyev

Post on 30-Jun-2015

195 views

Category:

Technology


5 download

DESCRIPTION

Hansi sessiya daha cox redo generasiya edir

TRANSCRIPT

Page 1: Hansi sessiya daha cox redo generasiya edir

Hansı sessiya daha çox redo log generasiya edir

Bugün hansı SQL sorğusu daha çox redo log generasiya edir, onu tapmağa çalışacayıq.

Öncəlikə aşağıdakı sorğu vasitəsi ilə hansı sessiya və sessiyaların redo generasiya etdiyini müəyyən edək:

SELECT

s.sid, s.serial#, s.username, s.program, i.block_changes

FROM v$session s, v$sess_io i

WHERE s.sid = i.sid AND i.block_changes > 0

ORDER BY 5 DESC, 1;

block_changes sütunu bizə sessiyada blokun nə qədər dəyişdiyini göstərir.

Qeyd: Siz block_changes > 0 şərtini yuxarıdakı sorğudan yiğışdıraraq tam nəticəyə baxa bilərsiniz.

Lakin əgər siz transaksiyadakı undo qeydin və undo bloklarının miqdarını görmək istəsəz?

Bunun üçün:

SELECT

s.sid, s.serial#, s.username, s.program, s.machine, t.used_ublk, t.used_urec

FROM v$session s, v$transaction t

WHERE s.taddr = t.addr

ORDER BY 6, 7 desc;

Aşağıdakı sorğu vasitəsi ilə (müəyyən perioda) dəyişilmiş obyektlərin blokların qeyd listəsini görmək olar:

SELECT

dhso.object_name, object_type, SUM (db_block_changes_delta)

FROM dba_hist_seg_stat dhss, dba_hist_seg_stat_obj dhso, dba_hist_snapshot dhs

WHERE dhs.snap_id = dhss.snap_id

AND dhs.instance_number = dhss.instance_number

AND dhss.obj# = dhso.obj#

AND dhss.dataobj# = dhso.dataobj#

AND begin_interval_time BETWEEN TO_DATE ('20-12-2012 00:00:00', 'DD-MM-YYYY HH24:mi:ss')

AND TO_DATE ('20-12-201223:59:59', 'DD-MM-YYYY HH24:mi:ss')

GROUP BY dhso.object_name, object_type

HAVING SUM (db_block_changes_delta) > 0

ORDER BY 2, SUM (db_block_changes_delta) DESC

Hansı SQL sorğu (sql text) görmək istədikdə:

SELECT

distinct dbms_lob.substr(sql_text,4000,1), optimizer_mode, module

FROM dba_hist_sqlstat dhss, dba_hist_snapshot dhs, dba_hist_sqltext dhst

WHERE upper(dhst.sql_text) LIKE '%AZ_PAY%'

AND dhss.snap_id=dhs.snap_id

AND dhss.instance_Number=dhs.instance_number

AND dhss.sql_id = dhst.sql_id --and rownum<2;

Qeyd: Siz əlavə sütunlarıda sorğuda qeyd ederək daha ətraflı məlumatlar əldə edə bilərsiniz, belə ki:

Page 2: Hansi sessiya daha cox redo generasiya edir

dba_hist_sqlstat dyanmic görünüşündən (view) bu sütunları : cpu_time_total, cpu_time_delta, elapsed_time_total,

elapsed_time_delta, iowait_total, disk_reads_total və s əlavə edə bilərsiniz.

Sonda top 10 ən çox redo generasiya edən sessiyaları aşağıdakı sorğu ilə müəyyənləşdirmək olar:

select

b.inst_id, b.SID, b.serial# sid_serial, b.username, machine, b.osuser, b.status, a.redo_mb MB

from (select n.inst_id, sid, round(value/1024/1024) redo_mb

from gv$statname n, gv$sesstat s

where n.inst_id=s.inst_id and n.name = 'redo size' and s.statistic# = n.statistic# order by value desc ) a,

gv$session b

where b.inst_id=a.inst_id

and a.sid = b.sid

and rownum <= 10;

Cəm olaraq nə qədər redo generaiya edilməsini isə aşağıdakı sorğu ilə müəyyən etmək olar:

select

sum(round(gb)) total_redo_count from (select b.inst_id, b.SID, b.serial# sid_serial, b.username,

machine, b.osuser, b.status, a.redo_gb GB

from (select n.inst_id, sid, round(value/1024/1024/1024) redo_gb from gv$statname n, gv$sesstat s

where n.inst_id=s.inst_id and n.statistic#=134 and s.statistic# = n.statistic# order by value desc ) a,

gv$session b

where b.inst_id=a.inst_id

and a.sid = b.sid)

Qeyd: n.statistic#=134 bu elə v$statname view dan (name sutununun dəyəridir : name = 'redo size')