2015-05-08 77 views
10

對於CHAR數據類型列,運行gather_table_stats時,endpoint_actual_valueuser_tab_histograms表中具有諸如「JUMBO BOX」,「JUMBO CAR」等char值。Oracle僞造直方圖

我試圖寫作(假)統計作爲實驗的一部分,我使用prepare_column_valuesset_column_stats來創建直方圖詳細信息,但我無法指定endpoint_actual_value

編輯1:版本:的Oracle 11g Express Edition的

編輯2:我更新的統計方式如下:

DECLARE 
m_distcnt NUMBER := 3;  -- num_distinct 
m_density NUMBER := 1/1000; -- density 
m_nullcnt NUMBER := 0;  -- num_nulls 
m_avgclen NUMBER := 10;  -- avg_col_len 
srec  dbms_stats.statrec; 
c_array dbms_stats.chararray; 
BEGIN 
    srec.epc := 3; 
    c_array := dbms_stats.chararray('HELLO', 'WORLD', 'FIRST'); 
    srec.bkvals := dbms_stats.numarray(20, 180, 800); 

    dbms_stats.prepare_column_values(srec, c_array); 

    dbms_stats.set_column_stats(USER, 'FBHIST_DEMO', 'TESTCOL', 
    distcnt => m_distcnt, 
    density => m_density, 
    nullcnt => m_nullcnt, 
    srec => srec, 
    avgclen => m_avgclen); 
END; 
/

有什麼建議?謝謝!

+0

@JonHeller更新。 – user2761431

+0

請提供您如何調用'prepare_column_values'和'set_column_stats'。 –

+0

@Kombajnzbożowy我已更新您要求的詳細信息。 – user2761431

回答

3

也許創建你自己的虛擬靜態圖表,然後填寫你的虛假值 - 然後UNION這些到適當的。那麼你不必試圖欺騙系統

+0

我也會創建一個視圖,並在選擇期間調整值。 – Armand

+0

@Randy我想假冒Oracle表中的直方圖,而不是創建一個假的直方圖表。 – user2761431