Сбор статистики по секционированным таблицам - PullRequest
0 голосов
/ 08 июня 2018
Ultimately i need to know if this will be enough. In oracle, there is a setting on a table to incrementally gather statistics, rather than a full table.  Basically, it will only gather stats on partitions where the data has changed.  We need to make sure all partitioned tables have INCREMENTAL set to TRUE.



On Partitioning Tables just setting Incremental to true is enough or do we have to also set Publish command to true as well? If so how can i add it?

        BEGIN

        DBMS_STATS.SET_TABLE_PREFS ('ANT', 'S_WAREHOUSE_PRODUCT_FACT', 'INCREMENTAL', 'TRUE');

        END

P Аренда, дайте мне знать, если что-то нужно изменить или добавить в код.Это необходимо для того, что я делаю?

        1) The PUBLISH value for the partitioned table is true.(Default is TRUE)
        2)The user specifies AUTO_SAMPLE_SIZE for ESTIMATE_PERCENT and AUTO for GRANULARITY when gathering statistics on the table.(Default is ESTIMATE_PERCENT=>AUTO_SAMPLE_SIZE and GRANULARITY=>AUTO)

    How can i verify if tables already has publish set to true?
    Can i leave default value as it is? Default is 
    ESTIMATE_PERCENT=>AUTO_SAMPLE_SIZE and GRANULARITY=>AUTO

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Как указал Вернфрид, EXEC не так.Вы можете вызвать более одной процедуры в начальном конечном блоке:

BEGIN
   DBMS_STATS.SET_TABLE_PREFS ('DW_FEI', 'BMI_SALES_FACT', 'INCREMENTAL', 'TRUE'); 
   DBMS_STATS.SET_TABLE_PREFS ('DW_FEI', 'AP_OPEN_HEADER_RAY', 'INCREMENTAL', 'TRUE')
   DBMS_STATS.SET_TABLE_PREFS ('DW_FEI', 'AP_OPEN_HEADER_FACT', 'INCREMENTAL', 'TRUE');
END;
/

И вам не нужно COMMIT, DBMS_STATS (и все другие операторы DML) делать это автоматически (или неявно)для тебя.В качестве доказательства:

CREATE TABLE t (i NUMBER);

SELECT * FROM USER_TAB_STAT_PREFS WHERE table_name='T';

BEGIN
  DBMS_STATS.SET_TABLE_PREFS (NULL, 'T', 'INCREMENTAL', 'TRUE');
END; 
/

(в другой сессии:)

SELECT * FROM USER_TAB_STAT_PREFS WHERE table_name='T';

TABLE_NAME PREFERENCE_NAME PREFERENCE_VALUE
T          INCREMENTAL     TRUE
0 голосов
/ 08 июня 2018

Либо используйте

BEGIN
    DBMS_STATS.SET_TABLE_PREFS ('DW_FEI', 'INVOICE_HEADER_FACT', 'INCREMENTAL', 'TRUE');
END; 
/ 

или

EXEC DBMS_STATS.SET_TABLE_PREFS ('DW_FEI', 'INVOICE_HEADER_FACT', 'INCREMENTAL', 'TRUE');

Но не оба одновременно.

...