Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Администрирование Oracle Database:
- Установка и настройка базы данных
- Обновление, применение патчей
- Оптимизация, настройка производительности
- Обучение, подготовка персонала, оптимизация
  • Страница:
  • 1
  • 2
  • 3

ТЕМА:

dump of DB block в Oracle 12 года 8 мес. назад #2800

  • Rita
  • Rita аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Спасибо получено: 0
С помощью чего можно получить дамп блока базы данных???

Интересует системная информация в блоке, как то, сколько в нём свободно места, и входит ли этот блок в состав Master Free List.

К чему такая любознательность:
имеется таблица, с PCT_FREE/PCT_USED=98/1, то есть "запихнуть данные в блок до упора"; данные не изменяются, так что сие даже поощряется
результат COMPUTE STATISTICS (да и просто анализ выборки) показывает, что данных в таблице на 800 мег
но сумма blocks по dba_extents, показывает, что таблица скушала уже 2 гига; экстенты все одинаковые, по 50 метров
новые записи добавляются в таблицу поочерёдно из 10 параллельных процессов, но конкурируют они друг с дружкой очень редко
удаляются записи из таблицы массово, порцией примерно 1% от всех записей, но это порция включает в себя все записи за определённый день

Вопрос: почему таблица растёт, при условии, что в среднем за день, приход и уход записей одинаков??? Причём растёт она такими темпами, как будто блоки, из которых удалили записи, никогда не возвращаются в список свободных блоков.

FREELISTS=1. В металинковской note про freelists такое описывали для случая FREELISTS>1, обещая в случае с FREELISTS=1 просто блокировку процесса, а не выделение блоков за HWM...

Может кто-то сталкивался с подобным???

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: dump of DB block в Oracle 12 года 8 мес. назад #2801

Команда недокументирована:
alter system dump datafile [#файла] block min [BlockMin] block max [&BlockMax];

но в начале нужно из dba_segments получить №№ требуемых блоков и номер файла (из dba_data_filles)
Дамп печатается в прользовательский trace файл ..../admin/$SID/udump

В распечатке дампа freelists видны плохо но они есть.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: dump of DB block в Oracle 12 года 8 мес. назад #2802

имеется таблица, с PCT_FREE/PCT_USED=98/1, то есть "запихнуть данные в блок до упора"; данные не изменяются, так что сие даже поощряется


ну тут очевидно наоборот PCT_FREE=1, а PCT_USED=98. Не так ли?:-)

результат COMPUTE STATISTICS (да и просто анализ выборки) показывает,
что данных в таблице на 800 мег но сумма blocks по dba_extents, показывает, что таблица скушала уже 2 гига; экстенты все одинаковые, по 50 метров


интересно было бы увидить выборку из user_tables.

новые записи добавляются в таблицу поочерёдно из 10 параллельных
процессов, но конкурируют они друг с дружкой очень редко


действительно parallel processes? Тогда проблема может быть в этом. Т.к. каждый параллельный процесс пишет в новый экстент выше hwm.

удаляются записи из таблицы массово, порцией примерно 1% от всех
записей, но это порция включает в себя все записи за определённый день
Вопрос: почему таблица растёт, при условии, что в среднем за день, приход
и уход записей одинаков??? Причём растёт она такими темпами, как будто
блоки, из которых удалили записи, никогда не возвращаются в список
свободных блоков.


мне кажется, что на все эти вопросы можно получить ответ таким запросом:
SELECT dbms_rowid.rowid_block_number(ROWID) bn, 

                 DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) fn, count(*)

from t1 

group by dbms_rowid.rowid_block_number(ROWID), 

             DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID);

т.е. увидишь сколько у тебя строк в каждом блоке. Это поможет конечно только при условии, что размеры строк примерно одинаковые.

FREELISTS=1. В металинковской note про freelists такое описывали для
случая FREELISTS>1, обещая в случае с FREELISTS=1 просто блокировку
процесса, а не выделение блоков за HWM...


имхо FREELISTS тут непричем. Он играет роль при параллельном сервере. Чтоб у каждого инстанса был свой FREELIST.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: dump of DB block в Oracle 12 года 8 мес. назад #2803

"имхо FREELISTS тут непричем. Он играет роль при параллельном сервере."

При OPS или RAC играет роль не FREELISTS a FREELIST GROUPS.
А при обычном сервере для снижения конкуренции при INSERTs за выделения блоков нужно регулировать именно FREELISTS.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: dump of DB block в Oracle 12 года 8 мес. назад #2804

При OPS или RAC играет роль не FREELISTS a FREELIST GROUPS.
А при обычном сервере для снижения конкуренции при INSERTs за выделения блоков нужно регулировать именно FREELISTS.

Да, согласен.

Интересно вот что:
SQL> select BLOCKS,EMPTY_BLOCKS,AVG_SPACE,AVG_SPACE_FREELIST_BLOCKS,NUM_FREELIST_BLOCKS

  2  from user_tables where table_name='T';



    BLOCKS EMPTY_BLOCKS  AVG_SPACE AVG_SPACE_FREELIST_BLOCKS NUM_FREELIST_BLOCKS

---------- ------------ ---------- ------------------------- -------------------


        19          108       1019                         0                   0



SQL>

Т.е. те блоки, которые выше hwm не показываются в поле NUM_FREELIST_BLOCKS?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: dump of DB block в Oracle 12 года 8 мес. назад #2805

Что то не очень реальное.
такое возможно (как я полагаю) только:
1) Если в таблице вообще не заполнен 1 блок
2) Если не выполнялся ANALIZE TABLE для данной таблицы

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2
  • 3
Время создания страницы: 0.568 секунд