Запрос
коммерческого
предложения
Обзор табличного пространства с автоматическим выделением экстентов

Рассмотрим на примере как выделяются экстенты в табличном пространстве с автоматическим выделением экстентов (AutoAllocate extents allocation)

Далее
17 октября 2016
Производительность конкатенации строк в CLOB на примере функции dbms_workload_repository.awr_report_html

При конкатенации строк в переменную типа CLOB очень важно сократить количество таких операции до минимума. Рассмотрим это на примере формирования AWR отчета

Далее
04 сентября 2016
Параметры pctfree, initrans и максимально возможное количество сессий

Для снижения ITL ожиданий могут быть могут быть использованы параметры уровня блока pctfree и initrans. Точной формулы для расчета максимального количества сессий, которые могут одновременно менять блок, не было найдено в открытых источниках. Поэтому был проведен эксперимент.

Далее
27 августа 2016
Определение источника запроса с заданному sql_id

Для того, чтобы определить, где формируется тот или иной запрос, можно воспользоваться представлением v$sql, в котором есть два очень полезных столбца - program_id и program_line#. В случае, если program_id > 0, то можно точно определить объект, где хранится интересующий нас запрос.

Далее
17 августа 2016
Select user from dual

Часто приходилось слышать о том, что конструкция "select user from dual" не оптимальна и ее необходимо переписать с использованием PL/SQL. Но насколько это улучшит ситуацию, ответит нам трассировка event 10046.

Далее
09 августа 2016
Rowid и имя партиции

В случае партицированной таблицы иногда бывает необходимо определить - в какую же партицию попала та или иная строка. Особенно актуально это для таблицы, партицированной по HASH. Определить это можно при помощи функции dbms_rowid.rowid_object.

Далее
21 июля 2016
Особенности поведения значений в столбце executions представления v$sql

При анализе ресурсоёмкой DML операции была замечена интересная особенность в представлении v$sql. Отношение buffer_gets к executions было чрезмерно завышено, несмотря на оптимальный план запроса.

Далее
15 июля 2016
Перенос статистки без создания таблиц

Перенос статистики из одной базы в другую содержит несколько этапов, в том числе создание и импорт таблицы, создаваемой процедурой dbms_stats.create_stat_table. Но зачастую это не удобно и хочется выполнить перенос статистики не создавая лишних объектов. Рассмотрим один из возможных вариантов решения данной задачи.

Далее
07 июля 2016
Доступ через индекс предпочтителен для получения менее 15% строк

Часто приходится слышать о всевозможных значениях критерия, определяющего границу эффективного использования индексного доступа против полного просмотра таблицы. Обычно звучат цифры - до 5% выбираемых строк, до 10% или даже до 15%. Но ни одна из этих величин не является корректной.

Далее
04 июля 2016
Делаем удобно читаемое представление на основе dba_tab_col_statistics

Представление dba_tab_col_statistics содержит два поля в формате RAW - low_value и high_value. Но для анализа собранной статистики будет более удобно, если мы приведем их к привычному формату. Для этого можно использовать перегруженную процедуру sys.dbms_stats.convert_raw_value.

Далее
03 июля 2016
PL/SQL функция и parallel_enable наглядно

При создании функции с parallel_enable важно убедиться, что вызов функции действительно распараллелился. Для этого можно использовать следующий прием с использованием sys_context. Рассмотрим на примере двух функций.

Далее
27 июня 2016
Избавляемся от типа LONG в представлении dba_tab_partitions

Наличие столбцов LONG накладывает значительные ограничения на запросы к словарю. Рассмотрим один из вариантов решения проблемы на примере представления dba_tab_partitions.

Далее
22 июня 2016
Создаем удобное представление на основе dba_indexes

Для эффективного и удобного анализа схем индексирования может пригодиться представление на основе dba_indexes и dba_tab_cols, позволяющее получить в удобном виде результат об индексах и индексируемых колонках таблиц. Для этого создадим следующую функцию.

Далее
14 июня 2016
Реализация LOB Deduplication при помощи триггера Instead of

Очень удобная и полезная опция LOB Deduplication является платной и входит в состав Oracle Advanced Compression. Рассмотрим реализацию оптимального хранения LOB сегментов при помощи триггера Instead of и без использования LOB Deduplication.

Далее
09 июня 2016
Доработка представления dba_segments

При администрировании СУБД Oracle часто задаются вопросом об объеме, занимаемой той или иной таблицей. На первый взгляд вопрос простой – достаточно сделать выборку из dba_segments. Но у таблицы еще, скорее всего, есть индекс и не один и, а так же, возможно наличие, LOB столбцов, каждые из которых, в свою очередь, хранятся в отдельном сегменте.

Далее
02 июня 2016
Подсчет количества вызовов функции

Очень важно при написании SQL запросов, в которых используются PL/SQL функции, следить за количеством вызовов и стараться сводить эту величину к минимуму. Для того, чтобы определить, сколько раз была вызвана та или иная функция, можно использовать следующий шаблон.

Далее
25 мая 2016
Выявление фрагментированных таблиц

Рассмотрим один из возможных способов выявления фрагментированных таблиц. Это позволит нам сэкономить место на СХД, а так же увеличить производительность в случае, если таблица или партиция читается целиком (TABLE ACCESS FULL)

Далее
10 апреля 2016