天天看點

自定義統計結果腳本mystat

mystat.sql和相應的mystat2.sql用于展示完成某操作之前和之後的某些oracle“統計結果”的變化情況。mystat.sql隻是獲得統 計結果的開始值:

set echo off

set verify off

column value new_val v

define s="&1"

set autotrace off

select a.name, b.value

from v$statname a, v$mystat b

where a.statistic# = b.statistic#

and lower(a.name) like '%' || lower('&s')||'%'

/

set echo on

mystat2.sql用于報告統計結果的變化情況(內插補點):

select a.name, b.value v, to_char(b.value-&v,'999,999,999,999') diff

例如,要檢視某個update生成的redo數,可以使用以下指令:

sys@develop> @/oracle/product/11.2/sqlplus/mystat.sql "redo size"

name                                                                  value

---------------------------------------------------------------- ----------

redo size                                                         756293676

redo size for lost write detection                                        0

redo size for direct writes                                               0

sys@develop> update t1 set aac009='1';

795680 rows updated.

sys@develop> @/oracle/product/11.2/sqlplus/mystat2.sql

name                                                                      v diff

---------------------------------------------------------------- ---------- ----------------

redo size                                                        1139306496    1,139,306,496

redo size for lost write detection                                        0                0

redo size for direct writes                                               0                0

由此可見,795,680行記錄的update會生成1,139,306,496位元組的redo.