Oracle Log Miner - size of operation -
some background information @ first: i'm analysing load on oracle database .net application make use of nservicebus. we've observed high redo logs activity when running application , hence - high amount of archivelog (we've got database in archivelog mode). we've used toad logminer find out causes it, unfortunately many of operations of type unsupported. i've assume it's because of using securefile type of lob. i've digged database logminer view: v$logmnr_contents see there lot more columns in toad's logminer.
what need size of each operation in redo. here's query far:
select timestamp, rbabyte, seg_owner, seg_name, table_name, seg_type, seg_type_name, table_space, row_id, operation, sql_redo v$logmnr_contents 1 = 1 , operation = 'unsupported'
i'm not sure if rbabyte correct value use or maybe calculation more complicated, me looks record size including lob. oracle's documentations says it's "rba byte offset within block", it's not enough. please advice.
try query:
with t1 (select rs_id, ssn, rbablk, rbabyte, rbablk * 512 + rbabyte curpos, lead (rbablk * 512 + rbabyte, 1, rbablk * 512 + rbabyte) on (partition substr (rs_id, 1, 9)order rbasqn, rbablk, rbabyte, scn, redo_value) nextpos, lead (rbablk * 512 + rbabyte, 1, rbablk * 512 + rbabyte) on (partition substr (rs_id, 1, 9)order rbasqn, rbablk, rbabyte, scn, redo_value) - (rbablk * 512 + rbabyte) redo_size, operation, case when operation = 'internal' , data_obj# != 0 (select t0.owner dba_objects t0 t0.object_id = t1.data_obj#) else seg_owner end seg_owner, case when operation = 'internal' , data_obj# != 0 (select t0.object_name nome dba_objects t0 t0.object_id = t1.data_obj#) else seg_name end seg_name, sql_redo, redo_value, client_id, timestamp v$logmnr_contents t1) select rs_id, ssn, rbablk, rbabyte, curpos, nextpos, redo_size, seg_owner, seg_name, operation, sql_redo t1 order substr (rs_id, 1, 9), ssn, rbablk, rbabyte, redo_value
Comments
Post a Comment