Максим Чалышев - Oracle SQL. 100 шагов от новичка до профессионала
- Название:Oracle SQL. 100 шагов от новичка до профессионала
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:11
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Максим Чалышев - Oracle SQL. 100 шагов от новичка до профессионала краткое содержание
Более 500 практических заданий.
Более 1000 разобранных примеров.
Учебник справочник по языку SQL.
Oracle SQL. 100 шагов от новичка до профессионала - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
получается ошибка.
ORA-22992: невозможно использовать указатели LOB, выбранные из удаленных таблиц.
ORA-22992: CANNOT USE LOB LOCATORS SELECTED FROM REMOTE TABLE.
Как решить эту проблему?
Можно воспользоваться специальной временной таблицей.
Данные находятся в нашей временной таблице, в чем легко убедиться, выполнив запрос перед выполнением COMMIT.
Контрольные вопросы и задания для самостоятельного выполнения
1. Повторите материалы данного шага.
2. Поясните назначение механизма DATABASE LINK в ORACLE.
3. Поясните способы создания DATABASE LINK.
4. Объясните возможные проблемы при использовании этого механизма.
5. Напишите запрос с таблице CITY на другой, удаленной базе данных.
6. Напишите запрос, который добавляет запись к таблице CITY на удаленной базе данных.
Шаг 78. Индексы сложные, индексы по функции
Введение
Мы уже проходили индексы в начале книги. Тогда мы рассматривали простые индексы, их назначение и использование при проектировании базы данных. На самом деле индексы в базе данных ORACLE имеют гораздо большую применимость.
Настало время раскрыть тему индексов базы данных подробнее.
Теория и практика
Использование индексов в базе данных ORACLE. Повторим, что мы уже знаем об индексах.
• Индексы предназначены для быстрого доступа к строкам таблиц, для быстрого нахождения ассоциированных строк таблицы.
• Индексы позволяют находить строку с определенным значением столбца, просматривая при этом лишь небольшую часть общего объема строк таблицы.
• Правильное использование индексов сокращает до минимума количество обращений к данным базы данных, существенно ускоряет выборку.
• Индексы в базе данных ORACLE бывают нескольких типов: простые, реверсивные, битмап-индексы, индексы по функции.
Создание простого индекса
Простые индексы используются достаточно часто и имеют реализацию на основе B-деревьев, где используется концепция сбалансированного дерева.
Пример
Реверсивный индекс
Индексы с реверсивным ключом — это, по сути, то же самое, что и простые индексы, за исключением того, что при индексации данных порядок просмотра меняется на противоположный.
Синтаксис такой же, как при создании обычных индексов, но добавляется спецкоманда REVERSE.
Используются эффективно в случаях, где выборка осуществляется чаще в обратном порядке.
Например:
• выбираем курсы валют за последние несколько дней, используем реверсивный индекс по дате;
• выбираем чаще слова из словаря с буквы Я, используем реверсивный индекс по словам;
• выбираем чаще данные с большим идентификатором, используем реверсивный индекс по идентификатору.
Битмап-индекс
Битовые индексы используют битовые карты для указания значения индексированного столбца.
Синтаксис
Эффективно работают, когда в колонке, на которую устанавливается индекс, присутствует небольшое количество, заранее определенный перечень значений. Например, перечень цветов автомобиля, перечень месяцев года, перечень названий валют.
Индекс по функции
Индексы на основе функций предварительно вычисляют значения функций по заданному столбцу и сохраняют результат в индексе.
Синтаксис
Индекс по первой букве марки авто.
Индекс по функции представляет собой как бы невидимую колонку со значениями заданной функции, по которой осуществляется поиск.
Важные замечания
Следует учитывать: индексы занимают достаточно большой объем на дисковом пространстве.
Битмап-индексы следует применять только когда в колонке есть небольшой перечень значений; при большом количестве значений битовая матрица теряет свою эффективность при поиске данных и занимает значительный объем дискового пространства.
Битмап-индексы во время пересчета блокируют операции изменения или удаления данных из сегмента таблицы, где происходит пересчет индексов.
Если в таблице есть простой индекс и индекс по функции, база данных будет предпочтительнее использовать простой индекс, в этом случае необходимо указать СУБД ORACLE принудительно использовать индекс по функции.
Вопросы учеников
Что означает сжатый индекс?
Такой тип индексов называется индекс со сжатым ключом, в сжатом виде индексы занимают меньший объем дискового пространства. Для сжатия индекса используется директива compress.
Что такое реверсивный индекс?
Это специальный тип индексов для запросов, где дерево индекса строится в обратном порядке, то есть данные в запросе чаще считываются в порядке убывания.
Контрольные вопросы и задания для самостоятельного выполнения
1. Повторите материалы данного шага.
2. Для таблицы AUTO создайте функциональный индекс, который бы включал номер телефона без скобок (REPLACE).
3. Для таблицы CITY создайте обычный индекс для колонки PEOPLES.
4. Для таблицы AUTO создайте битпмап-индекс для колонки COLOR.
Шаг 79. Корзина в ORACLE
Введение
Начиная с версии ORACLE 10g, в ORACLE появился новый механизм корзины RECYCLE BIN, объекты после удаления теперь можно восстановить.
Теория и практика
Механизм RECYCLE BIN в ORACLE поддерживается начиная с версии 10g.
Если данный механизм включен (по умолчанию), то при удалении таблицы с помощью конструкции DROP объект не удаляется, а просто переименовывается, оставаясь в табличном пространстве пользователя.
Посмотреть содержимое корзины можно с помощью запроса:
Отключение корзины:
ВОССТАНОВЛЕНИЕ ТАБЛИЦЫ ИЗ КОРЗИНЫ:
Пример
В ORACLE все сведения хранятся в словаре данных.
Словарь данных представляет собой МНОЖЕСТВО таблиц и представлений.
Исходный код пакетов и процедур хранится в таблице SYS.SOURCE$, к которой, в свою очередь, применим РЕТРОСПЕКТИВНЫЙ запрос вида AS OF TIMESTAMP.
Сперва определим OBJECT_ID объекта, который нам предстоит спасти:
Если это пакет, то нам понадобятся два OBJECT_ID: один для тела, а другой для определения. Теперь, зная идентификаторы объектов, получаем код и кладем его в таблицу:
Таким образом можно извлечь исходный код процедуры или пакеты.
Важные замечания
ORACLE DATABASE извлекает все индексы, определенные в таблице, полученные из корзины, за исключением индексов BITMAP (индексы BITMAP не помещаются в корзину во время операции DROP TABLE).
База данных также извлекает из корзины все триггеры и ограничения, определенные в таблице, за исключением ограничений ссылочной целостности, которые ссылаются на другие таблицы.
Извлеченные из корзины индексы, триггеры и ограничения имеют сгенерированные имена. Поэтому рекомендуется выполнить запрос представления USER_RECYCLEBIN перед выполнением оператора FLASHBACK TABLE… TO BEFORE DROP, чтобы можно было переименовать полученные триггеры и ограничения в более пригодные для использования имена.
Читать дальшеИнтервал:
Закладка: