2101 читали · 7 лет назад
Печеньки от Oracle. Представление с параметром
Иногда возникает задача: сложить всё вместе, а показывать индивидуально. Представим себе: у нас есть таблица, в которую мы складываем данные. Все данные. А показывать их должны селективно. Например, каждому пользователю только его данные. Было бы здорово, если бы мы могли добавить в таблицу новое поле, скажем, user_name, и создать представление вида create view... as select... from... where user_name = :current_user_name ; Но так не бывает. По определению синтаксиса представления. Нет, конечно,...
2311 читали · 7 лет назад
Печеньки от Oracle. Иерархический запрос
В таблице одна строка. Как извлечь из нее 10 строк? Как сформировать последовательность? Календарь? Побочные "плюшки" иерархического SQL запроса в Oracle. Таблица dual Если нам нужно получить SQL запросом текущую дату, то в Oracle мы пишем: select sysdate from dual ; 31.03.19 В некоторых диалектах SQL для скаляра (текущая дата - скаляр) можно записать без from dual, но Oracle требует полноты минимальной конструкции выражения для чтения данных: select <список столбцов> from <список таблиц> Служебная таблица dual как раз и наличествует в системе для формализации выборок "из ниоткуда"...
2 года назад
При экспорте из БД Oracle утилитой EXP, в дамп попадают не все таблицы
Версия Oracle: 11.2.х.х Задача: При экспорте пользователя с таблицами из БД Oracle утилитой EXP в дамп попадают не все таблицы пользователя. Причина следующая – если таблица пользователя пустая, то ей не выделено места в БД и экспортироваться утилитой EXP она не будет. Решение: Принудительно выделить экстент в БД для таких таблиц, после этого они успешно экспортируются. Чтобы найти таблицы без экстентов и автоматически сделать скрипт, который выделит экстенты для этих таблиц, можно воспользоваться следующим скриптом, запустив его из под пользователя SYS: SELECT 'ALTER TABLE...
1 месяц назад
🔹 Партиционирование таблиц: ускоряем большие таблицы
🔹 Как партиционирование помогает улучшить производительность запросов? 🔸 Партиционирование (partitioning) уменьшает объём данных, которые нужно читать: вместо полного скана таблицы запросы читают только релевантные партиции — это снижает I/O и ускоряет обработку. 🔸 range — хорош для временных рядов: разделяйте по дате, чтобы старые партиции можно было быстро архивировать/удалять без влияния на свежие данные. 🔸 hash — полезен для равномерного распределения данных по партициям, когда нет естественного диапазона; уменьшает «горячие» партиции при высокой конкурентности...