Учебное пособие Для студентов университетов Специальностей «Информатика», «Прикладная математика»



Pdf көрінісі
бет92/177
Дата15.02.2022
өлшемі2,58 Mb.
#25567
түріУчебное пособие
1   ...   88   89   90   91   92   93   94   95   ...   177
Логическая  структура 
БД Oracle состоит  из  пользовательских  ком-
понентов.  Форма  и  назначение  объектов  логической  структуры  имеют 
смысл  только  в  контексте  сервера Oracle. К  ним  относятся  табличные 
пространства (tablespace), сегменты (segments) и экстенты (extents).  
Табличное пространство – это логический объект, который использу-
ется для группировки данных с целью организации более четкой струк-
туры БД. В одно табличное пространство пользователь БД может помес-
тить логические объекты, близко связанные между собой. Например, все 
таблицы, используемые одним и тем же приложением, могут быть объе-
динены в одно табличное пространство. Физически табличное простран-
ство реализовано совокупностью одного или нескольких файлов данных. 
Каждый файл данных размещен в одном табличном пространстве и хра-
нит текущие данные этого пространства. Файлы данных табличного про-
странства создаются одновременно с созданием табличного пространст-
ва.  При  создании  БД  по  умолчанию  создается    табличное  пространство 
SYSTEM, содержащее файлы словаря данных и других служебных таб-
лиц  и  представлений.  Имена  табличных  пространств,  за  исключением 
SYSTEM,  могут  выбираться  произвольно.  Табличные  пространства  мо-
гут быть добавлены, удалены из БД. Кроме этого, добавляемые таблич-
ные  пространства  могут  переводиться  в  автономное  состояние  (состоя-
ние  блокировки)  или  в  оперативное  состояние  (доступны  для  работы). 
Табличное пространство SYSTEM не может быть ни удалено, ни  пере-
ведено  в  автономное  состояние.  При  формировании  объекта  БД  нужно 
указывать  табличное  пространство,  которому  оно  будет  принадлежать. 
После  этого  данные  (которые,  собственно,  и  образуют  объект)  будут 
храниться  в  файлах  данных,  принадлежащих  указанному  табличному 
пространству. Поэтому строки одной таблицы, например, могут хранить-
ся  в  нескольких  файлах  данных.  Информация  обо  всех  табличных  про-
странствах  БД  и  их  статусе  хранится  в  представлении  словаря  БД 
DBA_TABLESPACES. 
Сегмент – это общее название для объектов информационной струк-
туры, которые хранятся в БД, т. е. занимают место в файлах БД. Сегмент 
использует  определенное  число  блоков Oracle, которые  находятся  в  од-
ном  табличном  пространстве,  но  могут  принадлежать  различным  фай-
лам. Объединение сегментов образует табличное пространство. Сущест-
вует четыре типа таких объектов: 
1)  сегменты данных (data segments); 
2)  сегменты индексов (index segments); 
 
109


 
3)  сегменты отката (rollback segments); 
4)  временные сегменты (temporary segments). 
Сегменты отката и временные сегменты создаются, как правило, сис-
темой. Сегменты данных и сегменты индексов – это объекты пользовате-
ля. Следует отметить, что многие объекты схемы имеют сегменты, рас-
полагаемые в табличных пространствах. Однако в БД есть ряд объектов 
пользователя, которые нельзя квалифицировать как сегменты. Это пред-
ставления,  последовательности,  синонимы,  связи,  триггеры,  хранимые 
функции и процедуры и пакеты. Информация о них хранится в словаре 
данных, но в БД они места не занимают. 
При создании объекта ему выделяется некоторое пространство в ука-
занном табличном пространстве – сегмент. Задавая имя табличного про-
странства,  следует  учесть  объем  имеющегося  свободного  места  в  таб-
личном  пространстве  и  возможность  автоматического  расширения  фай-
лов  данных,  составляющих  табличное  пространство.  При  увеличении 
объекта размер сегмента может увеличиться на заданный размер расши-
рения сегмента, называемый экстентом.  
Экстенты – это  объекты  информационной  структуры  хранения  дан-
ных.  Каждый  сегмент  БД  состоит  из  одного  или  нескольких  экстентов. 
Внешняя память для объекта БД выделяется порциями из определенного 
числа блоков. В файлах БД эти блоки должны быть смежными. Группа 
смежных  блоков  называется  экстентом.  Следует  отметить,  что  память 
для объектов выделяется экстентами, которые могут находиться на раз-
ных дисках. После выделения экстента объекту эти блоки не могут быть 
использованы  другими  объектами  БД.  При  создании  объекта  система 
Oracle автоматически распределяет в соответствующий сегмент  началь-
ный  экстент  для  данного  объекта.  Если  начальный  сегмент  полностью 
заполняется данными во время работы с объектом, то Oracle автоматиче-
ски выделяет дополнительные экстенты для этого объекта. При удалении 
информации экстенты освобождаются, но остаются связанными с объек-
том (за исключением экстентов сегмента отката и временного сегмента) 
до тех пор, пока не будет выполнена операция удаления объекта. Напри-
мер, если удалить все строки таблицы, то распределенные ей блоки все 
равно  остаются  закрепленными  за  этой  таблицей.  Таблицу  нужно  уда-
лить (оператор DROP) или усечь (оператор TRUNCATE), чтобы освобо-
дить внешнюю память, выделенную таблице. Удаление объектов может 
привести  к  фрагментации.  В  системе Oracle устранением  фрагментации 
занимается системный монитор SMON.  
Кратко опишем назначение перечисленных типов сегментов. 
 
110


 
Сегменты  данных  предназначены  для  хранения  обычных  таблиц  и 
кластеризованных  таблиц,  следовательно,  содержат  строки  таблиц  дан-
ных. Экстенты для таблицы могут быть выделены из различных файлов, 
но  эти  файлы  должны  обязательно  принадлежать  одному  табличному 
пространству. Одной таблице соответствует один сегмент.  
Сегменты индексов служат для хранения индексов – это специальные 
таблицы, которые содержат информацию из ключевого столбца таблицы 
и идентификатор номера строки – ROWID.  
Сегменты  отката – это  объекты  информационной  структуры  БД. 
Они  строятся  системой  и  используются  при  выполнении  транзакций. 
При модификации данных транзакцией их предыдущее состояние копи-
руется  в  сегмент  отката,  а  изменения  выполняются  в  блоках,  сохраняе-
мых  в  кэш-буфере  данных.  Если  другой  запрос  пользователя  затребует 
эти данные, то они извлекаются из сегмента отката. Когда же результаты 
модификации  считаются  окончательно  принятыми,  соответствующий 
сегмент  отката  помечается  как  недействительный.  Если  транзакция  за-
вершается  неуспешно,  то  информация  из  сегмента  отката  помещается 
назад в БД, и исходное состояние БД восстанавливается. Сегменту отка-
та необходимо как минимум два экстента. Первый сегмент отката созда-
ется автоматически при создании БД, имеет имя SYSTEM и размещается 
в  табличном  пространстве SYSTEM. Сегменты  отката  также  использу-
ются для восстановления БД после сбоев оборудования или отмены дей-
ствий операторов модификации данных. 
Временные сегменты создаются системой и используют пространство 
в  файлах  БД,  чтобы  создать  временную  рабочую  область  для  промежу-
точных  стадий  обработки  запроса,  записанного  на  языке SQL, и  для 
больших операций сортировки. Следующие операции могут приводить к 
созданию временных сегментов: 
1)  создание индекса; 
2)  использование фраз ORDER BY, DISTINCT или GROUP BY в опе-
раторе SELECT; 
3)  использование операторов работы с множествами UNION, INTER-
SECT, MINUS; 
4)  создание соединений таблиц; 
5)  использование некоторых типов подзапросов. 
В  целях  более  эффективной  работы  рекомендуется  сегменты  данных 
размещать в одном табличном пространстве, сегменты индексов – в дру-
гом, временные сегменты – в третьем и т. д.   


Достарыңызбен бөлісу:
1   ...   88   89   90   91   92   93   94   95   ...   177




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет