針對Oracle大表執行表分析

2021-08-01 10:25:23 字數 1329 閱讀 6098

報表

資料庫相當於乙個資料倉儲,資料量一般來說都比較大,這個時候效能就要特別注意。為了促使

oracle

選擇最優的執行計畫,最好定期進行表分析,以使oracle得到正確的統計資訊。一般如果資料分布和表結構發生變化的話,就要重新進行表分析。報表資料庫資料分布發生變化時有發生。所以建議報表庫進行定期的表分析。

表分析語句參考如下:

單錶分析:

分割槽表:

begin

dbms_stats.gather_table_stats(ownname => 'lbi_edm',

tabname => 't_e_customer_d',

estimate_percent => 100,

no_invalidate => false,--立馬生效

degree => 8,

granularity => 'all', --分割槽

cascade => true);

end;/

非分割槽表:

begin

dbms_stats.gather_table_stats(ownname => 'lbi_ods',

tabname => 't_o_customer',

estimate_percent => 100,

no_invalidate => false,--立馬生效

degree => 8,

cascade => true);

end;

/    按使用者分析(大資料量不建議使用,耗時長):

exec dbms_stats.gather_schema_stats('lbi_ods_vdf',estimate_percent=>100,cascade=> true);

exec dbms_stats.gather_schema_stats('lbi_edm_vdf',estimate_percent=>100,cascade=> true);

exec dbms_stats.gather_schema_stats('lbi_ls_vdf',estimate_percent=>100,cascade=> true);

exec dbms_stats.gather_schema_stats('lbi_dm_vdf',estimate_percent=>100,cascade=> true);

    刪除分析資訊:

dbms_stats.delete_schema_stats(owner => 'lbi_ods' );

dbms_stats.delete_table_stats(ownname => 'lbi_ods',

tabname => 't_o_customer'

oracle大表複製

前幾天遇到乙個要求初始化資料的問題,表資料是千萬級別的,直接用update語句要乙個多小時,速度不能達到要求。經多方查詢和實踐發現,通過新建表的方式是最快的,僅需幾分鐘就ok了。今天又多查詢了乙個資料,做個總結.oracle的insert update和delete在執行過過程中都是會產生日誌的,因...

oracle自動表分析

oracle 表的統計資訊,跟他的執行計畫很有關聯 執行計畫的正常是否,跟sql的執行速度很有關係 首先講解一下如何檢視乙個資料庫的是否開啟自動統計分析 1 檢視引數 statistics level 在v parameter表中檢視資料的情況 10g中預設為typical,只有將statistic...

oracle 執行被鎖表

1.下面的語句用來查詢哪些物件被鎖 select object name,machine,s.sid,s.serial from v locked object l,dba objects o v session s where l.object id o.object id and l.sessi...