Как получить минимальные, максимальные, средние значения статистики всех столбцов из всех таблиц из нескольких схем? - PullRequest
0 голосов
/ 17 мая 2019

У меня проблема с представлением sys.dba_tab_columns для low_value и high_value, так как они оба показывают неправильные значения.

Я проследил эту проблему до ядра, где он собирает информацию из таблицы статистики ядра x $ kxttstecs. Как я могу обойти эту проблему, выбрав минимальные / максимальные / средние значения всех столбцов из нескольких таблиц от нескольких пользователей? Также, чтобы сделать это автоматически обновляя как статистические данные БД? Можете ли вы помочь мне с функцией или модифицировать таблицу статистики ядра?

У меня есть код SQL:

SELECT 
ROWNUM AS ROW_ID,
sys.dba_tab_columns.OWNER,
sys.dba_tab_columns.table_name AS TABLE_NAME, 
sys.dba_tab_columns.column_name AS COLUMN_NAME,
decode(data_type, 'NUMBER',   sys.dba_tab_columns.low_value,
                                  NULL) AS LOW_VALUE,
decode(data_type, 'NUMBER',   sys.dba_tab_columns.high_value,
                                  NULL) AS HIGH_VALUE
FROM sys.dba_tab_columns
WHERE sys.dba_tab_columns.OWNER = 'HR' OR sys.dba_tab_columns.OWNER ='XY';

где я получаю неверные данные как для LOW_VALUE, так и для HIGH_VALUE.

TABLE_NAME | COLUMN_NAME | LOW_VALUE | HIGH_VALUE
DEPARTMENTS | DEPARTMENT_ID | C10B | C20347
EMPLOYEES | DEPARTMENT_ID | C10B | C2020B
JOB_HISTORY | DEPARTMENT_ID | C115 | C2020B

Фактические значения из таблиц:

LOW_VALUE | HIGH_VALUE
10 | 270
10 | 110
20 | 110

1 Ответ

0 голосов
/ 17 мая 2019

Я только сейчас разобрался с ответом.Поскольку статистика ядра собирает эту информацию в типе данных RAW, поэтому для получения правильных данных мне нужно было изменить тип данных с помощью UTL_RAW.CAST_TO_NUMBER:

decode(data_type, 'NUMBER',   UTL_RAW.CAST_TO_NUMBER(sys.dba_tab_columns.low_value),
                              NULL) AS LOW_VALUE,

decode(data_type, 'NUMBER',   UTL_RAW.CAST_TO_NUMBER(sys.dba_tab_columns.high_value),
                              NULL) AS HIGH_VALUE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...