Архитектура СУБД Oracle . Архитектура Баз Данных. ФКН ВГУ 3 курс (Беляев А.С.)
Primary tabs
Forums:
СУБД Oracle состоит из
- Базы данных
- Файлов данных
- Служебный файлов
Экземпляра сервера
База данных Oracle – одна на один экземпляр -
экземпляр - это процессы и память - короче - работающий софт базы
Каждому пользователю выделяется схема – именованный набор объектов БД - то есть по умолчанию к пользователю привязывается собственное (не знаю что - может "табличное пространство")
Табличное пространство
табличное пространство - логическая единица хранения информации
Следующие табличные пространство являются общими для всей базы:
SYSTEM =
- Всегда ONLINE
- Словари данных
SYSAUX -Хранение дополнительных метаданных (EM)
UNDO - Табличное пространство для записи данных для восстановление в случае сбоя транзакции
TEMP- Для временных данных , например для сортировок на диске.
Табличные пространства нужны для объединения файлов данных. - логического объединения.
Когда мы создаём объект внутри табличного пространства - мы не говорим в какой именно файл он запишется - это связано с тем. что размер файла ограничен.
При установке табличного пространства можно указать "авторасширение" - новые файлы будут добавляться автоматически.
Когда вы работаете с объектами базы вы изолированы от физического уровня - вы не знаете в какой файл будут записаны объекты - знаете лишь табличное пространство.
Такое логическое объединение полезно в случае если ваше приложение оперирует несколькими основными типами данных - их хранение можно организовать в разных табличных пространствах.
Один файл хранения может принадлежать только одному табличному пространству.
При создании табличного пространства указывается полный путь к файлу. Если табличное пространство не указано , то объект создаётся в табличном пространстве пользователя по умолчанию.
Итак:
- Табличное пространство состоит из одного или нескольких файлов данных
- Файл данных может принадлежать ТОЛЬКО ОДНОМУ табличному пространству
- Размер и имя файла определяется при создании
- Можно включить автоматическое увеличение размера файла по мере заполнения
- могут находиться ONLINE и OFFLINE - то есть можно сделать его недоступным для пользователей (целиком)
Запись и чтение из файла данных происходит блоками (select .....)
Блок данных – минимальная единица доступа к данным
- DB_BLOCK_SIZE - в это переменной указывается размерность блока
- 2К – 64К = размер минимального блока
Если база работает мелкими транзакциями - то лучше размер блока делать меньше, если же данные читаются большими объёмами -то побольше .
В среднем размер блока устанавливают = 8 килобайт
Экстент – набор из нескольких подряд идущих блоков - непрерывная последовательность
Сегмент – набор экстентов, выделенных для определенной цели - для хранения объектов определённого типа.
Внутри сегмента создаются уже определённые объекты
- Данных (таблицы)
- Индексы
- Временные данные
- Откаты (данные отката)
В одном файле данных можно создавать и таблицы и индексы - они хранятся в разных сегментах.
Управляющие файлы
Управляющие файлы - хранят сведения о физической структуре базы данных.
Управляющие файлы зеркалируются - их обычно несколько копий .
Если управляющий файл теряется - база сразу останавливается.
Они же - Control Files
- Несколько копий
- Бинарный формат
- Постоянно обновляются (каждые 3 сек или меньше)
- Хранится информация о физической структуре БД, необходимая для запуска:
- Имя БД
- Дата создания
- Пути к файлам данных и журналам транзакций
- Информация о табличных пространствах
- Номер контрольной точки (SCN) - сначала производится запись в журнал транзакции - потом уже в лог
ЖУРНАЛЫ ТРАНЗАКЦИЙ
Сначала commit операция записывает сведения в журнал, а уж потом только начинается реальная операция.
Так например - если update затрагивает миллион строк , то имеет смысл сначала записать сведения о том, что собираешься сделать в журнал транзакций, а потом только производиться реальная операция.
журналы транзакций =
- Хранят информацию о зафиксированных транзакциях
- Несколько копий
- Применяются для восстановления БД после сбоя
- Перезаписываются - то есть можно выделить фиксированный размер файла - и он будет перезаписываться по кругу
- Можно включить архивирование - чтобы хранить побольше данных в журнале транзакций - когда файл полностью записан он будет скопирован и заархивирован
Файл параметров
Он же init.ora
Существует в бинарном и тексктовом виде
Хранит в основном значения глобальных переменных , в том числе значения -
- Имя БД
- Имена управляющих файлов
- Значения глобальных переменных
- Режим архивирования журналов транзакций
- Имя табличного пространства для UNDO
Запуск базы:
- запускает процесс oracle.exe читает файл параметров
- из файла определяет сколько памяти выделять под процесс и т.д. =- потом происходит чтение управляющих файлов.
- из управляющих файлов в частности узнают о местоположении файлов данных.
- читаем из файлов данных номер транзакции - если они не совпадают с номерами в журналах транзакции - делаем откат или накат транзакции
- после приведённых выше операций (в общем виде) база готова к работе.
Экземпляр Oracle
Экземпляр Oracle - представляет собой:
- Набор процессов ОС
- Область памяти - разделяемая область памяти, где хранятся данные ,используемые в различных нуждах - также выделяются отдельные области памяти для пользовательских и серверных процессов
SGA (\syatem globbal area) состоит из:
- кэш буфера - вся работа с блоками происходит в этом буфере, потом только происходит запись на диск
- shared pool - здесь храняться "разобранные операторы" и загруженные хранимые процедуры.
- Redo buffer - буфер журнала транзакций - когда мы производим операции над данными базы, сведения о них буферизируется - при вызове commit происходит "выталкивание данных журнала" на диск
SGA (глобальная системная область) – участок памяти, используемый экземпляром для хранения кэшей, буферов и т.д.
Кэш базы данных – блоки данных, считанные с диска
Буфер сегмента отката – информация, необходимая для восстановления БД
Разделяемый пул – различные объекты, которые могут использоваться разными пользователями
Java-пул
Large пул – опциональная область, используемая процессами Backup, I/O
PGA (глобальная программная область) – область памяти, выделяемая для каждого фонового процесса
Управление размерами областей (деление на буферы) может осуществляться вручную и автоматически
- SGA_TARGET = 0
- SGA_MAX_SIZE
- DB_CACHE_SIZE
- LOG_BUFFER
- SHARED_POOL_SIZE
- LARGE_POOL_SIZE
- JAVA_POOL_SIZE
Выделение областей памяти производится гранулами – 4 Мб (SGA 1 Гб)
Процессы экземпляра
делятся на два вида:
- Серверные - Создаются для обработки пользовательских запросов
- Фоновые(Постоянно запущены, выполняют служебные функции)
- DBW -пишут данные в базу - их может быть несколько
- LGWR - ведёт журнал транзакций
- CKPT - ставит контрольные точки
- SMON - отвечает за восстановление базы при старте
- PMON - предназначен дял отстрела "мёртвых" сессий - если какая-то сессия долго не производит данные - её закрывают
- RECO - производит откат при старте
DBWn – записывает содержимое буфера данных в БД
LGWR – записывает данные в журнал транзакций -
- При COMMIT
- Каждые 3 сек (SCN)
- Когда буфер заполнен на 1/3
CKPT – обновление заголовков файлов данных и управляющих файлов
SMON – восстановление после сбоя
PMON – отслеживание состояния процессов
RECO – восстановление после сбоя распределенных транзакций
Запуск экземпляра
ПОсле запуска проходит несколько стадий:
- SHUTDOWN - запущен только сервисный процесс (служба) в
- NOMOUNT - читаем int.ora - здесь фактически запускается экземпляр (пустой) и запускаются фоновые процессы
- MOUNT - открываем управляющие файлы и журналы транзакций - если какой-то из журналов не найден - сбой - остаёмся в предыдущем режиме.
- OPEN - открываем файлы данных - если есть противоречия с журналами транзакций сначала откатываем все незавершённые транзакции -потом накатываем те, для которых выполнен COMMIT
NOMOUNT
/database - spfile
.ora - spfile.ora
- init
.ora - выделям SGA
- Запуск фоновых процессов
- Открытие alert
.log
MOUNT
- Ассоциация файлов с экземпляром
- Открытие управляющих файлов
- Чтение управляющих файлов и поиск журналов транзакций
SID - это уникальный номер базы.
OPEN
Открытие файлов данных
Открытие журналов транзакций
Проверка наличия и целостности файлов данных
Roll Back
Roll Forward
Остановка Экземпляра
Режимы остановки
- NORMAL - ждём пока пользователь отрубиться от базы
- TRANSACTIONAL - ждём пока все пользователи не выполнит COMMIT
- IMMEDIATE - компромиссный вариант между скоростью и сохранностью данных - прерываются все транзакции -корректно откатываются , насильно закрываются сесси - база вырубается
- ABORT - база вырубается просто и сразу - после запуска требуется восстановление.
- Log in to post comments
- 5993 reads