2015-05-08 17 views
10

Für eine CHAR-Datentyp Spalte, wenn gather_table_stats ausgeführt wurde, hatte die endpoint_actual_value die char Werte wie "JUMBO BOX", "JUMBO CAR", etc. in user_tab_histograms Tabelle.Oracle gefälschte Histogramme

Ich versuche, (fake) Statistiken als Teil eines Experiments zu schreiben, und ich bin mit prepare_column_values und set_column_stats die Histogramm Details zu erstellen, aber ich bin nicht in der Lage die endpoint_actual_value angeben.

EDIT 1: Version: Oracle 11g Express Edition

EDIT 2: Ich habe die Statistik die folgende Art und Weise aktualisieren:

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; 
/

Irgendwelche Vorschläge? Vielen Dank!

+0

@JonHeller Aktualisiert. – user2761431

+0

Bitte geben Sie an, wie genau Sie 'prepare_column_values' und' set_column_stats' aufrufen. –

+0

@ Kombajnzbożowy Ich habe die Details aktualisiert, die Sie gefragt haben. – user2761431

Antwort

3

vielleicht erstellen Sie Ihre eigenen fake_histogram Tabelle (n) und füllen Sie dann Ihre falschen Werte - dann UNION diese zu den richtigen. dann müssen Sie nicht versuchen, das System zu täuschen

+0

Ich würde auch eine Sicht erstellen und die Werte während einer Auswahl anpassen. – Armand

+0

@Randy Ich möchte die Histogramme nur in Oracle-Tabellen fälschen und keine gefälschte Histogrammtabelle erstellen. – user2761431