oracle ocp: oracle database 12c administrator certified professional study guide

219
Oracle OCP Краткое пособие по подготовке к экзамену 1Z0-060 И. Гавриков

Upload: igor-gavrikov

Post on 14-Dec-2015

167 views

Category:

Documents


18 download

DESCRIPTION

Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide (in Russian). The book is focused on the exam objectives. It is designed for DBAs who feel they are ready to attempt this challenging exam.

TRANSCRIPT

Page 1: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

Oracle OCP Краткое пособие по подготовке к экзамену 1Z0-060

И. Гавриков

Page 2: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

2

И.С. Гавриков, к.ф.-м.н., Oracle OCP 10g, 11g, 12c, HP HP-UX CSA, CSE

e-mail: [email protected]

Условия и ограничения использования

Copyright 2015. И. Гавриков.

Никакая часть данной публикации не может быть распространена, занесена в публичные или

частные базы, или системы хранения/восстановления текстов/изображений, или сохранена в любой

форме любыми средствами без письменного разрешения автора.

Oracle, Solaris, Oracle Solaris являются зарегистрированными марками Oracle Corporation и/или

филиалов компании Oracle.

HP, HP-UX являются зарегистрированной маркой Hewlett-Packard Development Company, L.P.

и/или филиалов компании Hewlett-Packard Development Company, L.P.

Информация, содержащаяся в данной публикации, взята автором из источников, которые

считаются надежными. Однако, в силу человеческих и/или механических ошибок источников, автора

и/или других сторон, автор не гарантирует точности, адекватности или полноты любой информации,

включенной в данную публикацию, и не несет какой-либо ответственности за любые ошибки или

упущения или результаты, полученные в результате использования данной информации.

Page 3: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

3

О чем хотел сказать автор............................................................................................................................... 10

Дополнительные источники знаний .......................................................................................................... 10

Новые возможности СУБД Oracle 12c ............................................................................................................ 11

Утилита Enterprise Manager Express ........................................................................................................... 11

Использование Enterprise Manager Express .......................................................................................... 11

Настойка порта для EM Express .............................................................................................................. 14

Использование ассистентов OUI, DBCA для установки и настройки базы данных ................................ 15

Ассистент создания базы данных (Database Create Assistant (DBCA)) ................................................ 30

Введение в модель арендованной контейнерной базы данных (Multitenant Container Database

(CBD)) ............................................................................................................................................................ 36

Преимущества контейнерной базы данных ......................................................................................... 36

Описание арендной архитектуры .......................................................................................................... 37

Создание и настройка контейнерной базы данных и перемещаемых баз данных .......................... 37

Создание и настройка контейнерной БД (CDB) ................................................................................ 37

Создание и настройка перемещаемой БД (PDB) .............................................................................. 39

Создание перемещаемой БД из seed ............................................................................................ 40

Клонирование перемещаемой БД ................................................................................................. 40

Включение извлеченной перемещаемой БД в контейнерную БД ............................................. 41

Создание перемещаемой БД на основе монолитной ................................................................. 41

Удаление перемещаемой базы данных ........................................................................................ 42

Преобразование монолитной базы Oracle данных в перемещаемую базу данных ................. 42

Управление контейнерными и перемещаемыми базами данных ..................................................... 43

Запуск и остановка контейнерной (CDB)/перемещаемой (PDB) базы данных .................................. 45

Изменение параметров экземпляра для контейнерной (CDB) или перемещаемой (PDB) БД ......... 47

Управление табличными пространствами, общими и локальными пользователями,

привилегиями и ролями ......................................................................................................................... 48

Управление табличными пространствами контейнерной (CDB) или перемещаемой (PDB) БД .. 48

Управление пользователями и привилегиями в контейнерной (CDB) или перемещаемой (PDB)

БД .......................................................................................................................................................... 49

Создание общего пользователя ................................................................................................. 49

Создание локального пользователя .......................................................................................... 50

Page 4: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

4

Привилегии общих и локальных пользователей ...................................................................... 50

Резервное копирование, восстановление и ретроспективный откат для контейнерной и

перемещаемой БД ...................................................................................................................................... 52

Выполнение резервного копирования контейнерной или перемещаемой БД ................................ 52

Восстановление контейнерной или перемещаемой БД ...................................................................... 53

Выполнение ретроспективного отката на контейнерной базе данных ............................................. 55

Управление жизненным циклом информации и оптимизация работы с дисковой памятью ............. 57

Использование управления жизненным циклом информации (Information Lifecycle Management,

ILM) ........................................................................................................................................................... 57

Горячая карта (Heat Map) .................................................................................................................... 57

Автоматическая оптимизация данных (Automatic Data Optimization, ADO) .................................. 57

Выполнение отслеживания изменений и автоматизированное размещение данных ................ 57

Перенос файлов данных online .................................................................................................................. 60

Внутреннее архивирование (In-Database Archiving) и временная актуальность данных (Valid-Time

Temporal) ...................................................................................................................................................... 61

Различие между управлением жизненным циклом информации (Information Lifecycle

Management, ILM) и временной актуальностью ................................................................................... 61

Установка и использование временной актуальности ........................................................................ 62

Работа с внутренним архивированием строк (In-Database archiving) ................................................. 65

Аудит ............................................................................................................................................................. 66

Включение и настройка унифицированного аудита ............................................................................ 66

Запрет унифицированного аудита ......................................................................................................... 67

Создание и включение политик аудита ................................................................................................ 70

Привилегии .................................................................................................................................................. 73

Использование административных привилегий .................................................................................. 73

Создание, разрешение и анализ использования привилегий ............................................................ 75

Редактирование (redaction) данных Oracle ............................................................................................... 77

Применение и управления политиками редактирования данных Oracle.......................................... 77

RMAN и ретроспективный архив данных .................................................................................................. 81

Применение расширений RMAN ........................................................................................................... 81

Восстановление отдельных таблиц из резервных копий ................................................................ 81

Интерфейс командной строки RMAN ................................................................................................ 81

Дупликация активной базы данных................................................................................................... 81

Опция NOOPEN для дупликации ........................................................................................................ 81

Page 5: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

5

Многосекционные копии образа (Multisection Image Copies) ......................................................... 82

Многосекционные инкрементальные резервные наборы ............................................................. 82

Оптимизация моментального снимка дисковой памяти (Storage Snapshot Optimization) ........... 82

Новые возможности ретроспективных архивов (Flashback Data Archive) .............................................. 83

Отслеживание операций базы данных в реальном времени ................................................................. 84

Реализация отслеживания операций базы данных в реальном времени ......................................... 84

Настройка SQL .............................................................................................................................................. 87

Использование адаптивных планов выполнения ................................................................................ 87

Адаптивные планы .............................................................................................................................. 87

Адаптивные статистики ....................................................................................................................... 88

Использование расширенных возможностей сбора статистики......................................................... 89

Конкурентные статистики ................................................................................................................... 90

Автоматическое определение групп столбцов (Automatic column group detection) .................... 90

Использование управления адаптивными SQL планами .................................................................... 91

Аварийный контроль (Emergency Monitoring), контроль реального времени (Real-Time ADDM),

сравнительный контроль (Compare Period ADDM) и анализ истории активных сессий (ASH Analytics)

....................................................................................................................................................................... 93

Выполнение аварийного контроля и контроля реального времени .................................................. 93

ADDM реального времени .................................................................................................................. 94

Создание сравнительного отчета ADDM по периоду ............................................................................... 96

Диагностика проблем производительности с использованием новых возможностей ASH ................ 97

Менеджер ресурсов и другие расширения контроля производительности ......................................... 98

Использование менеджера ресурсов для контейнерной и подключаемых баз данных ................. 98

Различие между мультипроцессной и многопотоковой архитектурой в Oracle ................................... 99

Использование флэш кэша (flash cache) .................................................................................................. 100

Расширенные возможности при работе с индексами и таблицами .................................................... 101

Применение расширенных возможностей работы с индексами ..................................................... 101

Применение расширенных возможностей работы с таблицами ..................................................... 102

Применение расширенных возможностей online операций ............................................................ 103

Улучшения программы диагностики ADR (Automatic Diagnostic Repository) ....................................... 105

Описание улучшений ADR .................................................................................................................... 105

Журнал отладки (Debug Log) ................................................................................................................ 105

Улучшения Oracle Data Pump, SQL*Loader, External Tables Online операций ....................................... 106

Обзор улучшений Oracle Data Pump .................................................................................................... 106

Page 6: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

6

Применение расширенных возможностей загрузчика SQL*Loader и внешних таблиц .................. 109

Возможности "прямого" NFS (Direct NFS) ............................................................................................ 110

Расширенные возможности секционирования ...................................................................................... 111

Обзор расширенных возможностей секционирования ..................................................................... 111

Секционирование по ссылочному интервалу (interval-reference) ................................................ 111

Операции множественного обслуживания секций таблиц ........................................................... 111

Каскадная функциональность (Cascade Functionality) .................................................................... 113

Перемещение секций "на ходу"....................................................................................................... 113

Расширенные возможности индексирования для секционированных таблиц .................................. 114

Асинхронное обслуживание индексов ................................................................................................ 114

Частичные индексы (partial indexes) .................................................................................................... 114

ONLINE перемещение секций .............................................................................................................. 115

Улучшения в SQL ........................................................................................................................................ 116

Настройка расширенных типов данных .............................................................................................. 116

Применение ограничений количества строк в выборке (Top-N SQL запросы) ................................ 116

Безопасные файлы (Secure Files) .......................................................................................................... 117

Применение Oracle Database Migration Assistant для преобразования в Unicode .......................... 118

Ключевые навыки администратора базы данных ...................................................................................... 120

Основы администрирования .................................................................................................................... 120

Общие замечания об администрировании ........................................................................................ 120

Основы архитектуры базы данных ...................................................................................................... 121

Понятия "база данных" и "экземпляр" ............................................................................................ 121

Системная глобальная область System Global Area (SGA) .......................................................... 123

Установка и начальная настройка базы данных ..................................................................................... 125

Настройка сетевой поддержки для сервера и клиента базы данных .................................................. 130

Метод локальных имен (Local Naming Method) ................................................................................. 132

Метод простого соединения (Easy Connect Naming Method) ............................................................ 132

Метод службы каталога (Directory Naming Method) .......................................................................... 133

Метод внешних имен (External Naming Methods) .............................................................................. 133

Отслеживание оповещений базы данных .............................................................................................. 134

Адаптивные пороги (Adaptive Thresholds) ........................................................................................... 134

Выполнение ежедневного сопровождения базы данных ..................................................................... 135

Установка и анализ исправлений ............................................................................................................. 137

Page 7: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

7

Online исправления ............................................................................................................................... 137

Центр управления EM Cloud Control и обновления ............................................................................ 138

Запросы к каталогу исправлений ......................................................................................................... 139

Резервное копирование и восстановление базы данных ..................................................................... 141

Создание резервных копий .................................................................................................................. 144

Инкрементальные резервные копии................................................................................................... 145

Отслеживание изменения блоков (Block Change Tracking) ................................................................ 145

Восстановление файлов базы данных ................................................................................................. 146

Диагностирование сетевых проблем и проблем базы данных. ........................................................... 148

Обнаружение и восстановление сбоев данных с помощью Data Recovery Advisor ............................ 150

Сбои ........................................................................................................................................................ 150

Восстановление с помощью Data Recovery Advisor ............................................................................ 151

LIST FAILURE ........................................................................................................................................ 151

ADVISE FAILURE ................................................................................................................................... 151

CHANGE FAILURE ................................................................................................................................ 152

REPAIR FAILURE ................................................................................................................................... 152

Реализация технологии ретроспективного отката ................................................................................. 153

Ретроспективный откат таблиц ............................................................................................................ 153

Ретроспективные версионные запросы .............................................................................................. 153

Запросы ретроспективных транзакций ............................................................................................... 155

Ретроспективный откат базы данных .................................................................................................. 156

Загрузка и выгрузка данных ..................................................................................................................... 159

Обслуживание заданий Data Pump ...................................................................................................... 159

Параметры expdp .............................................................................................................................. 161

Параметры impdp .............................................................................................................................. 162

Сетевые операции Data Pump .......................................................................................................... 163

SQL-Loader .............................................................................................................................................. 163

Перемещение объектов из пространства SYSAUX .................................................................................. 166

Создание постоянного табличного пространства "по умолчанию" ...................................................... 167

Использование консультанта для определения размеров журналов повторов (redo) ...................... 168

Применение безопасных файлов для хранения данных LOB ............................................................... 169

Применение прямого NFS клиента .......................................................................................................... 171

Управление производительностью ......................................................................................................... 172

Page 8: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

8

Проектирование размещения базы данных ........................................................................................... 172

Контроль производительности ................................................................................................................ 173

Управление памятью ................................................................................................................................. 176

Автоматическое управление разделяемой памятью (Automatic Shared Memory Management) ... 177

Буферный кэш ........................................................................................................................................ 177

Выявление и анализ проблем производительности.............................................................................. 179

Проведение реального тестирования приложений. .............................................................................. 182

SQL Performance Analyzer ...................................................................................................................... 182

Используемые представления словаря данных ................................................................................. 182

Последовательность действия при анализе изменения производительности ............................... 183

Повтор выполнения базы данных ........................................................................................................ 184

Применение ресурсного менеджера для управления распределением ресурсов ............................ 186

Директивы ресурсного плана ............................................................................................................... 186

Ограничения сессий по вводу/выводу или потреблению циклов процессора ............................... 187

Замечания по настройке производительности ...................................................................................... 188

Дисковая память ........................................................................................................................................ 189

Управление объектами базы данных .................................................................................................. 189

Табличные пространства (Tablespaces) ........................................................................................... 190

Управление табличным пространством отката (Undo) .................................................................. 190

Группы журналов повторов (Redo Log Groups) ............................................................................... 191

Архивные журналы (Archive Logs) .................................................................................................... 191

Управляющие файлы (Control Files) ................................................................................................. 192

Управляемые Oracle файлы .............................................................................................................. 192

Администрирование ASM ..................................................................................................................... 194

Полностью квалифицированная форма имен файлов ................................................................... 195

Алиасы имен файлов ......................................................................................................................... 196

Управление дисками ASM и дисковыми группами ........................................................................ 197

Атрибуты дисковых групп ............................................................................................................. 197

Создание дисковой группы .......................................................................................................... 198

Модификация дисковой группы .................................................................................................. 199

Управление экземпляром ASM ........................................................................................................ 200

Остановка экземпляра ASM .......................................................................................................... 201

Управление очень большими данными (VLDB) .................................................................................. 203

Page 9: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

9

Общие замечания .............................................................................................................................. 203

Методы секционирования................................................................................................................ 203

Одноуровневое секционирование .............................................................................................. 203

Композитное секционирование ................................................................................................... 204

Управление табличным пространством .............................................................................................. 205

Базовая компрессия таблиц (Basic Table Compression) .................................................................. 206

Расширенная строковая компрессия (Advanced Row Compression) ............................................. 206

Гибридное колоночное сжатие (Hybrid Columnar Compression) ................................................... 206

Сжатие сегментов (Segment Shrink) ................................................................................................. 207

Запуск сжатия динамического сжатия сегментов ...................................................................... 207

Примеры ......................................................................................................................................... 208

Безопасность .............................................................................................................................................. 209

Разработка и внедрение политики безопасности .............................................................................. 209

Пользователи ..................................................................................................................................... 209

Привилегии и роли ............................................................................................................................ 209

Аудит ................................................................................................................................................... 210

Настройка и управление аудитом ........................................................................................................ 211

Создание файла паролей ...................................................................................................................... 213

Шифрование столбцов и табличных пространств .............................................................................. 215

Шифрование столбцов ...................................................................................................................... 217

Шифрование табличных пространств .............................................................................................. 217

Словарь ........................................................................................................................................................... 219

Page 10: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

10

О чем хотел сказать автор Вначале несколько "не".

Эта книга не заменяет курс "Oracle Database 12c: New Features for Administrators", читаемый в

Oracle University.

Эта книга не содержит списка вопросов, которые могут быть заданы на реальном экзамене

1Z0-060, но содержит ответы на них.

В этом пособии содержится описание

а) основных изменений, сделанных в СУБД Oracle версии 12с по сравнению с 11g;

и

б) основных навыков администратора СУБД, которые могут пригодиться как для сдачи

экзамена 1Z0-060, так и в повседневной работе.

В упомянутом курсе Oracle University раскрываются специфические возможности релиза 12с. В

данном руководстве несколько глав посвящено существенно более широким темам, например,

повседневным обязанностям администратора СУБД (DBA). Потенциальный круг вопросов по данной

тематике может быть очень широким. В Oracle считают, и в этом автор полностью согласен с ними,

что люди, сдающие экзамен 1Z0-060, работали или работают в качестве DBA и знают большую часть

этих тем на практике. Если это не так, то нужно запланировать достаточное время для работы с

реальной базой данных.

Дополнительные источники знаний Основными источниками информации по подготовке к экзамену являются:

документация Oracle http://docs.oracle.com/

книги независимых авторов

т.н. White papers и статьи на Oracle Learning Library

Материалы Oracle Learning Library являются наиболее полными и точными, т.к. созданы

специалистами Oracle и проверены значительным количеством сторонних лиц.

При подготовке к экзамену желательно использовать несколько источников учебных

материалов. Разные точки зрения помогут составить более полное представление о рассматриваемой

теме, что, несомненно, поможет пониманию работы СУБД Oracle.

Page 11: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

11

Новые возможности СУБД Oracle 12c

Утилита Enterprise Manager Express

Использование Enterprise Manager Express

Enterprise Manager Express это утилита, предназначенная для управления базой данных (БД)

Oracle с использованием интернет-браузера. Она встроена в БД и позволяет отслеживать, управлять

производительностью БД и также выполнять некоторые общие административные функции. С

помощью веб-интерфейса можно просматривать, создавать и изменять различные объекты базы

данных. Утилита EM Express спроектирована, как легковесное приложение, оказывающее

незначительное воздействие на производительность. С EM Express не связаны какие-либо фоновые

процессы и задачи. При работе она использует только внутренние компоненты БД, такие как XDB и

SQL*Net и данные, собранные существующими процессами Oracle. EM Express запрашивает данные с

сервера базы данных только при работе пользователя с веб-интерфейсом. Запрошенная информация

обрабатывается внутри интернет-браузера, что минимизирует нагрузку на сервер базы данных.

Утилита EM Express не может функционировать без базы данных, поэтому EM Express не может

выполнять любые действия вне ее, в частности осуществить запуск или остановку экземпляра.

Следует сказать, что, поскольку EM Express использует Shockwave Flash (SWF) файлы, то используемый

браузер должен поддерживать Flash plug-in.

EM Express доступен через ссылку, выдаваемую ассистентом DBCA при создании базы данных:

Рис. 1 Сообщение об успешном создании БД. Ссылка на EM Express

Если неизвестно, какой порт был назначен для EM Express ("по умолчанию" используется

5500/tcp), то порт можно определить с помощью следующего SQL-запроса:

Page 12: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

12

SQL> SELECT DBMS_XDB_CONFIG.GETHTTPSPORT() FROM dual;

DBMS_XDB_CONFIG.GETHTTPSPORT()

------------------------------

5500

Ссылка на EM Express будет выглядеть так:

https://database-hostname:portnumber/em/

Например:

https://ora-1123:5500/em/ или https://192.168.150.196:5500/em/

Если экземпляр БД и прослушиватель запущены, то по указанному адресу в браузере

откроется начальная страница EM Express. Если база данных неактивна, то нужно запустить ее до

попытки зайти в EM Express. Зарегистрироваться в EM Express можно с использованием учетной

записи, имеющей достаточный уровень полномочий, а именно, обладающей одной из ролей

EM_EXPRESS_BASIC или EM_EXPRESS_ALL. Первоначально такими пользователями являются SYS и

SYSTEM. В реальной работе использование учетной записи SYS нежелательно. В место этого для

администрирования БД рекомендуется создать отдельную учетную запись, заменяющую SYS или

SYSTEM, и присвоить этой учетной записи роль EM_EXPRESS_BASIC или EM_EXPRESS_ALL.

При входе в EM Express будет отображена страница приглашения:

Рис. 2 Регистрация в EM Database Express 12c

Page 13: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

13

После регистрации открывается домашняя страница EM Express. На этой странице

отображается общее состояние БД и текущая активность. Административные задачи, доступные в

Enterprise Manager Express, сгруппированы в четыре меню в верхней части страницы:

Настройка (Configuration) - EM Express позволяет менять инициализационные параметры

базы данных. На странице показано текущее распределение памяти и список 10

процессов с максимальным потреблением памяти. Администратор может также

посмотреть список используемых опций и свойства БД.

Дисковая Память (Storage) - Функции администрирования дисковой памятью позволяют

DBA управлять redo-журналами (журналы повторов), архивными журналами и

табличными пространствами. Имеется возможность запустить консультант (advisor) по

UNDO пространству (пространство отката) и статистике. EM Express также отображает

информацию от содержании управляющего файла.

Безопасность (Secirity) - Меню безопасности EM Express позволяет DBA создавать и

изменять пользователей, роли, профили, выдавать и отзывать привилегии.

Производительность (Performance) - Центр производительности EM Express отображает

информацию о производительности БД за определенный период. Отображаемая

информация включает SQL Monitor, ASH Analytics (анализ истории активных сессий) и

ADDM (Automatic Database Diagnostic Monitor). Центр производительности также включает

в себя набор метрик, описывающих характеристики нагрузки и использование ресурсов

базы данных.

Рис. 3 Домашняя страница базы данных EM Express

Page 14: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

14

Настойка порта для EM Express

При необходимости порт EM Express может быть изменен. Каждый экземпляр БД на данном

сервере должен иметь уникальный порт. Если порт не был настроен, то доступ к EM Express

невозможен. Для настройки порта нужно выполнить несколько шагов:

1. Нужно проверить, что Oracle Net Listener уже настроен и запущен. Для запуска, остановки

и проверки состояния прослушивателя нужно использовать утилиту lsnrctl.

2. Если прослушиватель запущен на порту, отличном от порта "по умолчанию", 1521, то файл

init.ora базы данных, которая будет управляться EM Express, должен содержать параметр

local_listener. Параметр local_listener должен ссылаться на параметр в TNSNAMES,

указывающий на корректный прослушиватель. Например, запись local_listener=orcl будет

необходима для экземпляра, определенного в файле TNSNAMES.ORA с нестандартным

портом 1527: orcl= (DESCRIPTION=

(ADDRESS=

(PROTOCOL=tcp)(HOST=ora-1123)(PORT=1527)

)

(CONNECT_DATA=

(SERVICE_NAME=orcl)(SERVER=DEDICATED)

)

)

Диспетчер TCP должен быть включен. Для этого нужно добавить запись в файл init.ora для

управляемой EM Express базы данных dispatchers="(PROTOCOL=TCP)(SERVICE=<sid>XDB)"

3. Базу данных необходимо перезапустить, чтобы изменения в init.ora стали активными

4. С помощью PL/SQL процедуры DBMS_XDB_CONFIG.SETHTTPSPORT следует назначить порт

HTTPS для EM Express. Эта процедура изменит значение порта HTTPS в файле xdbconfig.xml

из Oracle XML DB Repository. Для выполнения этих действия необходимо подключиться к

БД с привилегией SYSDBA. В следующем примере устанавливается порт 5600 для EM

Express:

SQL> exec DBMS_XDB_CONFIG.SETHTTPSPORT(5600);

Следует отметить что, если вызов SETHTTPSPOST производился при запущенном процессе

прослушивателя, то некоторое время EM Express будет доступен как на старом, так на новом порту.

Если такое поведение является неприемлемым, то нужно перед вызовом функции остановить

процесс прослушивания, произвести замену порта и запустить процесс прослушивания.

Для получения большей информации о EM Express необходимо обратиться к документу Oracle

"Database 2 Day DBA" и крайне полезно установить СУБД Oracle 12c, чтобы более подробно

ознакомиться с EM Express.

Проверить успешность смены порта можно с помощью команды lsnrctl status (на рисунке

выделен фрагмент с описанием сервиса EM Express, зарегистрированного на нужном порту):

Page 15: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

15

Рис. 4 Информация о порте EM Database Express 12c

Использование ассистентов OUI, DBCA для установки и настройки базы

данных Установка СУБД Oracle обоснованно считается действием, требующим понимания специфики

операционной системы (ОС). Даже при наличии опыта успешных установок для используемой ОС

рекомендуется ознакомиться с соответствующим руководством. В данной главе описан опыт

установки Oracle 12c на Oracle Solaris 10 (SPARC).

Для установки файлов программного обеспечения СУБД для Solaris 10 (SPARC) нужно

выделить следующий объем дискового пространства:

Издание СУБД Oracle 12c Требуемый размер дискового пространства, GB

Enterprise Edition 6.1

Standard Edition 5.9

Standard Edition One 5.9

Дополнительно требуется также 1GB свободной памяти в директории /tmp. Сервер, на

котором будет функционировать база данных, должен иметь не менее 2 GB оперативной памяти и

соответствующее количество памяти swap'а:

Оперативная память сервера(RAM), GB Пространство swap

1 - 2 1.5 размера оперативной памяти (RAM)

2 - 16 равно размеру оперативной памяти

> 16 16GB

Page 16: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

16

Если выполнены эти базовые требования, то можно перейти к анализу дополнительных

требований к ресурсам. Проводить установку можно только после выполнения всех требований к

параметрам ОС, описанных в руководстве по установке (Oracle® Database Installation Guide 12c

Release 1 (12.1) for Oracle Solaris документ № E17752-12).

Подготовка ОС Solaris 10 для установки ПО Oracle включает следующие основные действия:

В файл /etc/system необходимо добавить следующие параметры ядра (см. также

http://docs.oracle.com/cd/E19076-01/t2k.srvr/819-2544-21/prod-note-general.html) и

перегрузить сервер.

bash-3.2# more /etc/system

*ident "@(#)system 1.18 05/06/27 SMI" /* SVR4 1.5 */

*

* SYSTEM SPECIFICATION FILE

.

.

set pcie:pcie_aer_ce_mask=0x1

set segkmem_lpsize=0x400000

В файл /etc/inittab необходимо добавить строки для настройки стека tcp/ip:

tm::sysinit:/usr/sbin/ndd -set /dev/tcp tcp_smallest_anon_port 9000 > /dev/console

tm::sysinit:/usr/sbin/ndd -set /dev/tcp tcp_largest_anon_port 65500 > /dev/console

tm::sysinit:/usr/sbin/ndd -set /dev/udp udp_smallest_anon_port 9000 > /dev/console

tm::sysinit:/usr/sbin/ndd -set /dev/udp udp_largest_anon_port 65500 > /dev/console

Нужно модифицировать профиль пользователя root, а именно снять ограничения "по

умолчанию":

projmod -s \

-K "process.max-file-descriptor=(basic,65536,deny),(priv,65536,deny)" \

-K "process.max-sem-nsems=(priv,2048,deny)" \

-K "project.max-sem-ids=(priv,1024,deny)" \

-K "project.max-shm-ids=(priv,256,deny)" \

-K "project.max-shm-memory=(priv,18446744073709551615,deny)" \

user.root

Требуется создать группы операционной системы:

# groupadd oinstall

# groupadd dba

Требуется создать пользователя-владельца инсталляции СУБД:

# /usr/sbin/useradd -g oinstall -G dba –s /bin/bash -d /home/oracle \

-m -k /etc/skel oracle

Page 17: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

17

Рекомендуется установить bash в качестве рабочей среды для владельца инсталляции Oracle,

поскольку часть скриптов, содержащихся в инсталляционных пакетах не работает корректно под

оболочкой Bourne.

Требуется создать профиль пользователя oracle:

projadd -p 200 -c "Oracle user" -U oracle \

-G dba,oinstall \

-K "process.max-file-descriptor=(basic,65536,deny),(priv,65536,deny)" \

-K "process.max-sem-nsems=(priv,2048,deny)" \

-K "project.max-sem-ids=(priv,1024,deny)" \

-K "project.max-shm-ids=(priv,256,deny)" \

-K "project.max-shm-memory=(priv,18446744073709551615,deny)" \

oracle.user

Нужно добавить следующую строку в файл /etc/user_attr

oracle::::project=oracle.user

чтобы привести файл в следующий вид:

bash-3.2# cat /etc/user_attr

#

# Copyright 2007 Sun Microsystems, Inc. All rights reserved.

# Use is subject to license terms.

#

# /etc/user_attr

#

# execution attributes for profiles. see user_attr(4)

#

#ident "@(#)user_attr 1.1 07/01/31 SMI"

#

#

adm::::profiles=Log Management

lp::::profiles=Printer Management

postgres::::type=role;profiles=Postgres Administration,All

root::::auths=solaris.*,solaris.grant;profiles=Web Console

Management,All;lock_after_retries=no;min_label=admin_low;clearance=admin_high

oracle::::project=oracle.user

bash-3.2#

Нужно убедиться, что у пользователя oracle установлен активный профиль oracle.user

bash-3.2# su - oracle

Oracle Corporation SunOS 5.10 Generic Patch January 2005

bash-3.2$ id -pa

uid=100(oracle) gid=100(oinstall) groups=100(oinstall),101(dba)

projid=200(oracle.user)

bash-3.2$ logout

Необходимо создать начальную базовую структуру директорий

# mkdir -p /u01/app/oracle

Page 18: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

18

# chown oracle:oinstall /u01/app/oracle

# chmod -R 775 /u01/

Дистрибутивы СУБД доступны на сайте Oracle после регистрации. Для 64-bit версии Oracle

требуется выгрузить solaris.sparc64_12cR1_database_1of2.zip и solaris.sparc64_12cR1_database_2of2.zip

в подходящую директорию, извлечь содержимое архивов с помощью программы unzip и запустить

инсталлятор Oracle runInstaller. Для работы инсталлятора обязательно наличие графической среды.

Если все требования по предварительной настройке ОС выполнены, то инсталлятор выведет

экран "Configure Security Updates" установки.

Шаг 1. "Configure Security Updates" - На этом экране необходимо ввести адрес почты, на

который Oracle сможет присылать информацию о проблемах с безопасностью ПО базы данных.

Дополнительно можно получать исправления и дополнения по безопасности с My Oracle Support.

Рис. 5 Установка ПО Oracle 12c. Экран 1

Page 19: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

19

Шаг 2. Загрузить обновления программного обеспечения - При необходимости можно

выгрузить обновления ПО с My Oracle Support. Для доступа нужна учетная запись и соответствующий

уровень оплаченной поддержки. Дополнительно можно выбрать использование ранее полученных

обновлений или вообще отказаться от них.

Рис. 6 Установка ПО Oracle 12c. Экран 2

Page 20: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

20

Шаг 3. Опции установки - На этом шаге можно выбрать один из возможных типов установки

СУБД: установку ПО и создание БД, просто установку ПО или модернизацию существующей базы

данных

Рис. 7 Установка ПО Oracle 12c. Экран 3

Page 21: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

21

Шаг 4. Grid опции установки - На этом шаге осуществляется выбор типа установки: установка

обычной инстанции, узла кластера Oracle Real Application Cluster или одноузлового кластера Oracle

RAC One Node.

Рис. 8 Установка ПО Oracle 12c. Экран 4

Page 22: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

22

Шаг 5. Выбор языка - На экране осуществляется выбор дополнительных языков для БД.

Рекомендуется выбирать все доступные.

Рис. 9 Установка ПО Oracle 12c. Экран 5

Page 23: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

23

Шаг 6. Тип СУБД - На этом шаге вы обязаны выбрать один из типов редакции СУБД: Enterprise

(база данных большого предприятия), Standard Edition (средние предприятия и большие отделы) и

Standard Edition One

Рис. 10 Установка ПО Oracle 12c. Экран 6

Page 24: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

24

Шаг 7. Определение пути установки. - На этом шаге выбирается местоположение ПО СУБД в

файловой системе.

Рис. 11 Установка ПО Oracle 12c. Экран 7

Page 25: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

25

Шаг 8. Создание inventory - На экране предлагается указать место хранения метаданных

инсталляции, если ПО Oracle устанавливается первый раз, и группу операционной системы,

владеющей данной директорией. Все последующие инсталляции ПО Oracle независимо от версий и

типов будут использовать указанное место хранения.

Рис. 12 Установка ПО Oracle 12c. Экран 8

Page 26: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

26

Шаг 9. Задание групп операционной системы - На шаге присваиваются привилегии БД

существующим группам операционной системы.

Рис. 13 Установка ПО Oracle 12c. Экран 9

Page 27: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

27

Шаг 10. Проверка соответствия. - Инсталлятор проверяет, что все параметры системы

удовлетворяют требованиям ПО СУБД. Если проверка завершается неудачно, то список ошибок

выводится на экран. Рекомендуется перед продолжением установки привести все параметры ОС в

соответствие с требованиями Oracle. При нажатии клавиши ignore инсталлятор продолжит работу,

несмотря на встретившиеся ошибки.

Шаг 11. Сводка - Инсталлятор выводит итоговое сообщение обо всех опциях, выбранных

ранее. На этом шаге можно изменить часть опций.

Рис. 14 Установка ПО Oracle 12c. Экран 11

Page 28: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

28

Шаг 12. Установка продукта. - На этом шаге инсталлятор производит копирование файлов и

другие инсталляционные задачи (линковку, задание полномочий, флагов выполнения и т.д.). Ход

установки отображается в процентах выполнения и стадиях.

Рис. 15 Установка ПО Oracle 12c. Экран 12

Page 29: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

29

Шаг 12а. root скрипты. - Завершающий шаг установки требует, чтобы два скрипта были

запущены под суперпользователем root. Этот шаг специфичен для Unix-подобных систем.

Рис. 16 Установка ПО Oracle 12c. Выполнение root скриптов

Page 30: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

30

Шаг 13. Завершение - Это то, к чему стремились!

Рис. 17 Установка ПО Oracle 12c. Завершение установки

Ассистент создания базы данных (Database Create Assistant (DBCA))

В ранних версиях Oracle действие "создание базы данных" означало выполнение команды

CREATE DATABASE , которая делала все необходимые действия. Команда требовала введения массы

параметров. Вряд ли кто-то сожалеет, что теперь можно обойтись без этого. Database Create Assistant

(DBCA)) является существенно более простым средством создания базы данных. По завершении

работы DBCA база данных готова к работе, тогда как база, созданная при помощи CREATE DATABASE,

требует запуска нескольких скриптов прежде, чем работа с ней будет возможна! Утилита DBCA может

быть запущена прямо из инсталлятора, или же она может быть запущена как отдельное приложение

в любой момент после завершения установки ПО Oracle.

DBCA работает в двух режимах: интерактивном и пакетном. Интерактивный режим использует

графический интерфейс и проводит пользователя через несколько шагов создания и настройки БД.

Пакетный режим позволяет создать БД с помощью скрипта. Утилита DBCA запускается в пакетном

режиме при задании аргументов командной строки и файла ответов, либо аргументов и файла

ответов. В главе описан только интерактивный режим.

Page 31: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

31

Для запуска DBCA нужно зарегистрироваться на сервере БД под пользователем, имеющим

права для создания и запуска БД. Для запуска DBCA на UNIX/Linux или в командной строке Microsoft

Windows нужно ввести команду dbca. Исполняемый модуль dbca расположен в директории

ORACLE_HOME/bin. После запуска DBCA нужно ответить на ряд вопросов о типе, размещении и

планируемым параметрам базы данных и создать БД. Рассмотрим процедуру создания базы данных

"по шагам".

Шаг 1. Операции с БД. На этом шаге нужно выбрать одну из операций: создание базы данных,

настройку или удаление базы данных (опции недоступны при отсутствии настроенных БД), настройку

шаблонов создания БД или управление перемещаемыми (pluggable) БД (опция недоступна при

отсутствии настроенных перемещаемых БД).

Рис. 18 Создание базы данных при помощи DBCA. Экран 1

Page 32: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

32

Шаг 2. Режим создания БД. На этом шаге необходимо выбрать имя базы данных, тип

дисковой памяти, расположение файлов и области быстрого восстановления (fast recovery area),

используемый набор символов и пароль администратора БД. Если используется Enterprise версия

также можно создать базу контейнерного типа. В расширенном (Advanced) режиме возможно

задание много других параметров БД.

Рис. 19 Создание базы данных при помощи DBCA. Экран 2

Page 33: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

33

Шаг 3. Проверка соответствия требованиям. - DBCA проверяет, что выполняются все

необходимые условия для создания БД

Рис. 20 Создание базы данных при помощи DBCA. Экран 3

Page 34: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

34

Шаг 4. Сводка - На этом экране показано, с какими параметрами будет создана БД в данный

момент.

Рис. 21 Создание базы данных при помощи DBCA. Экран 4

Page 35: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

35

Шаг 5. Процесс создания БД - На экране отображается процесс создания базы данных.

Рис. 22 Создание базы данных при помощи DBCA. Экран 5

Когда DBCA завершит свою работу, база данных будет полностью готова к использованию, т.е.

можно подключаться к БД и создавать пользователей и объекты.

После создания, смены версии БД или установки исправлений следует запустить скрипт

utlrp.sql. Этот скрипт перекомпилирует все PL/SQL модули, включая пакеты, процедуры и триггеры,

которые могут быть в недействительном состоянии. "По умолчанию" скрипт производит

параллельную перекомпиляцию, основываясь на значении параметра CPU_COUNT. Этот шаг

необязателен, но Oracle рекомендует сделать его сразу после создания базы данных, а не позднее.

Page 36: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

36

Введение в модель арендованной контейнерной базы данных (Multitenant

Container Database (CBD))

Преимущества контейнерной базы данных

В версии Oracle 12c вводится принципиально новая архитектура - арендованная база данных

(опция Multitenant Enterprise Edition). Новая архитектура позволяет рассматривать базу данных Oracle

как контейнерную БД (Container database, CDB), которая предоставляет ресурсы для нескольких

перемещаемых баз данных (pluggable databases, PDBs), каждая из которых может быть добавлена или

удалена из CDB. Существующие БД Oracle могут быть адаптированы для помещения в контейнерную

базу. Обратное неверно. Новые перемещаемые БД (PDB) в свою очередь могут быть доступны всем

клиентам без необходимости изменения существующих приложений.

К преимуществам модели арендованной контейнерной базы данных относятся:

Консолидация баз данных - Множество перемещаемых баз данных могут находиться

внутри единственной контейнерной БД. В рамках CDB они разделяют единый набор

фоновых процессов, серверной и системной памяти при полном разделении данных в

рамках индивидуальных PDB. В рамках этой архитектуры отсутствует необходимость в

дополнительном обслуживании или смешивании данных как в случае виртуальной БД

(Virtual Private Database). Это позволяет размещать много больше перемещаемых баз

(PDBs) на используемом оборудовании, нежели в случае использования привычной

архитектуры Oracle.

Снижение стоимости - Консолидация нескольких баз может значительно снизить

стоимость требуемого серверного оборудования. Также контейнерная БД, содержащая

десяток перемещаемых баз PDBs требует значительно меньше обслуживания, чем десять

отдельных БД. В итоге нужно меньше персонала, правда, более квалифицированного.

Быстрое развертывание - Перемещаемые БД делают очень быстрым процесс миграции

или развертывания данных и кода. Вставка перемещаемой БД в контейнерную,

извлечение и вставка в другую контейнерную базу занимают незначительное время.

Упрощенное управление - Управление и мониторинг одной контейнерной БД

значительно проще, чем работа с несколькими отдельными базами, так как есть единый

набор файлов и единственная инстанция для обслуживания. При этом упрощаются

процедуры резервного копирования и восстановления после сбоев.

Разделение административных обязанностей - Учетные записи арендованных баз

являются либо общими, т.е. при их использовании возможно подключение к любому

контейнеру, в котором у них есть привилегии, либо локальными, т.е. возможно

подключение только к одной перемещаемой базе. Обязанности DBA в свою очередь могут

быть разделены между контейнером CDB и арендной базой PDB. Администраторы CBD

используют общие учетные записи для администрирования CDB. Администраторы PDB

пользуются локальными учетными записями для администрирования отдельных

перемещаемых баз PDB. Привилегии определены только в рамках контейнера, где они

выданы. Локальный пользователь одной перемещаемой базы не имеет привилегий на

другую базу внутри общей контейнерной базы CDB.

Page 37: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

37

Упрощение настройки - Контроль и настройка одной базы данных проще, чем настройка

десятка БД.

Упрощение установки обновлений - Установка обновлений или замена версии одной

базы данных значительно проще и менее продолжительны, нежели те же операции с

несколькими БД.

Описание арендной архитектуры

Арендная архитектура это технология, которая позволяет базе данных Oracle работать как

контейнерная база с несколькими, от 0 до 253, перемещаемыми базами (PDB). Контейнер

представляет собой набор схем, объектов и связанных с ними конструкций, хранимый в

арендованной базе данных. Контейнер это либо перемещаемая БД (PDB), либо корневая база (root

или CDB$ROOT). Каждая PDB с точки зрения приложения является отдельной базой данных. В рамках

CDB каждая PDB должна иметь уникальный идентификатор ID и имя. Перемещаемая БД (PDB)

изолирует данные и операции, поэтому с точки зрения пользователя или приложения, получающего

доступ по сети Oracle Net, каждая PDB выглядит так, как будто она являются традиционной базой.

Каждая контейнерная база включает в себя следующие контейнеры:

Единственный контейнер root - Корневой контейнер содержит метаданные ПО Oracle

(например, поставленные Oracle исходные коды PL/SQL пакетов) и общих пользователей.

Общий пользователь (common user) это пользователь, известный для всех контейнеров.

Корневой контейнер называется CDB$ROOT. Все PDB принадлежат корневому контейнеру.

Данные пользователей не следует хранить в корневом контейнере, и системно-

определенные схемы корневого контейнера никогда не должны меняться. Исключение

составляет создание общих пользователей и роли для административных целей.

Единственный контейнер seed PDB - Seed (англ. "семя", "посевной материал") PDB -

системно-поставляемый шаблон базы данных, который может быть использован при

создании новых перемещаемых баз данных. seed PDB называется PDB$SEED. Не следует

добавлять или изменять объекты в PDB$SEED.

Пользовательские перемещаемые базы PDB, от 0 до 253. - PDB, созданные

пользователями (под термином пользователь имеется в виду администратор БД), это

сущности, содержащие данные и код, предназначенные для реализации определенного

набора функций или бизнес-задач. Сразу после создания CDB не содержит PDB.

Перемещаемые базы данных (PDB) добавляются к контейнерной базе данных по мере

необходимости. Каждая из PBD должна иметь уникальное в пределах CDB имя. Более

того, поскольку каждая PDB имеет сервис с собственным именем, имя PDB должно быть

уникальным в пределах всех CBD, обслуживаемых общим прослушивателем.

Создание и настройка контейнерной базы данных и перемещаемых баз данных

Создание и настройка контейнерной БД (CDB)

Для создания CDB нужно выполнить такие же действия, как и для создания обычной БД

Oracle. До начала процедуры нужно знать, для каких целей будет использоваться БД и планировать

создание в соответствии с этим. Некоторые предварительные рекомендации включают:

Page 38: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

38

Спланировать таблицы и индексы перемещаемых БД, которые будут включены с CDB, и

оценить размеры требуемого дискового пространства.

Спланировать размещение файлов CDB в операционной системе.

Спланировать количество фоновых процессов в CDB.

Определить глобальное имя CDB, которое будет задано в параметрах DB_NAME и

DB_DOMAIN.

Разработать стратегию резервного копирования и восстановления для защиты CDB от

аварий.

Выбрать подходящий набор символов для интернациональных приложений.

Оценить начальный размер табличного пространства SYSAUX.

Перед тем, как будет создана новая контейнерная БД (CDB), нужно убедиться в следующем:

Должно быть установлено ПО Oracle 12c с уровнем совместимости не менее 12.0.0.

Сервер должен обладать достаточным количеством оперативной памяти.

Сервер должен обладать достаточным количеством дисковой памяти, чтобы разместить

файлы планируемых перемещаемых баз.

Контейнерная база CDB может быть создана как во время, так и после установки ПО Oracle.

База CDB может быть создана либо с помощью Database Configuration Assistant (DBCA), либо SQL-

командой CREATE DATABASE. Oracle рекомендует использование DBCA. DBCA является наиболее

простым методом, и CDB готова к использованию сразу после завершения работы DBCA.

Ассистент DBCA может быть запущен из Oracle Universal Installer или как отдельное

приложение в любое время после установки ПО Oracle. Возможно создание CDB в интерактивном или

пакетном режиме. В интерактивном режиме используется графический интерфейс, и настройка БД

выполняется пошагово. Пакетный режим использует скрипт создания CDB. Как только CDB создана, в

нее с помощью утилиты DBCA можно включить новую перемещаемую БД (PDB).

Использование SQL-оператора CREATE DATABASE по созданию CDB сходно с созданием

монолитной БД. По сравнению с созданием CDB при помощи DBCA это более трудозатратный

процесс. Однако вручную можно создавать CDB при помощи скриптов и выполнять точную настройку

опций, что не получится с DBCA. При использовании SQL-оператора CREATE DATABASE нужно указать

имена и расположение root файлов и seed файлов. После завершения создания CDB ее файлы могут

использоваться для создание новых PDB. Контейнер seed не может быть модифицирован после

создания. Имена и расположение файлов seed должны быть указаны одним из следующих способов:

SEED_FILE_NAME_CONVERT - Этот параметр определяет каким образом формировать

имена файлов seed из имен root файлов. Он может быть использован для задания одного

или нескольких шаблонов имен файлов и шаблонов замены имен файлов в форме

('string1','string2',' string3',' string4'). Шаблон string2 замещает string1, string4 - string3.

Можно задать столько пар, сколько потребуется. Нечетное количество параметров

вызовет ошибку. Может быть задано значение NON, что означает отсутствие

преобразования. Если параметр не задан, преобразование не производится.

SEED_FILE_NAME_CONVERT задает имена файлов для seed файлов в директории

Page 39: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

39

/oracle/pdbseed. Шаблоны имен файлов, указанные в этом инициализационном

параметре, не могут совпадать с именами файлов или директорий, управляемых Oracle

Managed Files.

Oracle Managed Files - Когда разрешено использование Oracle Managed Files, OMF

определяет имена и расположение файлов seed.

PDB_FILE_NAME_CONVERT - Инициализационный параметр PDB_FILE_NAME_CONVERT

может использоваться для указания имен и расположения файлов seed. Если

PDB_FILE_NAME_CONVERT включен при создании CDB в инициализационный файл и ни

один из двух других методов не задействован, то он определит имена файлов seed.

Если задан более чем один из описанных методов, то приоритет определяется в приведенном

выше порядке. Если в конструкции CREATE DATABASE заданы все три метода, то будет использоваться

только параметр SEED_FILE_NAME_CONVERT.

Создание и настройка перемещаемой БД (PDB)

Для создания перемещаемой БД (PDB) необходимо выполнение следующих условий:

Должна существовать контейнерная БД (CDB).

CDB должна быть открыта в режиме read/write.

Текущий пользователь должен быть общим пользователем, с текущим контейнером root.

Текущий пользователь должен иметь системную привилегию CREATE PLUGGABLE

DATABASE.

Имя PDB должно быть уникально для "своей" CDB и для всех CDB, обслуживаемых общим

прослушивателем.

Перемещаемые PDB, создаваемые в конфигурации Oracle Data Guard с физической standby

базой, должны удовлетворять дополнительным специфическим ограничениям, см.

руководство Oracle Data Guard Concepts and Administration для детальной информации.

Существует четыре (4) метода создания перемещаемой базы данных (PDB) в арендуемой

контейнерной БД (CDB):

Использование seed - Файлы seed копируются в новое место и ассоциируются с новой

перемещаемой БД

Клонирование существующей PDB - Существующая перемещаемая база данных (PDB)

может быть клонирована и включена в контейнерную БД. Используемая в качестве

источника PDB может быть частью локальной CDB или другой CDB. Все файлы,

принадлежащие PDB-источнику копируются в новое место и ассоциируются с новой PDB.

Включение извлеченной перемещаемой БД - XML-файл с описанием извлеченной

совместно с файлами БД включается в CDB.

Преобразование монолитной БД в контейнерную - Пакет DBMS_PDB может быть

использован для создания извлеченной БД из монолитной БД 12c. Созданная таким

образом PDB может быть включена в CDB.

Все описанные техники включают использование оператора CREATE PLUGGABLE DATABASE в

тот или иной момент времени. Этот оператор используется для копирования базы данных и

Page 40: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

40

включения перемещаемой БД в контейнерную БД согласно требованиям. Этот оператор имеет

дополнительные параметры для установки некоторых характеристик PDB:

Дисковая память - Параметр STORAGE указывает количество памяти, которое может быть

использовано всеми табличными пространствами, принадлежащими PDB, и объем памяти

во временном табличном пространстве "по умолчанию", разделяемом всеми PDB,

который может быть использован сессиями PDB. Если установлен STORAGE UNLIMITED или

параметр STORAGE не задан, то PDB не имеет ограничений по количеству дисковой

памяти.

Расположение файлов - Всего имеется три параметра, влияющих на имена файлов в PDB.

Параметр PATH_PREFIX используется для задания директории и вложенных

поддиректорий для расположения файлов PDB, когда заданы относительные пути для

объектов и определенных параметров инициализации. Параметр FILE_NAME_CONVERT

задает имена файлов PDB после включения ее в CDB. Параметр

SOURCE_FILE_NAME_CONVERT задает имена PDB файлов до включения ее в CDB.

Шаблон использования временного файла - Параметр TEMPFILE REUSE указывает, что

существующий временный файл временного табличного пространства в целевой

директории может быть использован повторно. Если задан этот параметр, и в директории

нет файла, то Oracle создаст новый временный файл. Если параметр не задан, Oracle

попытается создать временный файл. Если файл с таким же именем, как и создаваемый,

существует, то возникнет ошибка, и CDB не будет создана.

Создание перемещаемой БД из seed

Для создания перемещаемой БД (PDB) в рамках контейнерной БД (CDB) можно использовать

оператор CREATE PLUGGABLE DATABASE с использованием файлов seed.При создании новой PDB из

seed должен быть явно указан администратор базы данных DBA для новой PDB. Новая БД будет

создана с тремя табличными пространствами: SYSTEM, SYSAUX, TEMP. Администратор создается как

локальный пользователь новой PDB и ему назначается роль PDB_DBA. Для создания PDB из seed

нужно:

Зарегистрироваться в корневом контейнере базы CDB с помощью SQL*Plus.

Выполнить CREATE PLUGGABLE DATABASE команду, указав локального администратора для

PDB. При необходимости нужно указать другие параметры.

Открыть новую перемещаемую базу в режиме read/write, чтобы Oracle смог завершить

интеграцию новой PDB в CDB.

Выполнить резервное копирование PDB.

Например:

SQL> CREATE PLUGGABLE DATABASE ocp_pdb ADMIN USER ocp_adm IDENTIFIED BY password;

Клонирование перемещаемой БД

С помощью оператора CREATE PLUGGABLE DATABASE можно клонировать существующую PDB.

При клонировании существующей БД должен быть задан параметр FROM. PDB-источник может

находиться как внутри локальной, так в удаленной CDB. Для клонирования БД пользователь должен

Page 41: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

41

обладать привилегией CREATE PLUGGABLE DATABASE в контейнере CBD$ROOT и исходной PDB, а

исходная PDB должна быть открыта в режиме read-only. Для клонирования PDB нужно:

Зарегистрироваться в корневом контейнере базы CDB с помощью SQL*Plus.

Выполнить CREATE PLUGGABLE DATABASE команду, указав исходную PDB в параметре

FROM. При необходимости нужно указать другие параметры.

Открыть новую перемещаемую базу в режиме read/write, чтобы Oracle смог завершить

интеграцию новой PDB в CDB.

Выполнить резервное копирование PDB.

Следующая команда создает новую перемещаемую базу данных pdb2 на основе

существующей pdb1:

SQL> CREATE PLUGGABLE DATABASE pdb2 FROM pdb1 PATH_PREFIX = '/u01/oracle/pdb2'

FILE_NAME_CONVERT = ('/u01/oracle/pdb1/', '/u01/oracle/pdb2/');

Включение извлеченной перемещаемой БД в контейнерную БД

Эта технология использует XML-файл, содержащий описание метаданных существующей

перемещаемой БД (PDB), совместно со связанными файлами БД для включения в CDB. XML-файл

описывает расположение файлов PDB. Для включения извлеченной PDB в CDB нужно:

Зарегистрироваться в корневом контейнере базы CDB с помощью SQL*Plus.

Запустить процедуру DBMS_PDB.CHECK_PLUG_COMPATIBILITY, чтобы определить

совместимость PDB c CBD. Шаг не является обязательным.

Выполнить команду CREATE PLUGGABLE DATABASE, указав XMP-файл, содержащий

описание БД в параметре USING. При необходимости нужно указать другие параметры.

Открыть новую перемещаемую базу в режиме read/write, чтобы Oracle смог завершить

интеграцию новой PDB в CDB.

Выполнить резервное копирование PDB.

Например:

SQL> CREATE PLUGGABLE DATABASE ocp_pdb USING '/u01/aux/ocp_pdb.xml' NOCOPY TEMPFILE

REUSE;

Создание перемещаемой БД на основе монолитной

Существует три способа преобразовать монолитную БД в перемещаемую и включить ее в

контейнерную БД:

DBMS_PDB - С помощью пакета DBMS_PDB создать XML-файл, описывающий метаданные

БД. Этот файл описывает файлы монолитной (классической) БД. Затем возможно включить

эти файлы в CDB, используя этот XML-файл, как это описано ранее. Чтобы использовать эту

технологию, монолитная БД должна быть версии 12с. Более старые версии должны быть

модернизированы до 12с.

Page 42: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

42

Oracle Data Pump - В данном методе используется утилиты Oracle Data Pump для экспорта

данных из монолитной БД, которые затем импортируются в перемещаемую БД (PDB).

GoldenGate Replication - В данном методе используется репликация данных из

монолитной БД в перемещаемую с помощью продукта GoldenGate. Когда перемещаемая

БД получит все данные из монолитной, пользователи могут переключиться на

перемещаемую.

Удаление перемещаемой базы данных

Для удаления перемещаемой БД применяется команда DROP PLUGGABLE DATABASE.

Перемещаемая БД (PDB) может быть удалена в случае переноса в другую контейнерную БД (CDB) или

при отсутствии необходимости в ней. После удаления PDB, управляющий файл CDB модифицируется

таким образом, чтобы удалить все ссылки на удаляемую PDB. Команда DROP не производит удаление

каких-либо архивированных redo-журналов и архивных наборов для удаленной БД. Для их удаления

нужно использовать Oracle Recovery Manager (RMAN). Когда перемещаемая БД удалена можно либо

сохранить, либо удалить файлы данных, связанные с этой БД, используя один из следующих

параметров:

KEEP DATAFILES - "по умолчанию". Файлы данных сохраняются. Временный файл

перемещаемой БД будет удален, даже если включен этот параметр, т.к. этот файл больше

не нужен.

INCLUDING DATAFILES - Эта опция удаляет файлы данных с диска. Для перемещаемой БД,

созданной с параметром SNAPSHOT COPY, параметр INCLUDING DATAFILES обязательно

должен быть указан при удалении перемещаемой БД.

Для удаления перемещаемой БД должны выполняться следующие условия:

PDB должны быть смонтирована или она должна быть закрыта.

Пользователь должен иметь SYSDBA или SYSOPER привилегии, выданные глобально или

локально в PDB. Сессия должна быть установлена с параметром AS SYSDBA или AS

SYSOPER.

Для удаления перемещаемой БД нужно:

Зарегистрироваться в корневом контейнере CDB с помощью SQL*Plus.

Выполнить команду DROP PLUGGABLE DATABASE, указав удаляемую БД.

Например,

SQL> DROP PLUGGABLE DATABASE ocp_pdb INCLUDING DATAFILES;

Преобразование монолитной базы Oracle данных в перемещаемую базу данных

Как говорилось ранее, существует три способа преобразовать монолитную базу данных (БД) в

перемещаемую: при помощи пакета DBMS_PDB, утилитами Oracle Data Pump и с помощью Goldengate

репликации. В этом разделе рассматривается процедура DBMS_PDB.DESCRIBE. Утилиты Oracle Data

Pump рассматриваются далее, а продукт Golden Gate не включен в изложение, т.к. не является частью

экзамена.

Page 43: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

43

Чтобы преобразовать монолитную БД в перемещаемую с использованием пакета DBMS_PDB,

требуется, чтобы монолитная была в транзакционно-целостном состоянии. Кроме того, она должна

быть запущена в режиме read-only. Как только монолитная БД запущена в режиме read-only, следует

подключиться к ней и выполнить процедуру DBMS_PDB.DESCRIBE. Эта процедура создаст XML-файл с

описанием монолитной БД. В примере создается файл ocp_db.xml в директории /u01/oracle

SQL> BEGIN

DBMS_PDB.DESCRIBE(

pdb_descr_file => '/u01/oracle/ocp_db.xml');

END;

/

По завершению процедуры создается XML-файл и файлы монолитной базы могут быть

включены в контейнерную БД (CDB). В этом момент можно остановить монолитную базу и выдать

команду CREATE PLUGGABLE DATABASE с подходящими параметрами, например

SQL> CREATE PLUGGABLE DATABASE ocp_db USING '/u01/oracle/ocp_db.xml'

COPY

FILE_NAME_CONVERT = ('/u01/oracle/db01/', '/u01/oracle/ocp_db/');

Перед первым открытием новой перемещаемой БД нужно обязательно выполнить скрипт

ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql, для чего следует переключиться в созданную

перемещаемую базу данных с помощью команды

SQL> ALTER SESSION SET CONTAINER=ocp_db;

и выполнить этот скрипт:

SQL> @?/rdbms/admin/noncdb_to_pdb.sql

После завершения скрипта новая перемещаемая БД должна быть открыта в режиме read-

write для завершения интеграции ее в контейнерную базу CDB.

SQL> ALTER SESSION SET CONTAINER=ocp_db;

SQL> ALTER PLUGGABLE DATABASE OPEN;

При попытке открыть новую перемещаемую БД в первый раз в режиме read-only будет

выдана ошибка. Как только перемещаемая БД была открыта в режиме read-write, необходимо

выполнить резервное копирование новой перемещаемой БД.

Управление контейнерными и перемещаемыми базами данных

Приложения могут получать доступ к корневой БД или перемещаемым БД через сервисы.

Сервисы БД являются дополнительными свойствами перемещаемых БД. При создании новой

перемещаемой БД автоматически создается новый сервис с таким же именем. Если служба Oracle Net

Services настроена корректно, то возможен доступ к перемещаемой БД через имя сервиса с

использованием либо простого синтаксиса соединения (easy connect syntax) или c использованием

имени сервиса из файла tnsnames.ora. При установлении соединения с использованием имени

Page 44: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

44

сервиса с непустым именем PDB имя пользователя в сессии определяется в контексте PDB. Если имя

сервиса не указано или использовано имя сервиса с пустым значением PDB, то будет считаться, что

пользователь относится к контексту root.

Если две и более контейнерных БД используют общий прослушиватель, и эти БД содержат две

и более перемещаемых БД с одинаковым именем сервиса, то подключение будет носить случайный

характер. Все сервисы для перемещаемых БД должны быть либо уникальны для данной системы,

либо каждая контейнерная БД должны иметь свой собственный прослушиватель.

К каждой перемещаемой БД можно подключиться с использованием команды CONNECT

SQL*Plus. Альтернативным способом является команда SQL ALTER SESSION SET CONTAINER. Команда

CONNECT может быть использована для подсоединения к корню или перемещаемой БД в

контейнерной базе. Любой из перечисленных ниже способов может быть использован для доступа к

корневому контейнеру через CONNECT из SQL*Plus:

локальное соединение

локальное соединение с системной аутентификацией

соединение с БД с использованием простого синтаксиса

соединение с БД с использованием имени сервиса

удаленное соединение с БД с использованием внешней аутентификацией

Чтобы установить сессию с корневым контейнером, необходимо быть общим пользователем

и иметь привилегию CREATE SESSION в корневом контейнере. Для подсоединения к корневому

контейнеру с использованием команды CONNECT SQL*Plus следует запустить SQL*Plus с параметром

/NOLOG

$ sqlplus /nolog

Находясь в SQL*Plus можно установить сессию с корневым контейнером используя:

локальное соединение

SQL> connect username/password

локальное соединение с системной аутентификацией

SQL> connect / as sysdba

соединение с использование имени сервиса

SQL> connect username/pasword@ocp_db

Любой из следующих способов может быть использован для установления соединения с

перемещаемой БД с использованием команды CONNECT из SQL*Plus:

соединение с БД с использованием синтаксиса easy connect

SQL> connect username/password@host[:port][/service_name]

Page 45: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

45

соединение с БД с использованием имени сервиса

SQL> connect username/password@service_name

Чтобы пользователь мог установить соединение с перемещаемой БД, пользователь должен

быть общим, и ему должна быть присвоена привилегия CREATE SESSION глобально или в данной

перемещаемой БД, или он должен быть локальным пользователем с привилегией CREATE SESSION.

Только пользователь с одной из ролей SYSDBA, SYSOPER, SYSBACKUP, SYSDG может подключаться с

перемещаемой БД в смонтированном состоянии. Для соединение с перемещаемой БД с

использованием команды CONNECT SQL*Plus нужно запустить SQL*Plus с параметром /nolog

$ sqlplus /nolog

следующая команда устанавливает соединение локального пользователя user с

перемещаемой БД (PDB) ocp_db:

SQL> connect user@ocp_db

Если сессия установлена для общего пользователя контейнерной БД, то следующая команда

может быть использована для перехода в другой контейнер

SQL> ALTER SESSION SET CONTAINER=container_name;

,где container_name может быть одним из следующих:

CDB$ROOT для переключения в корневой контейнер

PDB$SEED для перехода в seed контейнер

имя перемещаемой БД (PDB)

Запуск и остановка контейнерной (CDB)/перемещаемой (PDB) базы данных

За исключением среды Real Application Cluster контейнерная БД выполняется в виде

одиночного экземпляра. Процесс запуска контейнерной БД ничем не отличается от запуска

монолитной. Команды STARTUP NOMOUNT, STARTUP MOUNT и STARTUP OPEN работают в

контейнерной БД и имеют такое же назначение. Однако статус перемещаемой БД внутри

контейнерной БД изменился. Для запуска экземпляра контейнера следует подключиться к корневому

контейнеру с привилегией SYSDBA. Как только экземпляр запущен, можно воспользоваться

представлением V$PDBS для определения статуса перемещаемых БД. Контейнерная БД может быть

запущена в режиме:

NOMOUNT - Если контейнерная БД находится в состоянии NOMOUNT, то инстанция

запущена, но перемещаемые БД не имеют статуса, и запрос к V$PDBS не вернет каких-

либо данных.

MOUNT - Если контейнерная БД смонтирована, то управляющий файл экземпляра открыт.

Корневой контейнер и все контейнеры будут в статусе MOUNTED.

OPEN - Если контейнерная БД открыта, то корневой контейнер будет открыт. SEED

контейнер будет открыт в режиме read-only. Все остальные контейнеры будут в состоянии

MOUNT.

Page 46: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

46

Когда контейнерная БД открыта, можно открыть перемещаемые БД по отдельности или

одновременно:

SQL> ALTER PLUGGABLE DATABASE ocp_db OPEN;

SQL> ALTER PLUGGABLE DATABASE ALL OPEN;

SQL> ALTER PLUGGABLE DATABASE ALL EXCEPT ocp_db OPEN;

Остановка экземпляра контейнерной БД не отличается от остановки монолитной базы

данных. Для остановки экземпляра необходимо выполнение следующих условий:

БД должна быть открыта или смонтирована

Текущий пользователь должен быть общим пользователем с одной из привилегий

SYSDBA, SYSOPER, SYSBACPUP, SYSDG

Текущим контейнером должен быть CDB$ROOT

Режим перемещаемой БД может быть изменен SQL командой ALTER PLUGGABLE DATABASE

или SQL*Plus командой STARTUP. Для перемещаемой БД возможно одно из следующих состояний:

OPEN READ WRITE - в этом режиме разрешены запросы и пользовательские транзакции с

генерацией журналов изменений.

OPEN READ ONLY - в этом режиме разрешены запросы, но запрещены изменения.

OPEN MIGRATE - в этом режиме разрешен запуск скриптов для модификации словаря

перемещаемой БД. Перемещаемая БД находится в этом режиме после команды ALTER

DATABASE OPEN UPGRADE.

MOUNTED - в смонтированном состоянии перемещаемая БД ведет себя аналогично

смонтированной монолитной БД. Никакие изменения объектов не разрешены, и объекты

доступны только для администраторов.

Если текущим контейнером является корневой, то команда ALTER PLUGGABLE DATABASE

изменяет состояние указанных перемещаемых БД (PDB). Если PDB открыта командой ALTER

PLUGGABLE DATABASE OPEN, то режим READ WRITE является значением "по умолчанию".

Исключением является случай, когда PDB принадлежит контейнерной БД, используемой в качестве

физической standby базы данных, для которой значением "по умолчанию" является READ ONLY.

Перемещаемые БД, состояние которых должно быть изменено, могут быть указаны:

в виде списка из одной или нескольких БД, разделенных запятыми;

параметра ALL, что указывает на все доступные БД в рамках контейнерной БД;

ALL EXCEPT, что указывает на необходимость изменения всех БД, за исключением явно

указанных.

Примеры:

SQL> ALTER PLUGGABLE DATABASE ocp_db, test OPEN READ WRITE;

SQL> ALTER PLUGGABLE DATABASE ALL OPEN READ WRITE;

SQL> ALTER PLUGGABLE DATABASE ocp_db OPEN READ ONLY RESTRICTED;

SQL> ALTER PLUGGABLE DATABASE ALL EXCEPT ocp_db OPEN;

Page 47: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

47

Если текущим контейнером является корневой, то можно использовать команду STARTUP

PLUGGABLE DATABASE для открытия отдельной перемещаемой БД. Команда STARTUP PLUGGABLE

DATABASE имеет следующие опции:

FORCE - закрывает открытую перемещаемую БД перед последующим открытием в read-

write.

RESTRICT - открывает PDB в режиме, позволяющим устанавливать сессии с БД только

пользователям с привилегией RESTRICTED SESSION.

OPEN - открывает перемещаемую БД либо режиме read-write или read-only. Вы можете

указать OPEN READ WRITE или OPEN READ ONLY. "по умолчанию" используется READ

WRITE.

Примеры:

SQL> STARTUP PLUGGABLE DATABASE ocp_db OPEN;

SQL> STARTUP PLUGGABLE DATABASE ocp_db RESTRICT;

SQL> STARTUP PLUGGABLE DATABASE ocp_db OPEN READ ONLY;

SQL> STARTUP PLUGGABLE DATABASE ocp_db FORCE;

Команда ALTER PLUGGABLE DATABASE также используется для закрытия одной или нескольких

перемещаемых БД. Чтобы закрыть PDB, нужно подключиться к корневому контейнеру с привилегией

SYSOPER или SYSDBA и выполнить команду ALTER PLUGGABLE DATABASE CLOSE, указав имена

закрываемых перемещаемых БД. Если команда содержит ключевой слово IMMEDIATE, то транзакции

в выбранной БД откатываются назад и все сессии принудительно закрываются. Если ключевое слово

IMMEDIATE отсутствует, то команда "подвисает", ожидая завершения всех сессий с данной

перемещаемой БД. Все файлы данных перемещаемой БД будут закрыты и недоступны для

пользователей. Команды SHUTDOWN IMMEDIATE и ALTER PLUGGABLE DATABASE CLOSE эквиваленты с

точки зрения перемещаемых баз данных.

Примеры:

SQL> ALTER PLUGGABLE DATABASE ocp_db, test CLOSE;

SQL> ALTER PLUGGABLE DATABASE ALL CLOSE;

SQL> ALTER PLUGGABLE DATABASE ALL EXCEPT testdb CLOSE IMMEDIATE;

Изменение параметров экземпляра для контейнерной (CDB) или перемещаемой (PDB) БД

Контейнерная БД имеет единственный бинарный файл параметров SPFILE независимо от

количества перемещаемых БД. Любой параметр инициализации, установленный на корневом

уровне, устанавливается во всех PDB, которые содержатся в CDB. Многие, но не все,

инициализационные параметры могут быть установлены на уровне отдельных перемещаемых БД.

Список таких параметров может быть получен следующим запросом:

SQL> SELECT name

FROM v$system_parameter

WHERE ispdb_modifiable = 'TRUE'

ORDER BY name;

Page 48: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

48

Любой из этих параметров, неустановленный индивидуально для PDB, наследуется из

параметра, установленного в корневом контейнере. Значения параметров задаются на уровне PDB с

помощью команды ALTER SYSTEM. Если опция видимости изменений SCOPE установлена в SPFILE или

BOTH, то значения параметра будет сохранены после закрытия/повторного открытия перемещаемой

БД или после перезапуска контейнерной БД в целом. Параметры, установленные таким образом,

также переносятся при клонировании БД и извлечении/включении перемещаемых БД. Любой

параметр, не включенный в результат приведенного выше запроса, может быть установлено только

для корневого контейнера и, следовательно, является общим для всех PDB.

Управление табличными пространствами, общими и локальными пользователями,

привилегиями и ролями

Управление табличными пространствами контейнерной (CDB) или перемещаемой (PDB)

БД

Табличные пространства в контейнерной арендуемой БД служат тем же целям и в

большинстве случаев используются таким же образом, как и монолитной БД. Синтаксис создания и

модификации табличных пространств в целом не изменился. Есть несколько моментов, специфичных

для табличных пространств в контейнерной БД:

Постоянное табличное пространство может принадлежать только одному контейнеру.

При создании табличного пространства в контейнере, табличное пространство

связывается с контейнером.

Контейнерная БД может иметь только одно табличное пространство отката UNDO или

одно активное пространство UNDO для каждого экземпляра RAC CDB.

Существует одно временное табличное пространство "по умолчанию" для всей

контейнерной БД. Корневой контейнер и перемещаемые БД также могут иметь свое

собственное временное табличное пространство "по умолчанию".

Поскольку постоянное табличное пространство может быть связано только с одним

контейнером, каждый контейнер должен иметь собственное постоянное табличное пространство "по

умолчанию". Пользователи, подключенные к данному контейнеру и не имеющие явного

пространства "по умолчанию", будут использовать пространство "по умолчанию" контейнера. При

подключении к CDB команда установки постоянного табличного пространства "по умолчанию"

выглядит так

SQL> ALTER DATABASE DEFAULT TABLESPACE tbs_users_cdb;

При подключении к перемещаемой БД команда ALTER DATABASE сохранена для

совместимости, но предпочтимым синтаксисом является:

SQL> ALTER PLUGGABLE DATABASE DEFAULT TABLESPACE tbs_users_pdb;

Контейнерная БД будет иметь только одно временное табличное пространство "по

умолчанию" (или группу табличных пространств). Чтобы создать или изменить это табличное

пространство нужно, чтобы текущим контейнером был CDB$ROOT. Можно создать дополнительные

временные табличные пространства в корне и назначить их пользователям. Аналогично, каждая

Page 49: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

49

контейнерная БД может содержать одно временное табличное пространство "по умолчанию" и

временные табличные пространства, которые могут быть назначены пользователям. Когда

перемещаемая БД извлекается из контейнерной БД, ее временные табличные пространства тоже

извлекаются.

Управление пользователями и привилегиями в контейнерной (CDB) или перемещаемой

(PDB) БД

Общий пользователь это пользователь БД, имеющий одинаковую идентичность в корневой и

любой существующей и будущей перемещаемой БД. Общие пользователи могут подсоединяться и

выполнять действия в корневом контейнере и внутри любого контейнера, в котором они имеют

привилегии. Пользователь, подключенный к корневому контейнеру, может выполнять определенные

операции (ALTER PLUGGABLE DATABASE, CREATE USER, CREATE ROLE), которые влияют на

перемещаемые БД. Однако большинство операций может быть выполнено внутри текущего

контейнера. Пользователи вначале должны явно переключиться на контейнер, где нужно произвести

действия, а потом произвести требуемые операции. Например, общий пользователь не может

выполнять запросы к таблицам/представлениям в перемещаемой БД, если она не является текущим

контейнером.

Создание общего пользователя

Для создания общего пользователя нужно выполнить ряд условий:

Нужно подключиться к корневому контейнеру и обладать общей системной привилегией

CREATE USER.

Текущим контейнером сессии должен быть CDB$ROOT.

Имя общего пользователя должно начинаться с C## или c## и содержать только ASCII или

EBCDIC символы.

Чтобы явно указать, что пользовательская учетная запись является общей, нужно в

команде CREATE USER указать опцию CONTAINER=ALL. Если текущим контейнером

является корневой, то при отсутствии опции CONTAINER в указанной команде, неявно

предполагается CONTAINER=ALL.

Не следует создавать какие-либо объекты в схемах общих пользователей. Такие объекты не

могут быть пересекать границы перемещаемых БД и могут вызвать проблемы при их переносе. В

следующем примере создается общий пользователь и ему присваиваются привилегии SET CONTAINER

и CREATE SESSION, необходимые для перемещения между контейнерами:

SQL> CREATE USER c##ocp_admin

IDENTIFIED BY password

DEFAULT TABLESPACE ts_cdb_users

QUOTA 100M ON ts_cdb_users

TEMPORARY TABLESPACE temp_ts

CONTAINER = ALL;

SQL> GRANT SET CONTAINER, CREATE SESSION TO c##ocp_admin CONTAINER = ALL;

Page 50: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

50

Создание локального пользователя

Локальные пользователи определены только в той перемещаемой БД, где созданы. Они не

могут установить соединение и им не могут быть выданы привилегии в других контейнерах.

Возможно, конечно, создать пользователей с одинаковыми именами в разных перемещаемых БД, но

эти учетные записи не имеют ничего общего, кроме имени. Чтобы создать локального пользователя

нужно:

Нужно подключиться к перемещаемой БД, в которой нужно создать пользователя, и иметь

привилегию CREATE USER.

Имя локального пользователя не может начинаться на C## или c##.

Опция CONTAINER=CURRENT может быть явно включена в команду CREATE USER, чтобы

указать пользователя, как локального. При подключении к перемещаемой БД при

неуказанном параметре CONTAINER подразумевается CONTAINER=CURRENT.

Например:

SQL> CREATE USER ocp_user

IDENTIFIED BY password

DEFAULT TABLESPACE ts_pdb_users

QUOTA 100M ON ts_pdb_users

TEMPORARY TABLESPACE temp_ts

PROFILE ocp_profile

CONTAINER = CURRENT;

Привилегии общих и локальных пользователей

Общие и локальные пользователи могут выдать привилегии друг другу. Определенная

привилегия, например CREATE ANY TABLE, не является общей или локальной сама по себе. Если

CREATE ANY TABLE выдана общим образом, то она становится общей привилегией, если локально, то

локальной.

Общие выданные привилегии:

Привилегия, выданная "в общем", может быть использована в любом существующем и

будущем контейнере.

Только общие пользователи могут выдавать привилегии "в общем" и только общим

пользователям или ролям.

Выдающий привилегии должен быть подключен к корневому контейнеру и должен явно

указывать параметр CONTAINER=ALL в команде GRANT.

Могут включать в себя системные и объектные привилегии.

Не следует выдавать общие привилегии роли PUBLIC.

Локальные привилегии:

Локально выданные привилегии могут быть использованы только контейнере, где были

выданы, даже, если этим контейнером был корневой.

И общие, и локальные пользователи могут давать привилегии локально.

Page 51: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

51

И общие, и локальные пользователи могут давать привилегии другим общим или

локальным ролям.

Выдающий привилегии должен быть подключен к контейнеру и должен указать параметр

CONTAINER=CURRENT в команде GRANT.

Любой пользователь может выдавать привилегии локально любому другому

пользователю или роли (общей или локальной) или роли PUBLIC.

Параметр CONTAINER в команде GRANT или REVOKE определяет, где выдаются или

отзываются привилегии. Если параметр CONTAINER явно установлен в ALL, то команда выдает

привилегии во всех существующих и будущих контейнерах. При использовании CURRENT привилегии

определяются в локальном контейнере. Значение CURRENT ставится "по умолчанию", если опция

опущена за исключением, когда вы подключены к корневому контейнеру, тогда "по умолчанию"

будет ALL. В примере общему пользователю c##ocp выдается общая привилегия CREATE TABLE. В

результате пользователь сможет пользоваться привилегией во всех имеющихся и будущих

контейнерах.

SQL> GRANT CREATE TABLE TO c##ocp CONTAINER=ALL;

Общие роли создаются в корневом контейнере и известны во всех существующих и будущих

контейнерах. Все предопределенные и поставляемые Oracle роли являются общими. Локальные роли

существуют только в перемещаемых БД, где созданы, и могут быть использованы только там.

Локальные роли не могут иметь каких-либо общих привилегий. Общие и локальные пользователи

взаимодействуют с общими и локальными ролями следующим образом:

Общие пользователи могут создавать общие роли и выдавать их другим общим и

локальным пользователям.

Общая роль может быть выдана общему пользователю в общем или локально.

Если общая роль выдана локальному пользователю, то привилегии роли применимы

только в рамках локального контейнера.

Локальные пользователи не могут создавать глобальные роли.

Локальные пользователи могут выдавать общие роли общим локальным пользователям.

Если выполняются следующие условия, то привилегии выданные "в общем" для общей роли

применяются в корневом контейнере и во всех существующих и будущих контейнерах:

И выдающий, и получающий роль являются общими пользователями.

Выдающий роль имеет выданную "в общем" SET CONTAINER привилегию и опцию ADMIN

OPTION для общей роли.

Команда GRANT содержит опцию CONTAINER_ALL.

Имя общей роли должно начинаться с C## или c## и содержать только ASCII или EBCDIC

символы. Это правило не распространяется на поставляемые Oracle роли, такие как DBA. При

создании роли параметр CONTAINER должен быть установлен в ALL. За исключением случая, когда вы

подключены к корневому контейнеру, отсутствие параметра в команде CREATE ROLE приведет к тому,

что роль будет создана в текущей PDB. Если параметр CONTAINER опущен, когда вы подключены к

Page 52: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

52

корневому контейнеру, "по умолчанию" роль будет создана как общая. В примере создается общая

роль c##ocp

SQL> CREATE ROLE c##ocp container=ALL;

Резервное копирование, восстановление и ретроспективный откат для

контейнерной и перемещаемой БД

Выполнение резервного копирования контейнерной или перемещаемой БД

Резервное копирование базы данных Oracle в арендной архитектуре можно выполнять с

помощью утилиты RMAN или EM Cloud Control. Существует возможность выполнять резервное

копирование или восстановление контейнерной БД полностью, т.е. со всеми контейнерами, отдельно

корневого контейнера, или любой из перемещаемых БД. Также существует возможность

резервировать и восстанавливать отдельные табличные пространства и файлы данных в отдельных

перемещаемых БД. Резервирование каждого элемента контейнерной БД отдельно (корневой

контейнер и перемещаемые БД) функционально эквивалентно в терминах восстановимости

контейнерной БД полностью.

Действия, требуемые для резервного копирования контейнерной БД, эквивалентны

операциям полного резервного копирования монолитной БД. При резервировании контейнерной БД

целиком, RMAN выполняет резервирование корневого контейнера, всех перемещаемых БД, всех

архивированных журнальных файлов. Из полученного резервного набора можно восстановить

контейнерную БД в целом, только корневой контейнер или комбинацию перемещаемых баз,

включенных в резервный набор. Чтобы выполнить резервное копирование следует запустить RMAN,

подключиться к корневому контейнеру, как общий пользователь с полномочиями SYSBACKUP или

SYSDBA и к каталогу восстановления, если он используется. База данных должна быть либо открыта,

либо смонтирована. После этого можно выдать подходящие команды резервирования в командном

интерпретаторе RMAN:

Резервирование контейнерной БД целиком:

RMAN> BACKUP DATABASE;

Выполнить резервное копирование БД, переключить активные redo-журналы, включив

архивированные журналы в резервный набор:

RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

Выполнить резервное копирование корневого контейнера

RMAN> BACKUP DATABASE ROOT;

Выполнить резервное копирование перемещаемой БД

Есть два способа выполнить резервное копирование перемещаемой БД с помощью RMAN:

Page 53: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

53

Установить соединение с корневым контейнером, выдать команду BACKUP PLUGGABLE

DATABASE из командной строки интерпретатора RMAN. Этот метод может быть полезен

при резервировании одной или более PDB.

RMAN> BACKUP PLUGGABLE DATABASE db_ocp, test;

Установить соединение с перемещаемой БД, выдать команду BACKUP DATABASE из

командной строки интерпретатора RMAN.

RMAN> BACKUP DATABASE;

Восстановление контейнерной или перемещаемой БД

Контейнерную базу данных можно восстановить полностью, только ее корневой контейнер,

одну перемещаемую базу, или только часть перемещаемой базы, как то табличное пространство или

файл данных. Если контейнерная база восстанавливается полностью, то корневой контейнер и все

перемещаемые базы восстанавливаются в рамках одной операции.

Для восстановления контейнерной БД следует воспользоваться командами RESTORE и

RECOVER RMAN. При восстановлении RMAN автоматически извлечет из резервных наборов все

нужные архивированные журналы redo. Если резервный набор хранится на внешней системе, то

необходимо настроить требуемые каналы доступа. Для восстановления контейнерной БД полностью

нужно запустить RMAN, установить соединение с корневым контейнером в качестве общего

пользователя с привилегиями SYSBACKUP или SYSDBA, при необходимости установить соединение с

каталогом восстановления. Следующая команда извлечет данные и восстановит контейнерную БД

полностью:

RMAN> RESTORE DATABASE;

RMAN> RECOVER DATABASE;

При необходимости можно удалить любые архивные журналы, что были извлечены на диск

для операции восстановления, поскольку они больше не нужны для работы, с помощью следующей

команды:

RMAN> RECOVER DATABASE DELETE ARCHIVELOG;

Если имели место ошибки пользователя или повреждение данных, специфичные для

корневого контейнера, то можно восстановить только корневой контейнер. Однако Oracle

настоятельно рекомендует восстановить все перемещаемые БД после восстановления корневого

контейнера. Это позволит избежать несоответствия метаданных между корневым контейнером и

перемещаемыми БД. Как общее правило предпочтительно восстанавливать контейнерную БД в

целиком. Чтобы восстановить корневой контейнер нужно подключиться к нему RMAN как общий

пользователь с SYSDBA или SYSBACKUP привилегиями. Контейнерная БД должны быть смонтирована,

но не открыта. Восстановление состоит из следующих этапов:

При необходимости следует настроить типовое устройство "по умолчанию" и каналы.

Следует извлечь и восстановить корневой контейнер:

Page 54: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

54

RMAN> RESTORE DATABASE ROOT;

RMAN> RECOVER DATABASE ROOT;

Следует убедиться в отсутствии ошибок в процессе восстановления. Oracle настоятельно

рекомендует восстановить все перемещаемые БД и seed сразу после восстановления

корневого контейнера. Для этого нужно выдать команды RESTORE PLUGGABLE DATABASE и

RECOVER PLUGGABLE DATABASE

RMAN> RESTORE PLUGGABLE DATABASE 'PDB$SEED',db_ocp;

RMAN> RECOVER PLUGGABLE DATABASE 'PDB$SEED',db_ocp;

Следует проверить отсутствие ошибок восстановления и открыть контейнерную базы

данных и все перемещаемые БД:

RMAN> ALTER DATABASE OPEN;

RMAN> ALTER PLUGGABLE DATABASE ALL OPEN;

Можно выполнить полное восстановление отдельной перемещаемой БД или нескольких БД

без влияния на работу других баз данных в той же контейнерной базе данных. Эту операцию можно

выполнить, подключившись как к корневому контейнеру, так и к PDB. Если подключение выполнено к

корневому контейнеру, то следует использовать команды RESTORE PLUGGABLE DATABASE и RECOVER

PLUGGABLE DATABASE (см. пример выше.). Таким образом, возможно восстановление нескольких

перемещаемых БД за один раз. Если вы подключены к перемещаемой БД, то нужно использовать

команды RESTORE DATABASE и RECOVER DATABASE. В этом случае возможно восстановление только

одной БД за операцию. В примере приведена последовательность восстановления перемещаемой БД

ocp_db при подключении к корневому контейнеру из RMAN под общим пользователем с правами

SYSDBA или SYSBACKUP:

Вначале следует закрыть базу данных, требующую восстановления:

RMAN> ALTER PLUGGABLE DATABASE ocp_db CLOSE;

Если какие-то файлы данных отсутствуют, то возникнет ошибка, и база не сможет закрыться. В

этом случае нужно подключиться к PDB с отсутствующими файлами данных и перевести их в

состояние offline, чтобы БД смогла закрыться:

RMAN> ALTER PLUGGABLE DATABASE ocp_db DATAFILE 8 OFFLINE;

При необходимости следует настроить типовое устройство "по умолчанию" и каналы.

восстановить перемещаемую БД командами:

RMAN> RESTORE PLUGGABLE DATABASE ocp_db;

RMAN> RECOVER PLUGGABLE DATABASE ocp_db;

Если какие-либо файлы были переведены в состояние offline, нужно перевести в

состояние online:

RMAN> ALTER PLUGGABLE DATABASE ocp_db DATAFILE 8 ONLINE;

Page 55: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

55

Следует проверить отсутствие ошибок при восстановлении в журнале RMAN. Если

восстановление было успешным, нужно открыть базу:

RMAN> ALTER PLUGGABLE DATABASE ocp_db OPEN;

Чтобы восстановить одну перемещаемую БД, будучи подключенным к ней RMAN'ом от имени

локального пользователя с привилегиями SYSDBA, нужно:

Закрыть перемещаемую БД;

RMAN> ALTER PLUGGABLE DATABASE CLOSE;

Если какие-то файлы данных отсутствуют, то возникнет ошибка, и база не сможет закрыться. В

этом случае нужно подключиться к PDB с отсутствующими файлами данных и перевести их в

состояние offline, чтобы БД смогла закрыться:

RMAN> ALTER DATABASE DATAFILE 19 OFFLINE;

При необходимости следует настроить типовое устройство "по умолчанию" и каналы

Следует восстановить перемещаемую БД командами:

RMAN> RESTORE DATABASE;

RMAN> RECOVER DATABASE;

Если какие-либо файлы были переведены в состояние offline, нужно перевести в

состояние online:

RMAN> ALTER DATABASE DATAFILE 19 ONLINE;

Следует проверить отсутствие ошибок при восстановлении в журнале RMAN. Если

восстановление было успешным, нужно открыть базу:

RMAN> ALTER PLUGGABLE DATABASE OPEN;

Выполнение ретроспективного отката на контейнерной базе данных

Ретроспективный откат (flashback) для контейнерной базы данных выполняется точно так же,

как и для монолитной. Единственным исключением является ситуация, когда одна и более

перемещаемых БД была восстановлена на определенный момент времени (Point-In-Time-Recovery).

Если какая-либо из перемещаемых баз восстановлена на момент времени в прошлом, то

ретроспективный откат контейнерной БД может быть запрещен, чтобы обеспечивать обратную

совместимость. Если это так, то невозможно напрямую перемотать контейнерную БД к моменту

времени, более раннему, чем момент восстановления перемещаемой БД (PITR). Попытка

ретроспективного отката к более раннему моменту времени вызовет сообщение:

ORA-39866: Data files for pluggable database <PDB_name> must be offline to flashback

across a PDB point-in-time recovery

Если же есть необходимость откатить контейнерную БД на момент времени ранее, чем PITR,

нужно сделать следующие действия:

Page 56: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

56

Запустить RMAN, установить соединение с корневым контейнером с пользователем,

имеющим SYSDBA или SYSBACKUP привилегии.

Определить время, на которое нужно восстановить контейнерную БД (CDB).

Перевести все файлы, относящиеся к восстановленной перемещаемой базе (PDB) в offline.

Перемотать контейнерную БД на желаемое время. Файлы PDB, находящиеся в режиме

offline, не будут при этом затронуты.

Восстановить перемещаемую БД, для которой было выполнено восстановление на

момент времени, командами RESTORE PLUGGABLE DATABASE и RECOVER PLUGGABLE

DATABASE.

Перевести файлы PDB в режим online.

Page 57: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

57

Управление жизненным циклом информации и оптимизация работы с

дисковой памятью

Использование управления жизненным циклом информации (Information Lifecycle

Management, ILM)

Управление жизненным циклом информации это действия по управлению жизненным

циклом данных от создания или получения до архивирования или удаления. Oracle 12c предлагает

две новых возможности ILM, которые позволяют базе данных интеллектуально управлять

использованием табличного пространства: горячая карта (Heat Map) и автоматическая оптимизация

данных (Automatic Data Optimization, ADO).

Горячая карта (Heat Map)

В любой базе данных к разным частям информации обращаются с разной интенсивностью и

различным образом. Данные, к которым обращаются часто, должны располагаться на дисковом

пространстве, имеющем наибольшую производительность, точнее, минимальное время отклика.

Напротив, редко требуемые данные могут храниться на устройствах памяти с низкой

производительностью, не оказывая при этом влияния на общую производительность базы данных.

Наиболее быстрая дисковая память неизбежно является наиболее дорогой, поэтому с точки зрения

цены нерационально хранить редко используемые данные на быстрой дисковой памяти.

Разделение дисковой памяти (storage tiering) это действия по размещению данных на

нескольких типах дисковой памяти. При разделении дисковой памяти по типам, идеальной является

ситуация, когда наиболее часто используемые данные хранятся на быстрых дисках, а менее часто

используемые на более медленных. Новая функция базы данных Oracle, горячая карта (Heat Map),

создана именно для таких целей. Механизм "горячей карты" автоматически отслеживает изменение

данных на уровне строк и сегментов. Как только данные изменены, отслеживаются временные

характеристики на уровне строк и агрегируются на уровне блока. Время изменения, время полного

сканирования таблиц и время поиска индекса, - все они отслеживаются на уровне сегмента.

Конечным результатом является то, что при использовании горячей карты можно увидеть, каким

образом происходит доступ к данным и как меняется характер доступа во времени.

Автоматическая оптимизация данных (Automatic Data Optimization, ADO)

Автоматическая оптимизация данных (Automatic Data Optimization, ADO) позволяет

администраторам базы данных создавать политики сжатия и перемещения данных. Одной из

характеристик ADO является умная компрессия (Smart Compression), использующая в работе данные

горячей карты для связывания политик и степени компрессии в зависимости от степени

использования данных. Периодически база данных оценивает политики ADO и на основе данных

горячей карты принимает решение о переносе и/или сжатии данных. Будучи включенной, ADO

работает в фоновом режиме во время окна обслуживания без вмешательства DBA, но при

необходимости может быть выполнена им вручную. Политики ADO могут быть определены на уровне

сегмента или строки для таблиц и их секций.

Выполнение отслеживания изменений и автоматизированное размещение данных

Для реализации ILM политик можно использовать горячую карту базы данных Oracle, чтобы

отследить доступ к данным и их изменение. Включение горячей карты является единственным

Page 58: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

58

способом реализации политики ILM. Горячая карта может быть включена или выключена на уровне

системы или сессии с помощью команд ALTER SYSTEM или ALTER SESSION с параметром HEAT_MAP.

После включения все факты доступа к объектам во всех табличных пространствах за исключением

SYSTEM и SYSAUX отслеживаются фоновым процессом. Следующие SQL команды включают и

выключают горячую карту для экземпляра базы данных соответственно:

SQL> ALTER SYSTEM SET HEAT_MAP=ON;

SQL> ALTER SYSTEM SET HEAT_MAP=OFF;

Для анализа данных отслеживания горячей карты можно использовать следующие

представления:

V$HEAT_MAP_SEGMENT - отображает информацию о доступе к сегментам в реальном

времени.

DBA_HEAT_MAP_SEGMENT - отображает последнее время доступа к каждому из

сегментов.

DBA_HEAT_MAP_SEG_HISTOGRAM - отображает информацию о доступе ко всех

сегментам.

DBA_HEATMAP_TOP_OBJECTS - отображает горячую карту для 1000 самых активных

объектов.

DBA_HEATMAP_TOP_TABLESPACES - отображает горячую карту для 100 наиболее активных

табличных пространств.

Чтобы автоматически перемещать данных между различными типами дисковой памяти,

нужно определить одну или более политик автоматической оптимизации данных (ADO). Политики

ADO могут быть определены для уровня строки, сегмента или табличного пространства как во время

создания, так и с помощью оператора ALTER для уже существующего объекта. Политики ADO могут

быть определены с параметром видимости SEGMENT, ROW или GROUP. Следующий запрос дает

список политик для текущего пользователя:

SQL> SELECT policy_name, policy_type, enabled FROM user_ilmpolicies;

Команды SQL CREATE TABLE и ALTER TABLE имеют дополнительный необязательный параметр,

позволяющий создать, удалить, включить или выключить политику ILM. Параметр policy определяет

политику, используемую при сжатии или изменении типа дисковой памяти для объекта. Политики

ILM ADO получают системно-определяемые имена, такие как P1, P2, ... Pn.

Политики уровня сегмента выполняются однократно. Как только политика была успешно

применена, она будет выключена и никогда более не будет применена, за исключением явного

включения. Политики уровня строк остаются включенными после успешно применения и

выполняются многократно.

Приняты следующие соглашения "по умолчанию" для сжатия, которые применяются в

групповых политиках:

COMPRESS ADVANCED - На обычных таблицах реализуются как стандартное сжатие для

индексов и низкое LOW для LOB сегментов.

Page 59: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

59

COMPRESS FOR QUERY LOW/QUERY HIGH - На обычных таблица реализуются как

стандартное сжатие для индексов и среднее (MEDIUM) для LOB сегментов.

COMPRESS FOR ARCHIVE LOW/ARCHIVE HIGH - На стандартных таблицах реализуются как

стандартное сжатие для индексов и высокое (HIGH) для LOB сегментов.

В примере приведен код добавления политики ILM для секции таблицы HR.SALES:

SQL> ALTER TABLE hr.sales MODIFY PARTITION sales_q01_2012 ILM ADD POLICY ROW STORE

COMPRESS ADVANCED ROW AFTER 60 DAYS OF NO MODIFICATION;

SQL> ALTER TABLE hr.sales MODIFY PARTITION sales_q01_2009 ILM ADD POLICY COMPRESS FOR

ARCHIVE HIGH SEGMENT AFTER 12 MONTHS OF NO MODIFICATION;

SQL> ALTER TABLE hr.sales MODIFY PARTITION sales_q01_2007 ILM ADD POLICY COMPRESS FOR

ARCHIVE HIGH SEGMENT AFTER 12 MONTHS OF NO ACCESS;

Если существующая политика ILM противоречит новой создаваемой политике, то нужно

удалить или выключить старую политику. Это можно сделать следующим образом:

SQL> ALTER TABLE hr.sales MODIFY PARTITION sales_q01_2012 ILM DISABLE POLICY P2;

SQL> ALTER TABLE hr.sales MODIFY PARTITION sales_q01_2012 ILM DELETE POLICY P2;

Page 60: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

60

Перенос файлов данных online Теперь в Oracle 12c можно выполнять SQL команду ALTER DATABASE MOVE DATAFILE для

переноса или переименования файла данных, не прерывая доступа пользователей к данным. При

переименовании или перемещении файла указатели на него модифицируются в управляющем

файле. Одновременно файл физически перемещается или переименуется в файловой системе.

Если файл с таким же именем и в том же месте, что задано в команде ALTER DATABASE, уже

существует, то команда завершится ошибкой. При использовании ключевого слова REUSE, Oracle

перезапишет его новым файлом, переименованным или перемещенным.

В момент переименования или перемещения файла по SQL команде ALTER DATABASE MOVE

DATAFILE создается копия файла данных. Поэтому перед началом операции нужно убедиться в

наличии дискового пространства, достаточного для размещения и файла, и его копии одновременно.

По завершении операции исходный файл "по умолчанию" удаляется. Если указана опция KEEP, то

исходный файл сохраняется. Однако после завершения операции база данных будет использовать

только новый файл данных.

В примерах показано переименование, перемещение файла данных, перемещение с ключом

REUSE, перемещение с ключом KEEP:

SQL> ALTER DATABASE MOVE DATAFILE '/u01/oracle/X/user1.dbf' TO '/u01/oracle/X/user_ts1.dbf';

SQL> ALTER DATABASE MOVE DATAFILE '/u01/oracle/X/user_ts1.dbf' TO

'/u02/oracle/X/user_ts1.dbf';

SQL> ALTER DATABASE MOVE DATAFILE '/u01/oracle/X/user_ts1.dbf' TO

'/u02/oracle/X/user_ts1.dbf' REUSE;

SQL> ALTER DATABASE MOVE DATAFILE '/u01/oracle/X/user_ts1.dbf' TO

'/u02/oracle/X/user_ts1.dbf' KEEP;

Page 61: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

61

Внутреннее архивирование (In-Database Archiving) и временная

актуальность данных (Valid-Time Temporal)

Различие между управлением жизненным циклом информации (Information Lifecycle

Management, ILM) и временной актуальностью

Разработанная Oracle технология управления жизненным циклом информации (Information

Lifecycle Management, ILM) создана для оптимизации использования базой данных ресурсов дисковой

памяти. Как правило, чем быстрее дисковая память, тем она дороже. Количество данных, хранимое в

базах данных предприятий, слишком велико, чтобы оправдать покупку достаточного количества

быстрых дисков для хранения полного содержания базы. Технология ILM создана, чтобы улучшить

эффективной использования дисковой памяти и повысить производительность базы данных, делая

базу более приспособленной к наличию разных уровней (скоростей) дисковой памяти. Используя

возможности ILM, БД Oracle может переносить данные между типами дисковой памяти на основании

частоты доступа к ним. С другой стороны, ILM может улучшить использование дисковой памяти за

счет сжатия данных, к которым обращения редки. Сжимает или переносит данные ILM - целью

является оптимизация ресурсов дисковой памяти при минимальном влиянии на производительность

БД.

Новая возможность Oracle, временная актуальность (Valid-Time Temporal Validity), позволяет

создавать измерение временной актуальности. Данные для этого измерения хранятся в двух скрытых

столбцах таблицы. Если в запросе к таблице не установлен фильтр по этим столбцам, то при выборке

из таблицы строки будут выдаваться независимо от того, являются ли они временно актуальными.

Временная актуальность не влияет на размер занимаемого таблицей пространства или

производительность базы данных, она всего лишь вводит новые средства фильтрации.

Page 62: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

62

Установка и использование временной актуальности

Новая возможность Oracle 12c, временная актуальность, дает способ задать диапазон

времени для каждой строки в таблицы, когда данные в ней актуальны для приложения. Диапазон

времени, указывающий, что строка актуальна, может быть установлен пользователями или

приложениями. В терминах ILM атрибуты актуальности определяют, когда данные актуальны и когда

нет. При использовании этих атрибутов запрос может вернуть только строки, содержащие актуальные

данные.

Концепции, являющиеся основой модели временной актуальности, включают следующие

понятия:

Актуальное время (valid time) - Определенное пользователем временное представление.

Примером актуального времени является время начала и завершения проекта, найма и

увольнения работника.

Таблицы с семантикой актуального времени - Таблицы, имеющие одно или более

измерений, каждое из которых имеет начало и конец.

Ретроспективные запросы актуального времени (Valid-time flashback queries) -

Возможность выполнять версионные и AS OF запросы.

Использование актуального времени требует задания пары столбцов типа время-дата в

таблице. Эти столбцы могут быть добавлены явно, или созданы неявно. Период временной

актуальности может быть добавлен к таблице при ее создании или путем модификации

существующей таблицы. В примере создается таблица со столбцами временной актуальности,

отражающими период испытательного срока нового сотрудника. Никаких столбцов типа DATE явно не

создается, но параметр PERIOD FOR создает эти столбцы неявно:

SQL> CREATE TABLE probationary_emps (

emp_id NUMBER PRIMARY KEY,

first_name VARCHAR2(20),

last_name VARCHAR2(25),

PERIOD FOR emp_probation);

При отображении определения таблицы выводятся только столбцы EMP_ID, FIRST_NAME и

LAST_NAME:

SQL> DESCRIBE probationary_emps;

Name Null? Type

-------------- --------- --------------

EMP_ID NOT NULL NUMBER

FIRST_NAME VARCHAR2(20)

LAST_NAME VARCHAR2(25)

Скрытые столбцы этой таблицы могут быть выведены в результате запроса к таблице

USER_TAB_COLS:

SQL> SELECT column_name, data_type, column_id AS CID,

internal_column_id AS ICID, hidden_column AS HID

Page 63: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

63

FROM user_tab_cols

WHERE table_name = 'PROBATIONARY_EMPS';

COLUMN_NAME DATA_TYPE CID ICID HID

-------------------- ---------------------------- --- ---- ---

EMP_PROBATION_START TIMESTAMP(6) WITH TIME ZONE 1 YES

EMP_PROBATION_END TIMESTAMP(6) WITH TIME ZONE 2 YES

EMP_PROBATION NUMBER 3 YES

EMP_ID NUMBER 1 4 NO

FIRST_NAME VARCHAR2 2 5 NO

LAST_NAME VARCHAR2 3 6 NO

В результате выполнения следующего оператора вставки данных INSERT в таблицу будут

добавлены две строки с началом и окончанием 90-дневного испытательного срока:

SQL> INSERT INTO probationary_emps(emp_probation_start, emp_probation_end, emp_id,

first_name, last_name)

VALUES ('01-10-2013 12.00.01', '30-12-2013 12.00.01',1234, 'John', 'Doe');

SQL> INSERT INTO probationary_emps(emp_probation_start, emp_probation_end, emp_id,

first_name, last_name)

VALUES ('14-09-2013 12.00.01', '13-12-2013 12.00.01',5678, 'Fred', 'Rogers');

SQL> SELECT emp_id FROM probationary_emps;

EMP_ID

----------

1234

5678

При запросе таблицы с учетом скрытых столбцов выводятся только актуальные данные:

SQL> SELECT emp_id FROM probationary_emps

WHERE emp_probation_start < '20-SEP-2013 12.00.01'

AND emp_probation_end > '20-SEP-13 2012.00.01';

EMP_ID

----------

5678

Строго говоря, эта функциональность не делает ничего такого, что нельзя было бы сделать,

добавляя обычные столбцы типа DATE к таблице. Но, в приложениях с большим количеством

неактуальных данных, которые следует хранить по требованию регуляторов, использование этой

функциональности может упростить программирование.

Несколько более интересную функциональность обеспечивает PL/SQL пакет

DBMS_FLASHBACK_ARCHIVE, содержащий процедуру ENABLE_AT_VALID_TIME. Это процедура может

быть использована для установки видимости периода актуальности для запрашиваемого времени:

SQL> EXECUTE DBMS_FLASHBACK_ARCHIVE.enable_at_valid_time ('ASOF', '20-DEC-2013 12.00.01');

SQL> SELECT emp_id FROM probationary_emps;

Page 64: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

64

EMP_ID

----------

5678

Эта процедура может быть использована для установки видимости временных данных, чтобы

указать актуальность данных для времени текущей сессии:

SQL> EXECUTE DBMS_FLASHBACK_ARCHIVE.enable_at_valid_time('CURRENT');

SQL> SELECT emp_id

FROM probationary_emps;

no rows selected

Эта же процедура может быть использована для установки видимости временных данных,

чтобы указать актуальность данных для всей таблицы ("по умолчанию"):

SQL> EXECUTE DBMS_FLASHBACK_ARCHIVE.enable_at_valid_time('ALL');

SQL> SELECT emp_id FROM probationary_emps;

EMP_ID

----------

1234

5678

Page 65: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

65

Работа с внутренним архивированием строк (In-Database archiving)

Встроенная возможность внутреннего архивирования строк позволяет сохранять строки

данных в промышленной БД, но сделать их невидимыми для приложений. Эта функциональность

может быть нужна для реализации требований регулятора при сохранении минимального влияния на

производительность приложений. Архивированные строки могут быть сжаты для ускорения

резервного копирования. Чтобы использовать внутреннее архивирование строк таблицы необходимо

разрешить режим ROW ARCHIVAL для таблицы (команда SQL ALTER TABLE <table_name> ROW

ARCHIVAL;) и установить значение скрытого столбца ORA_ARCHIVE_STATE в ненулевое.

Если параметр сессии ROW ARCHIVAL VISIBILITY установлен в ACTIVE, то отображаться будут

только строки с нулевым значением ORA_ARCHIVE_STATE столбца. Если этот параметр установлен в

ALL, то запросы будут возвращать как архивные, так не архивные строки таблицы. В примере

приведен возможный сценарий использования:

SQL> ALTER SESSION SET ROW ARCHIVAL VISIBILITY = ACTIVE;

SQL> CREATE TABLE archival_example

(col_1 NUMBERL,

col_2 VARCHAR2(20)) ROW ARCHIVAL;

SQL> INSERT INTO archival_ example (col1, col2) VALUES (1, 'Record One');

SQL> INSERT INTO archival_ example (col1, col2) VALUES (2, 'Record Two');

SQL> INSERT INTO archival_ example (col1, col2) VALUES (3, 'Record Three');

SQL> INSERT INTO archival_ example (col1, col2) VALUES (4, 'Record Four');

SQL> SELECT col1, col2, ora_archive_state FROM archival_example;

COL_1 COL_2 ORA_ARCHIVE_STATE

----- ------------ ------------------

1 Record One 0

2 Record Two 0

3 Record Three 0

4 Record Four 0

SQL> UPDATE archival_ example SET ora_archive_state = '6' WHERE col_1 = 3;

SQL> SELECT col_1, col_2, ora_archive_state FROM archival_example;

COL_1 COL_2 ORA_ARCHIVE_STATE

----- ------------ ------------------

1 Record One 0

2 Record Two 0

4 Record Four 0

SQL> ALTER SESSION SET ROW ARCHIVAL VISIBILITY = ALL;

SQL> SELECT SELECT col_1, col_2, ora_archive_state FROM archival_example;

COL_1 COL_2 ORA_ARCHIVE_STATE

----- ------------ ------------------

1 Record One 0

2 Record Two 0

3 Record Three 6

4 Record Four 0

Page 66: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

66

Аудит

Включение и настройка унифицированного аудита

В Oracle 11g и более ранних версиях записи аудита располагались в разных местах, что

усложняло работу аудиторов. Новый объединенный (унифицированный) аудит объединяет

информацию из нескольких источников и делает ее доступной в стандартном формате через

представление UNIFIED_AUDIT_TRAIL словаря данных. Унифицированный аудит ведется в виде

таблицы базы данных в схеме AUDSYS в табличном пространстве SYSAUX. Таблица аудита доступна

только для чтения. Данные доступны пользователю SYS или пользователю с присвоенными ролями

AUDIT_ADMIN или AUDIT_VIEWER. Роль AUDIT_ADMIN позволяет просматривать данные и создавать

политики аудита. Роль AUDIT_VIEWER может только просматривать данные, но не может создавать

или менять политики. В журнале унифицированного аудита содержатся данные из следующих

источников:

Унифицированные политики аудита и установки команды AUDIT.

Записи тонкой настройки аудита (fine-grained audit record) DBMS_FGA.

Oracle Real Application Security.

Oracle Recovery Manager (аудит RMAN включается в журнал унифицированного аудита "по

умолчанию").

Oracle Database Vault.

Oracle Label Security.

Oracle Data Mining.

Oracle Data Pump.

Oracle SQL*Loader Direct Load.

Будучи настроенным, унифицированный аудит всегда остается включенным и не зависит от

параметров инициализации, использовавшихся в предшествующих релизах. Если база данных

запущена в режиме READ-ONLY, то записи аудита записываются в новые файлы операционной

системы в директории $ORACLE_BASE/audit/$ORACLE_SID. С помощью представления V$OPTION

можно определить, была ли произведена миграция на унифицированный аудит:

SQL> SELECT value FROM v$option WHERE parameter = 'Unified Auditing';

PARAMETER VALUE

---------------- ----------

Unified Auditing TRUE

Приведенный пример показывает, что унифицированный аудит был настроен. В противном

случае будет выдано FALSE. Для вновь созданных 12c баз данных "по умолчанию" включен

смешанный режим аудита посредством настроенной политики ORA_SECURECONFIG. Смешанный

режим разрешает и традиционный (до 12c), и унифицированный аудит. Традиционный аудит

задается параметром инициализации AUDIT_TRAIL. При установке его в значение отличное от NONE в

12c, традиционный и унифицированный журналы аудита начнут заполняться записями. Установки

аудита могут быть применены к различным перемещаемым базам данных (PDB) или к контейнерной

базе в целом в зависимости от типа политики. В среде арендованной базы данных каждая БД,

включая корневую, имеет собственный журнал аудита.

Page 67: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

67

Когда база данных предыдущего релиза модернизируется до 12c, необходимо вручную

мигрировать на унифицированный аудит, если нужно пользоваться его преимуществами. Если

унифицированный аудит разрешен, то это приведет к запрету традиционного аудита. Чтобы начать

использование унифицированного аудита, нужно разрешить по крайней мере одну политику аудита.

Для прекращения использования нужно запретить все политики унифицированного аудита.

Предварительно настроенная политика ORA_SECURECONFIG изначально разрешена во вновь

созданных базах 12c. В этой политике установлен аудит следующих действий:

ADMINISTER KEY MANAGEMENT,

ALTER ANY PROCEDURE, ALTER ANY SQL TRANSLATION PROFILE, ALTER ANY TABLE, ALTER DATABASE LINK,

ALTER DATABASE, ALTER PLUGGABLE DATABASE, ALTER PROFILE, ALTER ROLE, ALTER SYSTEM, ALTER USER,

AUDIT SYSTEM,

CREATE ANY JOB, CREATE ANY LIBRARY, CREATE ANY PROCEDURE, CREATE ANY SQL TRANSLATION PROFILE,

CREATE ANY TABLE, CREATE DATABASE LINK, CREATE DIRECTORY, CREATE EXTERNAL JOB, CREATE

PLUGGABLE DATABASE, CREATE PROFILE, CREATE PUBLIC SYNONYM, CREATE ROLE, CREATE SQL

TRANSLATION PROFILE, CREATE USER,

DROP ANY PROCEDURE, DROP ANY SQL TRANSLATION PROFILE, DROP ANY TABLE, DROP DATABASE LINK,

DROP DIRECTORY, DROP PLUGGABLE DATABASE, DROP PROFILE, DROP PUBLIC SYNONYM, DROP ROLE,

DROP USER,

EXEMPT ACCESS POLICY, EXEMPT REDACTION POLICY,

GRANT ANY OBJECT PRIVILEGE, GRANT ANY PRIVILEGE, GRANT ANY ROLE,

LOGMINING, LOGOFF, LOGON,

PURGE DBA_RECYCLEBIN,

SET ROLE,

TRANSLATE ANY SQL

В документации прямо указано, что системная привилегия TRANSLATE ANY SQL не может быть

объектом аудита, но в состав предопределенной политики ORA_SECURECONFIG она включена.

Запрет унифицированного аудита

Перед запрещением унифицированного аудита нужно запретить все разрешенные политики.

Это предотвратит переход базы данных в смешанный режим аудита. Для запрета унифицированного

аудита нужно:

Зарегистрироваться в базе данных как пользователь с ролью AUDIT_ADMIN, запросить

представление AUDIT_UNIFIED_ENABLE_POLICIES (столбцы POLICY_NAME и ENABLE_OPT) и

выполнить команду NOAUDIT POLICY для всех включенных политик.

Подключиться к базе данных как пользователь с привилегией SYSDBA или SYSOPER.

Page 68: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

68

Остановить базу командой SHUTDOWN IMMEDIATE

Из командной строки запустить следующую команду

$ cd $ORACLE_HOME/rdbms/lib

$ make -f ins_rdbms.mk uniaud_off ioracle

Запустить из SQL*Plus базу данных командой STARTUP.

"По умолчанию" записи аудита записываются в очереди SGA и периодически переписываются

в таблицы схемы AUDSYS табличного пространства SYSAUX. Запись в очередь, т.н. отложенная запись,

по сравнению с прямой записью на диск, значительно улучшает производительность процесса

журналирования. Однако, если экземпляр завершился аварийно или по команде SHUTDOWN ABORT,

то отложенная запись приведет к возможной потере части записей аудита. Если такое поведение

неприемлемо, то нужно настроить прямую запись данных в таблицы аудита. Следует знать, что на

активных БД это может повлиять на производительность. В контейнерной БД эта опция может быть

установлена для каждой перемещаемой БД отдельно. Установить режим записи журнала аудит

можно следующим образом:

Нужно зарегистрироваться в базе данных посредством SQL*Plus пользователем с ролью

AUDIT_ADMIN.

Нужно установить параметр AUDIT_TRAIL_MODE с помощью пакета DBMS_AUDIT_MGMT в

режим прямой записи в таблицу:

SQL> BEGIN

DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY(

DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,

DBMS_AUDIT_MGMT.AUDIT_TRAIL_WRITE_MODE,

DBMS_AUDIT_MGMT.AUDIT_TRAIL_IMMEDIATE_WRITE);

END;

/

Для отложенной записи (записи в очередь):

SQL> BEGIN

DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY(

DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,

DBMS_AUDIT_MGMT.AUDIT_TRAIL_WRITE_MODE,

DBMS_AUDIT_MGMT.AUDIT_TRAIL_QUEUED_WRITE);

END;

/

В моменты, когда базы данных недоступна на запись, включая момент, когда экземпляр

запущен, но БД закрыта или БД открыта в режиме "только чтение", записи аудита пишутся во

внешние файлы в директории $ORACLE_BASE/audit/$ORACLE_SID. Содержимое этих файлов может

быть загружено в базу данных с помощью процедуры

DBMS_AUDIT_MGMT.LOAD_UNIFIED_AUDIT_FILES. Делается это так:

Page 69: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

69

Нужно зарегистрироваться в базе данных посредством SQL*Plus пользователем с ролью

AUDIT_ADMIN.

Следует проверить, что база данных открыта на чтение/запись.

Нужно запустить процедуру DBMS_AUDIT_MGMT.LOAD_UNIFIED_AUDIT_FILES.

SQL> EXEC DBMS_AUDIT_MGMT.LOAD_UNIFIED_AUDIT_FILES;

Записи аудита будут немедленно загружены в таблицы схемы AUDSYS и затем удалены из

директории $ORACLE_BASE/audit/$ORACLE_SID.

Page 70: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

70

Создание и включение политик аудита

Унифицированная политика аудита представляет собой набор правил, которые отслеживают

определенные аспекты поведения пользователей в базе данных. Политика создается командой

CREATE AUDIT POLICY. В базе данных могут быть активными несколько политик унифицированного

аудита. Они могут включать в себя и системные, и объектные опции одновременно. Команды SQL

AUDIT и NOAUDIT соответственно включают и выключают политики аудита. Команды SQL AUDIT и

NOAUDIT также позволяют включить аудит прикладного контекста. Можно вести аудит следующих

типов активности:

Активность учетных записей пользователей, включая административные записи

пользователей, зарегистрировавшихся с привилегией SYSDBA, ролей и привилегий.

Действия над объектами, т.е. удаление таблиц, запуск процедур и т.д.

Создание, удаление изменение значений контекста.

Действия Oracle Database Real Application Security, Oracle Recovery Manager, Oracle Data

Mining, Oracle Data Pump, события "прямой загрузки" Oracle SQL*Loader, Oracle Database

Vault и Oracle Label Security.

Возможно наличие множества активных политик, но следует ограничивать количество

активных политик. Синтаксис команды создания политики достаточно гибок, чтобы задать нужное

количество параметров. Лучше группировать связанные опции в единую политику, нежели создавать

несколько политик. Меньшее количество политик снижает накладные расходы при регистрации в

базе данных, когда происходит загрузка политик в память UGA сессии. При этом также понижается

потребление памяти UGA, и внутренняя проверка функциональности аудита становится более

эффективной.

При создании унифицированной политики аудита командой CREATE AUDIT POLICY база

данных заносит ее в объекты класса, которыми владеет пользователь SYS, а не пользователь,

создававший политику. Базисный синтаксис команды выглядит так:

CREATE AUDIT POLICY policy_name

{ {privilege_audit_clause [action_audit_clause ] [role_audit_clause ]}

| { action_audit_clause [role_audit_clause ] }

| { role_audit_clause }

}[

WHEN audit_condition EVALUATE PER {STATEMENT|SESSION|INSTANCE}]

[CONTAINER = {CURRENT | ALL}];

Следующая команда создает политику, которая создает записи в журнале аудита в любой

момент, когда исполняются команды, требующие привилегий ALTER ANY TABLE и DROP ANY TABLE,

выданные через роль ocp_admin:

SQL> CREATE AUDIT POLICY change_table_pol PRIVILEGES ALTER ANY TABLE, DROP ANY TABLE

ROLES ocp_admin;

После создания политики ее нужно включить командой AUDIT с параметром POLICY. Политика

может быть приложена к одному и более пользователей, или ко всем пользователям за

Page 71: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

71

исключением. Также возможно указать, будут ли писаться записи аудита при успешных действиях,

неудачных действиях или независимо от успешности действий.

Вновь созданная политика станет действовать только после установления пользователем

новой сессии с базой данных. Если пользователи зарегистрированы в БД в тот момент, когда

политика включена, то сбор данных невозможен до того момента, как пользователи

зарегистрируются заново. Команда AUDIT поддерживает следующие дополнительные параметры:

BY - используется для приложения политики к одному и более пользователям. AUDIT

POLICY change_table_pol BY ocpuser.

EXCEPT - используется для исключения пользователя из политики. AUDIT POLICY

change_table_pol EXCEPT card1;

WHENEVER SUCCESFUL - записывает только успешные выполнения политики. AUDIT POLICY

change_table_pol WHENEVER SUCCESSFULL.

WHENEVER NOT SUCCESFUL - записывает только неудачные выполнения политики. AUDIT

POLICY change_table_pol WHENEVER NOT SUCCESSFULL.

Следует отметить, что:

WHENEVER - -Если параметр WHENEVER опущен, то и неуспешные, и успешные действия

пользователя заносятся в журнал аудита.

BY/EXCEPT - Политика может включена либо с опцией BY, либо с EXCEPT, но не с обеими

одновременно.

AUDIT ... BY - Если несколько команд AUDIT выполняются в одной и той же самой

унифицированной политике для разных пользователей, то применяются все политики.

AUDIT ... EXCEPT - Если несколько команд AUDIT выполняются в той же самой

унифицированной политике для разных пользователей, то применяется только последнее

исключение.

COMMON policies - Общие политики могут быть включены только из корневого

контейнера и только для общих пользователей.

LOCAL policies - Локальные политики аудита могут быть включены только из

перемещаемых баз данных, к которым они применяются.

SQL> AUDIT POLICY ORA_DATABASE_PARAMETER except AAA;

SQL> AUDIT POLICY ORA_DATABASE_PARAMETER except SYS, SYSTEM;

В результате двух последовательных команд включения аудита не будут отслуживаться только

действия пользователей SYS и SYSTEM.

"По умолчанию" все события RMAN записываются в журнал унифицированного аудита.

Представление UNIFIED_AUDIT_TRAIL содержит несколько полей, начинающихся на RMAN_ и

используемых для записей событий RMAN автоматически. Специфичные для RMAN столбцы в

UNIFIED_AUDIT_TRAIL включают:

RMAN_SESSION_RECID - Идентификатор сессии RMAN. Совместно со столбцом

RMAN_SESSION_STAMP. Это значение однозначно идентифицирует задание RMAN.

Page 72: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

72

RMAN_SESSION_STAMP - Время сессии.

RMAN_OPERATION - Операция RMAN, выполненная во время задания.

RMAN_OBJECT_TYPE - Тип объектов, обрабатываемых во время сессии RMAN.

RMAN_DEVICE_TYPE - Устройство, задействованное в данной сессии RMAN.

Page 73: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

73

Привилегии

Использование административных привилегий

В версии Oracle 12c произошли некоторые изменения в составе системных привилегий.

Большинство из них направлено на повышение безопасности базы данных за счет лучшего

разделения функций. Считается, что принцип минимума привилегий, а именно, пользователь должен

получать минимум привилегий для выполнения своих обязанностей, должен соблюдаться всегда.

Появились три новых административных роли SYSBACKUP, SYSDG, SYSKM, отвечающих за

резервное копирование и восстановление, функции высокой доступности и работу с ключами. Новые

роли позволяют не выдавать роль SYSDBA для повседневных операций.

SYSBACKUP - Эта роль позволяет пользователям Recovery Manager (RMAN) подключаться к

целевой БД и выполнять операции резервирования/восстановления либо с помощью

RMAN или SQL*Plus.

SYSDG - Административная привилегия SYSDG используется для выполнения операций

Data Guard. Эта привилегия может быть использована как с Data Guard Broker, так и с

утилитой dgmgrl. Для того чтобы подключиться к БД, как SYSDG с использованием пароля,

обязательно следует включить имя нужного пользователя в файл паролей.

SYSKM - Административная привилегия SYSKM дает возможность пользователю выполнять

операции Transparent Data Encryption. Для того чтобы подключиться к БД, как SYSKM с

использованием пароля, обязательно следует включить имя нужного пользователя в файл

паролей.

Появилась новая системная привилегия, связанная с мусорной корзиной (recycle bin) DBA. В

предыдущих версиях для очистки системной корзины требовалась привилегия SYSDBA. Новая

привилегия PURGE DBA_RECYCLEBIN позволяет пользователям выполнить операцию PURGE

DBA_RECYCLEBIN, не имея привилегию SYSDBA:

SQL> sho user

USER is "SYSTEM"

SQL> PURGE dba_recyclebin; purge dba_recyclebin

*

ERROR at line 1:

ORA-01031: insufficient privileges

SQL> GRANT PURGE DBA_RECYCLEBIN TO system;

Grant succeeded.

SQL> PURGE dba_recyclebin;

DBA Recyclebin purged.

Page 74: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

74

Привилегия SELECT ANY DICTIONARY теперь не дает возможности просматривать критичные

таблицы словаря базы данных DEFAULT_PWD$, ENC$, LINK$, USER$, USER_HISTORY$ и XS$VERIFIERS.

Это изменение повышает безопасность БД "по умолчанию", запрещая доступ к подмножеству таблиц

словаря через привилегию SELECT ANY DICTIONARY.

Начиная с Oracle 12c, привилегия UNLIMITED TABLESPACE не включена в роль RESOURCE. Это

изменение повышает безопасность базы данных "по умолчанию", так как удаляет потенциальную

возможность для пользователей и приложений, имеющих роль RESOURCE, превысить

предполагаемые квоты ресурсов в табличных пространствах.

Page 75: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

75

Создание, разрешение и анализ использования привилегий

С помощью продукта Oracle Database Vault (платная опция) можно провести анализ

привилегий. При анализе создается профиль пользователей базы данных, в котором будет сохранен

список всех использованных системных и объектных привилегий. Результат может быть использован

при аудите используемых и выданных привилегий. На основе этой информации количество выданных

привилегий может быть уменьшено до только необходимых для выполнения обязанностей. Анализ

привилегий помогает повысить безопасность БД путем определения неиспользуемых или

избыточных привилегий. Возможно выполнение анализа привилегий как с включенным и

настроенным Oracle Database Vault, так и без его включения и настройки.

Администрировать анализ привилегий можно либо из Enterprise Manager Cloud Control, либо

используя пакет PL/SQL DBMS_PRIVILEGE_CAPTURE. Чтобы воспользоваться этой возможностью,

пользователю должна быть присвоена привилегия CAPTURE_ADMIN, позволяющая выполнить пакет

DBMS_PRIVILEGE_CAPTURE, и привилегия SELECT на представления, содержащие результат анализа.

Пакет DBMS_PRIVILEGE_CAPTURE позволяет создавать, включать, выключать и удалять политики

анализа привилегий. Он также создает отчеты, показывающие использование привилегий, доступные

через представления словаря данных. Общий алгоритм действий при анализе привилегий состоит из

нескольких шагов. Следует:

Определить политику анализа привилегий.

SQL> BEGIN

DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE(

name => 'ocprep_dev_role_pol',

description => 'Captures ocprep_dev role use',

type => DBMS_PRIVILEGE_CAPTURE.G_ROLE,

roles => role_name_list('DBA', 'RESOURCE');

END;

/

Включить политику анализа привилегий и запись используемых привилегий.

SQL> EXEC DBMS_PRIVILEGE_CAPTURE.ENABLE_CAPTURE ('ocprep_dev_role_pol');

Выключить запись используемых привилегий.

SQL> EXEC DBMS_PRIVILEGE_CAPTURE.DISABLE_CAPTURE ('ocprep_dev_role_pol');

Выполнить анализ результатов.

SQL> EXEC DBMS_PRIVILEGE_CAPTURE.GENERATE_RESULT ('ocprep_dev_role_pol');

SQL> SELECT username, sys_priv, object_owner, object_name FROM dba_used_privs

WHERE capture = 'ocprep_dev_role_pol';

Удалить политику анализа привилегий (необязательно)

SQL> EXEC DBMS_PRIVILEGE_CAPTURE.DROP_CAPTURE ('ocprep_dev_role_pol');

Page 76: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

76

В базе данных может быть активна только одна единственная политика анализа привилегий.

Единственным исключением из этого правила является политика типа

DBMS_PRIVILEGE_CAPTURE.G_DATABASE, которая может быть включена одновременно с анализом

привилегий другого типа. Если анализ привилегий был включен до остановки экземпляра, то он будет

включен после нового запуска. Чтобы создать отчет о привилегиях необходимо, чтобы анализ

привилегий должен быть выключен. Как только анализ привилегий завершен, можно удалить

политику анализа. Удалить можно только неактивную политику. Удаление политики анализа

привилегий также удаляет все записи об используемых и неиспользуемых привилегиях, связанных с

этой политикой. Невозможно анализировать использование привилегий пользователем SYS.

Ниже приведена часть представлений, связанных с анализом привилегий, для полной

информации следует обратиться к руководству Oracle по Oracle Database Vault:

DBA_PRIV_CAPTURES - Содержит информацию о существующих политиках анализа

привилегий.

DBA_USED_PRIVS - Содержит список привилегий, которые были использованы в отчетах

политик анализа привилегий.

DBA_UNUSED_PRIVS - Содержит список привилегий, которые не были использованы в

отчетах политик анализа привилегий.

DBA_USED_OBJPRIVS - Содержит список объектных привилегий, которые были в отчетах

политик анализа привилегий. Не включает путей к объектам (если применимо).

DBA_UNUSED_OBJPRIVS - -- Содержит список объектных привилегий, которые не были в

отчетах политик анализа привилегий. Не включает путей к объектам (если применимо).

DBA_USED_SYSPRIVS - Содержит список системных привилегий, которые были в отчетах

политик анализа привилегий. Не включает путей к системным объектам (если

применимо).

DBA_UNUSED_SYSPRIVS - Содержит список системных привилегий, которые не были

отчетах политик анализа привилегий. Не включает путей к системным объектам (если

применимо).

Page 77: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

77

Редактирование (redaction) данных Oracle

Применение и управления политиками редактирования данных Oracle

Редактирование данных Oracle дает возможность заменять "на лету" данные, возвращаемые

в результате запроса до отображения внутри приложения. Сами данные, содержащиеся в БД, не

изменяются. Это гарантирует, что неуполномоченные пользователи не увидят важную информацию.

Редактирование данных Oracle обеспечивает целостное редактирование значений столбцов для

модулей приложений, получающих доступ к одной и той же информации БД. Редактирование данных

позволяет редактировать значение столбцов любым из следующих методов:

Полное редактирование (Full redaction) - Все содержимое столбца подвергается

редактированию. Отредактированное значение, возвращаемое в результате запроса,

зависит от типа данных. Для столбцов типа NUMBER возвращается ноль (0), для

символьных - одиночный пробел.

Частичное редактирование (Partial redaction) - Только часть данных подвергается

редактированию. Например, можно редактировать большую часть номера банковского

счета с знаком №, за исключением последних 4 символов.

Регулярные выражения (Regular expressions) - Регулярное выражение может

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

для работы с текстовыми данными. Применимо для данных переменной длины.

Случайное редактирование (Random redaction) - Отредактированные данные

представлены случайно сгенерированными последовательностями, зависящими от типа

столбца.

Без редактирования (No redaction) - Тип редактирования ‘None’ используется для

тестирования операций политики. В этом случае никакого редактирования данных не

происходит.

Политика редактирования данных определяется способ, как данные будут замаскированы,

включая:

Тип редактирования (Full, Partial, Random и т.д).

Как происходит редактирование (для частичного редактирования определяется, какая

часть данных редактируется).

Когда происходит редактирование (для каких пользователей будут видны

редактированные, для каких актуальные данные).

Для создания и управления политиками редактирования данных нужно иметь привилегию

EXECUTE на PL/SQL пакет DBMS_REDACT. В пакет включены следующие процедуры:

DBMS_REDACT.ADD_POLICY - Добавляет политику редактирования к таблице или

представлению.

DBMS_REDACT.ALTER_POLICY - Изменяет политику редактирования

DBMS_REDACT.UPDATE_FULL_REDACTION_VALUES - Изменяет значение редактирования

для полного редактирования данного типа данных. Для начала использования нового

значения нужно перезапустить экземпляр.

Page 78: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

78

DBMS_REDACT.ENABLE_POLICY - Включает политику редактирования.

DBMS_REDACT.DISABLE_POLICY - Выключает политику редактирования.

DBMS_REDACT.DROP_POLICY - Удаляет политику редактирования.

Политика полного редактирования (full data redaction) редактирует содержание столбца

целиком. "По умолчанию", столбцы типа NUMBER замещаются нулем (0), а столбцы типа VARCHAR2 -

одиночным пробелом. Процедура UPDATE_FULL_REDACTION_VALUES используется для замены этих

значений. В примере показано использование полного редактирования значений столбца EDI_NUM в

таблице EDIGAS.EDI_DATA. Параметр "expression" применяет политику к любому пользователю,

обращающемуся к таблице, за исключением тех, кто обладает системной привилегией EXEMPT

REDACTION POLICY. Пользователи SYS и SYSTEM автоматически имеют привилегию EXEMPT REDACTION

POLICY. Это означает, что оба этих пользователя всегда могут обойти любую существующую политику

редактирования данных и всегда имеют возможность видеть данные в таблицах или представлениях

с наложенными политиками.

Политики редактирования, созданные для таблицы или представления, будут применяться к

любому представлению, созданному на их основе, включая материальные представления. Политика

редактирования будет использоваться на всю длину цепи представлений (представление, созданное

на основе другого представления), созданных на основе материнской таблицы или представления.

Если для какого-либо зависимого представления создана новая политика редактирования, то для

любого из столбцов этого представления и зависимых от него представлений будет использоваться

эта новая политика.

SQL> BEGIN

DBMS_REDACT.ADD_POLICY(

object_schema => 'edigas',

object_name => 'edi_data',

column_name => 'edi_num',

policy_name => 'redact_edi_num',

function_type => DBMS_REDACT.FULL,

expression => '1=1');

END;

/

При создании политики редактирования параметр "expression" процедуры

DBMS_REDACT.ADD_POLICY определяет условия приложения политики. Если этот параметр TRUE, то

политика прикладывается. Логическое выражение должно быть основано на одной из следующих

функций:

SYS_CONTEXT - Эта функция должны быть указана с допустимым пространством имен.

Пространством имен "по умолчанию" для SYS_CONTEXT является USERENV. Оно включает

такие значения как SESSION_USER и CLIENT_IDENTIFIER.

Application Express function - Можно использовать либо V, или NV свертки (для функций

APEX_UTIL.GET_SESSION_STATE и APEX_UTIL.GET_NUMERIC_SESSION_STATE соответственно)

как части выражения.

Page 79: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

79

Выражение должно быть построено с учетом следующего:

Допустимо использование только следующих операторов =, !=, >, <, >=, <=

Сравнение с NULL следует использовать крайне осторожно. Выражение должно иметь

значение TRUE, тогда как большинство сравнений с NULL склонно возвращать FALSE.

Пользовательские функции в выражении недопустимы.

Примеры приложения политики редактирования с использованием параметра "expression"

включают:

Пользовательское окружение (User Environment) - В примере применяется политика в

зависимости от имени пользователя:

expression => 'SYS_CONTEXT(''USERENV'',''SESSION_USER'') = ''IUS'''

Роль - Можно включить/выключить политику с помощью пространства имен

SYS_SESSION_ROLES на основании роли. Значение атрибута установлено в TRUE, если

указанная роль активна для пользователя/приложения, и FALSE, если роль неактивна. В

примере любой пользователь приложения с активной ролью AIS_ADMIN видит актуальные

данные, но для остальных данные редактируются:

expression => 'SYS_CONTEXT(''SYS_SESSION_ROLES'',''AIS_ADMIN'') = ''FALSE'''

Без фильтрации (No Filtering) - Политика может применяться независимо от контекста к

любому пользователю, за исключением SYS, SYSTEM или имеющего привилегию EXEMPT

REDUCTION POLICY. В примере показано условие применения политики к любому

пользователю (с учетом описанных ранее исключений):

expression => '1=1'

Присвоение доверенным пользователям привилегии EXEMPT REDUCTION POLICY исключает их

из всех политик редактирования Oracle. Лицо, создающее политику редактирования, не исключается

из нее, за исключением, если пользователь является SYS или обладает привилегией EXEMPT

REDUCTION POLICY. Привилегия EXEMPT REDUCTION POLICY включена в роль DBA. Однако эта

привилегия должна быть выдана пользователям явно, поскольку она не имеет параметра WITH

ADMIN OPTION в роли DBA.

При использовании частичного редактирования редактируется только часть данных. Часть

цифр, например, номер банковского счета, может быть замещена звездочками за исключением

четырех последних, например, ********1234. Можно создать политику для столбцов, использующих

текстовой, числовой тип данных или тип дата-время. Для политик, редактирующих текстовой тип

данных, существует набор предопределенных макроопределений редактирования. Некоторые из

доступных макроопределений, типичных для американского рынка:

DBMS_REDACT.REDACT_US_SSN_F5 - Редактирует первые 5 цифр номера социально

страхования или чего-то похоже на него, если столбец имеет тип VARCHAR2. Т.е., номер

123-45-6789 отображается как XXX-XX-6789.

Page 80: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

80

DBMS_REDACT.REDACT_US_SSN_L4 - Редактирует последние 4 цифры номера социально

страхования, если столбец имеет тип VARCHAR2. Т.е., номер 123-45-6789 отображается как

123-45-XXXX.

DBMS_REDACT.REDACT_US_SSN_ENTIRE - Редактирует весь номер социально страхования,

если столбец имеет тип VARCHAR2. Т.е., номер 123-45-6789 отображается как XXX-XX-ХХХХ.

DBMS_REDACT.REDACT_ZIP_CODE - Редактирует первые 5-значный номер почтового

индекса, если столбец имеет тип VARCHAR2. Т.е., номер 12345 отображается как XXXXX.

DBMS_REDACT.REDACT_DATE_MILLENNIUM - Редактирует даты в формате ДД-МОН-ГГ в

вид 01-JAN-00 (January 1, 2000).

DBMS_REDACT.REDACT_DATE_EPOCH - Редактирует все даты в 01-JAN-70.

В примере показано создание политики редактирования номера в столбце типа VARCHAR2 с

применением макроопределения REDACT_US_SSN_L4:

SQL> BEGIN

DBMS_REDACT.ADD_POLICY(

object_schema => 'edigas',

object_name => 'edi_data',

column_name => 'edi_nn',

policy_name => 'redact_cust_edi_nn',

function_type => DBMS_REDACT.PARTIAL,

function_parameters => DBMS_REDACT.REDACT_US_SSN_L4,

expression => '1=1',

policy_description => 'Partially redacts last 4 numbers in EDI numbers');

END;

/

Page 81: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

81

RMAN и ретроспективный архив данных

Применение расширений RMAN

Функциональность менеджера восстановления (RMAN) Oracle 12c была расширена по

сравнению с предыдущими версиями. Наиболее важные расширения описаны ниже.

Восстановление отдельных таблиц из резервных копий

С точки зрения администратора БД возможность восстановления отдельных таблиц из

резервных копий является одним из самых приятных нововведений. Теперь с помощью RMAN можно

скопировать и восстановить таблицу или их набор одной командой RECOVER TABLE. До появления

этой команды восстановление отдельных таблиц с использованием резервных копий RMAN было

весьма трудоемким делом. Нужно было скопировать и восстановить требуемое табличное

пространство в отдельное новое место на диске, выполнить экспорт нужных таблиц, а затем

импортировать их в исходную БД. В реальных промышленных системах часто приходилось помимо

резервного копирования периодически выполнять полный экспорт БД, как обязательную часть

стратегии резервирования, чтобы восстановление отдельных таблиц было менее болезненным.

Следует, однако, помнить, что для реализации этой опции необходимо весьма значительное

свободное дисковое пространство.

Интерфейс командной строки RMAN

Функциональность командной строки RMAN расширена за счет возможности выполнять SQL

команды без указания предшествующего ключевого слова SQL. Для небольшого количества команд,

которые существуют и в RMAN, и SQL*Plus и при этом имеют различное назначение, использование

ключевого слова SQL по-прежнему возможно и даже необходимо с целью избежать

неоднозначности. Стало возможно использовать команду DESCRIBE для получения информации о

таблицах и представлениях из командной строки RMAN.

Дупликация активной базы данных

Активная дупликация это метод восстановления БД по сети, при котором клонируется

исходная база данных. Дополнительная (auxiliary) БД подключается к целевой БД и извлекает

архивные наборы данных по сети. Этот метод отличается от копирования образов данных целевой

БД, который использовался в предыдущих релизах. Новый метод снижает нагрузку на обработку

данных целевой БД. Он делает возможным использование сжатия неиспользуемых блоков при

дупликации, что уменьшает размер передаваемых архивов. Активная дупликация поддерживает

опцию размера секции, что позволяет разделить файлы данных на части. Эти части используются для

параллельного восстановления вспомогательной БД.

Опция NOOPEN для дупликации

Новая опция NOOPEN команды DUPLICATE запрещает автоматическое открытие

восстановленной клонированной базы данных. Эта возможность позволяет выполнить изменения

любых параметров БД до ее открытия. Это свойство полезно также в случае, когда БД не должна быть

открыта с опцией RESETLOGS до запуска скриптов обновления.

RMAN> DUPLICATE TARGET DATABASE TO newdb FROM ACTIVE DATABASE NOOPEN;

Page 82: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

82

Многосекционные копии образа (Multisection Image Copies)

Копирование образа файлов данных может выполняться с опцией SECTION SIZE для

разделения файлов данных на несколько секций параллельно по нескольким каналам. Это

возможность снижает время создания копии образа больших файлов данных.

RMAN> BACKUP AS COPY SECTION SIZE 100M DATABASE;

Многосекционные инкрементальные резервные наборы

Инкрементальные резервные наборы могут быть выполнены с параметром SECTION SIZE,

чтобы разделить файлы данных на секции, которые могут быть архивированы параллельно по

нескольким каналам. Этот подход снижает время инкрементального резервирования больших

файлов данных.

RMAN> BACKUP INCREMENTAL LEVEL 1 SECTION SIZE 100M DATAFILE

’/u01/oracle/X/datafiles/users_01.dbf’;

Оптимизация моментального снимка дисковой памяти (Storage Snapshot Optimization)

Эта возможность делает возможным использование технологий сторонних фирм для

выполнения снимков дисковой памяти базы данных без предварительного перевода ее в режим

BACKUP. Режим резервного копирования может привести к дополнительным накладным расходам

системных ресурсов и ресурсов ввода/вывода из-за необходимости писать полные образы блоков в

журналы-redo. С этой новой возможностью снимки дисковой памяти сторонних производителей,

удовлетворяющие следующим требованиям, могут быть выполнены без требования перевода БД в

режим резервирования:

База данных является аварийно-непротиворечивой (crash consistent) в момент

выполнения снимка.

Последовательность записи сохранена для каждого файла внутри снимка.

Снимок хранит время завершения снимка.

В команде RECOVER введено ключевое слово SNAPSHOT TIME, позволяющее восстановить

снимок к точке непротиворечивости без каких-либо дополнительных ручных процедур для

восстановления на требуемый момент времени. Этот снимок затем может быть использован для

восстановления всей или части базы.

Page 83: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

83

Новые возможности ретроспективных архивов (Flashback Data Archive) В версии 12с расширилась функциональность ретроспективных архивов Oracle - Oracle

Flashback Data Archive (FDA). Появились следующие возможности:

Отслеживание пользовательского контекста (User-context tracking) - Пользовательский

контекст теперь стал частью метаданных, сохраняемых при отслеживании транзакций,

поэтому стало намного проще определить, кто внес изменения, и какие изменения были

внесены в таблице. Процедура SET_CONTEXT_LEVEL пакета DBMS_FLASHBACK_ARCHIVE

используется для установки уровня контекста пользователя, а GET_CONTEXT_LEVEL - для

доступа к этой информации. В примере устанавливается типичный TYPICAL контекст, что

включает в себя ID пользователя, глобальный ID пользователя и имя хоста:

SQL> BEGIN

DBMS_FLASHBACK_ARCHIVE.SET_CONTEXT_LEVEL ('TYPICAL');

END;

/

Усиление базы данных (Database hardening) - Набор таблиц может быть объединен в

понятие "приложение". В дальнейшем можно включить ретроспективную архивацию

данных для всего этого набора одной командой. Также возможно закрыть, т.е. сделать

read-only, полный набор таблиц одной командой, что предотвратит DML операции над

набором до того, как он будет открыт. Это возможность упрощает мониторинг и защиту

группы логически связанных таблиц с важными данными. Процедура

REGISTER_APPLICATION пакета DBMS_FLASHBACK_ARCHIVE используется, чтобы

зарегистрировать приложения для усиления БД. Для детального описания следует

обратиться к руководству Oracle Database PL/SQL Packages and Types Reference.

История экспорта и импорта - Процедуры пакета DBMS_FLASHBACK_ARCHIVE можно

использовать для создания временной исторической таблицы. Временная таблица может

быть загружена желаемыми историческими данными тем или иным образом, включая

Data Pump. Однажды заполненные, данные во временной исторической таблице могут

быть импортированы в назначенную историческую таблицу. Также имеется поддержка

для пользовательской истории, если для поддержки исторических данных использовался

механизм триггеров. Для детального описания следует обратиться к руководству Oracle

Database PL/SQL Packages and Types Reference.

Page 84: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

84

Отслеживание операций базы данных в реальном времени

Реализация отслеживания операций базы данных в реальном времени

Операция базы данных это группа связанных задач базы данных, определенных конечным

пользователей или приложением. Примером операции является ETL обработка, пакетное задание

или транзакция из нескольких SQL-операторов. Операции базы данных могут быть простыми и

составными:

Простые - Простые операции представляют собой одиночный SQL оператор или PL/SQL

процедуру/функцию.

Составные (Композитные) - Композитные операции включают в себя все действия между

двумя моментами времени в сессии БД с отдельным началом и концом для каждой

сессии. Сессия может участвовать только в одной композитной операции.

Впервые отслеживание операций было представлено в Oracle 11g, тогда поддерживалась

возможность отслеживания только простых операций. Начиная с версии 12c, появилась возможность

отслеживать составные операции. БД Oracle автоматически отслеживает параллельные запросы, DML

и DDL операторы после начала их выполнения. "По умолчанию" отслеживание операций в реальном

времени включается, если а) SQL запрос занимает более 5 секунд процессорного времени или

времени системы ввода/вывода при одиночном выполнении (т.н. "дорогая" операция) или б) запрос

выполняется параллельно.

Данные, полученные при отслеживании SQL операций в реальном времени, могут быть

доступны на странице "Monitored SQL Executions" в Enterprise Manager Cloud Control, через

представления словарей базы данных, или с помощью пакета DBMS_MONITOR. Страница "Monitored

SQL Executions" находится в меню Performance. На этой странице обобщается активность

отслеживаемых команд, и она является рекомендуемым средством для работы с мониторингом SQL-

команд в реальном времени. С ее помощью можно также получить детальную информацию об

отдельных командах.

Для отслеживания SQL-команд в реальном времени используются следующие представления

словаря данных:

V$SQL_MONITOR - Представление содержит общую информацию о наиболее частых SQL

операторах в операциях базы данных. Данные о каждом из отслеживаемых операторов

содержатся в отдельной записи. Каждая такая строка представления содержит SQL-

оператор, статистики которого накоплены по нескольким сессиям и по всем его

выполнениям во время операции. В качестве первичного ключа используется сочетание

столбцов DBOP_NAME, DBOP_EXEC_ID и SQL_ID.

V$SQL_MONITOR_SESSTAT - Представление содержит статистики для всех сессий,

включенных в операцию базы данных. Большинство статистик являются накопительными.

База данных запоминает статистики в формате XML, а не в виде " статистика - столбец".

Это представление предназначено для создания отчетов.

V$SQL_PLAN_MONITOR - Это представление содержит отслеживаемую статистику для

каждого шага в плане выполнения отслеживаемого SQL-оператора. База данных заносит

Page 85: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

85

статистки в V$SQL_PLAN_MONITOR каждую секунду во время выполнения SQL-запроса.

Для каждого отслеживаемого запроса в V$SQL_PLAN_MONITOR существуют

множественные записи. Каждая запись соответствует шагу в плане выполнения запроса.

С помощью пакета DBMS_SQL_MONITOR можно задать начало и конец операции базы данных,

а также создать отчет об операции. В пакет входят процедуры:

REPORT_SQL_MONITOR - Процедура получает на входе несколько параметров,

определяющих выполнение, степень детализации и тип отчета. Без параметров процедура

создает текстовый отчет о последней отслеживаемой операции.

BEGIN_OPERATION - Функция отмечает начало композитной операции базы данных в

текущей сессии.

END_OPERATION - Процедура отмечает конец композитной операции базы данных в

текущей сессии.

DBMS_MONITOR.BEGIN_OPERATION(

dbop_name IN VARCHAR2,

dbop_eid IN NUMBER := NULL,

force_tracking IN VARCHAR2 := NO_FORCE_TRACKING,

attribute_list IN VARCHAR2 := NULL)

RETURN NUMBER;

Функция BEGIN_OPERATION используется для отмечания начала композитной операции. На

входе нужно задать следующие параметры:

dbop_name - Имя операции.

dbpop_eid - Уникальный номер, необходимый, чтобы различать выполнения (параметр

необязателен).

force_tracking - FORCE_TRACKING заставляет базу данных отслеживать все операторы,

независимо от продолжительности или интенсивности ввода/вывода. "По умолчанию"

используется опция NO_FORCE_TRACKING, что требует отслеживать только "дорогие"

операции (параметр необязателен).

attribute_list - Список параметров в форме "имя-значение", разделенных запятыми,

например, table_name=emp, operation=load. (параметр необязателен).

Отслеживание SQL операторов разрешено, если параметр инициализации STATISTICS_LEVEL

установлен в TYPICAL или ALL. В этом случае Oracle начнет отслеживать длинные операции

автоматически. Параметр инициализации CONTROL_MANAGEMENT_PACK_ACCESS должен быть

установлен в DIAGNOSTIC+TUNING ("по умолчанию"), чтобы использовать отслеживание SQL-

операторов.

Для разрешения/запрещения отслеживания SQL-операторов можно использовать т.н. хинты.

Хинт MONITOR включает отслеживание, а хинт NO_MONITOR выключает. Например, первый оператор

включает отслеживание, а второй выключает его:

SQL> SELECT /*+ MONITOR */ first_name, last_name, email FROM employees;

SQL> SELECT /*+ NO_MONITOR */ first_name, last_name, email FROM employees;

Page 86: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

86

Можно явно создать операцию в базе данных, задав ее начало и конец с помощью пакета

DBMS_SQL_MONITOR. Операция базы данных начинается функцией BEGIN_OPERATION и завершается

процедурой END_OPERATION.

Для создания операции базы данных нужно:

Запустить SQL*Plus и подключиться к БД с достаточным уровнем привилегий.

Определить переменную для хранения идентификатора выполнения (execution ID).

SQL> var op_id NUMBER;

Начать операцию базы данных. Имя операции my_op.

SQL> EXEC :op_id := DBMS_SQL_MONITOR.BEGIN_OPERATION('my_op');

Выполнить нужные запросы, которые войдут в операцию.

SQL> SELECT COUNT(*) FROM hr.employees;

SQL> SELECT COUNT(*) FROM hr.departments;

Завершить операцию базы данных.

SQL> EXEC DBMS_SQL_MONITOR.END_OPERATION(' my_op ', :op_id);

Убедится, что операция завершена.

SQL> SELECT dbop_name, status FROM v$sql_monitor WHERE dbop_name = ' my_op ';

DBOP_NAME STATUS

---------- ---------

my_op DONE

Создать отчет по выполнению операции.

Page 87: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

87

Настройка SQL

Использование адаптивных планов выполнения

Новая возможность Oracle 12c - адаптивная оптимизация запросов (Adaptive Query

Optimization), позволяет оптимизатору менять планы выполнения во время выполнения запроса и

получать дополнительную информацию, которая помогает улучшить статистики. Существует два

аспекта в адаптивной оптимизации запросов:

Адаптивные планы (Adaptive Plans) - Эта возможность нацелена на улучшение плана

начального/первого выполнения запроса во время выполнения.

Адаптивные статистики (Adaptive Statistics) - Эта функция предназначена для обеспечения

дополнительных статик, чтобы улучшить последующие выполнения запроса.

Адаптивные планы

Адаптивные планы позволяют оптимизатору принять окончательное решение о выборе плана

выполнения SQL-запроса во время выполнения. План, выбранный оптимизатором до выполнения,

создан на основании собранных статистик. Если во время выполнения оптимизатор обнаружит, что

оценка кардинальности сильно отличается от действительного количества строк в выборке, то план

или его часть может быть автоматически адаптирована (изменена) во время выполнения.

Оптимизатор может предварительно определить несколько потенциальных подпланов для

частей плана так, что он может выбрать метод выполнения запроса "на лету". Во время выполнения

запроса сборщик статистики отслеживает и буферизирует строки, полученные при выполнении части

плана. На основании собранных данных оптимизатор принимает окончательное решение, какой

подплан будет использоваться. Как только оптимизатор выбрал окончательный план, сборщик

статистики останавливает сбор статистик и буферизацию строк, и просто пропускает строки. На

последующих выполнениях дочернего курсора оптимизатор запрещает буферизацию строк и

выбирает тот же окончательный план.

Если план выполнения изменен адаптивным оптимизатором запросов, то результат команды

EXPLAIN PLAN будет отличен от результата функции DBMS_XPLAN.DISPLAY_CURSOR. Команда EXPLAIN

PLAN покажет только начальный или план "по умолчанию", выбранный оптимизатором. Результат

DBMS_XPLAN.DISPLAY_CURSOR будет содержать окончательный план, использованный

оптимизатором.

Все операции в адаптивном плане, включая точки сбора статистики с использованием

DBMS_XPLAN, можно просмотреть. Добавление параметра форматирования "+adaptive" приведет к

появлению дополнительного примечания (нотации) "-" в колонке id плана. Это указывает, что эти

действия плана не были активны, т.е. не использовались. Средство SQL Monitor в Oracle Enterprise

Manager всегда показывает полный адаптивный план, но не указывает, какие операции в плане были

неактивны.

В представление V$SQL введен новый столбец (IS_RESOLVED_ADAPTIVE_PLAN), указывающий

на то, что SQL оператор имеет адаптивный план, и определен ли этот план полностью или нет. Если

значение столбца "Y", то план является адаптивным, и окончательный план выбран. Если значение

Page 88: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

88

"N", то выбранный план является адаптивным, но окончательный план еще не выбран. Для

неадаптивных планов в столбце IS_RESOLVED_ADAPTIVE_PLAN содержится значение NULL.

Если параметр инициализации OPTIMIZER_ADAPTIVE_REPORTING_ONLY установлен в TRUE

(значение "по умолчанию" FALSE), то информация, необходимая для включения адаптивных методов

объединения планов будет собираться, но каких-либо действия по изменению планов делаться не

будет. При установке в TRUE будет использоваться план "по умолчанию", но информация, как следует

изменить план, собираться будет. Ее можно увидеть с помощью DBMS_XPLAN, задав дополнительный

параметр форматирования '+report'.

Адаптивные статистики

Чтобы построить хорошие планы выполнения, оптимизатор опирается на статистики. Иногда,

однако, некоторые предикаты запросов слишком сложны, чтобы опираться только на статистику

отдельных таблиц. Во время компиляции SQL-запроса оптимизатор определяет, можно или нет

построить хороший план выполнения на имеющихся статистиках. Если нет, то используется

динамическая выборка, чтобы скомпенсировать отсутствующую или недостаточную статистику. Если

одна и более таблиц не имеет статистик, то динамическая выборка соберет для них базисную

статистику. В Oracle 12c динамическая выборка была существенно расширена и стала динамической

статистикой.

Динамическая статистика может определить более точные оценки количества элементов

выборки не только для одиночной таблицы, то и для соединений и групповых предикатов "GROUP

BY". Для инициализационного параметра OPTIMIZER_DYNAMIC_SAMPLING введен новый уровень 11.

При установке параметра на этот уровень, оптимизатор может решить использовать динамические

статистики для любого SQL оператора, даже при наличии всех базисных статистик для таблиц.

Решение, использовать ли динамические статистики, основывается на уровне сложности

используемого предиката, существующих статистиках базы и полном ожидаемом времени

выполнения SQL-запроса. На уровне 11, динамическая выборка будет в большинстве происходить

чаще и увеличит время разбора. Чтобы снизить влияние на производительность, результаты запросов

динамической выборки будут сохраняться в кэше для совместного использования с другими SQL-

запросами.

Автоматическая оптимизация создана для улучшения плана выполнения запроса после

первого выполнения. В момент завершения первого выполнения SQL запроса оптимизатор

определяет, отличается ли информация о выполнении от исходных оценок. Если это так, то

оптимизатор ищет новый план для последующего выполнения. Автоматическая оптимизация

является итерационным процессом, оптимизатор может проводить оптимизацию несколько раз, с

каждым разом узнавая больше и улучшая план выполнения. Oracle 12c поддерживает несколько

форм реоптимизации:

Отклик по статистике (Statistics feedback) - Оптимизация, формально известная, как

отклик по количеству элементов выборке (cardinality feedback), создана для улучшения

планов запросов, результаты которых сильно отличны от оценок. Оптимизатор сравнивает

исходную оценку количества элементов для SQL-запроса с действительным результатом,

полученным по итогам выполнения. Если оценка и результат сильно отличаются, то

Page 89: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

89

правильные оценки сохраняются для последующего использования. Оптимизатор также

создает директиву SQL плану, поэтому другие SQL-операторы могут получить выгоды от

данных, полученных при первом выполнении.

Отклик по производительности (Performance Feedback) - Этот тип позволяет улучшить

степень параллелизма для повторяющихся SQL-запросов при разрешенной опции

Automatic Degree of Parallelism (AutoDOP) в адаптивном режиме. Во время первого

выполнения SQL-оператора оптимизатор определяет, нужно ли использовать

параллелизм выполнения. По завершении первого выполнения использованная степень

параллелизмы сравнивается с вычисленной на основе статистики реальной

производительности, собранной во время выполнения. Если они сильно отличаются, то

оператор помечается для реоптимизации, и статистики сохраняются для более точного

определения степени параллелизма DOP для последующих выполнений.

Директивы планов SQL (SQL plan directives) --Директивы планов SQL это дополнительная

информация и инструкции, используемые оптимизатором для построения наиболее

оптимальных планов выполнения. Они создаются для выражений запросов нежели на

уровне операторов или объектов, поэтому они применимы ко многим SQL-операторам.

Несколько директив могут использоваться для единственного SQL-оператора. Директивы

планов SQL обслуживаются автоматически и хранятся в табличном пространстве SYSAUX.

Любая директива плана SQL, которая не использовалась более 53 недель, удаляется

автоматически. Состояние директивы отображается в представлениях

DBA_SQL_PLAN_DIRECTIVES и DBA_SQL_PLAN_DIR_OBJECTS.

Использование расширенных возможностей сбора статистики

Процесс сбора инкрементальной статистики получил два существенных улучшения.

Инкрементальные статистики остаются верными при сборе на секционированных таблицах. Для

секционированных таблиц база данных Oracle должна собрать статистику на уровне таблицы и

секции. Существует возможность вычислить статистики глобального уровня путем агрегирования

статик уровня секции, убрав, таким образом, необходимость просмотра всей таблицы для построения

глобальной статистики.

До версии 12c при использовании инкрементальных статистик для таблицы изменение в

секции приводило к тому, что статистики для всей таблицы становились устаревшими. Эти статистики

не могли быть использованы для создания глобальных статистик до момента пересоздания. Новый

параметр INCREMENTAL_STALENESS позволяет администратору определить, когда статистики секции

будут считаться устаревшими. "По умолчанию" он установлен в NULL, при этом статистики считаются

устаревшими при изменении одной записи в секции. Параметр может принимать следующие

значения:

USE_STALE_PERCENT - Статистика уровня секции не будет считаться устаревшей пока доля

измененных строк меньше, чем значение параметра STALE_PERCENTAGE (10% "по

умолчанию").

USE_LOCKED_STATS - Если статистики секции являются постоянными (locked), то они будут

использоваться для создания глобальных статистик независимо от того, сколько строк

было изменено с момента последнего сбора статистики.

Page 90: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

90

Второе улучшение инкрементальных статистик включает в себя возможность обмена

секциями. Команда обмена секции обменивает данные между обычной таблицей и указанной

секцией секционированной таблицы. Физически данные не переносятся, фактически производится

модификация словаря, а именно, указатель секции меняется на указатель таблицы и наоборот. До

версии 12c не было возможности собрать статистику с поддержкой инкрементальности на

несекционированной таблице. Ранее статистики должны были быть собраны после операции обмена.

В 12с статистики могут быть собраны на несекционированной таблице до операции обмена. После

обмена, эти данные могут сразу быть использованы для обслуживания глобальных инкрементальных

статистик. Новый параметр INCREMENTAL_LEVEL пакета DBMS_STAT используется для указания типа

сбора описаний. Если параметр INCREMENTAL_LEVEL установлен в TABLE (значение "по умолчанию"

PARTITION), Oracle автоматически создаст описание для таблицы, когда статистика будет собрана. Это

описание затем станет описанием уровня секции после операции обмена.

Конкурентные статистики

Если помощью процедуры DBMS_STATS.SET_GLOBAL_PREF установлено предпочтение сбора

глобальной статистики CONCURRENT, то планировщик заданий Oracle Job Scheduler и компонент

Advanced Queuing создадут и будут поддерживать одно задание сбора статистики на каждый объект

(таблицу или секцию таблицы) конкурентно. В версии 12с процесс сбора статистики был улучшен за

счет оптимизации каждого из заданий. Для малых или пустых таблиц, секций или подсекций база

данных автоматически соберет все малые объекты в одно задание сбора статистики с целью

снижения издержек. Также стало возможно выполнять конкурентный сбор статистики во время

ночного задания сбора статистики, установив параметр AUTOSTAT_TARGET в ALL или AUTO.

Автоматическое определение групп столбцов (Automatic column group detection)

Если несколько столбцов одной таблицы используются в качестве фильтра предиката в

операциях соединения или конструкциях GROUP BY, то расширенные статистики на группе этих

столбцов могут улучшить точность оценок оптимизатора для объема выборки. Однако часто сложно

определить, для каких групп колонок нужно создавать групповые статистики. Автоматическое

определение групп столбцов состоит из трех шагов:

Заполнение использования столбцов (Seed column usage) - Oracle должен собрать

репрезентативную нагрузку, чтобы определить подходящие группы столбцов. Эта нагрузка

может быть создана из наборов SQL Tuning Set или при наблюдении за рабочей системой.

Процедура DBMS_STATS.SEED_COL_USAGE определяет начало и длительность сбора

рабочей нагрузки.

Создание групп столбцов (Create the column groups) - Вызвав процедуру

DBMS_STATS.CREATE_EXTENDED_STATS для соответствующих таблиц, можно создать

нужные группы столбцов на основании собранной информации. Как только расширенные

статистики были созданы, они начнут обслуживаться автоматически при сборе статистик

на таблице. Создать группы столбцов можно и вручную, указав группу в качестве третьего

аргумента функции DBMS_STATS.CREATE_EXTENDED_STATS.

Повторный сбор статистики (Regather statistics) - Завершающим шагом является

повторный сбор статистики на все задействованные таблицы.

Page 91: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

91

Использование управления адаптивными SQL планами

Новая возможность версии 12с - адаптивное управление планами SQL. С ее появлением

администраторы баз данных избавлены от необходимости проверять непринятые планы выполнения

вручную. Если автоматическая настройка SQL установлена в COMPREHENSIVE, то новый консультант

SPM Evolve Advisor запускает процесс проверки (SYS_AUTO_SPM_EVOLVE_TASK) для всех SQL

операторов, имеющих непринятые планы, во время ночного окна обслуживания. Если процесс

проверки определяет, что непринятый план значимо лучше, чем принятый план в имеющимся SQL

плановом основании (baseline), то план будет автоматически принят. Задание может одобрить более

одного плана для SQL-оператора. Создается постоянный отчет, детально описывающий, как новый

план работает по сравнению с существующими планами. Задание оценки планов может быть

запущено вручную с помощью пакета DBMS_SPM.

Задание консультанта Automatic SPM Evolve Advisor не имеет выделенного задание

диспетчера заданий. Одно задание управляет и Automatic SQL Tuning Advisor, и Automatic SPM Evolve

Advisor. Одно и то же задание включает и выключает оба консультанта. Задание может быть

включено в Enterprise manager или с помощью PL/SQL пакета DBMS_AUTO_TASK_ADMIN для чего

следует выполнить следующие действия:

Следует подключиться к базе данных с административными привилегиями и выполнить

следующий PL/SQL код:

SQL> BEGIN

DBMS_AUTO_TASK_ADMIN.ENABLE (

client_name => 'sql tuning advisor',

operation => NULL,

window_name => NULL

);

END;

/

Нужно проверить изменения в словаре базы данных.

SQL> SELECT client_name, status

FROM dba_autotask_client

WHERE client_name = 'sql tuning advisor';

CLIENT_NAME STATUS

-------------------- --------

sql tuning advisor ENABLED

Выполнение процедуры DBMS_AUTO_TASK_ADMIN.DISABLE с теми же параметрами выключит

задание. Пакет DBMS_SPM поможет настроить автоматическую оценку планов выполнения. Для

получения детальной информации нужно обратиться к руководству Oracle Database SQL Tuning Guide.

Рекомендуется, чтобы задание развития планов SQL Plan Management Evolve task было

настроено на автоматическое выполнение. Однако можно принять непринятый план вручную с

помощью PL/SQL команды или из Cloud Control. Ручное развитие плана позволяет определить

Page 92: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

92

является ли новый план лучше, чем любой из одобренных планов в плановом основании. В списке

приведены процедуры DBMS_SPM ,наиболее часто используемые для управления развитием планов:

ACCEPT_SQL_PLAN_BASELINE - Функция принимает одну рекомендацию по развитию

одного плана и включении его в плановое основание SQL.

CREATE_EVOLVE_TASK - Функция создает задание консультанта, определяющее план

изменений одного или нескольких планов для указанного SQL-оператора. В качестве

входного параметра указывается дескриптор SQL -оператора, имя плана или список имен

планов, временные пределы, имя задания или описание.

EXECUTE_EVOLVE_TASK - Эта функция выполняет задание изменений. В качестве входного

параметра задается имя задания, имя выполнения, описание. Если не задано, то

консультант создает имя автоматически и возвращает его после вызова функции.

IMPLEMENT_EVOLVE_TASK - Эта функция реализует все рекомендации по заданию

изменений.

REPORT_EVOLVE_TASK - Эта функция отображает результаты задания изменений в виде

CLOB. В качестве входных параметров указываются имя задания и нужная часть отчета.

SET_EVOLVE_TASK_PARAMETER - Эта функция используется для установки параметров

задания изменений. В версии 12с допустимым значением является только TIME_LIMIT.

Обычно для ручного изменения заданий развития SQL планов нужно выполнить следующие

шаги:

Создать задание изменений.

Установить параметры задания (при необходимости).

Выполнить задание изменений.

Воплотить рекомендации, полученные при выполнении задания.

Создать отчет по результатам задания.

Page 93: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

93

Аварийный контроль (Emergency Monitoring), контроль реального времени

(Real-Time ADDM), сравнительный контроль (Compare Period ADDM) и

анализ истории активных сессий (ASH Analytics)

Выполнение аварийного контроля и контроля реального времени

С помощью системы аварийного контроля DBA может подключиться к "зависшему"

экземпляру базы данных. Соединение устанавливается с использованием внутреннего механизма и

делает возможной диагностику проблемы ядра в то время, когда обычным образом подключиться к

базе данных невозможно.

При активировании аварийного контроля (Emergency Monitoring) агент Enterprise Manager

Cloud Control подключается напрямую к области SGA. Агент минует уровень извлечения/разбора SQL

и собирает данные статистик производительности напрямую из SGA. Страница аварийного контроля

(Emergency Monitoring) доступна из меню производительность (Performance) домашней странице EM

Cloud Control.

Рис. 23 Ссылка на страницу аварийного контроля Oracle EM Cloud Control 12c

На странице отображаются собранные данные ASH и обновляемые в реальном времени

данные о блокируемых сессиях в таблице анализа зависаний (Hang Analysis). Администратор может

определить блокирующие сессии и "убить" блокирующую сессию нажатием на соответствующую

кнопку (выделена цветом).

Page 94: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

94

Рис. 24 Страница аварийного контроля Oracle EM Cloud Control 12c при наличии взаимных блокировок

ADDM реального времени

Монитор ADDM реального времени впервые появился в Oracle Enterprise Manager Cloud

Control 12c, и значительная часть его возможностей также доступна в Enterprise Manager Express.

Нужно отметить, что EM Express не имеет технической возможности установки сессии аварийного

подключения или какого-либо эквивалентного механизма. Монитор ADDM реального времени

создан для упрощения анализа и решения проблем, приводящих к зависанию или блокировке базы

данных. Ранее решение их требовало перезапуска базы данных.

Монитор ADDM реального времени анализирует текущую производительность БД с помощью

набора предопределенных критериев. При обнаружении каких-либо проблем монитор ADDM

реального времени предлагает методы для решения любых найденных ошибок без перезапуска БД. В

зависимости от состояния базы данных, ADDM реального времени будет использовать один из двух

режимов соединения с БД:

Нормальное соединение - ADDM реального времени выполняет обычное JDBC

соединение с БД. Этот режим предназначен для проведения широкого анализа

производительности при условии возможности установки соединения.

Диагностическое соединение - сессия с базой данных без блокировок, предназначенная

для ситуаций полного зависания, когда обычная JDBC-сессия невозможна.

Диагностика, проводимая ADDM реального времени, сходна с диагностикой обычного ADDM,

но ADDM реального времени использует другие данные. Обычный монитор ADDM для диагностики

использует данные из снимков AWR. Монитор ADDM реального времени использует данные текущей

Page 95: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

95

активности ASH из SGA вместо снимков AWR, т.е. ADDM реального времени выполняется

автоматически и использует данные в памяти для выделения всплесков активности в базе данных.

Если обнаружена проблема производительности, то автоматически включается программа анализа.

Просмотр активности ASH происходит каждые три секунды процессом отслеживания управляемости

MMON (manageability monitor process) без использования защелок или блокировок. Процесс MMON

анализирует статистику работы и включает ADDM реального времени, если обнаружена какая-либо

из следующих проблем:

High load (высокая нагрузка) - Среднее количество активных сессий в три раза выше, чем

число ядер процессора.

I/O bound (предел ввода/вывода) - Влияние операций ввода/вывода на активные сессии с

учетом производительности чтения одиночного блока слишком велико.

CPU bound (предел процессора) - Активные сессии превышают 10% общей нагрузки и

утилизация процессора выше 50%.

Over-allocated memory (избыточно занятая память) - Выделено более 95% физической

памяти.

Interconnect bound (предел внутренней передачи) - Предел времени внутренней

передачи одиночного блока.

Session limit (передел количества сессий) - Количество сессий близко к 100% пределу.

Process limit (предел количества процессов) - Количество процессов близко к 100%

пределу.

Hung sessions (зависшие сессии) - Доля зависших сессий выше, чем 10% от общего

количества сессий.

Deadlock detected (обнаружены взаимные блокировки) - Обнаружена хотя бы одна

взаимная блокировка.

Подчиненный процесс MMON занесет полученный отчет ADDM в репозиторий AWR.

Метаданные отчета доступны через представление DBA_HIT_REPORTS. ADDM реального времени

использует несколько средств, чтобы удостовериться, что автоматическое включение не будет

потреблять слишком много системных ресурсов:

Интервал между отчетами (Duration between reports) - Если отчет ADDM реального

времени был создан за прошедшие 5 минут автоматически, то новый отчет создаваться не

будет.

Oracle RAC control - Включение ADDM реального времени является локальным для

экземпляра. Для Oracle RAC только одиночный экземпляр может создавать отчет ADDM

реального времени, поскольку это требует блокировки, и запрос выполняется

подчиненным процессом MMON перед действительной генерацией отчета.

Повторяющиеся проблемы (Repeated triggers) - Автоматическое включение ADDM

реального времени по любой проблеме возможно, если причина включения имеет такой

же или больший уровень интенсивности в течение последних 45 минут.

Новая проблема (Newly identified issues) - Если обнаружена новая проблема, и она не

встречалась за последние 45 минут, то создается новый отчет независимо от активной

нагрузки.

Page 96: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

96

Создание сравнительного отчета ADDM по периоду Функция сравнения периодов ADDM используется для сравнения производительности

сервера базы данных за два разных периода времени. Эта функциональность является частью

Enterprise Manager Cloud Control 12c и используется для выяснения причин, почему сервер работает

быстрее или медленнее ожидаемого. С ее помощью можно анализировать любую базу данных Oracle

версии 10.2.0.4 и старше, обслуживаемую Cloud Control. Для построения отчета нужно выбрать строго

два периода:

Период сравнения (comparison period) - Обычно, это время, когда обнаружено падение

производительности. Однако возможно использование сравнения периодов для

выяснения причин роста производительности.

Базовый период (base period) - Это определенный период времени, когда база данных

функционировала правильно. В качестве базового периода выбирается отрезок времени,

когда производительность является приемлемой, а нагрузка близка к периоду сравнения.

Для создания сравнительного отчета ADDM нужно выполнить следующее:

1. Из пункта меню Performance EM Cloud Control нужно выбрать AWR и Compare Period

ADDM.

2. На странице Run Compare ADDM нужно выбрать базовый и сравниваемый периоды.

3. Запустить генерацию отчета Database Compare Period Report, кликнув на Run.

4. На основании созданного отчета определить причины изменения производительности.

Отчет содержит четыре раздела:

Обзор (overview) - В разделе приводится значение, насколько данные периоды

сопоставимы. Значение основывается на среднем потреблении ресурсов общими для

обоих периодов SQL-запросами. Если значение 100%, то "отпечаток" нагрузки в обоих

временных отрезках идентичен. Если значение 0%, то временные периоды не имеют

общих элементов для специфической размерности нагрузки.

Настройки (configuration) - В разделе приводятся параметры настройки экземпляра, хоста,

базы данных для обоих периодов.

Находки (findings) - Раздел может содержать обнаруженные изменения

производительности. В разделе могут приводиться основные различия в

производительности, вызванные изменениями в системе. Он содержит значение

"влияние изменения" (Change Impact), представляющее масштаб изменения

производительности в разные периоды. Если значение положительное, то произошло

улучшение, отрицательное - ухудшение.

Ресурсы (Resources) - Приводятся сводные данные долей времени БД для обоих периодов

времени. Приводится использование ресурсов CPU, оперативной памяти, ввода/вывода и

межэкземплярных соединений для RAC.

Page 97: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

97

Диагностика проблем производительности с использованием новых

возможностей ASH Обычный монитор ADDM проводит диагностику базы данных на основании снимков AWR.

Если проблема производительности является краткосрочной, то ADDM может не обнаружить ее, так

как эта проблема не считается значимой в терминах ее длительности по сравнению с периодом сбора

снимков AWR. Данные снимков не является идеальным средством для обнаружения и диагностики

периодических или краткосрочных проблем производительности. Для облегчения обнаружения с

краткосрочных проблем с производительностью база данных Oracle каждую секунду проверяет

активные сессии и заносит собранные данные в циклический буфер в области SGA. Чтобы сохранить

приемлемое количество данных, запоминается состояние только тех сессий, которые ждут событий,

не относящихся к типу Idle wait. Собранные таким образом данные представляют собой историю

активных сессий - Active Session History (ASH). Они могут быть получены через запрос к

представлению V$ACTIVE_SESSION_HISTORY. На их основании создается отчет ASH, в который

включены следующие параметры сессий:

Идентификатор SQL оператора.

Номер объекта, номер файла и номер блока.

Идентификатор номера события ожидания и серийный номер сессии.

Модуль и имя действия.

Идентификатор клиента сессии.

Хэш идентификатор сервиса.

Для создания отчета AWR можно использовать Oracle Enterprise Manager Cloud Control. Для

создания отчета ASH из EM Cloud Control нужно:

Зайти на домашнюю страницу базы данных Database Home.

Из меню Performance выбрать Performance Home.

Зарегистрироваться в БД с административными полномочиями. Появится страница

Performance.

Под Average Active Sessions кликнуть на Run ASH Report. Появится страница Run ASH Report.

Ввести дату и время начала и завершения периода, когда имела место кратковременная

проблема с производительностью.

Нажать Generate Report.

По завершении создания отчета ASH он будет доступен в секции Report Results на странице

Run ASH Report. Созданный отчет может быть использован для обнаружения причины

кратковременной проблемы с производительностью.

Отчет ASH разделен на озаглавленные разделы:

Основные события (Top Events) - Приводятся детали событий ожидания для отобранных

сессий. Выделяются пользовательские, фоновые или приоритетные категории.

Профиль нагрузки (Load Profile) - Описывает нагрузку, проанализированную в отобранной

сессии. Информация в секции отчета может использоваться для идентификации клиента,

сервиса или SQL-команды, которые могут вызывать кратковременные проблемы с

производительностью.

Page 98: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

98

Основные SQL запросы (Top SQL) - Показывает основные SQL-запросы в отобранной

сессии. Определенные здесь вызывающие высокую нагрузку SQL-запросы могут вносить

свой вклад в кратковременные проблемы с производительностью.

Основные сессии (Top Sessions) - Список сессий, имеющих максимальную долю событий

ожидания. Этот список может помочь в идентификации сессий, которые могут источником

проблем с производительностью.

Часто используемые объекты БД/файлы/защелки (Top DB Objects/Files/Latches) - В

секции приводятся дополнительные данные о наиболее часто используемых общих

ресурсах базы данных. Три подсекции данной секции отчета приводят список файлов,

объектов и защелок, которые наиболее часто использовались в отобранных сессиях.

Активность за время (Activity Over Time) - Эта секция полезна для анализа более длинных

периодов времени поскольку обеспечивает всесторонние детали об активности и

профилях нагрузки во время периода анализа.

В среду EM Cloud Control включен новый инструмент ASH Analytics, отображающий данные

ASH в графическом виде, что дает возможность интерактивно анализировать данные активности

сессий (ASH) и обеспечивает несколько способов манипуляции с анализируемыми данными, включая:

Изменение длительности анализируемого периода.

Фильтрацию включаемых измерений.

Углубленный анализ представления плана нагрузки, показывающий различные события

ожидания с учетом их значимости.

Менеджер ресурсов и другие расширения контроля производительности

Использование менеджера ресурсов для контейнерной и подключаемых баз данных

Менеджер ресурсов используется для настройки квот системных ресурсов БД Oracle,

выделяемых нескольким конкурирующим нагрузкам. Даже в монолитной БД конкурирующие

нагрузки достаточно сложны с точки зрения выделения ресурсов. Управление ресурсами в

контейнерной БД усложняется, так как ресурсы делятся между несколькими подключаемыми БД и

контейнерной. Менеджер ресурсов в контейнерной БД работает на двух основных уровнях:

Уровень контейнера (CDB) - Управляет нагрузкой нескольких PDB, конкурирующих за

ресурсы. Можно настроить каким образом ресурсы выделяются для разных PDB и

ограничения, установленные для определенных PDB.

Уровень подключаемой БД (PDB) - Нагрузки внутри подключаемой БД.

Ресурсы выделяются в двух шаговом процессе:

Каждой подключаемой БД выделяется часть совокупных системных ресурсов в

контейнерной БД.

Внутри каждой подключаемой БД ресурсы, полученные на первом шаге, делятся между

установленными сессиями.

Менеджер ресурсов позволяет сделать следующее:

Указать, что разным подключаемым БД нужно выделять разные доли системных ресурсов

на основании их относительной важности.

Ограничить использование процессора подключаемой БД.

Page 99: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

99

Ограничить степень параллелизма для конкретной контейнерной БД.

Ограничить использование ресурсов различными сессиями в рамках одной PDB.

Отслеживать использование ресурсов разными PDB.

Различие между мультипроцессной и многопотоковой архитектурой в

Oracle В базе данных Oracle существует набор различных процессов, каждый из которых выполняет

определенные задачи внутри БД. Такая архитектура является многопроцессной. Если бы СУБД Oracle

была однопроцессной, то существовал бы один гигантский процесс, который бы делал всю нужную

работу. Многопроцессная архитектура делает Oracle более масштабируемым, т.к. запускаются и

используют ресурсы системы только нужные процессы.

До версии 12c на платформе Unix/Linux каждый процесс Oracle требовал отдельного

системного процесса. В этом релизе стало возможно запускать Oracle для *nix в многопотоковом

режиме. При работе в многопотоковом режиме один процесс операционной системы может

поддерживать множество процессов Oracle, выполняющихся в виде нитей (thread) внутри процесса

ОС.

Многопотоковый режим по умолчание выключен. Чтобы включить его, нужно установить

параметр экземпляра THREADED_EXECUTION в YES и перезапустить экземпляр. При работе в

многопотоковом режиме некоторые фоновые процессы все равно функционируют как процессы ОС

(один процесс Oracle - один процесс ОС). Например, PMON и DBW0 выполняются как процессы ОС,

тогда как LGWR и SMON могут выполняться как нити одного процесса. Представление P$PROCESS

содержит записи для каждого процесса Oracle в экземпляре, в частности ID процесса в ОС и ID нити в

ОС.

При работе в многопотоковом режиме администрирование БД возможно только с

использованием учетной записи, аутентифицируемой с помощью файла паролей. В противном случае

возникнет ошибка ORA-1031:

SQL> ALTER SYSTEM SET threaded_execution=true SCOPE=SPFILE;

System altered.

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORA-01017: invalid username/password; logon denied

SQL>

Page 100: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

100

Использование флэш кэша (flash cache) Функция Database Smart Flash Cache организует доступ к нескольким устройствам флэш-

памяти без помощи менеджера томов ОС. Эта возможность поддерживается только на Solaris и Linux.

Включение этой опции может быть полезным, если выполняется следующее:

Раздел Buffer Pool Advisory отчета AWR или STATSPACK указывают, что удвоение объема

буферного кэша будет полезным.

Событие "db file sequential read" входит в список основных событий.

Система имеет свободные (spare) циклы процессора.

Имеется два параметра настройки Database Smart Flash Cache:

DB_FLASH_CACHE_FILE - Указывает список полных путей к файлам Database Smart Flash

Cache. Файлы могут как файлами ОС, так и дисковой группой ASM, но они должны

находиться на устройствах флэш-памяти. Размещение на обычных дисках может

отрицательно повлиять на производительность. Если файла не существует, то база данных

создаст его при старте. Всего поддерживается до 16 файлов.

DB_FLASH_CACHE_SIZE - Указывает размер каждого файла в Database Smart Flash Cache.

Каждый размер соотносится с файлом, указанным в DB_FLASH_CACHE_FILE. Если

количество размеров не совпадает с количеством файлов, то возникает ошибка. Размер

задается в гигабайтах в виде nG.

Представление V$FLASHFILESTAT может быть использовано для определения совокупной

задержки (latency), счетчика чтений для каждого файла и вычисления средней задержки. Можно

отключить устройство флэш-памяти, указав в команде ALTER SYSTEM нулевой размер

соответствующего файла в параметре DB_FLASH_CACHE_SIZE. Включить устройство можно указав

исходный размер флэш-памяти. Эти изменения требуют перезапуска экземпляра.

Page 101: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

101

Расширенные возможности при работе с индексами и таблицами

Применение расширенных возможностей работы с индексами

В версии 12c стало возможным создание нескольких индексов на одном и том же наборе

столбцов. Когда используется один и тот же набор столбцов, то для создания индекса должна

существовать принципиальная разница между индексами (например, B-tree или bitmap). Также, когда

более, чем один индекс существует для одного и того же набора столбцов, только один из индексов

может быть видимым. Оптимизатор никогда не выберет более одного индекса, так только один из

всех возможных является видимым.

Несколько индексов может быть создано на одном и том же наборе столбцов, если по

крайней мере одна из следующих характеристик создаваемых индексов отличается:

Создаются B-tree и битовый индекс.

Используются разные типы секционирования.

Создаются уникальный и неуникальный индексы.

Page 102: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

102

Применение расширенных возможностей работы с таблицами

В версии 12c появилась возможность управлять видимостью столбцов. Если один или

несколько столбцов сделаны невидимыми, обычный доступ к таблице покажет только видимые

столбцы. Например, следующие операции не покажут невидимые столбцы:

Оператор SELECT * FROM в SQL.

Оператор DESCRIBE в SQL*Plus.

Описание атрибута %ROWTYPE в PL/SQL.

Оператор Describe в Oracle Call Interface (OCI).

Невидимые столбцы будут отображаться только при явном их указании в операторе SELECT.

Аналогично, данные в невидимые столбцы можно вставить, только явно указав их список в операторе

INSERT. Если INSERT не содержит списка столбцов, то вставка осуществляется только в видимые

столбцы.

Столбы могут быть сделаны невидимыми при создании таблицы, при добавлении столбца к

таблице или при модификации таблицы. Виртуальные столбцы могут быть невидимыми. Невидимые

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

столбы имеют следующие ограничения:

Внешние, кластерные и временные таблицы не могут иметь невидимые столбцы.

Атрибуты пользовательских типов не могут быть невидимыми.

Page 103: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

103

Применение расширенных возможностей online операций

Реорганизация таблицы "на ходу" дает возможность менять структуру таблиц без значимого

влияния на их доступность. Если таблица реорганизуется (переопределяется) "на ходу", то она

остается доступной для запросов и DML в течении большей части времени модификации и

блокируется в монопольном режиме только в течение очень малой части всего процесса.

Переопределение таблицы "на ходу" можно выполнить с помощью процедуры " Reorganize Objects" в

Oracle EM Cloud Control или при помощи пакета DBMS_REDEFINITION. При проведении реорганизации

таблиц следует помнить о необходимости достаточного свободного места, иначе переопределение

завершится с ошибкой.

Всего в 12 версии сделано несколько улучшений процедуры реорганизации. Улучшения

затрагивают:

Множественные секции (Multiple Partitions) - Стало возможным переопределять

несколько секций за одну операцию. Эта возможность снижает время переопределения

секционированной таблицы. При одновременной реорганизации нескольких секций

используется несколько промежуточных таблиц.

Таблицы с политиками частной виртуальной базы (Tables With VPD Policies) - Стало

возможным переопределять таблицы с включенными политиками частной виртуальной

базы Virtual Private Database (VPD). Параметр copy_vpd_policy процедуры

START_REDEF_TABLE определяет режим обработки политик VDP во время

переопределения. Этот параметр может принимать следующие значения:

o DBMS_REDEFINITION.CONS_VPD_NONE - Значение "по умолчанию". Указывает, что в

исходной таблице нет политик. Если установлено это значение, но политики

присутствуют, то возникает ошибка.

o DBMS_REDEFINITION.CONS_VPD_AUTO - Существующие политики автоматически

скопируются из исходной таблицы в новую в процессе переопределения "на ходу".

o DBMS_REDEFINITION.CONS_VPD_MANUAL - Это значение используется в том случае,

когда нужно скопировать политики из исходной таблицы в новую вручную. Политики

VPD должны копироваться вручную, если настроено отображение столбцов между

исходной таблицей и промежуточной или нужно изменить/добавить политики VPD во

время переопределения.

Таймаут блокировки таблицы в монопольном режиме (Lock Timeout for

FINISH_REDEF_TABLE) - Можно задать продолжительность времени (в секундах), в течение

которого процедура FINISH_REDEF_TABLE пытается установить монопольную блокировку

таблицы для обмена исходной и промежуточной таблиц. Если таймаут истекает, то

процедура завершается с ошибкой. Ранее пользователь должен был ждать бесконечно

или принудительно завершить сессию переопределения.

Процедура REDEF_TABLE - Новая процедура в составе пакета DBMS_REDEFINITION. Обычно

реорганизация таблицы является многоступенчатым процессом. REDEF_TABLE позволяет

выполнить переопределение параметров хранения таблицы за один шаг, если, конечно,

меняются следующие свойства:

o меняется табличное пространство, включая табличное пространство для таблиц, секций,

индексов или LOB-сегментов

Page 104: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

104

o изменение типов компрессии, включая компрессию для таблицы, секции, ключа индекса

или столбца LOB

o для LOB столбцов, изменение к SECUREFILE или BASICFILE типу хранения

Page 105: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

105

Улучшения программы диагностики ADR (Automatic Diagnostic Repository)

Описание улучшений ADR

В версии в Oracle 12c появился новый журнал - журнал команд языка определения данных.

Новый журнальный файл команд языка определения данных (DDL) имеет тот же формат и

функционирует в основном так же, как и alert.log. Если параметр инициализации

ENABLE_DDL_LOGGING установлен в TRUE, то все команды DDL, выполненные базой данных, будут

записаны в этот журнал. Если этот параметр установлен в FALSE, команды DDL не включаются в какой-

либо журнал. Этот журнал содержит запись для каждой DDL команды. Журнал состоит из двух

файлов, содержащих одну и ту же информацию, один в формате XML, другой в текстовом формате.

DDL журнал находится в директории log/dll в структуре директорий ADR и включается в пакет

инцидента IPS для отсылки в службу поддержки. Если параметр инициализации

ENABLE_DDL_LOGGING установлен в TRUE, то следующие команды DDL будут заноситься в журнал:

ALTER/CREATE/DROP/TRUNCATE CLUSTER

ALTER/CREATE/DROP FUNCTION

ALTER/CREATE/DROP INDEX

ALTER/CREATE/DROP OUTLINE

ALTER/CREATE/DROP PACKAGE

ALTER/CREATE/DROP PACKAGE BODY

ALTER/CREATE/DROP PROCEDURE

ALTER/CREATE/DROP PROFILE

ALTER/CREATE/DROP SEQUENCE

CREATE/DROP SYNONYM

ALTER/CREATE/DROP/RENAME/TRUNCATE TABLE

ALTER/CREATE/DROP TRIGGER

ALTER/CREATE/DROP TYPE

ALTER/CREATE/DROP TYPE BODY

DROP USER

ALTER/CREATE/DROP VIEW

Журнал отладки (Debug Log)

Журнал отладки создан для записи ситуаций в базе данных, которые являются необычными,

но не приводят к прекращению нормальной работы сигнализирующего компонента БД.

Предупреждения, заносимые в журнал отладки, не являются достаточно серьезными, чтобы быть

инцидентом или быть занесенными в alert.log. Они заносятся в журнал отладки потому, что они могут

стать полезными в диагностике будущих проблем. Журнал отладки имеет тот же формат и поведение,

что и alert.log, но он содержит только данные о необычных событиях или условиях, которые могут

потребовать исправления. Перенос этой информации в журнал отладки снижает количество событий,

которые нужно записывать в alert.log и файлы трассировки, и улучшает читаемость информации

отладки. Журнал отладки включается в IPS пакет инцидента и его содержимое предназначено только

для поддержки Oracle.

Page 106: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

106

Улучшения Oracle Data Pump, SQL*Loader, External Tables Online операций

Обзор улучшений Oracle Data Pump

При полном экспорте базы данных с помощью Data Pump стало возможным задать опцию

полного переносимого экспорта (full transportable export). Для этого нужно установить параметр

TRANSPORTABLE=ALWAYS и параметр FULL. Эта функциональная возможность позволяет

экспортировать все объекты и данные, необходимые для создания полной копии базы данных. В

зависимости от возможности переноса табличных пространств Data Pump использует один из двух

методов:

Непереносимые табличные пространства - Непереносимые табличные пространства

SYSTEM и SYSAUX не могут быть перенесены, они содержат данные и метаданные,

выгружаемые в набор файлов экспорта с использованием прямой выгрузки и внешних

таблиц.

Переносимые табличные пространства - Для переносимых табличных пространств в

файлы экспорта выгружаются только метаданные. Содержимое табличных пространств

переносится в момент копирования файлов данных на целевую базу данных.

Существует несколько ограничений для использования полного переносимого экспорта,

включая:

Для выполнения экспорта нужна привилегия DATAPUMP_EXP_FULL_DATABASE.

Табличное пространство "по умолчанию" для пользователя, выполняющего экспорт, не

должно быть в списке транспортируемых.

Если экспортируемая БД содержит шифрованные пространства или таблицы с

шифрованными столбцами, то обязательно нужно задавать параметр

ENCRYPTION_PASSWORD.

Если экспортируемая БД содержит шифрованные пространства, то целевая и исходная БД

должны быть на платформе с одинаковым порядком байтов (Endianess).

Если целевая и исходная БД находятся на платформах с разным порядком байтов, то

необходимо выполнить конвертацию данных в формат целевой платформы.

Полный переносимый экспорт невозможно перезапустить.

Сегменты всех объектов, выбранных для экспорта, должны полностью располагаться

внутри административных, непереносимых табличных пространств (SYSTEM/SYSAUX), или

же полностью располагаться внутри пользовательских, переносимых пространств. Память

для одного объекта не может использовать оба типа пространств одновременно.

Новая возможность полного переносимого экспорта утилит Data Pump может использоваться

для переноса монолитной БД в подключаемую (PDB) или для переноса одной подключаемой БД в

другую контейнерную БД. Операции полного экспорта могут снизить время, необходимое для

полного экспорта и импорта. При использовании этой опции не возникает необходимости в выгрузке

и загрузке табличных данных, а также в пересоздании индексов в пользовательских пространствах.

Функция полного переносимого экспорта идеально подходит для переноса базы данных на новый

сервер или для модернизации на новый релиз Oracle.

Page 107: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

107

Работа Data Pump со сжатыми данными получила две новых возможности:

Сжатие при импорте - Новая опция, позволяющая изменить сжатие для таблиц при

импорте, добавлена к impdp и пакету DBMS_DATAPUMP. Параметр TRANSFORM impdp

имеет опцию TABLE_COMPRESSION_CLAUSE. Если задано NONE, то таблица получает тот

тип сжатия, которые установлен для табличного пространства. Если значение установлено

в допустимое значение (например, NOCOMPRESS), то таблицы создаются с указанным

типом сжатия. Этот параметр меняет тип сжатия для всех таблиц в исполняемом задании

импорта.

Сжатие при экспорте - Новая опция, позволяющая управлять степенью сжатия при

создании файла экспорта, добавлена к expdp и пакету DBMS_DATAPUMP. Параметр

COMPRESSION может использоваться для задания сжатия всей операции экспорта, только

данных, только метаданных или не использовать компрессию. "По умолчанию"

сжимаются только метаданные. Этот параметр позволит администратору БД лучше

управлять выделением ресурсов при экспорте.

Другие улучшения Data Pump включают:

Export View As a Table - Новый параметр командной строки дает возможность выгрузить

представление как таблицу. Вместо экспорта определения представления, Data Pump

выгрузит определение таблицы и данные из представления, как будто бы оно было

таблицей. При импорте дампа утилита impdp создаст таблицу, используя определение, и

вставит данные.

LOGTIME - Новый параметр командной строки LOGTIME позволяет включить выдачу

временных меток для каждого сообщения, отображаемого при операциях export или

import Опция доступна для impdp, expdp и в процедуре

DBMS_DATAPUMP.SET_PARAMETER. Допустимы следующие значения:

o NONE - не выдавать временные метки в статусе или файле журнала (задано "по

умолчанию").

o STATUS - временные метки только для статуса.

o LOGTIME - временные метки только для файла журнала.

o ALL - все временные метки.

Audit Commands - Команды Oracle Data Pump теперь аудируются.

No Logging Option - К программе impdp и пакету DBMS_DATAPUMP добавлена опция

DISABLE_ARCHIVE_LOGGING для параметра TRANSFORM. Если опция задана, то

запрещается создание журналов redo при загрузке данных в таблицы и при создании

индексов. При использовании опции дисковое пространство, используемое журналами

redo при импорте Oracle Data Pump, будет меньше. После выполнения операции импорта

необходимо выполнить резервное копирование с помощью RMAN или другим образом.

Другие операции, включая CREATE и ALTER (за исключением CREATE INDEX) и операции на

мастер-таблице, используемой Oracle Data Pump, создают redo журналы.

Security - Параметр командной строки ENCRYPTION_PWD_PROMPT добавлен к expdp /

impdp. Он указывает, что клиент Oracle Data Pump должен запросить пароль или извлечь

его из командной строки.

Page 108: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

108

SecureFiles LOB as Default – Новый параметр impdp пакета DBMS_DATAPUMP заставляет

Oracle Data Pump создавать все LOBs как SecureFiles LOBs. "По умолчанию" Data Pump

воссоздает таблицы точно такими же, какими они были в исходной базе данных, поэтому,

если столбец LOB был BasicFile LOB в экспортируемой БД, то Data Pump попытается

воссоздать его как a BasicFile LOB целевой базе данных.

Page 109: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

109

Применение расширенных возможностей загрузчика SQL*Loader и внешних таблиц

Новый "express mode" режим загрузчика SQL*Loader позволяет загружать данные из плоского

файла при указании только имени таблицы. Для успешной реализации этой функциональности файл

должен содержать только разграниченные данные, а таблица должна содержать столбцы только

символьного, численного и временного типов данных. При работе в экспресс-режиме не

используется управляющий файл. Загрузчик SQL*Loader использует тип столбцов таблицы для

определения порядка полей ввода и типов данных в файле. Для остальных установок используются

значения "по умолчанию", если иное не задано в командной строке. В следующем примере

выполняется загрузка в таблицу EMPLOYEES:

$ sqlldr username TABLE=employees

"По умолчанию" режим "express" SQL*Loader предполагает следующие значения входных

параметров, если иные значения не указаны:

Файл данных (Data file) - Если не указан, то SQL*Loader ищет файл с именем

[table_name].dat в текущей директории.

Метод загрузки (Load method) - "по умолчанию" используется внешняя таблица (external

tables). Для некоторых типов ошибок в этом режиме SQL*Loader автоматически

переключится на прямой путь загрузки (direct path load).

Поля (Fields) - Если не указаны, то поля используют имена, типы столбцов и их порядок из

целевой таблицы. В записи поля разделены запятыми, записи ограничены символом

возврата строки, не имеют вложений и используют обрезку слева и справа.

Степень параллелизма (DOP) - Параметр степень параллелизма DEGREE_OF_PARALLELISM

установлен в AUTO.

Формат даты (Date Format) - используются установки NLS.

Набор символов (Character Set) - используются установки NLS.

Режим добавления (Append mode) - Новые данные должны быть добавлены в таблицу к

уже существующим данным.

Имена файлов (File Names) - Если файл данных не указан, то файлам данных, журнала и

ошибок будут присвоены имена "по умолчанию" (Параметр %p замещается номером

процесса ID Oracle Database.):

o Data File - table-name.dat

o SQL*Loader Log File - table-name.log

o Oracle Database Log Files - table-name_%p.log_xt

o Bad File - table-name_%p.bad

Для определения, где находятся файлы данных и где создаются выходные файлы, при

использовании внешних таблиц для SQL*Loader требуется использование директорий (объектов типа

директория). Пользователь, выполняющий операцию загрузки, должен иметь полномочия READ на

директорию, содержащую файлы данных, и полномочия WRITE на директорию, где будут создаваться

выходные данные. Если директории для файла данных или выходных файлов не существует, то

SQL*Loader сгенерирует SQL команду для создания директории. Если это так, то пользователь,

выполняющий загрузку, должен иметь привилегию CREATE ANY DIRECTORY. Если директории должны

Page 110: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

110

быть удалены после окончания загрузки, то пользователь, выполняющий загрузку, должен иметь

привилегию DELETE ANY DIRECTORY.

Возможности "прямого" NFS (Direct NFS)

Пакет Oracle Direct NFS (dNFS) представляет собой внутренний слой ввода/вывода,

обеспечивающий более быстрый, нежели обычные клиенты NFS, доступ к большим файлам. "По

умолчанию" в 12c SQL*Loader и внешние таблицы будут использовать этот пакет для доступа к

большим файлам. Параметр командной строки DNFS_ENABLE SQL*Loader и параметр access для

внешних таблиц может быть использован для явного управления использованием dNFS. Интерфейс

Direct NFS используется "по умолчанию" при чтении файлов более 1 GB. Для файлов меньшего

размера используется стандартные процедуры ввода/вывода операционной системы. Чтобы

использовать Direct NFS на всех входных файлах следует указать DNFS_ENABLE=TRUE. Для запрета

использования Direct NFS на всех входных файлах следует указать DNFS_ENABLE=FALSE.

Page 111: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

111

Расширенные возможности секционирования

Обзор расширенных возможностей секционирования

Секционирование по ссылочному интервалу (interval-reference)

В версии 12c таблицы, секционируемые по ссылке, могут использовать интервальное

секционирование в качестве самого верхнего уровня секционирования. Использование интервально-

секционированных таблиц, как основы для ссылочного секционирования, приводит к более удачной

модели секционирования. Секции в секционируемой по ссылке таблице соответствующие

интервальным секциям в родительской таблице создаются в момент вставки в секционируемую по

ссылке таблицу. Любые операции, преобразующие интервальные секции в обычные в родительской

таблице, создадут соответствующую нужную информацию в дочерней таблице. Для реализации

возможностей интервального ссылочного секционирования требуется установить параметр

инициализации COMPATIBLE в 12.0.0.0 или выше.

Операции множественного обслуживания секций таблиц

Некоторые операции обслуживания секций таблиц теперь могут быть выполнены для

нескольких секций в рамках одной команды. Это упрощает в разработку приложений и приводит к

более эффективному обслуживанию секций. Изменения касаются следующих операций:

ADD - несколько новых секций и подсекций может быть добавлено в ADD PARTITION и ADD

SUBPARTITION опциях команды ALTER TABLE. Эта возможность поддерживается только для

секционирования по диапазону (range), списку (list) и системных секций и подсекций

(subpartition). Множественные интервальные секции могут добавляться

секционированной по диапазону или композитно-секционированной по диапазону

таблице при условии, что таблица не имеет секции с указанием значения MAXVALUE.

Также можно добавить несколько секций к секционированной по списку таблице при

условии, что она не имеет секции DEFAULT. В примере показано добавление нескольких

секций к таблице, секционированной по диапазону:

SQL> ALTER TABLE orders ADD

PARTITION orders_2013 VALUES LESS THAN

(TO_DATE('01-JAN-2014','DD-MON-YYYY')),

PARTITION orders_2014 VALUES LESS THAN

(TO_DATE('01-JAN-2015','DD-MON-YYYY')),

PARTITION orders_2015 VALUES LESS THAN

(TO_DATE('01-JAN-2016','DD-MON-YYYY'));

DROP - стало возможным удалить несколько секций или подсекций из таблиц,

секционированных по списку или диапазону в одной SQL команде ALTER TABLE, задавая

опции DROP PARTITION или DROP SUBPARTITION. Невозможно удалить все секции

таблицы. В примере показано удаление нескольких секций из таблицы orders,

секционированной по диапазону:

SQL> ALTER TABLE orders DROP PARTITION

orders_1999, orders_2000,

Page 112: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

112

orders_2001, orders_2002;

TRUNCATE - стало возможным проводить усечение нескольких секций таблиц,

секционированных по диапазону или списку (опция TRUNCATE PARTITION команды ALTER

TABLE). Глобальные индексы должны быть перестроены, только если не задана опция

UPDATE INDEXES. В примере показано усечение нескольких секций таблицы,

секционированной по диапазону:

SQL> ALTER TABLE sales TRUNCATE PARTITIONS

orders_1999, orders_2000,

orders_2001, orders_2002;

MERGE - команда ALTER TABLE MERGE PARTITION может быть использована для слияния

содержимого двух и более секций в одну. Исходные секции удаляются, так же, как и

любые соответствующие локальные индексы. Эта команда не применима к таблицам,

секционированным по хэшу или имеющими подсекции по хэшу. При слиянии нескольких

секций по диапазону необходимо, чтобы секции примыкали друг к другу и были указаны в

возрастающем порядке граничных значений секций. В примере показано слияние

нескольких секций в одну:

SQL> ALTER TABLE orders

MERGE PARTITIONS orders_2003, orders_2004,

orders_2005, orders_2006

INTO PARTITION orders_2003_6;

или

SQL> ALTER TABLE orders

MERGE PARTITIONS orders_2003 TO orders_2006

INTO PARTITION orders_2003_6;

SPLIT - содержимое секции или подсекции может быть разделено на несколько секций

или подсекций с помощью команды ALTER TABLE в опции SPLIT PARTITION и SPLIT

SUBPARTITION. После разделения, исходный сегмент высвобождается. Новые секции

получают новые сегменты и наследуют все неявные физические атрибуты исходной

секции. В примере показано разделение секции, полученной ранее:

SQL> ALTER TABLE orders

SPLIT PARTITION orders_2003_6 INTO

(PARTITION orders_2003 VALUES LESS THAN

(TO_DATE('01-JAN-2004','DD-MON-YYYY')),

PARTITION orders_2004 VALUES LESS THAN

(TO_DATE('01-JAN-2005','DD-MON-YYYY')),

PARTITION orders_2005 VALUES LESS THAN

(TO_DATE('01-JAN-2006','DD-MON-YYYY')),

PARTITION orders_2006 VALUES LESS THAN

Page 113: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

113

(TO_DATE('01-JAN-2007','DD-MON-YYYY'))

);

Каскадная функциональность (Cascade Functionality)

Операции TRUNCATE PARTITION и EXCHANGE PARTITION для таблиц, секционируемых по

ссылке и ссылочному интервалу, будут проводиться каскадно в отношении дочерних таблиц. Эта

функциональность дает возможность наследования операций обслуживания секций от родительских

к дочерним таблицам. "По умолчанию" для совместимости каскадные операции отключены.

Операции обмена секций (EXCHANGE) могут каскадироваться в ссылающихся секциях

дочерних таблиц при задании опции CASCADE SQL команд ALTER TABLE EXCHANGE PARTITION и ALTER

TABLE EXCHANGE SUBPARTITION. Для успешного выполнения каскадных операций обмена все

ограничения ссылочной целостности должны быть определены как ON DELETE CASCADE.

При указании опции CASCADE операция EXCHANGE каскадируется на секционированные по

ссылке таблицы, которые являются дочерними для целевой таблицы. Опция игнорируется, если

указана для таблицы, не имеющих дочерних таблиц, секционированных по ссылке.

Команды TRUNCATE TABLE, ALTER TABLE TRUNCATE PARTITION и ALTER TABLE TRUNCATE

SUBPARTITION могут каскадироваться на секционированные по ссылке таблицы через включенное

ограничение ссылочной целостности с возможностью ON DELETE CASCADE. Каскадируемое действие

применяется рекурсивно к дочерним, внучатым и т.д. таблицам. После определения на основании

ограничений целостности набора таблиц для операции усечения (truncate) при выполнении усечения

возникает ошибка, если хотя бы в одной из таблиц в наборе имеется включенное ограничение из

внешней дочерней таблицы, не входящей в набор. Если дочерняя и материнская таблицы связаны

несколькими ссылочными ограничениями, операция TRUNCATE TABLE CASCADE на материнской

таблице будет успешной при наличии по крайней мере одного разрешенного ограничения

целостности с опцией ON DELETE CASCADE. При указании опции CASCADE операции TRUNCATE

PARTITION и TRUNCATE SUBPARTITION на целевой таблице распространяются на дочерние таблицы.

Перемещение секций "на ходу"

Эта функциональность позволяет перемещать или реорганизовывать секцию во время

выполнения операций DML над данными в секции. Глобальные индексы таблиц продолжают

обслуживаться во время переноса секции, поэтому ручная перестройка индексов не требуется. Опция

MOVE PARTITION команды ALTER TABLE может использоваться для выполнения следующих задач:

Перегруппировать данные и снизить фрагментацию.

Переместить секцию в другое табличное пространство.

Изменить атрибуты времени создания.

Сохранить данные в сжатом формате с использованием табличного сжатия.

Многие из атрибутов физического размещения секции можно поменять командой ALTER

TABLE/INDEX MODIFY PARTITION. Для тех атрибутов, которые не могут быть изменены таким способом

(например, табличное пространство), нужно использовать опцию MOVE PARTITION. Дополнительно

нужно сказать, что хотя и можно использовать MODIFY PARTITION для изменения компрессии, но

команда повлияет только на новые, и не затронет существующие данные. При выполнении MOVE

Page 114: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

114

PARTITION старый сегмент всегда удаляется и создается новый, даже, если он создается в том же

табличном пространстве. Для секций, созданных по диапазону или интервалу, можно переместить

только физически существующие секции. Секция в таблице, секционированной по ссылке, может

быть перемещена независимо от основной таблицы.

Расширенные возможности индексирования для секционированных

таблиц

Асинхронное обслуживание индексов

Операции обслуживания секций DROP PARTITION и TRUNCATE PARTITION были

оптимизированы в версии 12с так, чтобы обслуживание касалось только метаданных. "По

умолчанию" обслуживание глобальных индексов для этих операций является асинхронным. Эти

операции могут быть выполнены без ограничения доступности к глобальному индексу.

Обслуживание глобального индекса после операций DROP и TRUNCATE может быть завершено во

время минимальной нагрузки на систему без влияния на доступность индекса. Это делает операции

обслуживания секций и подсекций более быстрыми и менее требовательными к ресурсам. Опция

UPDATE INDEXES требуется для обеспечения обратной совместимости. Существует ряд ограничений

на операции асинхронного обслуживания индексов, а именно асинхронное обслуживание:

Применимо только для обычных (heap) таблиц.

Не поддерживает таблицы с табличными типами.

Не поддерживает таблицы с доменными индексами.

Не выполняется для объектов пользователя SYS.

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

задание планировщика SYS.PMO_DEFERRED_GIDX_MAINT_JOB. "По умолчанию" это задание

запускается в 2:00 ночи каждые сутки. Задание может быть запущено в любое время с помощью

DBMS_SCHEDULER.RUN_JOB для упреждающего обслуживания индексов.

Частичные индексы (partial indexes)

Для секционированных таблиц стало возможным создавать локальные или глобальные

индексы на часть секций, что дает большую гибкость в определении индексов для таких таблиц. При

создании или изменении таблицы для нее в целом или для отдельной секции может быть задан

признак индексирования. Это свойство предполагается для частичных индексов. Частичное

индексирование не поддерживается для уникальных индексов или для индексов, используемых для

осуществления ограничений уникальности. "По умолчанию" любой индекс создается как полный,

который отделяет индекс от свойства индексируемости таблицы. Опция INDEXING может быть

указана для секции или подсекции. В примере показано создание секционированной таблицы SALES:

SQL> CREATE TABLE sales (

sales_id NUMBER,

customer_id NUMBER,

sale_date DATE,

sale_total NUMBER(9,2))

INDEXING OFF

Page 115: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

115

PARTITION BY RANGE (SALE_DATE)

(PARTITION sales_p11 VALUES LESS THAN

(TO_DATE('01-JAN-2011','DD-MON-YYYY'))

INDEXING OFF,

PARTITION sales_p12 VALUES LESS THAN

(TO_DATE('01-JAN-2012','DD-MON-YYYY'))

INDEXING ON,

PARTITION sales_p13 VALUES LESS THAN

(TO_DATE('01-JAN-2013','DD-MON-YYYY'))

INDEXING ON,

PARTITION sales_p14 VALUES LESS THAN

(TO_DATE('01-JAN-2014','DD-MON-YYYY'))

INDEXING ON,

PARTITION sales_p15 VALUES LESS THAN

(TO_DATE('01-JAN-2015','DD-MON-YYYY'))

);

Частичное индексирование для этой таблицы таково

Секции SALES_P12, SALES_P13 и SALES_P14 включены во все частичные глобальные

индексы

Локальные индексы (для индексов, созданных с опцией PARTIAL) соответствуют трем

приведенным секциям и создаются доступными к использованию "по умолчанию".

Остальные секции исключены из всех частичных глобальных индексов и созданы

недоступными в локальных индексах (для индексов, созданных с опцией PARTIAL).

ONLINE перемещение секций

Операция ALTER TABLE MOVE PARTITION теперь позволяет проводить DML операции во время

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

перестройка индексов не требуется.

Page 116: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

116

Улучшения в SQL

Настройка расширенных типов данных

В версии Oracle 12c максимальный размер данных для VARCHAR2, NVARCHAR2 и RAW

увеличен до 32767 байт. Параметр инициализации MAX_STRING_SIZE определяет, будет ли база

данных поддерживать расширенные размеры. Если параметр установлен в STANDARD (по молчанию),

то действуют ограничения младших версий: 4000 для VARCHAR2 и NVARCHAR2, и 2000 для RAW. При

установке в EXTENDED тип данных может размещать до 32767 байт.

Если столбцы типов VARCHAR2 или NVARCHAR2 имеют длину более 4000 байт, или типа RAW -

более 2000 байт соответственно, то они считаются данными расширенного типа. Расширенные типы

данных используют технологию LOB для хранения избыточных, по сравнению с "обычными", данных.

В табличных пространствах с автоматическим размещением сегментов (Automatic Segment Space

Management (ASSM)) расширенные типы данных хранятся как SecureFiles LOBs. В противном случае,

как BasicFiles LOBs. Механизм хранения поддерживается базой данных прозрачно для пользователя.

Столбцы "расширенного" типа не появляются как LOB в операциях пользователя и не могут

обрабатываться посредством пакета DBMS_LOB.

Применение ограничений количества строк в выборке (Top-N SQL запросы)

До версии 12c Oracle не давал каких-либо простых средств построения Top-N SQL запросов.

Запросы, которые ограничивали количество возвращаемых строк при помощи псевдостолбца

ROWNUM, возвращали данные ДО выполнения операций сортировки ORDER BY, и, конечно, не

давали ожидаемых Top-N результатов. Два новых параметра, FETCH FIRST и OFFSET, обеспечивают

естественную поддержку этой возможности в SQL. Стало возможным с помощью простого SQL

запроса ограничить количество возвращаемых строк и указать начальную строку возвращаемого

набора. Например, следующий запрос получит список из четырех сотрудников с максимальной

зарплатой:

SQL> SELECT first_name, last_name, salary

FROM hr.employees

ORDER BY salary DESC

FETCH FIRST 4 ROWS ONLY;

FIRST_NAME LAST_NAME SALARY

------------ ----------- --------

Vano Dudadze 21000

Dan Kohen 19000

Alex Cooper 14500

Peter Crause 12100

Такая команда, как FETCH LAST, отсутствует. Чтобы получить данные с наибольшими

значениями N следует отсортировать их в порядке убывания. Например, следующий запрос

пропускает четыре строки с наивысшими значениями и выводит список следующих пяти работников с

максимальным окладом:

SQL> SELECT first_name, last_name, salary

FROM hr.employees

Page 117: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

117

ORDER BY salary DESC

OFFSET 4 ROWS FETCH NEXT 5 ROWS ONLY;

FIRST_NAME LAST_NAME SALARY

------------ ----------- --------

Karen Ogayan 11900

Mikhail Vantstein 11800

Nina Greenberg 10900

Rita Hu 10100

Dima Erzuriz 10000

Вместо количества строк в качестве параметра FETCH NEXT также можно задавать долю в

процентах. Следующий запрос выводит список из 4% работников с наивысшими окладами:

SQL> SELECT first_name, last_name, salary

FROM hr.employees

ORDER BY salary DESC

FETCH NEXT 4 PERCENT ROWS ONLY;

FIRST_NAME LAST_NAME SALARY

------------ ----------- --------

Vano Dudadze 21000

Dan Kohen 19000

Alex Cooper 14500

Peter Crause 12100

Karen Ogayan 11900

Безопасные файлы (Secure Files)

Начиная с версии Oracle 12c при установке параметра COMPATIBLE в 12.1 или выше, для

размещения данных LOB "по умолчанию" используются безопасные файлы. Функция SecureFiles

обеспечивает более высокую производительность по сравнению с BasicFiles при хранении

неструктурированных данных. В этой версии сделаны следующие улучшения SecureFiles:

Параллельные операции - SecureFiles обладают улучшенной поддержкой для

параллельных DML операций. Несекционированные таблицы, содержащие только

столбцы SecureFiles LOB (,не имеющие BasicFiles столбцов), могут поддерживать

параллельные операции DML. Следующие операции могут выполняться параллельно:

o INSERT

o INSERT AS SELECT

o CREATE TABLE AS SELECT

o DELETE

o UPDATE

o MERGE (conditional UPDATE and INSERT)

o Multi-table INSERT

o SQL Loader

o Import/Export

o LogMiner - LogMiner

Page 118: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

118

LogMiner - LogMiner полностью поддерживает SecureFiles LOB, включая поддержку

дедупликации для столбцов SecureFiles LOB и операций SecureFiles Database File System

(DBFS) при установке параметра совместимости в 11.2 и выше. Заполнены могут быть

только столбцы SQL_REDO для SecureFiles LOB; столбец SQL_UNDO не заполняются.

Применение Oracle Database Migration Assistant для преобразования в Unicode

Утилита Database Migration Assistant for Unicode (DMU) поставляется с Oracle 12c Release 1

(12.1) и является официально поддерживаемым методом миграции на набор символов Unicode.

Устаревшие утилиты Database Character Set Scanner (CSSCAN) и CSALTER удалены из пакета

инсталляции и не поддерживаются.

Утилита DMU автоматизирует много миграционных задач. Для существующих баз данных, уже

использующих набор символов Юникод, или баз после миграции, DMU поддерживает режим

проверки. В этом режиме определяются данные, неверно закодированные в Юникоде, чтобы

определить возможные проблемы при реализации Юникода в приложениях базы данных.

Для поддержки возможностей DMU база данных должна удовлетворять нескольким

критериям:

Версия СУБД должна быть 10.2.0.4, 10.2.0.5, 11.1.0.7, 11.2.0.1 или старше.

Набор символом базы данных должен быть на основе ASCII.

Должен быть установлен пакет SYS.DBMS_DUMA_INTERNAL.

Продукт Oracle Database Vault должен быть отключен до начала процесса миграции.

База данных не может быть подключаемой (PDB).

База данных должна быть открыта в режиме чтение/запись.

Некоторые возможности DMU:

Избранное преобразование (Selective Conversion) - утилита DMU имеет возможность

обрабатывать только данные, которые должны быть преобразованы, на уровне таблицы,

столбца или строки.

Отслеживание (Monitoring) - DMU имеет графический интерфейс для отображения

процесса преобразования.

Встроенное преобразование (Inline Conversion) - База данных Oracle поддерживает

встроенное преобразование содержимого с использованием DMU.

Работа по расписанию (Scheduling) - Действия по очистке могут быть назначены для

позднего выполнения во время операции преобразования.

Перед тем, как станет возможным преобразование базы в юникод, утилита DMU должна

просмотреть данные в столбцах типов VARCHAR2, CHAR, LONG и CLOB. В этот момент будет

определено, существуют ли каких-либо проблемы, которые могут вызвать искажение данных при

преобразовании. Утилита DMU преобразует символьные данные в столбцах из объявленного набора

символов в целевой набор юникода. Затем она проверяет каждое полученное значение на отсуствие

ошибок:

Результат преобразования отличен от исходного значения.

Page 119: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

119

Результат преобразования подходит для предельной длины столбца.

Результат преобразования подходит для требуемого типа данных.

Результат преобразования не содержит каких-либо символов замещения, имеется в виду,

что код каждого исходного преобразуемого символа допустим в объявленном наборе

символом для столбца.

Page 120: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

120

Ключевые навыки администратора базы данных

Основы администрирования

Общие замечания об администрировании

В любом бизнесе существует достаточно жесткая иерархия. Подразделение, отвечающее за

информационные технологии, в состав которого входят и администраторы баз данных, всегда

является частью бизнеса, и поэтому "играет" по его правилам. К большому сожалению, среди людей,

называющими себя термином "администратор", необязательно DBA, обычно этим страдают

администраторы операционных систем, сложилось странная, и на взгляд автора, неверная практика

ставить себя выше остальной части бизнеса. Почему это практика является странной и, в конечном

счете, порочной? Деньги зарабатывает бизнес. Да, можно сказать, что без IT-систем поддержки

бизнеса, он заработал бы меньше. Но, в любом случае он заработал бы! Бизнес зарабатывал тогда,

когда все записи в бухгалтерских книгах велись от руки, и справлялся, причем неплохо. А вот ценность

IT-структуры без бизнес-наполнения крайне сомнительна, точнее она практически нулевая и равна

стоимости б/у оборудования. Иначе говоря, в адекватной бизнес-иерархии выше всех стоит

пользователь, который и зарабатывает деньги не только себе, но и для акционеров, да и на зарплаты

IT-отделов тоже. Если представитель бизнеса приходит к IT с требованием установить какое-то

приложение для работы, а специалист IT и офицер безопасности в ультимативной форме говорят,

"это/здесь мы ставить не будем", то собственнику бизнеса или управляющим имеет смысл

озаботиться организацией бизнес-процесса. Тратящие деньги не могут определять работу тех, кто

деньги зарабатывает, а местоположение в иерархии зависит только от приближенности

пользователю, а не от сложности применяемых решений. Итак, на самом верху стоит пользователь.

"Этажом" ниже пользователей стоит администратор бизнес-приложения: SAP-базиса, 1С

бухгалтерии, почтовой системы etc, т.е. любого продукта, с которым в силу своих служебных

обязанностей работает пользователь.

Еще на ступеньку вниз стоит администратор базы данных, которая обслуживает бизнес-

приложение.

Еще на ступеньку вниз стоит администратор системы резервного копирования данных,

которая обслуживает бизнес-приложение.

Еще на ступеньку вниз стоит администратор операционной системы, используемой для

организации функционирования БД и бизнес-приложения и рабочих мест пользователей.

Еще ниже находится администратор систем сетевого хранения данных и дисковых массивов.

Еще ниже находится администратор сети передачи данных.

Офицер безопасности (ОФ) не включается в эту иерархию, поскольку его обязанностью

является контроль всех параметрами приложений и сервисов, которые могут повлиять на

безопасность данных. Конечно, это не значит, что офицер безопасности может вмешиваться в

настройки оборудования и систем, не ставя в известность соответствующие службы. Автор

неоднократно наблюдал, как произвольное решение ОФ, принятое без понимания работы

Page 121: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

121

приложений, приводило к остановке бизнес-процесса или потере существенной части

функциональности. В качестве идеального примера можно привести внутреннюю фильтрацию ICMP-

пакетов в рамках странной трактовки сетевой безопасности. В результате некоторые ОС, например,

HP-UX, удаляли часть сетевых маршрутов, что приводило к полной остановке работы приложений.

Другим идеальным примером является установка ограничений длительности сессий во внутренних

сетях передачи данных. Вроде бы, благое дело. В результате полностью прекратилось резервное

копирование, т.к. сетевые экраны разрывали соединение с агентами до завершения операций. В

итоге действия ОФ, несогласованные с администраторами приложений, приводили к остановке

бизнеса. Как говорится, с такими друзьми злоумышленники не нужны! Требования бизнеса являются

определяющими и для ОФ, и его обязанностью является организация безопасной среды для

выполнения требований бизнес-процесса.

Из сказанного видно, что в иерархии DBA занимает важное, но отнюдь не самое главное

место.

Основы архитектуры базы данных

Реляционная система управления базами данных Oracle обладает большими возможностями

и является достаточно сложной. СУБД создавалась как всесторонняя, открытая и интегрированная

система управления информацией. Она может управлять большими объемами данных в

многопользовательской среде, обеспечивая одновременный доступ к данным для тысяч

пользователей. Она обеспечивает высокий уровень безопасности данных, высокую

производительность и обладает очень эффективными средствами восстановления после сбоев.

Понятия "база данных" и "экземпляр"

На самом высоком уровне сервер базы данных Oracle состоит из двух различных

компонентов: базы данных и одного или более экземпляров. В общем случае термин "база данных

Oracle" часто используется для обозначения обоих компонент. По определению:

База данных (Database) - База данных представляет собой набор файлов на диске,

который хранит данные. Эти файлы могут существовать независимо от экземпляра.

Экземпляр базы данных (Database instance) - Экземпляр представляет собой набор

структур в памяти, предназначенный для управления файлами базы данных. Экземпляр

базы данных Oracle состоит из разделяемой области памяти и набора фоновых процессов.

Экземпляр может существовать независимо от файлов базы данных.

В обычных конфигурациях существую единственный экземпляр и единственная база данных.

Однако, при использовании Real Application Clusters (RAC), несколько экземпляров работают с одной

базой данных. Кластерная конфигурация обеспечивает повышенную масштабируемость,

производительность и устойчивость к сбоям.

Oracle Data Guard представляет собой конфигурацию, в которой одна первичная база данных

связана с одной или более резервными базами данных. Резервные базы данных могут быть

физическими, т.е. представлять собой побайтовые копии первичной базы. В этом случае они

поддерживается в синхронном состоянии с первичной базой путем приложения журнальных файлов

повторения (redo-журналов). Резервные базы могут быть логическими, т.е. синхронизация баз

осуществляется передачей SQL команд с помощью продукта Oracle Streams.

Page 122: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

122

В Oracle Learning Library (http://www.oracle.com/webfolder/technetwork/

tutorials/obe/db/12c/r1/poster/OUTPUT_poster/poster.html) содержится документ, детально

представляющий структуру экземпляра и базы данных. Нет необходимости запоминать все детали

этих диаграмм, но они помогут составить представление, как взаимодействуют разные компоненты

экземпляра базы данных. На рисунке приведены основные компоненты экземпляра базы данных:

Экземпляр

Системная глобальная областьSystem Global Area (SGA)

Разделяемый пулShared Pool

Library Cache

Shared SQL AreaUser Global Area

Data Dictionary Cache

Server Result Cache

Reserved Pool

Other

Database Buffer Cache

Fixed SGA

Java Pool

Streams Pool

Large Pool

Response Queue

XA Interface Pool

Request Queue

Backup Recovery Ops

Private SQL Area

PX Msg Pool

Redo Log Buffer

Фоновые процессыBackground Processes

PMON

SMON

DBWn

LGWR

CKPT

Others ...

Рис. 25 Структуры памяти и фоновые процессы экземпляра Oracle

При старте экземпляра запускаются фоновые процессы, и выделяются области памяти в ОС.

Выделенная область памяти хранит множество разных данных, необходимых для функционирования

базы данных. Вот некоторые основные структуры памяти:

Системная глобальная область (System Global Area) (SGA) - SGA представляется собой

группу структур разделяемой памяти, которая содержит данные и управляющую

информацию для одиночного экземпляра Oracle. SGA делится между серверными и

фоновыми процессами. Примерами данных, хранимых в SGA, являются кэшируемые

блоки данных и разделяемые SQL области

Глобальная программная область (Program Global area) (PGA) - Область PGA

неразделяемая. Она содержит данные и управляющую информацию исключительно для

одного процесса Oracle. Область PGA создается при старте процесса Oracle. Одна область

Page 123: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

123

PGA создается для каждого серверного и фонового процесса. Набор всех отдельных

областей PGA составляет общую область PGA экземпляра.

Пользовательская глобальная область (User Global Area) (UGA) - Область UGA связана с

пользовательской сессией.

Области программного кода (Software code areas) - Области оперативной памяти,

содержащие программный код, который выполняется или может выполняться.

Системная глобальная область System Global Area (SGA)

Системная глобальная область SGA представляет собой область оперативной памяти,

содержащей все данные, необходимые для работы экземпляра базы данных. Она состоит из

множества компонентов. Каждый компонент представляет собой участок памяти, используемый для

размещения объектов определенного типа. Все компоненты за исключением буферов журнальных

файлов повторов (redo log buffer) размещаются и освобождают память в единицах непрерывной

памяти, называемых гранулами (granules). Для получения информации о компонентах области SGA

нужно запросить представление V$SGASTAT.

Наиболее важными компонентами области SGA являются:

Буферный кэш базы данных (Database Buffer Cache) - Буферный кэш содержит копии

блоков данных, прочитанных из файлов. Буфер это адрес, где менеджер буфера временно

хранит (кэширует) текущий или ранее использованный блок данных. Все пользователи

базы данных, подключенные к экземпляру, делят доступ к буферному кэшу. Буферный

кэш создан для оптимизации операций физического ввода/вывода. Часто используемые

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

Для определения, какой блок будет сохраняться в буферном кэше, используется алгоритм

Least Recently Used (LRU).

Буфер журнальных файлов повторов (Redo Log Buffer) - Буфер журнальных файлов

повтора представляет собой кольцевой буфер, содержащий записи повтора,

описывающие изменения, сделанные в базе данных. Эти записи содержат информацию,

необходимую для реконструкции изменений, сделанных в базе данных в результате DML

или DDL операций. При восстановлении (recovery) база данных прикладывает записи

повтора к блокам файлов данных для восстановления потерянных изменений. Записи

повтора (redo) занимают непрерывное, последовательное пространство в буфере.

Фоновый процесс записи журнальных файлов (log writer (LGWR)) записывает содержимое

журнального буфера в активную группу журналов повтора на диск.

Разделяемый пул (Shared Pool) - разделяемый пул содержит различные типы программ,

требуемых сервером. Частичный список включает разобранные операторы SQL, код

PL/SQL, системные параметры, объекты словаря данных. Пул участвует в практически

каждой операции базы данных. Помимо всего, каждый оператор SQL, выданный

пользователем, требует доступа к разделяемому пулу.

Большой пул (Large Pool) - Большой пул - опциональная часть SGA. Он предназначен для

размещения областей памяти, которые слишком велики для размещения в разделяемом

пуле. Примерами таких областей является область UGA (пользовательская глобальная

Page 124: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

124

область User Global Area) для разделяемых серверов, интерфейс XA Oracle и буфера для

процессов ввода/вывода менеджера восстановления RMAN.

Java пул (Java Pool) - Пул используется для хранения всего специфичного для сессии кода

и данных внутри виртуальной машины Java. Он также включает объекты Java, которые

мигрировали в пространство Java-сессии по завершении.

Потоковый пул (Streams Pool) - Область памяти, используемая только Oracle Streams. Она

хранит буферизованные очереди сообщений и обеспечивает память для процессов

захвата и применения. Если не настроено иначе, размер области начинается с нуля и

растет динамически, по потребностям Oracle Streams.

Фиксированная область SGA (Fixed SGA) - Фиксированная область SGA - это внутренняя

служебная область. Она содержит общую информацию, нужную фоновым процессам о

состоянии базы данных и экземпляра. Размер области устанавливается базой данных

Oracle автоматически и не может быть изменен вручную.

Page 125: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

125

Установка и начальная настройка базы данных В старые добрые времена создание базы данных Oracle означало использование оператора

CREATE DATABASE, который требовал задания множества параметров и делал все, что было нужно.

Вряд ли кто-то сожалеет, что теперь можно обойтись без этого. Утилита Database Create Assistant

(DBCA) является существенно более простым средством создания базы данных. Более того, по

завершении работы DBCA база данных готова к работе, тогда как база, созданная при помощи CREATE

DATABASE, требует запуска нескольких скриптов прежде, чем работы с ней будет возможна!

Для запуска DBCA нужно зарегистрироваться на сервере БД под пользователем, имеющим

права для создания и запуска БД. Обычно это администратор баз данных. Для запуска DBCA на

UNIX/Linux или в командной строке Microsoft Windows нужно ввести команду dbca. Исполняемый

модуль dbca расположен в директории ORACLE_HOME/bin. После запуска утилита DBCA соберет

требуемую информацию и создаст базу данных в соответствии с замыслом администратора. Типовой

набор шагов/экранов при создании базы данных с помощью утилиты dbca приведен ниже.

Шаг 1. Операции с БД. На этом шаге нужно выбрать одну из операций: создание, настройку

или удаление базы данных, настройку шаблонов создания БД или управление перемещаемыми

(pluggable) БД (опция недоступна при отсутствии настроенных перемещаемых БД).

Рис. 26 Создание базы данных с помощью утилиты DBCA. Шаг 1

Page 126: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

126

Шаг 2. Режим создания БД. На этом шаге необходимо выбрать имя базы данных, тип

дисковой памяти, расположение файлов и области быстрого восстановления (fast recovery area),

используемый набор символов и пароль администратора БД. Если используется Enterprise версия, то

можно создать базу контейнерного типа. В расширенном (Advanced) режиме возможно задание

множества других параметров БД.

Рис. 27 Создание базы данных с помощью утилиты DBCA. Шаг 2

Page 127: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

127

Шаг 3. Проверка соответствия требованиям. - DBCA проверяет, что выполняются все

необходимые условия для создания БД

Рис. 28 Создание базы данных с помощью утилиты DBCA. Шаг 3

Page 128: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

128

Шаг 4. Сводка - На этом экране показано, с какими параметрами будет создана БД в данный

момент.

Рис. 29 Создание базы данных с помощью утилиты DBCA. Шаг 4

Page 129: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

129

Шаг 5. Процесс создания БД - На экране отображается процесс создания базы данных.

Рис. 30 Создание базы данных с помощью утилиты DBCA. Шаг 5

Когда DBCA завершает свою работу, база данных полностью готова к использованию, т.е.

можно подключаться с БД и создавать пользователей и объекты.

Сразу после создания, смены версии БД или установки исправлений следует запустить скрипт

utlrp.sql. Этот скрипт перекомпилирует все PL/SQL модули, включая пакеты, процедуры и триггеры,

которые могут быть в недействительном состоянии. "По умолчанию" скрипт производит

параллельную перекомпиляцию, основываясь на параметре CPU_COUNT хоста. Этот шаг

необязателен, но Oracle рекомендует сделать во время создания базы данных, а не позднее.

Page 130: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

130

Настройка сетевой поддержки для сервера и клиента базы данных Для связи между компонентами в распределенном сетевом окружении используется продукт

Oracle Net Services. Один из компонентов Oracle Net Services, а именно, Oracle Net, позволяет

устанавливать соединение клиентского приложения c базой данных Oracle. Когда установлена сессия

между клиентским приложением и базой данных, Oracle Net выполняет передачу данных. Компонент

Oracle Net устанавливает и обслуживает соединение между приложением и базой данных и является

обязательной частью механизма обмена сообщениями на протяжении всей сессии. Компонент Oracle

Net делает возможным установление сессий между традиционными приложениями клиент/сервер и

базой данных. Он находится и на клиенте, и на сервере, работает по протоколу TCP/IP, обеспечивая

возможность соединения и передачи данных между клиентом и базой данных. На рисунке

приводится схема взаимодействия клиента и сервера при помощи Oracle Net. Помимо Oracle Net

существуют другие типы соединений Java Application, Web Client при помощи Application Web Server и

другие. Полное описание приводится в документе Oracle Database Net Services Administrator's Guide

12c Release 1 (12.1) документ E17610-11.

серверклиент

TCP/IP сеть

Приложение

Oracle Net

RDBMS

Oracle Net

Рис. 31 Взаимодействие клиент-сервер с использованием Oracle Net

На клиенте Oracle Net представляет собой фоновый компонент, позволяющий установить

соединение с базой данных. На стороне сервера Oracle Net согласует соединения между базой

данных и клиентами. Хотя наиболее часто встречается использование Oracle Net для обработки

входящих соединений с базой данных Oracle, возможно его использование для доступа к отличным

от Oracle источникам данных, типа SQL сервер или DB2, или для доступа к внешним библиотекам

через EXTPROC.

Сервер базы данных Oracle получает запрос на установление соединения через

прослушиватель Oracle Net, далее прослушиватель. Прослушиватель это фоновый процесс, который

слушает выделенный порт, ожидая запросы к базе данных. Он обрабатывает запрос клиента и

передает его серверу. Прослушиватель настроен на определенный протокол и адрес. Клиенты,

имеющие такую же настройку, могут послать запросы на установление соединений с сервером. Когда

соединение установлено, клиент и сервер базы данных могут взаимодействовать друг с другом

напрямую. Остановка прослушивателя не позволит установить новые соединения, но не повлияет на

существующие.

Чтобы установить соединение с сервисом базы данных, клиент должен иметь описание

соединения (connect descriptor), указывающее расположение и имя сервиса базы данных. В

следующем примере приводится описание типа Easy Connect для установления соединения с

сервисом ocp.exam.com на сервере ocp-server с использованием порта "по умолчанию" (1251): ocp-

server/ocp.exam.com.

Page 131: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

131

Чтобы приведенное описание соединения было работоспособным, нужно чтобы требуемая

база данных имела соответствующую запись в файле tnsnames.ora клиента. Подходящей для

приведенного выше примера соединения и сервера будет:

(DESCRIPTION=

(ADDRESS=(PROTOCOL=tcp)(HOST=ocp-server)(PORT=1521))

(CONNECT_DATA=

(SERVICE_NAME=ocp.exam.com))

)

Описание соединения это специально форматированное описание пункта назначения

сетевого соединения. Оно содержит имя сервиса назначения и сетевой путь. Сервис назначения

указан по имени, а сетевой путь - по расположению, путем указания сетевого адреса. Описание

соединения состоит из одного или нескольких протоколов/адресов прослушивателя и информации

соединения для сервиса назначения в файле tnsnames.ora. В примере приведено описание

соединения с базой данных ocp:

ocp=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=tcp)

(HOST=ocp-server)

(PORT=1521)

)

(CONNECT_DATA=(SID=ocp)

(SERVICE_NAME=ocp.exam.com)

(INSTANCE_NAME=ocp)

)

)

Раздел ADDRESS содержит следующие параметры:

PROTOCOL – Указывает тип протокола, 'tcp' используется для TCP/IP.

HOST – Указывает имя хоста, т.е. ocp-server. Можно использовать IP-адрес, если

используется протокол TCP/IP.

PORT – Указывает порт, "по умолчанию" используется порт 1521.

Раздел CONNECT_DATA содержит следующие параметры:

SID – Указывает SID базы данных Oracle database, в данном случае ocp.

SERVICE_NAME – Указывает имя сервиса назначения. В примере ocp.exam.com. Значение

параметра берется из параметра инициализации SERVICE_NAMES. В общем случае

SERVICE_NAMES является глобальным именем базы данных.

INSTANCE_NAME – Указывает имя экземпляра. Необязательный параметр, "по

умолчанию" совпадает с SID.

Если база данных настроена на работу в режиме выделенного сервера, то прослушиватель

запускает выделенный серверный процесс для каждого клиентского соединения. Таким образом,

каждый серверный процесс обслуживает одного клиента. Когда сессия завершается, выделенный

серверный процесс завершается. Процесс установления клиентской сессии включает в себя несколько

шагов:

Page 132: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

132

Прослушиватель получает запрос клиента на установление соединения.

Прослушиватель запускает серверный процесс, и выделенный сервер наследует запрос на

соединение от прослушивателя.

Клиент устанавливает соединение с выделенным сервером.

Сервер проверяет аутентификационные данные клиента.

Если клиент аутентифицирован, создается сессия с базой данных.

Чтобы установить соединение с базой данных с клиентской машины, нужно чтобы клиентский

компьютер имел информацию о расположении сервера базы Oracle, и на каком порту работает

прослушиватель. Настройка клиентской сети это действия по определению способов, посредством

которых клиенты смогут определить адрес сервера базы данных. Существует ряд методов для

получения адресной информации:

Метод локальных имен (Local Naming Method)

При использовании этого метода адресации вся информация хранится в файле

TNSNAMES.ORA. "По умолчанию" он находится в директории $ORACLE_HOME/network/admin/. Имена

сетевых сервисов и дескрипторов соединения содержатся в этом файле. В примере дескриптор

соединения ocp_1 указывает на сетевой сервис sales.us.example.com:

ocp_1=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=tcp)(HOST=ocprep-server)(PORT=1521))

(CONNECT_DATA=

(SERVICE_NAME=sales.us.example.com)))

Секция DESCRIPTION описателя соединения определяет целевой сервис базы данных и

определяет используемый при соединении протокол. В приведенном примере используется

протокол TCP/IP на порту 1251. Метод локальных имен может быть настроен при создании базы

данных Oracle или потом. Во время установки программного обеспечения помощник Oracle Net

Configuration Assistant предлагает настроить имена сетевого сервиса. После установки можно

настроить метод локальных имен с помощью Oracle Net Configuration Assistant, Oracle Enterprise

Manager Cloud Control или Oracle Net Manager.

Метод простого соединения (Easy Connect Naming Method)

При использовании метода простого соединения поиск имени сервиса в файле

TNSNAMES.ORA не выполняется. При использовании этого метода не используется каких-либо

системы имен или директорий. Метод позволяет установить соединение с сервером базы данных,

используя имя хоста базы данных и, при необходимости, порта и сервиса. Основной формат

определен следующим образом:

CONNECT username@[//]host[:port][/service_name][:server][/instance_name]

Дескриптор соединения, используемый при простом соединении, соответствует следующему

описателю соединения в файле TNSNAMES.ORA:

(DESCRIPTION=

(ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=port))

(CONNECT_DATA=

Page 133: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

133

(SERVICE_NAME=service_name)

(SERVER=server)

(INSTANCE_NAME=instance_name)))

"По умолчанию" имя сервиса при установке Oracle в режиме Typical совпадает с именем базы

данных. Синтаксис простого соединения, используемый для подключения к экземпляру:

SQLPLUS /nolog

SQL> CONNECT username@host/db_name Enter password:

Для подключения к экземпляру из примера выше для метода локальных имен полный

синтаксис простого соединения выглядит следующим образом:

CONNECT username@ocp_1:1521/sales.us.example.com

Метод простого соединения можно использовать, если выполнены все следующие условия:

Обеспечение Oracle Net Services установлено на клиентской машине.

Протокол TCP/IP поддерживается и клиентом, и сервером базы данных.

Не используются какие-либо возможности типа вызова внешних процедур, гетерогенных

сервисов и т.п., требующих более детального описания соединения.

Параметр EZCONNECT указан в параметре NAMES.DIRECTORY_PATH в файле sqlnet.ora.

Метод службы каталога (Directory Naming Method)

Метод службы каталога использует LDAP-совместимый сервер, например Oracle Internet

Directory. При использовании этого метода описатели соединения отображаются на дескрипторы

соединения в сервере каталогов. LDAP-каталог обеспечивает централизованное администрирование

сервисов баз данных и имен сетевых сервисов.

Запись о сервисе базы данных создается во время создания базы данных Oracle. По

завершении установки, можно настроить доступ клиентов к базе данных с использованием LDAP-

каталога посредством Oracle Enterprise Manager Cloud Control или Oracle Net Manager. С помощью

этих продуктов можно создавать или менять имена сетевых сервисов и алиасов, и модифицировать

записи для сервисов баз данных. Будучи настроенными, клиенты могут использовать записи каталога

для подключения к базе данных.

Метод внешних имен (External Naming Methods)

Метод внешних имен использует для определения пути к базе данных внешний сервис, такой

как NIS. Этот метод позволяет разрешать имена сетевых сервисов в сетевые адреса. Компании,

использующие NIS, могут настроить эту службу для хранения имен сетевых сервисов и адресов,

используя внешнее имя NIS. Когда клиентская программа пытается установить соединение с базой

данных, используя имя сетевого сервиса, сервер NIS разрешает имя сервиса в адрес Oracle Net и

возвращает это адрес клиенту. Клиентская программа использует полученный адрес для соединения

с базой данных Oracle.

Page 134: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

134

Отслеживание оповещений базы данных Фоновые процессы, составляющие экземпляр Oracle, имеют свои собственные файлы

трассировки. Если процесс фиксирует ошибочную ситуацию, то он сбрасывает информацию об

ошибке в определенный трассировочный файл. Часть трассировочной информации предназначена

для администратора баз данных, а остальная часть для службы Oracle Support. Помимо файлов

трассировки имеется файл оповещений всей базы данных (alert.log). В нем содержится

хронологический список сообщения и ошибок базы данных. Некоторые из сообщений, заносимых в

журнал оповещений:

Инициализационные параметры со значениями, отличными от значений "по умолчанию".

Все сообщения о внутренних ошибках (ORA-600), о поврежденных блоках (ORA-1578) и

взаимных блокировках (ORA-60).

Многие административные команды, включая команды DDL CREATE, ALTER и DROP, а

также команды STARTUP и SHUTDOWN.

Журнал оповещений ведется в двух версиях одновременно: файл в XML-формате и файл в

текстовом формате. Любую из версий можно просматривать с помощью текстового редактора. С

помощью утилиты adrci можно просмотреть "очищенный" от тэгов журнал в формате XML. Одной из

ежедневных, в крайнем случае периодических, обязанностей администратора базы данных является

просмотр журнала оповещений и трассировочных файлов с целью обнаружения ошибок сервера или

фоновых процессов. Журнал оповещений и трассировочные файлы записываются в директории,

являющиеся частью репозитория автоматической диагностики (ADR, Automatic Diagnostic Repository).

В общем случае имя трассировочного файла включает имя процесса, создавшего его, например .

MMON или LGWR. Параметр MAX_DUMP_FILE_SIZE задает максимальный размер трассировочного

файла в блоках файловой системы, если не указана размерность, килобайтах, мегабайтах или

гигабайтах. Размер журнала оповещения ограничить невозможно, поэтому нужно периодически

удалять его, чтобы размер оставался приемлемым. Удаление файла журнала возможно при работе

экземпляра. В общем случае следует хранить архивную копию файла журнала, если это требует

техническая политика компании.

При возникновении любой критической ошибки серверный процесс создаст один или

несколько трассировочных файлов. Если параметр инициализации SQL_TRACE установлен в TRUE,

модуль трассировки SQL создаст статистики производительности для операторов SQL, выполняемых

экземпляром. Эти трассировочные файлы будут в ADR. Кроме этого, трассировка SQL может быть

разрешена на уровне сессии с помощью команды ALTER SESSION SET SQL_TRACE. Пакеты

DBMS_SESSION и DBMS_MONITOR служат для управления трассировкой SQL на уровне сессии.

Адаптивные пороги (Adaptive Thresholds)

В версии 12с появилась возможность отслеживать производительность базы данных

непрерывно с помощью адаптивных порогов. Администратор БД может установить уровень

предупреждения и критический уровень для множества системных метрик. Эти пороги создаются с

использованием статистик, полученных из метрик, собранных в перемещающемся базовом окне.

Статистики для метрик перемещающегося окна пересчитываются еженедельно и могут изменять

величину порогов, если изменилась производительность системы. Адаптивные пороги могут

Page 135: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

135

обнаруживать разные типы нагрузки на базу данных, такие как OLTP-запросы в течение дня, пакетные

задания ночью, резервное копирование в выходные дни.

Существует два типа адаптивных порогов:

Процент от максимальной величины (Percentage of maximum) - Порог вычисляется как

процент от максимального значения, наблюдаемого для данных в перемещающемся

базовом окне (например, 95% от максимального значения).

Уровень значимости (Significance level) - Порог представляет собой значение в

процентилях, представляющее насколько необычно наблюдать значения выше порога.

Порог задается одним из следующих значений:

o Высокое, High (.95) – ожидается, что только 5 из 100 наблюдений превысят это значение.

o Очень высокое, Very High (.99) – ожидается, что только 1 из 100 наблюдений превысит

это значение.

o Серьезное, Severe (.999) –ожидается, только 1 из 1000 наблюдений превысит это

значение.

o Экстремальное, Extreme (.9999) – ожидается, что только 1 из 10000 наблюдений

превысит это значение.

Выполнение ежедневного сопровождения базы данных Список "ежедневных" процедур по обслуживанию базы данных, выполняемых

администратором, может сильно варьироваться в зависимости от компании, базы данных (размера,

типа нагрузки и т.п.) и личности администратора. Два разных человека, выполняющих один и тот

список процедур, будет выполнять их разным образом. Некоторые администраторы любят

автоматизировать максимально возможное количество повторяющихся работ. Другие, к ним

относится и автор, предпочитает автоматизировать только регулярно повторяющиеся операции, или

те операции, где требуется набирать много команд, и, соответственно, велика вероятность ошибки.

Oracle в руководстве Oracle Database Administrator's Guide предлагает следующий список

задач администратора:

Установка и модернизация программного обеспечения Oracle и приложений.

Размещение системной дисковой памяти и планирование будущих потребностей в ней

для размещения баз данных.

Создание первичных структур для размещения объектов баз дынных (табличных

пространств).

Создание объектов баз данных (таблиц, представлений, индексов).

Планирование процедур резервирования и восстановления информации базы данных.

Обеспечение взаимодействия с поддержкой Oracle.

Проверка соответствия лицензионных соглашений.

Изменение структуры базы данных, при необходимости.

Заведение пользователей и обеспечение безопасности системы.

Управление и отслеживание активности пользователей в базе данных.

Отслеживание и настройка производительности базы данных.

Ведение архивных данных на лентах/дисках.

Page 136: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

136

Выполнение резервного копирования/восстановления базы данных.

Список задач упорядочен по частоте выполнения: часто операции расположены в конце

списка. К числу именно "ежедневных" можно отнести последние пять задач. Резервное копирование

и восстановление, особенно для продуктивных систем, является наиболее важной задачей

сопровождения базы данных. Продуктивная система нуждается не только в адекватной стратегии

резервирования, администратор должен постоянно проверять успешность ее реализации и

доступность копий данных, а также возможность восстановления базы данных из резервных наборов.

Фраза "не потеряй данные" для администратора БД значит то же самое, что для врача "не

навреди". Конечно, важно, чтобы база работала на пике производительности. Важно, чтобы

пользователи были удовлетворены временем отклика. Но самое главное - данные должны быть

целы, а в случае аварии должны быть восстановлены настолько полно, насколько возможно, в идеале

полностью. Это первая и основная абсолютная цель.

Page 137: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

137

Установка и анализ исправлений Единственным верным источником исправлений для программного обеспечения базы данных

Oracle является сайт поддержки Oracle. Для получения исправлений нужно:

Зарегистрироваться на My Oracle Support, ранее известный, как Metalink, и заранее

оплатить поддержку.

Нажать на вкладку Patches & Updates.

На странице Patches & Updates в разделе Patch Search, ввести номер патча и нажать Search.

На странице результатов поиска нажать на номер патча. My Oracle Support выведет детали

описания патча в отдельном окне.

Нажать Download.

В диалоге File Download выбрать на имя patch.zip для загрузки файла на локальный диск.

Нажать на Download Patch Metadata.

В диалоге Download Patch Metadata выбрать Download для выгрузки файла метаданных.

По рекомендациям Oracle после начальной инсталляции программного обеспечения и на

регулярной основе администратор должен выгружать и устанавливать патчи. В реальной

эксплуатации обычно следует проводить установку исправлений, если пользователи или БД

встретилась с ошибками функционирования. Установка исправлений всегда согласуется с

требованиями бизнес-подразделений и не может быть выполнена без их согласия. Oracle

производит несколько типов исправлений:

Промежуточные исправления (Interim Patches) - Содержат исправления одиночной

ошибки или группы ошибок, предоставляемых по требованию. Могут содержать

специфические для потребителя исправления безопасности.

Диагностические исправления (Diagnostic Patches) - Предназначены для облегчения

диагностики или проверки исправления/набора исправлений.

Наборы исправлений (Patch Set Updates (PSU)) - Содержат набор значимых,

малоответственных и проверенных исправлений для какого-либо продукта/компонента.

Критические наборы исправлений (Critical Patch Updates (CPU)) - Набор исправлений для

множества уязвимостей, включая проблемы безопасности.

Некоторые патчи могут быть установлены при работающем экземпляре с использованием

утилиты OPatch или Enterprise Manager Patch Wizard , который в свою очередь использует OPatch в

фоновом режиме. Администратор может определить, какие исправления применимы к его системе, с

помощью советника Patch Advisor из Enterprise Manager Cloud Control.

Online исправления

До версии 11g все патчи содержали либо объектные (расширение .о), либо архивные (.а)

файлы. Их установка требовала перелинковки исполняемых файлов базы данных, иначе говоря,

остановки экземпляра для применения исправлений. В настоящее время значительное количество

исправлений может быть установлено "на ходу". Эти патчи содержат т.н. .so файлы, которые

представляют собой динамические или разделяемые библиотеки, не требующие перелинковки

исполняемых файлов. Поскольку перелинковка не нужна, эти исправления могут быть применены

или отменены при активном экземпляре. Это упрощает администрирование, поскольку исчезает

Page 138: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

138

необходимость в остановке базы данных. Это также означает, что установка/удаление online-патчей

проводятся более оперативно, потенциально процедура занимает несколько секунд. Online-патчи

устанавливаются с помощью утилиты OPatch.

Применение online-патчей несет следующие преимущества:

Отсутствие периода простоя.

Независимость от остановок базы данных.

Возможность вносить исправления на узлы RAC по очереди.

Быстрая установка.

Естественно, есть и недостатки:

Требуется больше оперативной памяти.

Исправления "на ходу" доступны не для всех платформ.

Не все исправления могут быть применены "на ходу".

Центр управления EM Cloud Control и обновления

Центр управления Oracle Enterprise Manager Cloud Control 12c обладает новыми

возможностями по управлению исправлениями. Целью нововведений является снижение сложности

операций и минимизация времени простоя, связанные с установкой исправлений. Новое решение по

управлению исправлениями предлагает следующие преимущества:

Интегрированный с My Oracle Support процесс установки обновлений. Общий интерфейс

позволяет видеть рекомендации, проводить поиск исправлений и выгружать патчи.

Планы исправлений позволяют от начала и до конца управлять потоком патчей. Планы

включают автоматический выбор процедур применения и анализа конфликта

исправлений.

Ранний обзор исправлений для определения применимости в данном окружении,

проверки планов патчей и автоматическое получение подтверждения патчей для

разрешения проблем проверки.

Развертываемые планы исправлений могут быть сохранены как шаблоны установки,

содержащие предопределенный набор патчей и параметров развертывания.

Получение отдельных патчей для одиночных баз данных, объектов RAC и объектов Oracle

Grid.

План исправлений из Cloud Control помогает создать список патчей, которые нужно

применить к группе из одного или нескольких целевых объектов, далее целей. Исправление может

быть добавлено к плану цели только, если исправление имеет тот же уровень версии и тип

платформы, что и цель. План также проверяет исправления для Oracle Database, Fusion Middleware и

Cloud Control на соответствие окружению для выявления конфликта с установленными ранее

патчами. На основании добавленных исправлений Enterprise Manager автоматически определяет

подходящую процедуру развертывания, которая будет использоваться для применения патчей.

EM Cloud Control может устанавливать исправления в двух различных режимах:

Page 139: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

139

Online режим - Этот режим можно использовать, если политикой безопасности EM Cloud

Control разрешено установить соединение с My Oracle Support, иначе говоря, нужен

доступ в интернет. Этот режим позволяет администратору просмотреть рекомендации

Oracle относительно устанавливаемых исправлений, вручную искать исправления на сайте

My Oracle Support и добавлять их к плану установки исправлений. В этом режиме также

возможно автоматическое разрешение конфликтов исправлений путем слияния патчей

напрямую с My Oracle Support.

Offline режим - Нужно использовать, если EM Cloud Control не имеет доступа к My Oracle

Support напрямую. В этом режиме можно только искать исправления, которые ранее были

загружены вручную в библиотеку обеспечения (Software Library), и добавлять найденные в

план установки исправлений.

Запросы к каталогу исправлений

Начиная с версии 12с, представлена новая возможность - запросы к каталогу исправлений или

интерактивный каталог исправлений (Queryable Patch Inventory). Этот функционал реализован с

помощью пакета DBMS_QOPATCH. С помощью этого пакета можно просмотреть список

установленных исправлений через PL/SQL или SQL интерфейс. Результатом запроса будет вся

информация об исправлениях, доступная с помощью параметра lsinventory-xml утититы opatch. Пакет

DBMS_QOPATCH получает доступ к репозиторию исправлений Oracle Universal Installer (OUI) в

реальном времени для получения информации о патчах и их метафайлах Запросы к каталогу

исправлений позволяют:

Получать список установленных исправлений из командной строки SQL.

Создавать отчеты и проводить проверки соответствия в нескольких средах окружения.

Проверять список установленных исправлений для Oracle RAC с одного места.

В пакет DBMS_QOPATCH включены следующие программы:

GET_OPATCH_BUGS - Выдает список ошибок, исправленных патчем в формате XML, если

задан номер патча. При отсутствии номера выдается список в формате XML всех

исправлений для всех патчей.

GET_OPATCH_COUNT - Выдает количество всех установленных исправлений в формате

XML.

GET_OPATCH_DATA - Выдает краткое описание исправления в формате XML (Patch ID,

время создания).

GET_OPATCH_FILES - Выдает список файлов, модифицированных при установке

исправления формате XML.

GET_OPATCH_INSTALL_INFO - Выдает XML элемент, содержащий описание ORACLE_HOME

директорию с исправлениями и расположение каталога исправлений.

GET_OPATCH_LIST - Выдает список исправлений в формате формате XML из каталога.

GET_OPATCH_LSINVENTORY - Выдает полный список каталога исправлений в формате XML.

GET_OPATCH_OLAYS - Выдает список патчей, накладывающихся на данный патч, в формате

формате XML.

Page 140: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

140

GET_OPATCH_PREQS - Выдает список требований, необходимых для установки патча в

виде XML элемента.

GET_OPATCH_XSLT - Выдает таблицу стилей (style-sheet) для представления каталога

исправлений opatch.

GET_PENDING_ACTIVITY - Выдает информацию, связанную с примененными на одиночном

экземпляре SQL патчами путем запроса бинарного каталога.

GET_SQLPATCH_STATUS - Выводит информацию о статусе SQL патча путем запроса SQL

регистра патчей с получением полной информации.

IS_PATCH_INSTALLED - Выдает информацию, такую как patchID, дату применения и данные

SQL патча, в установленном исправлении в виде узла XML, запрашивая XML каталог.

PATCH_CONFLICT_DETECTION - Выдает имя конфликтного исправления для данного файла

патча, если имеется конфликт с существующим установленным патчем.

SET_CURRENT_OPINST - Устанавливает имя узла и экземпляра для получения деталей

расположения каталога исправлений, специфичных для среды Oracle Real Application

Clusters (RAC).

Детальное описание возможностей пакета содержится в документе My Oracle Support Doc ID

1530108.1 "Oracle Database 12.1 : FAQ on Queryable Patch Inventory".

Page 141: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

141

Резервное копирование и восстановление базы данных Тема резервного копирования и восстановления базы данных весьма велика и не может быть

раскрыта в рамках одной главы. Далее содержится более чем краткий обзор настройки Oracle’s

Recovery Manager (RMAN), создания резервных копий и восстановления базы данных. Детальное

описание следует искать в документе Oracle Backup and Recovery User's Guide 12c Release 1 (12.1)

E50658-06s.

Утилита RMAN имеет набор параметров, позволяющий управлять специфическими

действиями во время резервирования. Стандартные значения большинства этих параметров важны

для выполнения стандартных операций резервирования/восстановления. Понимание, за что

отвечают те или иные параметры, позволит настроить поведение утилиты оптимально для данной

базы данных. Постоянные установки, такие как расположение резервной копии, тип устройства, тип

удержания,- могут быть заданы для каждой целевой базы. Интерес представляют две команды:

SHOW - Команда выводит текущие установки RMAN для целевой базы данных. В выводе

будут указано, являются ли параметры измененными, или же их значение "по

умолчанию". Эта информация также доступна через представление

V$RMAN_CONFIGURATION.

CONFIGURE - Эта команда позволяет изменить текущее поведение RMAN в данном

окружении резервирования/восстановления. При использовании ее с ключом CLEAR

настраиваемый параметр сбрасывается в значение "по умолчанию".

Некоторые примеры использования:

Следующая команда устанавливает политику удержания, чтобы поддерживать три полных

или уровня 0 резервных копии каждого файла данных и управляющего файла. Любая резервная

копия, "старше", чем третий файл, считается устаревшей. Значение "по умолчанию" 1.

RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 3;

Напротив, политика удержания может задавать окно восстановления, которое гарантирует

наличие достаточного количества резервных копий для восстановления базы данных на любое

прошедшее время внутри окна:

RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

Когда тип целевого устройства резервного копирования не задан явно, RMAN создает

резервную копию на устройстве, указанном "по умолчанию", т.е. на жестких дисках. Следующая

команда задает магнитную ленту устройством "по умолчанию":

RMAN> CONFIGURE DEFAULT DEVICE TYPE TO sbt;

Независимо от установок типа устройства "по умолчанию" можно указать тип устройства

напрямую, используя параметр DEVICE TYPE команды BACKUP, как показано ниже:

RMAN> BACKUP DEVICE TYPE SBT DATABASE;

RMAN> BACKUP DEVICE TYPE DISK DATABASE;

Page 142: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

142

При резервировании на диск RMAN может быть настроен на создание "по умолчанию" либо

наборов резервирования (backup set), либо копий образа данных (image copies). Для устройств типа

лента тип резервного набора может быть только резервный набор. Дополнительно следует сказать,

что менеджер RMAN способен создавать наборы резервирования с бинарным сжатием. Указание

опции COMPRESSED в конструкции BACKUP TYPE TO BACKUPSET задает RMAN создание сжатых

наборов резервирования для данного типа устройств. При опускании опции COMPRESSED сжатие

выключается. Преднастроенный тип резервирования для диска - несжатый набор резервирования. В

примере показана настройка RMAN для создания копий и резервных наборов:

RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO BACKUPSET;

RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COPY;

Для включения сжатия резервных наборов следует добавить ключевое слово COMPRESSED:

RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET;

RMAN> CONFIGURE DEVICE TYPE SBT BACKUP TYPE TO COMPRESSED BACKUPSET;

Канал в RMAN определяется как соединение с сессией базы данных. Команда CONFIGURE

CHANNEL используется для настройки опций для дисковых или каналов стримера. Если команда

CONFIGURE CHANNEL используется для указания настроек канала для устройства "по умолчанию",

любые предыдущие установки теряются. Любые установки, не указанные явно в CONFIGURE

CHANNEL, будут установлены в значения "по умолчанию".

RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 1G;

RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/tmp/%U';

"По умолчанию" RMAN выделяет один дисковый канал для всех операций. При

необходимости можно изменить размещение и формат имени файла "по умолчанию" для данного

канала. Следует помнить, что если задан явный формат резервных копий для дискового канала, то

RMAN не будет делать резервные копии "по умолчанию" в области быстрого восстановления (fast

recovery area).

RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/u01/ora_df%t_s%s_s%p';

RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '+dgroup1';

Если задать несколько каналов, настроенных на разные дисковые пути, то RMAN распределит

резервные копии между ними. Для этого нужно задать канал типа DEVICE TYPE DISK для каждого

дискового пути и указать формат. Например:

RMAN> RUN

{

ALLOCATE CHANNEL U01 DEVICE TYPE DISK FORMAT '/u01/%U';

ALLOCATE CHANNEL U02 DEVICE TYPE DISK FORMAT '/u02/%U';

BACKUP DATABASE PLUS ARCHIVELOG;

};

Page 143: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

143

Можно настроить автоматическое резервирование управляющего файла и файла параметров

при каждом резервировании базы данных с помощью RMAN. Дополнительно, если описание

структуры базы данных в управляющем файле меняется, и база данных находится в режиме

архивирования журналов, то будет выполняться автоматическое резервирование управляющего

файла. Автосохранение управляющего файла добавляет дополнительную избыточность в политику

резервирования, позволяя восстановить базу данных даже после потери текущего управляющего

файла, каталога восстановления и файла параметров. Возможность автосохранения включается и

выключается следующим образом:

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP OFF;

Настройки RMAN можно вернуть к значениям "по умолчанию" используя ключевое слово

CLEAR:

RMAN> CONFIGURE DEFAULT DEVICE TYPE CLEAR;

RMAN> CONFIGURE RETENTION POLICY CLEAR;

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP CLEAR;

Если включена оптимизация резервного копирования RMAN, то при выполнении

резервирования RMAN будет пропускать файлы, если идентичный файл уже был сохранен на

устройстве того же типа. Чтобы проверить, что файл является идентичным, RMAN использует

следующий критерий:

Файл данных (Datafile) --Файл данных должен иметь те же идентификатор базы данных

DBID, номер системного изменения в контрольной точке SCN, номер системного

изменения при создании SCN, номер системного изменения при сбросе журнала

RESETLOGS SCN и время файла, как и файл в резервной копии. Файл данных должен быть в

состоянии offline-normal, read-only или нормально закрыт.

Архивный журнал (Archived log) - Журнал должен иметь тот же идентификатор базы

данных DBID, номер последовательности, номер системного изменения при сбросе

журнала RESETLOGS SCN и время.

Резервный набор (Backup set) - Резервный набор должен иметь те же идентификатор

базы данных DBID, идентификатор записи резервного набора ID и отметку.

Даже если RMAN определит, что резервируемый файл идентичен файлу, обработанному

ранее, политика удержания и возможность дуплексирования могут потребовать выполнения

резервирования файла. Если параметр TO DESTINATION используется совместно с BACKUP RECOVERY

AREA или BACKUP RECOVERY FILES, то RMAN будет анализировать наличие идентичных резервных

копий только в указанных местах. Включение оптимизации делается следующей командой:

RMAN> CONFIGURE BACKUP OPTIMIZATION ON;

Как только для целевой базы данных включена оптимизация резервирования, то, если ни

один из сохраняемых файлов не был изменен со времени последнего резервирования, RMAN не

выполнит резервирование повторно. Если каждый файл базы в данной операции резервирования

Page 144: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

144

пропускается из-за совпадения с ранее сохраненным, ошибок не возникает. Оптимизация

резервирования будет игнорироваться при задании ключевого слова FORCE в команде BACKUP:

RMAN> BACKUP DATABASE FORCE;

RMAN> BACKUP ARCHIVELOG ALL FORCE;

Создание резервных копий

При создании копий образов результатом являются побитные копии каждого файла данных,

архивных журналов повторов или контрольного файла. При восстановлении базы данных копии

образов могут использоваться в исходном состоянии. Копии создаются командой RMAN BACKUP AS

COPY, командой ОС cp/copy или процессом архивирования Oracle. Тип резервирования "по

умолчанию" может быть задан в виде "копии образа" (image copies) с помощью команды CONFIGURE

DEVICE TYPE:

RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COPY;

Также можно принудительно изменить тип "по умолчанию", указав оператор AS COPY в

команде BACKUP:

RMAN> BACKUP AS COPY DEVICE TYPE DISK DATABASE;

Другим типом резервных данных является резервный набор. Резервный набор состоит из

одного или нескольких файлов данных, управляющего файла, файла параметров сервера и

архивированных журнальных файлов. Каждый резервный набор состоит из одного или нескольких

бинарных файлов. Каждый бинарный файл называют частью набора. Части набора записываются во

внутреннем формате, который понятен только RMAN. Оглавление резервного набора разделено

между разными частями набора, если размер части набора ограничен параметром MAXPIECESIZE. Это

ключевое слово задается в команде ALLOCATE CHANNEL или CONFIGURE CHANNEL. Как и в случае

копий образа, для задания "по умолчанию" типа резервный набор нужно использовать команду

CONFIGURE DEVICE TYPE:

RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO BACKUPSET;

Поведение "по умолчанию" может быть изменено при использовании ключевого слова AS

BACKUPSET. Можно указать как настроенное устройство "по умолчанию", так и указать его явно:

RMAN> BACKUP AS BACKUPSET DATABASE;

RMAN> BACKUP AS BACKUPSET DEVICE TYPE DISK DATABASE;

Полная резервная копий базы данных содержит управляющий файл и все файлы данных. Эта

копия может быть сделана, если база данных смонтирована или открыта. Команда RMAN BACKUP

DATABASE служит для создания полной резервной копии:

RMAN> BACKUP DATABASE;

Добавление конструкции PLUS ARCHIVELOGS приведет к резервированию базы данных,

переключению журналов повторов и включению архивированных журналов в резервную копию. При

Page 145: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

145

этом гарантируется наличие полного набора архивных журналов на время резервирования, что

позволит выполнить восстановление данных после восстановления файлов резервной копии.

RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

Инкрементальные резервные копии

Команда BACKUP INCREMENTAL позволяет RMAN создать инкрементальный резервный набор

для базы данных. Инкрементальные резервные наборы захватывают изменения, сделанные после

последнего резервирования БД, на уровне блоков данных. Восстановление с инкрементальными

наборами проходит быстрее, чем при использовании только архивированных журналов. Существует

три типа инкрементального резервирования:

Уровень 0 - Это начальная точка для инкрементального резервирования. При этом

резервируются все блоку базы данных и содержание резервной копии идентично полной

резервной копии.

Уровень 1 дифференциальный - Это резервное копирование сохраняет блоки,

измененные со времени предшествующего инкрементального резервирования. Это тип

уровня 1 "по умолчанию".

Уровень 1 кумулятивный - Это резервное копирование сохраняет блоки, измененные со

времени последнего резервирования уровня 0.

При восстановлении с инкрементальных резервных копий, RMAN использует копию уровня 0

в качестве начальной точки. Потом используются копии уровня 1 для модификации измененных

блоков где возможно, чтобы избежать повторного приложения изменений из архивированных

журналов. При наличии инкрементальных копий RMAN использует их при восстановлении.

В примере показано создание инкрементальной копии 0 уровня, которая будет служить

основой для инкрементальной политики резервирования:

RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE;

В следующем примере показано создание кумулятивной инкрементальной копии уровня 1:

RMAN> BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;

В следующем примере показано создание дифференциальной инкрементальной копии

уровня 1:

RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE;

Отслеживание изменения блоков (Block Change Tracking)

Возможность отслеживания изменения блоков улучшает производительность создания

инкрементальных копий путем записи информации об измененных блоках для каждого файла

данных. Если отслеживание изменения блоков включено, то RMAN использует специальный файл

отслеживания изменений с целью пометить измененные блоки во время резервирования. Этот файл

позволяет не проводить просмотр всех блоков резервируемом файле. "По умолчанию" отслеживание

выключено. Для всей базы данных существует единый единственный файл отслеживания изменений.

Page 146: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

146

Если не указано иное, файл отслеживания изменений создается в пути, определяемом параметром

инициализации DB_CREATE_FILE_DEST. Он используется только при выполнении инкрементального

резервирования с уровнем больше 0, поскольку уровень 0 включает все блоки. Как только файл

отслеживания был создан, и инкрементальное резервирование уровня 0 выполнено, то следующее

инкрементальное резервирование может использовать данные отслеживания изменений. Для

включения отслеживания нужно выполнить следующую команду:

SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING;

При необходимости можно указать расположение файла отслеживания:

SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/u01/rman_change_track.f'

REUSE;

Выключить отслеживание изменений можно с помощью команды:

SQL> ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;

Восстановление файлов базы данных

В документации Oracle используются два разных термина "restore" и "recover". И тот, и другой

переводят русским словом "восстановление". С точки зрения семантики процесса слово "restore"

лучше перевести как "восстановлений файла", а слово "recover" как "восстановление данных в

файле".

Восстановление файлов базы данных является весьма объемной темой, а сценарий

восстановления зависит от многих факторов. Однако на экзамене не будет рассматриваться сколь-

нибудь сложные случаи восстановления. В реальной жизни лучше придерживаться простого правила

"Чем проще, тем лучше", не превращая, в общем-то тривиальную операцию, в разновидность

искусства. В данном разделе сделаны следующие допущения:

Несколько файлов данных были потеряны, но база данных сохранила все текущие

управляющие файлы или весь набор групп текущих журналов повторов.

База данных использует текущий бинарный файл параметров.

Доступен полный набор архивированных журналов повторов и инкрементальных

резервных копий, необходимый для восстановления данных в файлах. Каждый файл

данных имеет либо резервную копию, либо полный набор текущих и архивных журналов

повторов от момента времени создания файлов без резервной копии.

В резервной копии нет шифрованных файлов.

База данных не является кластерной.

База данных использует в работе область быстрого восстановления.

Для восстановления файлов и восстановления данных в файлах все базы данных нужно:

Запустить RMAN и установить сессию с базой данных:

$ rman

RMAN> CONNECT TARGET /

Page 147: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

147

Если база не смонтирована, то смонтировать ее:

RMAN> STARTUP MOUNT;

Проверить настроенные каналы с помощью команды SHOW:

RMAN> SHOW ALL;

Если нужные каналы не настроены, то нужно будет настроить каналы с помощью команды

CONFIGURE или включить команды ALLOCATE CHANNEL внутри RUN-блока

Восстановить файлы базы данных и данные в файлах:

RMAN> RESTORE DATABASE; Starting restore at 20-DEC-14

...

Finished restore at 20-DEC-14

RMAN> RECOVER DATABASE; ...

media recovery complete, elapsed time: 00:00:21

Finished recover at 20-DEC-14

Проверить успешность выполнения операций восстановления. Если все прошло

нормально, нужно открыть базы данных:

RMAN> ALTER DATABASE OPEN;

Page 148: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

148

Диагностирование сетевых проблем и проблем базы данных. Первым шагом любой диагностики является сбор информации, что, собственно говоря,

работает не так. Каждый серверный и фоновый процесс экземпляра может писать в собственный

файл трассировки. При обнаружении внутренней ошибки процесс записывает информацию о ней в

свой трассировочный файл. Часть этой информации предназначена для администратора, часть для

службы поддержки Oracle.

Все базы данных Oracle ведут файл оповещений (alert.log). Имя файла определено как

alert_<SID>.log, и "по умолчанию" он расположен в директории

$ORACLE_BASE/diag/rdbms/<db_name>/<sid>/trace. Журнал оповещений представляет собой

хронологическую последовательность сообщений и ошибок, создаваемую базой данных. Этот файл

включает следующие записи

Все внутренние ошибки (ORA-00600), все ошибки, вызванные повреждением блоков

данных (ORA-01578), все ошибки взаимных блокировок (deadlock errors) (ORA-00060).

Административные операции, такие как CREATE, ALTER, DROP операторы и команды

STARTUP, SHUTDOWN, ARCHIVELOG.

Сообщения и ошибки, связанные с работой разделяемого сервера и диспетчерского

процесса.

Ошибки, возникающие при автоматическом обновлении материализованных

представлений.

Значения параметров инициализации, отличные от значений "по умолчанию".

Эта информация заносится в журнал оповещений вместо вывода на консоль, хотя некоторые

из сообщений могут быть выведены и туда. Как только любая из отслеживаемых операций

завершилась успешно, сообщение и временная отметка записываются в журнал оповещений.

Обслуживаются две версии журнала оповещений: форматированный в виде XML и простой текстовый

файлы. Любой из них можно просмотреть текстовым редактором. Для просмотра XML-

форматированного файла можно использовать утилиту adrci. Администратор должен периодически

проверять содержимое журнала оповещения и трассировочных файлов на предмет поиска ошибок,

требующих вмешательства. Фоновые процессы всегда пишут в соответствующие трассировочные

файлы. Для фонового процесса ARCn (процесс архивирования журналов) можно управлять

количеством и типами трассировочной информации, которая будет записываться, с помощью

параметра инициализации log_archive_trace. Другие фоновые процессы такой возможности не

имеют. Серверный процесс записывает трассировочный файл при возникновении ошибки.

Начиная с версии 11g все диагностические сообщения, трассировочные файлы, дампы,

журнал оповещений, отчеты монитора состояний и т.д., хранятся в структуре директорий, известной

как репозиторий автоматической диагностики (Automatic Diagnostic Repository, ADR). Структура ADR

поддерживает несколько экземпляров и несколько продуктов Oracle одновременно. Каждый

экземпляр каждого продукта хранит диагностические данные в своей собственной домашней

директорией внутри ADR. Репозиторий ADR обеспечивает единую структуру каталогов с едиными

форматами диагностических данных для всех продуктов и экземпляров. Это, плюс единый набор

инструментов, позволяет диагностическим данным быть скоррелированными и дает возможность

анализа для нескольких продуктов.

Page 149: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

149

Параметр инициализации DIAGNOSTIC_DEST задает директорию, служащую корневой для

структуры ADR. Для выяснения директории, содержащей трассировочный файл можно запросить

представление V$DIAG_INFO:

SQL> SELECT name, value

FROM v$diag_info

WHERE name LIKE 'Diag%';

NAME VALUE

------- ----------------------------------------------------------------

Diag Enabled TRUE

Diag Trace /u01/app/oracle/diag/rdbms/x/X/trace

Diag Alert /u01/app/oracle/diag/rdbms/x/X/alert

Diag Incident /u01/app/oracle/diag/rdbms/x/X/incident

Diag Cdump /u01/app/oracle/diag/rdbms/x/X/cdump

В V$DIAG_INFO содержится информация о

ADR Base – путь к корню ADR.

ADR Home – путь к дому ADR для текущего экземпляра.

Diag Trace – место положение трассировочных файлов фоновых процессов,

трассировочных файлов серверных процессов, файлов трассировки SQL и текстовой

версии журнала оповещений alert log.

Diag Alert – местоположение XML-версии файла оповещений alert log.

Default Trace – путь к файлу трассировки текущей сессии.

Diag Incident – путь к файлу пакета для инцидента.

Diag Cdump – Аналогично cdump. Местоположение для дампов ядра.

Health Monitor – Местоположение отчетов монитора состояния.

Инфраструктура управления сбоями основана на проблемах и инцидентах. Проблема

определена как критическая ошибка базы данных. Критические ошибки заявлены как внутренние

ошибки экземпляра, такие как ORA-00600, ORA-07445 или ORA-04031. Проблемы отслеживаются в

ADR по ключу проблемы, который является текстовой строкой с ее описанием.

Инцидент определен как единичный случай проблемы. Если проблема встречается несколько

раз, для каждого случая создается отдельный инцидент. БД Oracle отмечает инцидент по временной

отметке и отслеживает их в ADR. Инциденты идентифицируются по числовым номерам, уникальным

в рамках ADR. При каждом инциденте производятся следующие действия:

Заносится запись в журнал оповещений.

Оповещение об инциденте посылается в Oracle Enterprise Manager.

Диагностические данные об инциденте сохраняются в виде дампов памяти.

При необходимости, в ADR создается новая поддиректория, куда записывается один или

несколько дампов памяти, созданных при инциденте.

Page 150: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

150

Обнаружение и восстановление сбоев данных с помощью Data Recovery

Advisor Инструментарий Data Recovery Advisor является средством восстановления поврежденных

данных. Этот инструмент тесно взаимодействует с Support Workbench, системой контроля

функционирования базы данных и утилитой RMAN. Он может отобразить проблемы повреждения

данных, оценить их размер и влияние, предложить опции восстановления и автоматизировать

процесс восстановления. В контексте Data Recovery Advisor проверка функционирования является

диагностической процедурой, запускаемой монитором функционирования с целью оценки состояния

базы данных и/или ее компонентов. Процедура проверки работоспособности вызывается при

возникновении ошибок, либо может быть инициирована вручную. Data Recovery Advisor может

диагностировать следующие сбои:

Наличие компонентов, таких как файлы данных и управляющие файлы, недоступных базе

данных.

Физическое повреждение блоков, как то сбои контрольных сумм блоков и неверные

значения в полях заголовков блоков.

Нарушения целостности, такие как возраст файла данных больше, чем базы данных.

Ошибки ввода/вывода, такие как ошибки оборудования, драйверов операционной

системы и превышение ограничений операционной системы.

В некоторых случаях Data Recovery Advisor может обнаружить и обработать логические

повреждения данных. В общем, однако, обнаружение и устранение логических повреждений данных

потребует помощи со стороны Oracle Support Services.

Сбои

Сбой это постоянное повреждение данных, обнаруженное при контроле работоспособности.

Сбои обычно обнаруживаются, когда база данных встречает поврежденные данные (блоки), и

возникает ошибка. При этом автоматически вызывается процедура проверки работоспособности. Эта

процедура произведет поиск сбоев, связанных с возникшей ошибкой и занесет все найденное в ADR.

Data Recovery Advisor может создать рекомендации по устранению сбоев только после того, как

обнаруженные сбои будут занесены в ADR. Data Recovery Advisor может сообщить о сбоях и исправить

сбои, вызванные недоступностью файлов, физическим или логическим повреждением блоков и

ошибками ввода/вывода. Всем сбоям присваивается приоритет: критический CRITICAL, высокий HIGH

или низкий LOW, а также статус открытый OPEN или закрытый CLOSED.

CRITICAL - сбои критического уровня. Требуют немедленного внимания, так как они могут

привести к недоступности база данных. Обычно, критические сбои приводят к остановке

экземпляра и диагностируются при последующем старте.

HIGH - сбои высокого уровня. Делают базу данных частично недоступной или

невосстановимой, и обычно должны быть устранены в максимально короткое время.

LOW - сбои низкого уровня. Могут быть проигнорированы до устранения всех проблем с

более высоким приоритетом.

Page 151: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

151

Восстановление с помощью Data Recovery Advisor

Советник Data Recovery Advisor позволяет выбрать опции восстановления работоспособности.

Восстановление может включать в себя восстановление блоков, восстановление файлов данных и

данных в файле, или использование технологии ретроспективного отката Oracle Flashback Database.

Data Recovery Advisor предлагает автоматический или ручной режим восстановления. Администратор

может выбрать автоматический режим для восстановления работоспособности базы данных, если его

устраивает предлагаемая схема восстановления. В автоматическом режиме Data Recovery Advisor

выполняет восстановление, проверяет успешность проведенной процедуры и закрывает

соответствующие записи о сбоях.

Для устранения сбоев при помощи RMAN рекомендуется следующая последовательность

действий в сессии: LIST FAILURE для отображения списка сбоев, ADVISE FAILURE для отображения

опций восстановления и REPAIR FAILURE для исправления сбоев.

LIST FAILURE

Команда LIST FAILURE выводит список сбоев, для которых можно выполнить команды ADVISE

FAILURE и REPAIR FAILURE.

RMAN> LIST FAILURE; List of Database Failures

=========================

Failure ID Priority Status Time Detected Summary

––––– –––– –––- ––––––- –––- ––––– –––– –––- ––––––- –––-

674 HIGH OPEN 23-DEC-14 One or more non-system

datafiles are missing

721 HIGH OPEN 23-DEC-14 Datafile 1:

'/u01/oradata/X/system01.dbf'

contains one or more corrupt blocks

ADVISE FAILURE

Команда ADVISE FAILURE отображает возможные методы восстановления после указанного

сбоя. Команда выдает краткую сводку сбоев, идентифицированных Data Recovery Advisor, и

закрывает все открытые сбои после их исправления. Команда ADVISE FAILURE также указывает, какую

стратегию восстановления Data Recovery Advisor считает оптимальной для данного набора сбоев.

Советник Data Recovery Advisor проверяет применимость процедуры восстановления перед тем, как

предложить ее. Например, он проверит все ли резервные копии и архивные журналы повторов,

нужные для восстановления, доступны. Data Recovery Advisor может создать как автоматический, так

и ручной сценарий восстановления.

Команда ADVISE FAILURE сопоставляет набор сбоев и набор шагов восстановления,

оптимальный с точки зрения Data Recovery Advisor. При возможности Data Recovery Advisor

объединяет несколько шагов восстановления в один. Например, при повреждении файла данных,

отсутствующем управляющем файле и потерянном текущем файле журнальной группы, Data Recovery

Advisor порекомендует единый консолидированный план восстановления работоспособности базы

данных и выполнения проведения восстановления данных на момент времени (PITR - point-in-time

recovery)

RMAN> ADVISE FAILURE;

Page 152: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

152

List of Database Failures =========================

Failure ID Priority Status Time Detected Summary

––––– –––– –––- ––––––- –––- ––––– –––– –––- ––––––- –––-

274 HIGH OPEN 23-DEC-14 One or more non-system

datafiles are missing

329 HIGH OPEN 21-DEC-14 Datafile 1:

'/u01/oradata/X/system01.dbf'

contains one or more corrupt blocks

analyzing automatic repair options; this may take some time

using channel ORA_DISK_1

analyzing automatic repair options complete

Mandatory Manual Actions

========================

no manual actions available

Optional Manual Actions

=======================

1. If file /u01/oradata/X/data01.dbf was unintentionally renamed or moved, restore it

Automated Repair Options

========================

Option Repair Description

––– –––––––––

Restore and recover datafile 41; Perform block

media recovery of block 73781 in file 1

Strategy: The repair includes complete media recovery with no data loss

Repair script: /u01/oracle/log/diag/rdbms/x/X/hm/reco_740113234.hm

CHANGE FAILURE

Команда CHANGE FAILURE изменяет приоритет сбоя с высокого на низкий или наоборот, а

также позволяет закрыть сбой. Изменить критический приоритет невозможно.

RMAN> CHANGE FAILURE 6 PRIORITY LOW;

REPAIR FAILURE

Команда REPAIR FAILURE используется для восстановления после сбоев, идентифицированных

Data Recovery Advisor. Целевой экземпляр базы данных должен быть запущен, он должен быть

монолитным и не может быть экземпляром standby. Важно отметить, что в большинстве случаев

должна быть активной только одна сессия RMAN, выполняющая команду REPAIR FAILURE.

Единственным исключением из правила является команда REPAIR FAILURE PREVIEW, выполнение

которой допускается из конкурирующих сессий. Для выполнения автоматического восстановления

Data Recovery Advisor'у могут потребоваться определенные резервные копии и архивные журналы

повторов. Если эти файлы недоступны, то восстановление невозможно. Если возможно, то Data

Recovery Advisor соединит несколько операций восстановления в одну. Если в данной сессии не

выдавалась команда ADVISE FAILURE, то команда REPAIR FAILURE приводит к неявной выдаче

команды ADVISE FAILURE. Менеджер RMAN всегда проверяет, что сбои еще являются актуальными, и

автоматически закрывает исправленные. После выполнения восстановления после сбоя RMAN заново

проверяет все открытые сбои с целью проверки на возможное их исправление после проведенных

действий.

Page 153: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

153

Реализация технологии ретроспективного отката

Ретроспективный откат таблиц

"По умолчанию" при удалении таблицы база данных не освобождает занимаемое ею место.

Вместо этого, база данных переименовывает таблицу и помещает ее и все связанные с ней объекты в

корзину удаленных. Если выяснится, что удаление таблицы было ошибкой, то ее можно восстановить.

Для восстановления используется оператор FALSHBACK TABLE.

Корзина удаленных это таблица словаря данных, содержащая информацию, которая

требуется для восстановления удаленных объектов. Сами по себе удаленные объекты остаются там,

где они были перед удалением, занимая то же самое пространство. Удаленные объекты по-прежнему

учитываются в квотах пользователя до явного их удаления из корзины, или они явно удалены базой

данных из-за пространственных ограничений. Если корзина выключена, то удаляемые таблицы и

связанные с ними объекты не помещаются в нее, они просто удаляются. Восстановление их в этом

случае возможно с помощью других средств, например, из резервных копий. "По умолчанию"

корзина включена. При удалении пользователя все связанные с ним объекты, помещенные в

корзину, удаляются.

При удалении табличного пространства вместе с содержимым в корзину ничего не

помещается. Дисковая память доступная базе данных, где размещались объекты, больше не

существует. База данных удаляет все записи в корзине, ссылающиеся на объекты из удаляемого

табличного пространства.

Оператор FLASHBACK TABLE TO BEFORE DROP используется при восстановлении объектов из

корзины. При восстановлении нужно использовать либо имя таблицы, назначенное системой при

помещении в корзину, либо исходное имя. Дополнительный параметр RENAME TO позволяет

переименовать таблицы во время восстановления. Представление USER_RECYCLEBIN позволит

определить назначенное системой имя. Для выполнения оператора FLASHBACK TABLE TO BEFORE

DROP необходимы такие же привилегии, как и для удаления таблицы. В примере приводится

команда для восстановления таблицы ocp_new и присвоения ей нового имени:

SQL> FLASHBACK TABLE ocp_new TO BEFORE DROP RENAME TO ocp_2;

Ретроспективные версионные запросы

Ретроспективные версионные запросы используются для извлечения метаданных и

исторических данных для определенного момента в прошлом. Временной интервал может быть

задан двумя временными отметками или двумя номерами системных изменений SCN. Полученные

метаданные включают начальное и конечное время существующих версий, тип операции DML,

использованный при создании, и идентификатор транзакции, которая создавала версии записей. Для

выполнения ретроспективного версионного запроса нужно использовать параметр VERSIONS

BETWEEN оператора SELECT. Синтаксис параметра VERSIONS BETWEEN определен следующим

образом: VERSIONS {BETWEEN {SCN | TIMESTAMP} начало AND конец}.

В результате ретроспективного запроса возвращаются следующие псевдостолбцы:

Page 154: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

154

VERSIONS_START[SCN/TIME] - начальное значение номера системного изменения (SCN)

или время в формате TIMESTAMP, когда активна версия строки. NULL , если версия более

ранняя, чем стартовое значение.

VERSIONS_END[SCN/TIME] - SCN или время в формате TIMESTAMP, когда версия строки

устарела. Если NULL, то либо версия строки является текущей во время запроса, или строка

отмечена для операции DELETE.

VERSIONS_XID - Идентификатор транзакции, создавший версию строки.

VERSIONS_OPERATION - Операция, проводимая транзакцией: I (вставка), D (удаление), U

(изменение). Версия соответствует транзакции, которая производила вставку, удаление

или изменение.

Данная версия строки является достоверной с момента, включая VERSIONS_START*, но не

включая VERSIONS_END*. Иначе говоря, она достоверна для любого времени "t", которое

удовлетворяет условию VERSIONS_START* <= t < VERSIONS_END*. Предположим, выполняется три

изменения таблицы EMPLOYEES с временной паузой между вставками:

SQL> UPDATE employees SET salary = 97000

WHERE emp_last='Dow';

SQL> UPDATE employees SET salary = 102000

WHERE emp_last='Dow';

SQL> UPDATE employees SET salary = 105000

WHERE emp_last='Dow';

SQL> COMMIT;

При выполнении ретроспективного версионного запроса можно получить следующие записи:

SQL> SELECT versions_starttime, versions_endtime,versions_xid, versions_operation AS OP,salary

FROM employees

VERSIONS BETWEEN TIMESTAMP

TO_TIMESTAMP('23-DEC-2014 11:46','DD-MON-YY 24HH:MI')

AND

TO_TIMESTAMP('23-DEC-2014 11:56','DD-MON-YY 24HH:MI')

WHERE emp_last = 'Dow';

VERSIONS_STARTTIME VERSIONS_ENDTIME VERSIONS_XID OP SALARY

-------------------- --------------------- ---------------- - ------

23-DEC-2014 11.51 09000900A9010000 U 105000

23-DEC-2014 11.49 22-DEC-2014 11.51 04001A003F010000 U 102000

23-DEC-2014 11.49 22-DEC-2014 11.49 03002100A2010000 U 97000

23-DEC-2014 11.49 93500

Как видно, в таблице были произведены три изменения, каждое из которых увеличивало

значение поля salary. Видно, когда действовало каждое значение поля. Значение поля VERSIONS_XID

при использовании технологии запросов ретроспективных транзакций Oracle для нахождения

метаданных для любой из этих трех транзакций. Эта информация будет включать в себя SQL оператор

для отката изменения строки и имя пользователя, выполнившего изменения.

Page 155: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

155

Запросы ретроспективных транзакций

Запросы ретроспективных транзакций используются для получения метаданных и

исторических данных для одной или всех транзакций в данном интервале. Эти данные извлекаются

из статического представления словаря данных FLASHBACK_TRANSACTION_QUERY. Запрос

ретроспективных транзакций заполняет столбец UNDO_SQL. Код SQL, содержащийся в этом столбце,

является противоположным той операции DML, которую выполняла соответствующая транзакция.

Этот код обычно может обратить исходную транзакцию с известными ограничениями, т.е. оператор

INSERT из SQL_UNDO вряд ли сможет вставить обратно строку с тем же ROWID, с которым она была

удалена. В общем, как правило, технологии ретроспективного версионного запроса и запроса

ретроспективных транзакций используются совместно для получения идентификатора транзакций ID.

SQL> SELECT operation, start_scn, commit_scn, logon_user

FROM flashback_transaction_query

WHERE xid = HEXTORAW('09000900C9140000');

OPERATION START_SCN COMMIT_SCN LOGON_USER

------------ --------- ---------- ------------ ------------

UNKNOWN 593374 594863 OCP

BEGIN 593374 594863 OCP

В следующем запросе используется ретроспективный версионный запрос в качестве

подзапроса, что дает возможность соотнести каждую версию строки с именем пользователя,

ответственного за изменения:

SQL> SELECT xid, logon_user

FROM flashback_transaction_query

WHERE xid IN (

SELECT versions_xid

FROM employees VERSIONS BETWEEN TIMESTAMP

TO_TIMESTAMP('22-FEB-2014 11:40:00',

'DD-MON-YYYY HH:MI:SS') AND

TO_TIMESTAMP('22-FEB-2014 11:56:00',

'DD-MON-YYYY HH:MI:SS')

);

При необходимости можно с помощью процедуры DBMS_FLASHBACK.TRANSACTION_BACKOUT

откатить транзакцию и все зависимые транзакции в то время, когда база данных открыта. Откат

транзакций использует данные пространства отката UNDO для создания и выполнения

компенсирующих операций, чтобы вернуть измененные данные в исходное состояние.

DBMS_FLASHBACK.TRANSACTION_BACKOUT не выдает COMMIT на DML операции, выполняемые в при

откате транзакций. При этом процедура устанавливает блокировки на строки и таблицы, чтобы

избежать других зависимых изменений в системе. Для полного отката нежелательных изменений и

постоянного возврата к исходным данным необходимо явно зафиксировать транзакции.

Page 156: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

156

Для того, чтобы использовать технологию запросов к ретроспективным транзакциям

необходимо функционирование базы данных в режиме архивирования журналов. Также необходимо

включить дополнительное журналирование.

SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

Для выполнения ретроспективных запросов необходимо наличие необходимых привилегий.

Достаточно привилегий следующих типов:

полномочия FLASHBACK и SELECT на требуемые объекты

полномочия SELECT на все таблицы и привилегию FLASHBACK ANY TABLE.

Для выполнения запросов ретроспективных транзакций администратор должен выдать

привилегию SELECT ANY TRANSACTION. Для выполнения SQL-кода отката изменений, полученного при

помощи Oracle Flashback Transaction, администратор должен выдать привилегии SELECT, UPDATE,

DELETE и INSERT на вовлеченные таблицы. Также нужно выдать привилегию EXECUTE на пакет

DBMS_FLASHBACK.

Ретроспективный откат базы данных

Возможность ретроспективного отката базы данных позволяет вернуть базу данных к более

раннему моменту времени с целью исправления проблем, вызванных логическим повреждением

данных или ошибками пользователей внутри ранее определенного временного окна.

Ретроспективный откат является существенно более эффективным нежели восстановление базы

данных на момент времени, т.к. не требует проведений операций резервирования и восстановления.

Ретроспективный откат базы данных возможен с помощью команды RMAN FLASHBACK DATABASE или

SQL оператора FLASHBACK DATABASE.

База данных должна быть заранее настроена для использования этой полезной

функциональности. Для того, чтобы воспользоваться возможностями ретроспективного отката базы

данных, необходимо установить требуемое время удержания (flashback retention target) и настроить

область быстрого восстановления (Fast Recovery Area). Время удержания указывает, как далеко в

прошлое можно "отмотать" базу данных. Ретроспективный механизм базы данных ведет собственные

ретроспективные журналы и хранит их в области быстрого восстановления. После настройки база

данных регулярно копирует образы измененных блоков данных каждого файла данных в

ретроспективные журналы. Эти блоки в дальнейшем могут быть использованы для реконструкции

содержимого файлов данных для любого момента времени, для которого существует журнал. В

дополнение к ретроспективным журналам журналы повторов redo на диске или ленте должны быть

доступны для всего периода времени, охватываемому ретроспективными журналами. Диапазон SCN,

для которого достаточно ретроспективных журналов для выполнения команды FLASHBACK DATABASE,

называется окном ретроспективного отката.

Если область Fast Recovery Area не имеет достаточного пространства для файлов

восстановления, таких как архивированные журналы повторов и другие резервные копии, нужные в

рамках политики удержания, база данных может удалить ретроспективные журналы с наиболее

ранними SCN. Требуемое время удержания не гарантирует, что возможность ретроспективного

Page 157: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

157

отката базы данных будет доступна для всего периода. В этом случае может потребоваться большая

область быстрого восстановления.

Ретроспективный откат базы данных имеет ряд ограничений:

С помощью технологии Flashback Database можно откатить изменения, внесенные самой

базой данных. Технология не может исправить ошибки, связанные со сбоем

оборудования или удалением файлов.

С помощью Flashback Database невозможно отменить операции сжатия файлов данных.

Если управляющий файл восстановлен из резервной копии или пересоздан, то все

накопленные ретроспективные журналы становятся неактуальными.

Если при выполнении целевое время операции Flashback Database приходится на

действия с опцией NOLOGGING, то велика вероятность повреждения блоков объектов и

файлов данных, вовлеченных в операции NOLOGGING.

Нормальная точка восстановления это просто именованный явно SCN или момент времени.

Она фактически является алиасом для данного SCN. Если используется ретроспективный откат или

восстановление на момент времени, то можно использовать имя точки восстановления вместо

времени или SCN. Нормальные точки восстановления в итоге перестают быть актуальными для

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

Следующие команды поддерживаю работу с точками восстановления:

RECOVER DATABASE и FLASHBACK DATABASE из RMAN.

FLASHBACK TABLE оператор в SQL

Гарантированная точка восстановления также является алиасом для SCN в операциях

восстановления. Однако гарантированные точки восстановления никогда не состариваются в

контрольном файле и должны быть явно удалены. Это гарантирует, что можно "перемотать" базу

данных к точке восстановления, даже если создание ретроспективных журналов не включено. Если

же оно включено, то гарантированная точка восстановления заставляет удерживать все

ретроспективные журналы, нужные для перемотки базы данных к гарантированному системному

изменению SCN.

Чтобы включить возможность выполнения ретроспективного отката базы данных Flashback

Database, нужно, во-первых, проверить, что экземпляр открыт или смонтирован. Если экземпляр

смонтирован, то база данных должна быть в консистентном состоянии (остановлена командой

shutdown или shutdown immediate), если экземпляр не является физической standby базой.

Последовательность включения состоит из следующих шагов:

1. Нужно установить параметр DB_FLASHBACK_RETENTION_TARGET равным желаемой

величине окна ретроспективного отката в минутах. "По умолчанию" это 1 день (1440

минут). Необязательное действие.

2. Следует включить возможность ретроспективного отката для всего экземпляра

SQL> ALTER DATABASE FLASHBACK ON;

Page 158: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

158

3. При необходимости нужно отключить создание ретроспективных журналов для некоторых

табличных пространств.

Для отключения журналов ретроспективного отката нужно выполнить следующую команду,

экземпляр должен быть либо смонтирован, либо открыт:

SQL> ALTER DATABASE FLASHBACK OFF;

Обслуживание журналов ретроспективного отката не предполагает значительной

дополнительной нагрузки на экземпляр. Измененные блоки записываются в эти журналы

относительно редко, через регулярные интервалы, чтобы ограничить дополнительную нагрузку на

обработку и ввод/вывод. Оптимизация производительности состоит в основном получении

максимально быстрой записи блоков. Для желаемого результата желательно следовать следующим

правилам:

Для области быстрого восстановления (fast recovery area) нужно использовать быструю

файловую систему, предпочтительно без кэширования средствами ОС

Лучше настроить максимально возможное количество дисков для обслуживания области

быстрого восстановления.

Если дисковая подсистема, используемая для размещения области быстрого

восстановления, не имеет энергонезависимой памяти, то следует создать файловую

систему поверх "полосатого" тома с размером полосы 128KB.

Для больших баз данных следует установить параметр LOG_BUFFER по крайней мере в

8MB.

Для выполнения ретроспективного отката базы данных нужно выполнить следующие базовые шаги:

1. Запустить RMAN и установить сессию с базой данных, которую нужно перемотать назад.

2. Поместить базу данных в режим MOUNT.

SQL> SHUTDOWN IMMEDIATE;

SQL> STARTUP MOUNT;

3. Выполнить команду FLASHBACK DATABASE.

SQL> FLASHBACK DATABASE TO SCN 12345678;

4. Открыть экземпляр в режиме "только чтение" в SQL-Plus и выполнить тестовые запросы, с

целью проверки содержания базы данных.

SQL> ALTER DATABASE OPEN READ ONLY;

5. Если данные удовлетворяют требованиям, то нужно остановить базу данных и открыть ее

с опцией RESETLOGS:

SQL> SHUTDOWN IMMEDIATE;

SQL> STARTUP MOUNT;

SQL> ALTER DATABASE OPEN RESETLOGS;

Page 159: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

159

Загрузка и выгрузка данных Утилита Data Pump разработана для быстрого переноса данных и метаданных из одной базы

данных в другую. Она заменяет функциональность утилит export/import, существовавших ранних

версиях Oracle. Data Pump состоит из трех различных частей:

expdp и impdp - Это клиенты командной строки, использующие процедуры из пакета

DBMS_DATAPUMP для выполнения экспорта или импорта. Эти утилиты получают

параметры командной строки для экспорта/импорта данных и метаданных для всей базы

данных или ее части.

DBMS_DATAPUMP - Пакет, также известный как Data Pump API, обеспечивает

высокоскоростной механизм для перемещения всех или части данных и метаданных от

одной база данных к другой. DBMS_DATAPUMP может использоваться независимо от

клиентов impdp и expdp.

DBMS_METADATA - Пакет, также известный как Metadata API, обеспечивает

централизованную возможность для извлечения, манипуляции и пересоздания

метаданных словаря. DBMS_METADATA DATAPUMP может использоваться независимо от

клиентов impdp и expdp.

Задания Data Pump используют мастер-таблицу, мастер-процесс и рабочие процессы для

выполнения работы и отслеживания хода работы:

Мастер-таблица - Мастер-таблицы используется для отслеживания хода работы при

передаче данных и метаданных. Она реализована в виде пользовательской таблицы в

базе данных. Пользователь, выполняющий impdp или expdp, должен иметь привилегию

CREATE TABLE для создания мастер-таблицы и достаточную квоту в своем табличном

пространстве. Имя мастер-таблицы совпадает с именем задания, ее создавшего. Задание

Data Pump не может иметь имя, совпадающее с именами существующих таблиц или

представлений в схеме. Информация из мастер-таблицы используется для перезапуска

задания.

Мастер-процесс - мастер-процесс создается для каждого задания экспорта или импорта.

Он управляет всей операцией экспорта/импорта, включая взаимодействие с клиентами,

создание и управление пулом рабочих процессов, ведением журнала операций.

Рабочий процесс - Мастер-процесс размещает работы, которые нужно выполнить между

рабочими процессами, выполняющими обработку данных и метаданных в ходе операций.

Data Pump может обеспечить работой несколько рабочих процессов, выполняющихся

параллельно для увеличения производительности.

Обслуживание заданий Data Pump

С помощью утилит Data Pump Export или Import можно подключиться к выполняющему

заданию. При подключении в журнальном режиме состояние задания автоматически отображается в

ходе выполнения в реальном времени. При подключении в интерактивно-командном режиме можно

запросить состояние задания.

Дополнительно нужно упомянуть, что журнальный файл может быть записан во время

выполнения задания. В нем суммируются процесс выполнения задания, перечисляются все ошибки и

Page 160: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

160

записывается итоговый результат задания. Состояние задания или информацию о заданиях можно

получить из представлений словаря данных:

DBA_DATAPUMP_JOBS - Содержит список всех активных заданий Data Pump в базе

данных, независимо от их состояния во всех экземплярах. В представлении также имеется

информация от всех мастер-таблицах, не связанных с активными заданиями.

DBA_DATAPUMP_SESSIONS - Содержит список сессий, которое подключены к заданиям

Data Pump. Информация в этом представлении полезна для выяснения, почему

остановившееся задание не завершилось.

V$SESSION_LONGOPS - Операции Data Pump, которые переносят табличные данные,

обслуживают запись, указывающую степень завершенности операции. Эта запись

содержит оценку размера перемещенных данных и периодически модифицируется для

отображения действительного объема обработанных данных.

К параметрам заданий Data Pump относятся следующие столбцы V$SESSION_LONGOPS:

USERNAME - владелец задания.

OPNAME - имя заданий.

TARGET_DESC - выполняемая операция.

SOFAR - обработанный объем данных.

TOTALWORK - оценочный объем данных.

UNITS - мегабайт (MB).

MESSAGE - форматированное сообщение о состоянии задания в виде 'job_name:

operation_name : nnn out of mmm MB done'.

Утилита экспорта Data Pump вызывается командой expdp. Действия, выполняемые утилитой,

определяются заданными параметрами. Эти параметры могут быть заданы либо в командной строке,

либо в файле параметров. Экспорт Data Pump может управляться с помощью командной строки,

файла параметров или интерактивно-командного режима.

Командная строка - Позволяет указать большинство параметров экспорта в командной

строке.

Файл параметров - Позволяет указать большинство параметров экспорта в виде файла.

Параметр PARFILE не может быть использован в самом файле параметров, т.е. файл

параметров не может быть вложенным.

Интерактивно-командный режим - Отображает приглашение командной строки экспорт,

позволяющее вводить разные команды. Некоторые команды являются специфичными

для интерактивно-командного режима.

Задания Data Pump работают со следующими типами файлов:

Файлы дампов (Dump Files) - содержат перемещаемые данные и метаданные.

Файлы журналов (Log Files) - Содержат сообщения о совершаемых действиях.

SQL файлы (SQL Files) - Содержат записи операции SQLFILE.

Page 161: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

161

Файлы данных (Data Files) -файлы, указанные в параметре DATA_FILES, при выполнении

переносимого импорта.

Существует несколько режимов экспорта для выгрузки разных частей базы данных. Режим

указывается при помощи параметра. Доступны следующие режимы:

Полный (Full) - При полном экспорте выгружается вся база данных. Для выполнения

такого экспорта требуется роль DATAPUMP_EXP_FULL_DATABASE. Включается при указании

параметра FULL.

Схема (Schema) -Режим экспорта "по умолчанию". Если выполняющему экспорт

пользователю выдана роль DATAPUMP_EXP_FULL_DATABASE, то возможно задать список

схем для экспорта. В противном случае можно экспортировать только собственную схему.

Включается при указании параметра SCHEMAS.

Таблица (Table) - В этом режиме экспортируется только указанный набор таблиц, секций и

зависимых от них объектов. Для экспорта таблиц из чужих схем обязательно наличие роли

DATAPUMP_EXP_FULL_DATABASE. Включается при задании параметра TABLES.

Табличное пространство (Tablespace) - В этом режиме экспортируются только таблицы и

зависимые от них объекты, содержащиеся в указанном наборе табличных пространств.

Привилегированные пользователи могут выгрузить все таблицы. Непривилегированные

пользователи выгружают только таблицы из собственных схем. Включается при задании

параметра TABLESPACES.

Переносимое табличное пространство (Transportable Tablespace) - В этом режиме

экспортируются только метаданные для таблиц и зависимых объектов, находящихся в

указанном наборе табличных пространств. Файлы данных копируются в рамках отдельной

операции. Включается при задании параметра TRANSPORT_TABLESPACES.

Параметры expdp

Для управления экспортом используются следующие параметры:

ATTACH – Выполняет подключение клиентской сессии к существующему заданию экспорта

и автоматически запускает интерактивно-командный интерфейс.

CONTENT – Позволяет управлять типом экспортных данных: выгружать данные,

метаданные или и то, и другое.

DIRECTORY – Задает место в файловой системе, куда будут записываться файлы дампов и

журналы.

DUMPFILE – Задает имя и, при необходимости, объекты директорий для файлов дампа.

ESTIMATE – Задает метод, которые будет использоваться при экспорте для оценки

размеров дискового пространства, которое понадобится заданию экспорта (в байтах).

ESTIMATE_ONLY – Указывает, что необходимо произвести только оценку потребности в

дисковом пространстве без выполнения реального экспорта.

EXCLUDE – Позволяет отфильтровать метаданные, которые будут исключены из экспорта,

включая объекты или типы объектов.

FILESIZE – Задает максимальный размер каждого файла дампа.

FULL – Задает режим полного экспорта.

Page 162: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

162

INCLUDE – Позволяет отфильтровать метаданные, которые будут включены в экспорт,

включая объекты или типы объектов для выбранного типа экспорта.

JOB_NAME – Имя задания экспорта, используется для последующей идентификации.

LOGFILE – Задает имя и, при необходимости, директорию журнала задания экспорта.

PARFILE – задает имя файла параметров экспорта.

QUERY – Позволяет указать SQL-запрос, используемый для фильтрации данных для

экспорта.

SCHEMAS – Указывает список схем для экспорта в режиме "схема".

TABLES – Указывает список таблиц для экспорта в режиме "таблицы".

TABLESPACES – Указывает список табличных пространств для экспорта в режиме

"табличное пространство".

TRANSPORT_TABLESPACES - Указывает, что предполагается провести экспорт в режиме

"переносимые табличные пространства". В параметре приводится список имен табличных

пространств, для которые будет произведен экспорт метаданных из исходной базы

данных в целевую.

Параметры impdp

Многие из приведенных выше параметров утилиты expdp применимы и для impdp.

Дополнительно, для impdp существуют следующие параметры:

REUSE_DATAFILES – Указывает, будет ли задание импорта повторно использовать уже

существующие файлы при создании табличных пространств.

SQLFILE – Указывает имя файла, в который будут записаны все SQL DDL команды, которые

должны быть выполнены при импорте.

STATUS –Указывает, как часто будет обновляться информация о состоянии выполнения

задания импорта.

TABLE_EXISTS_ACTION – Задает действия, которые нужно выполнить при совпадении имен

импортируемой и уже существующей таблиц.

REMAP_DATAFILE – Изменяет имя исходного файла данных на целевое имя во всех SQL-

операторах, где есть ссылка на исходные данные.

REMAP_SCHEMA – Загружает все объекты из одной исходной схемы в другую целевую.

REMAP_TABLE – Позволяет переименовать таблицы при импорте.

REMAP_TABLESPACE – Отображает все объекты с постоянными данными, отобранные для

импорта в исходном табличном пространстве в новое целевое табличное пространство.

Следующие команды доступны интерактивном режиме:

ADD_FILE – Добавляет дополнительный файл дампа.

CONTINUE_CLIENT – Завершает диалоговую сессию и переходит в режим записи журнала.

EXIT_CLIENT – Останавливает сессию клиента импорта/экспорта, не затрагивая работу

задания.

KILL_JOB – Отключает все активные сессии клиента и останавливает задание.

PARALLEL – Изменяет количество рабочих процессов для текущего задания.

START_JOB – Перезапускает задание, к которому произведено подключение.

Page 163: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

163

STATUS – Выводит подробный отчет, о состоянии текущего задания и/или меняет время

опроса состояния задания.

STOP_JOB – Останавливает текущее задания для последующего перезапуска.

Сетевые операции Data Pump

При задании параметра NETWORK_LINK утилиты impdp при импорте данные перемещаются

между базами напрямую с использованием SQL. Оператор SELECT выбирает данные из удаленной

базы данных с помощью соединения с базой данных, указанного в параметре NETWORK_LINK.

Соответствующий оператор INSERT производит вставку данных в целевую базу. В операции не

участвуют файлы дампов. Если параметр NETWORK_LINK используется утилитой expdp при экспорте

данных, то данные из удаленной базы записываются в файлы дампов на целевой базе данных.

Поддерживаются только следующие типы соединения баз данных:

Публичные (Public , public and shared).

Определенный пользователь (Fixed user).

Подключенный пользователь (Connected user).

Соединение баз данных типа "Current User" в Data Pump не поддерживается

Существует ряд ограничений для применения параметра NETWORK_LINK:

При использовании полного переносимого экспорта, таблицы со столбцами LONG или

LONG RAW, находящиеся в административных табличных пространствах не

поддерживаются.

При переносе базы данных по сети с использованием полного переносимого экспорта,

аудит не может быть включен для таблиц, расположенных в административных табличных

пространствах (SYSTEM и SYSAUX), если сама информация аудита расположена в

пользовательском пространстве.

Исходная и целевая базы данных не могут отличаться друг от друга более, чем на две

версии. Например, если одна база данных это версия 12с, то другая может быть только

12c, 11g, 10g.

SQL-Loader

Утилита SQL-Loader используется для загрузки данных из сторонних источников. Утилита

имеет развитый механизм разбора входных данных, позволяющий обрабатывать широкий набор

плоских данных из внешних файлов. По существу любая база данных может экспортировать данные в

виде файла плоского формата. SQL-Loader может загрузить эти данные в таблицы базы данных Oracle.

SQL-Loader может выполнить следующие действия:

Загрузить данные по сети, если данные находятся на другом сервере, нежели база

целевая данных.

Загрузить данные из нескольких файлов в рамках одной и той же сессии.

Загрузить данные в несколько таблиц в рамках одной и той же сессии.

Указать набор символов, используемый в данных.

Выборочно загрузить данные на основании значений в записях.

Изменять данные перед загрузкой их, используя функции SQL.

Page 164: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

164

Создавать уникальные последовательные значения ключей в указанных столбцах.

Использовать файловую систему ОС для доступа к файлам данных.

Загружать данные с диска, ленты или именованного канала pipe.

Создавать подробные отчеты об ошибках.

Загружать произвольные объектно-ориентированные данные.

использовать вторичные файлы данных для загрузки LOB'ов и коллекций.

Использовать обычную, прямую загрузку данных или загрузку с помощью внешних

таблиц.

Утилита SQL-Loader может использоваться как с управляющим файлом, так и без него.

Использование управляющего файла позволяет наиболее полно управлять операцией загрузки.

Простые операции загрузки могут быть выполнены без указания управляющего файла. Этот режим

называется оперативной загрузкой (SQL-Loader express mode). Сессия SQL-Loader использует

следующие файлы:

Control – Задает формат файла данных и управляет поведением SQL*Loader.

Data – Один или более файлов, содержащих загружаемую информацию.

Log – Журнал действий, выполненных SQL*Loader, и список возникших ошибок.

Bad – Содержит все записи, которые не могут быть загружены из-за ошибок.

Discard – Содержит все записи, которые должны быть пропущены по указаниям

управляющего файла.

Вызов SQL-Loader осуществляется командой sqlldr. Дополнительно могут указываться

параметры, устанавливающие параметры сессии. Помимо командной строки, эти параметры могут

быть указаны следующим образом:

Параметры могут быть добавлены к файлу параметров. Чтобы использовать файл

параметров, его имя нужно задать в командной строке с помощью PARFILE.

Некоторые параметры могут быть указаны с управляющем файле SQL-Loader в

конструкции OPTIONS.

Если параметр задан и в командной строке, и в файле параметров, и в конструкции OPTIONS

управляющего файла, то выбирается значение из командной строки.

Управляющий файл SQL-Loader представляет собой текстовый файл, указывающий SQL-

Loader'у, где расположены файлы данных, какой формат использовать при разборе данных, в какие

таблицы производить вставку данных и т.д. Управляющий файл имеет три свободно определяемых

раздела:

Первый раздел содержит информацию для всей сессии, глобальные опции, расположение

входных файлов и данные, которые будут загружаться.

Второй раздел состоит из одного или более блоков INTO TABLE. В блоке содержится

информация о целевых таблицах.

Третий раздел является дополнительным и, при наличии, содержит входные данные.

Page 165: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

165

SQL-Loader поддерживает два метода вставки данных в таблицы Oracle: обычный

(Conventional Path) и прямой (Direct Load). При обычном SQL-Loader фактически создает операторы

INSERT для каждой записи в файле, которую нужно загрузить, и передает их разборщику SQL Oracle.

При прямой загрузке SQL-Loader минует разборщик SQL и загружает данные в таблицы напрямую.

Прямой метод значительно быстрее, но обычный значительно гибче. Прямой метод имеет некоторые

ограничения:

Он не может использоваться параллельно с другими транзакциями в целевой таблице.

Триггеры не срабатывают при вставке.

Данные записываются выше указателя максимально занятых блоков даже при наличии

свободного места в начале таблицы.

Не поддерживаются кластеризованные таблицы.

Указатели внешней ссылочной целостности при загрузке отключаются.

Page 166: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

166

Перемещение объектов из пространства SYSAUX Табличное пространство SYSAUX является дополнительным системным пространством для

пространства SYSTEM. Некоторые их компонентов Oracle, которые ранее создавались в отдельных

табличных пространствах, теперь "по умолчанию" располагаются в SYSAUX. Если пространство SYSAUX

становится недоступным, то основная функциональность база данных сохраняется.

Функциональность, использующая объекты в SYSAUX, может стать недоступной к использованию или

частично неработоспособной. Представление V$SYSAUX_OCCUPANTS используется для определения

компонентов, располагающихся в SYSAUX. Представление содержит информацию:

Имя компонента.

Описание компонента.

Имя схемы.

Процедуру переноса компонента.

Текущее использование табличного пространства.

Имя процедуры в столбце MOVE_PROCEDURE представления V$SYSAUX_OCCUPANTS

описывает процедуру, которую нужно использовать для переноса компонента из пространства

SYSAUX. При необходимости для компонента, ранее перенесенного из пространства SYSAUX, та же

самая процедура может быть использована для возврата его в SYSAUX. В следующем запросе

приведен частичный вывод компонентов базы данных, их описание и имя процедуры, которая

позволит перенести их в другое пространство:

SQL> SELECT occupant_name, occupant_desc, move_procedure

FROM v$sysaux_occupants

WHERE move_procedure IS NOT NULL;

OCCUPANT_NAME OCCUPANT_DESC MOVE_PROCEDURE

----------------------------------------------------------------

LOGMNR LogMiner SYS.DBMS_LOGMNR_D.SET_TABLESPACE

LOGSTDBY Logical Standby SYS.DBMS_LOGSTDBY.SET_TABLESPACE

AUDIT_TABLES DB audit tables DBMS_AUDIT_MGMT.move_dbaudit_tables

XDB XDB XDB.DBMS_XDB.MOVEXDB_TABLESPACE

AO Analytical DBMS_AW.MOVE_AWMETA

Workspace

Object Table

Page 167: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

167

Создание постоянного табличного пространства "по умолчанию" В версии 12с появилась возможность задавать постоянное табличное пространство "по

умолчанию", которое будет использоваться для всех учетных записей пользователей, не имеющих

явно присвоенного табличного пространства. Эта возможность была добавлена, чтобы избежать

неприятной альтернативы, состоявшей в том, что вновь созданные пользователи без явно

назначенного пространства "по умолчанию", получали в его качестве системное пространство

SYSTEM. Теперь операторы CREATE DATABASE и ALTER DATABASE получили опцию DEFAULT

TABLESPACE. В примере показано, как задать USERS в качестве табличного пространства "по

умолчанию":

SQL> ALTER DATABASE DEFAULT TABLESPACE users;

Текущие установки табличных пространств "по умолчанию" могут быть получены из

представления DATABASE_PROPERTIES:

SQL> SELECT property_name, property_value

FROM database_properties

WHERE property_name like '%TABLESPACE';

PROPERTY_NAME PROPERTY_VALUE

------------------------------ --------------

DEFAULT_TEMP_TABLESPACE TEMP

DEFAULT_PERMANENT_TABLESPACE USERS

Если задано или изменено постоянное табличное пространство "по умолчанию", то все

объекты, созданные пользователями, не имеющими явно назначенного табличного пространства,

будут созданы в этом пространстве за исключением случая, когда оператор создания объекта явно

укажет, где следует располагать объект. Табличное пространство "по умолчанию" не может быть

удалено.

Page 168: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

168

Использование консультанта для определения размеров журналов

повторов (redo) Размер журналов повторов может влиять на производительность базы данных в целом.

Поведение процессов DBW и ARCH частично зависит от размеров журналов повторов. В общем случае

больший размер файла дает большую производительность. Если размеры файлов слишком малы, то

это приводит к частому выполнению процедуры контрольной точки. Частота выполнения

контрольной точки зависит от нескольких факторов, включая влияние журнальных файлов и значение

параметра FAST_START_MTTR_TARGET. Если этот параметр установлен так, чтобы снизить время

восстановления экземпляра, то база данных автоматически старается выполнять контрольную точку

достаточно часто, чтобы удовлетворить значению FAST_START_MTTR_TARGET.

В столбце OPTIMAL_LOGFILE_SIZE представления V$INSTANCE_RECOVERY содержит

оптимальный размер файлов повторов. Эта информация также доступна на странице Redo Log Groups

в Oracle Enterprise Manager. По правилу большого пальца размер журнала повторов варьируется от

100МБ до нескольких гигабайт. Этот размер зависит от количества информации повторов,

создаваемого системой. Считается, что следует устанавливать размер журналов таким, чтобы

переключение их происходило не чаще, чем раз в двадцать минут.

Page 169: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

169

Применение безопасных файлов для хранения данных LOB В версии Oracle 11g был введен новый тип памяти для хранения больших объектов

безопасные файлы (SecureFile LOBs). Предыдущий тип переименован в базисные файлы (BasicFile

LOBs). SecureFile LOBs добавили несколько новых возможностей для хранения больших объектов:

Интеллектуальное сжатие позволяет пользователям явно сжимать данные для экономии

дискового пространства.

Интеллектуальное шифрование позволяет хранить шифрованные данные "на месте" и

делать их доступными для произвольного чтения и записи.

Возможность дедупликации позволяет Oracle автоматически определять повторяющие

LOB данные и сохранять пространство, храня только одну копию данных.

Оптимизация пути доступа к данным LOB включает логическое кэширование выше уровня

дисковой памяти, упреждающее чтение, новые режимы кэширования, векторизованный

ввод/вывод и т.д.

Параметр инициализации db_securefile определяет, будет ли база данных Oracle использовать

SecureFile или BasicFile для размещения LOB. Возможны следующие значения этого параметра:

ALWAYS, FORCE, PERMITTED, NEVER и IGNORE. Смысл этих значений:

ALWAYS - База данных будет пытаться создавать SecureFile для размещения LOB, но

создаст BasicFile, если используемое табличное пространство не использует механизм

автоматического управления сегментами.

PERMITTED - Разрешено создание SecureFile для размещения LOB.

PREFERRED - Все LOB создаются как SecureFiles, если явно не указан тип размещения

BASICFILE в описании размещения LOB или используемое табличное пространство

использует ручной тип управления сегментами. При задании параметра PREFERRED

случаи, когда тип размещения BASICFILE был бы унаследован из описания секции или

столбца, игнорируются, и LOB будут создаваться с типом хранения SecureFiles.

NEVER - запрещает создание типа памяти SecureFile для размещения LOB. Если оператор

DML пытается явно создать столбец как SecureFile LOB, будет создан BasicFile LOB. Если

какая-либо опция или возможность специфичная для типа хранения SecureFile задана в

DML, то возникнет ситуация исключения.

IGNORE - Ключевое слово SECUREFILE все параметры SecureFiles игнорируются.

Реорганизация "на лету" может выполняться на уровне таблиц или секций. Реорганизация "на

лету" означает, что таблицы или их секции не переводятся в состояние offline. Реорганизация также

может проводиться параллельно. Однако эта операция требует дополнительного пространства,

равного полному размеру таблицы или ее секции(й) и всех LOB сегментов. Кроме того, после

миграции требуется перестроить глобальные индексы.

Тип хранения SecureFiles наследует установки столбца LOB для дедупликации, шифрования и

сжатия, указанные при создании LOB'а. Пакет DBMS_LOB содержит несколько процедур,

позволяющих определить или изменить унаследованные значения:

Page 170: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

170

DBMS_LOB.GETOPTIONS - С помощью этой процедуры может быть получены текущие

параметры. Возвращается целое число, соответствующее предопределенной константе

для данного типа. Например, для DEDUPLICATE_OFF возвращается 0. Нет необходимости

знать все значения для теста, нужно только знать имя процедуры.

DBMS_LOB.SETOPTIONS - Процедура устанавливает параметры для SecureFile LOB (сжатие,

дедупликацию и шифрование). Параметры устанавливаются для каждого LOB,

переназначая исходные параметры.

DBMS_LOB.ISSECUREFILE - Эта функция возвращает значения TRUE или FALSE в

зависимости от того, указывает ли переданный LOB локатор (BLOB или CLOB) на SecureFile.

Существующая в пакете DBMS_SPACE процедура SPACE_USAGE позволяет получить

информацию об использовании пространства объектами LOB. Процедура возвращает объем диска в

блоках, занимаемый всеми LOB'ами в сегменте. Процедура может использоваться только в

пространстве с автоматическим управлением сегментами.

Page 171: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

171

Применение прямого NFS клиента Начиная с версии Oracle 11g, в ядро базы данных встроен собственный NFS клиент. Эта

возможность повышает производительность файловых операций и улучшает управляемость при

использовании сетевых файловых систем NFS. Прямой клиент NFS (Direct NFS Client) улучшает

производительность ввода/вывода путем встраивания специфичных для Oracle оптимизаций и

удаления накладных расходов для поддержки NFS в ядре операционной системы. Кроме того,

прямой NFS упрощает настройку путем удаления необходимости ручной настройки большинства

параметров NFS.

Для применения прямого NFS соответствующие файловые системы должны быть

смонтированы и доступны через ядро операционной системы. Прямой NFS не монтирует файловую

систему. Специфические опции монтажа, используемые ОС, не являются значимыми, так как прямой

NFS управляет доступом БД Oracle к дискам. Клиент прямого NFS использует либо новый файл

настроек oranfstab, либо файл монтажа файловых систем (/etc/mtab для Linux), чтобы определить

установки для точек монтажа устройств NFS. Параметры монтажа определяются в следующем

порядке. Первоначально, Oracle ищет параметры монтажа в файле $ORACLE_HOME/dbs/oranfstab,

который устанавливает параметры прямого клиента NFS для одной базы данных. Во-вторых, Oracle

ищет требуемые параметры в /etc/oranfstab, где указаны точки монтажа NFS, доступные для всех баз

данных сервера. В завершение Oracle читает файл монтажа файловых систем (/etc/mtab для Linux,

/etc/vfstab - Solaris), чтобы определить доступные точки монтажа NFS. При наличии одинаковых

записей клиент прямого NFS будет использовать первую найденную. Помимо заполнения одного из

этих файлов необходимо заменить стандартную библиотеку Oracle Disk Manager (ODM) на библиотеку

с поддержкой прямого клиента NFS. Пример содержания файла oranfstab:

server: FirstNFSServer

path: 192.168.1.1

path: 192.168.1.2

path: 192.168.1.3

path: 192.168.1.4

export: /u01/oradata1 mount: /u01/oradata1

Как только этот файл создан, то следующие команды разрешат использование библиотеки

прямого клиента NFS ODM:

$ cd $ORACLE_HOME/lib

$ cp libodm11.so libodm11.so_stub

$ ln –s libnfsodm11.so libodm11.so

Page 172: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

172

Управление производительностью

Проектирование размещения базы данных Если у двух юристов существует три мнения, то даже один администратор баз данных может

иметь несколько мнений по поводу файловой раскладки одной и той базы данных. Иначе говоря,

термин "правильный" зависит от личности его использующего и обстоятельств. Одной из стандартных

рекомендаций Oracle при разработке плана размещения БД и планирования ввода/вывода является

использование Oracle Automatic Storage Management (Oracle ASM). Из-за способа, используемого в

Oracle ASM при чередовании (striping) данных по всему набору доступных дисковых групп,

большинство общепринятых правил раскладки файлов просто неприменимо при использовании ASM.

Oracle ASM дает следующие возможности:

Чередование данных(Striping).

Зеркалирование данных (Mirroring).

Перестройка дисковой памяти на ходу и динамическая балансировка.

Управление созданием и удалением файлов.

Для систем, не использующих Oracle ASM, существует несколько возможных конфигураций

для оптимизации производительности дисковой памяти:

Чередовать все по всем дискам - Наиболее простой способ распределить ввод/вывод для

минимизации конкуренции состоит в создании единственного тома, данные в котором

равномерно чередуются по всем дискам. Из соображений резервирования данных,

созданный том должен быть зеркалирован (RAID 1).

Разместить архивные журналы на отдельные диски - Если архивированные журналы

повторов хранятся на том же наборе дисков, что и остальные файлы базы данных, то

запросы ввода/вывода к этим дискам будут замедляться, когда база данных архивирует

журналы повторов. Перенос архивных файлов на отдельные диски улучшит

производительность операции архивирования и поможет избежать ее конкуренции с

записями в файлы данных.

Перенести журналы повторов на отдельные диски - Базы данных с высокой

интенсивностью операций модификаций (OLTP системы, например) ведут интенсивную

запись в журналы повторов. Перенос этих файлов на отдельные диски, как от файлов

данных, так и архивированных журналов, означает, что запись в журналы повторов будет

осуществляться с максимальной скоростью. Производительность в обработке транзакций

будет максимальной, и запись журналов повторов не будет подвержена влиянию каких-

либо других операций ввода/вывода.

Page 173: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

173

Контроль производительности Для определения проблем с производительностью существует много инструментов и

методик. В последних выпусках Oracle наиболее простым способом обнаружения проблем с

производительностью было использование Enterprise Manager, что требовало лицензирование

некоторых опций. Для версии 12c рекомендуемым решением является Oracle Enterprise Manager

Cloud Control - продукт управления уровня предприятия. EM Cloud Control создан для управления всей

IT средой, включая базы данных, сервера, интеграционные продукты и т.д. Строго говоря, для

эксплуатации одной базы данных этот продукт избыточен.

Для управления одной базой данных Oracle предлагает облегченную версию Enterprise

Manager - EM Express. EM Express представляет собой утилиту, встроенную в БД и позволяющую

управлять БД Oracle через веб-интерфейс, отслеживать производительность БД, а также выполнять

некоторые общие административные функции. Это легковесное приложение, спроектированное для

минимизации накладных расходов на базу данных. В базе данных нет каких-либо фоновых задач или

процессов, связанных с EM Express. Утилита пользуется данными, которые уже были собраны БД.

Страница производительности EM Express является отправной точкой для анализа проблем

производительности. На рисунке приведен вид страницы производительности EM Express:

Рис. 32 Страница производительности базы данных EM express

На этой странице приведено объединенное представление всех данных по

производительности для данного момента времени. Данные по производительности включают

Page 174: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

174

аналитику ASH, монитор SQL, ADDM и метрики, которые описывают характеристики нагрузки и

использование ресурсов базы данных.

Страница производительности может отображать исторические и текущие данные.

Временной интервал может быть выбран из диалога "Select Time Period" или с помощью полосы

прокрутки "Time Picker" в верхней части страницы. После выбора временного интервала имеющиеся

данные будут отображены на соответствующей вкладке. На полосе прокрутки отображается среднее

количество активных сессий за период времени. При наличии пиков на полосе прокрутки указатель

интервала времени может быть перемещен на интересующее время для получения более детальной

информации (на рис. 30 указатель установлен на 03:55 PM).

При работе в режиме реального времени данные производительности извлекаются из

представлений памяти базы данных. Полоса прокрутки времени отображает данные за прошедший

час, и DBA может указать любой временной интервал внутри этого времени. "По умолчанию"

отображаются последние пять минут. При работе с историческими данными происходит извлечение

их из репозитория AWR. Администратор может выбрать любой временной интервал, если данные

имеются в AWR. Содержимое страницы производительности может быть сохранено как составной

отчет текущей активности.

Страница производительности систематизирует данные производительности путем

разделения их на несколько вкладок, каждая из которых относится к разным аспектам

производительности базы данных. На странице производительности доступны следующие вкладки:

Сводка (Summary) - В режиме реального времени на этой вкладке выдается обобщенное

представление производительности системы в терминах потребление ресурсов сервера

(CPU, ввод/вывод и потребление памяти), а также среднее количество активных сессий. В

историческом режиме на вкладке отображаются данные производительности системы в

терминах потребления ресурсов, среднего количества активных сессий и данные по

профилю нагрузки.

Активность (Activity) --На вкладке отображаются данные аналитики ASH Analytics для

данных реального времени или исторических данных.

Нагрузка (Workload) - На вкладке отображаются данные о профиле нагрузки, а именно

интенсивность вызовов, интенсивность регистрации пользователей и количество сессий.

Дополнительно на вкладке приводятся список наиболее интенсивных SQL-запросов для

выбранного временного интервала. В режиме реального времени для SQL запросов

отображаются только времена базы (DB time) данных. В режиме исторических данных

пользователь также может увидеть и другие метрики, например, время CPU или

количества выполнений.

RAC - Отображаются специфические для RAC метрики, например, количество полученных

глобальных блоков кэша, или средняя задержка передачи блока.

Отслеживаемые SQL запросы (Monitored SQL) - На вкладке отображается выполнение

отслеживаемых SQL запросов, кода PL/SQL и операций базы данных (Database Operations)

для режима реального времени и исторического режима.

ADDM - Отображаются данные ADDM и отчеты ADDM реального времени для обоих

режимов работы.

Page 175: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

175

Текущие находки ADDM (Current ADDM Findings) - На вкладке выводятся данные анализа

производительности системы в реальном времени за последние пять минут. Вкладка

доступна только в режиме реального времени, а ее содержимое обновляется только, если

селектор выбора времени указывает на текущее время.

Page 176: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

176

Управление памятью В ранних релизах Oracle управление памятью экземпляра было весьма сложным ручным

процессом, в котором немалую роль играла интуиция администратора. С течением времени, читай с

развитием ядра, Oracle добавлял все больше и больше возможностей автоматизации этого процесса.

В версии 12c существует единственный параметр, позволяющий экземпляру базы данных

автоматически настраивать все пулы памяти. Если параметру инициализации MEMORY_TARGET

задано требуемое целевое значение, экземпляр при запуске затребует у операционной системы это

количество памяти и автоматически разместит разные пулы памяти.

Дополнительно можно указать величину максимального размера памяти

MEMORY_MAX_TARGET. Параметр MEMORY_TARGET является динамическим и может быть изменен

без перезапуска экземпляра. MEMORY_MAX_TARGET является статическим, и его изменения

потребует остановки экземпляра. Он служит верхним пределом для MEMORY_TARGET, поэтому

случайно не получится установить MEMORY_TARGET слишком большим.

При использовании автоматического управления памятью экземпляр перераспределяет

память между SGA и PGA автоматически по мере изменения нагрузки. Базы данных, созданные с

помощью DBCA с использованием базовых инсталляционных опций, будут использовать

автоматическое управление памятью "по умолчанию". Если экземпляр не использует автоматическое

управление памятью, то включить этот режим можно с использованием следующих команд:

SQL> ALTER SYSTEM SET MEMORY_TARGET = nM;

SQL> ALTER SYSTEM SET SGA_TARGET = 0;

SQL> ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 0;

Дополнительно можно выдать следующую команду

SQL> ALTER SYSTEM SET MEMORY_MAX_TARGET = nM SCOPE = SPFILE;

Соотношения между четырьмя параметрами, используемыми автоматическим управлением

памятью (Automatic Memory Management, AMM), описываются следующим образом:

memory_target – Если задан параметр MEMORY_TARGET, то экземпляр при запуске

разместит заданное параметром количество памяти, "по умолчанию" выделив 60%

размещенного для SGA, а 40% - PGA. С течением времени работы экземпляр будет

перераспределять память между системной глобальной областью (SGA) и программной

глобальной областью (PGA). Если параметр MEMORY_TARGET не задан, то автоматическое

управление памятью не используется, даже если задано значение параметра

MEMORY_MAX_TARGET.

memory_max_target – Если параметр установлен, то его значение определяет

максимальный объем памяти, который Oracle запросит у операционной системы для

размещения SGA и PGA. Если параметр не задан, то считается, что он равен значению

MEMORY_TARGET.

sga_target – Параметр необязателен при использовании автоматического управления

памятью. Если значение задано, и значение MEMORY_TARGET также задано, то величина

Page 177: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

177

SGA_TARGET становится минимально возможной величиной памяти, которая может быть

выделена SGA автоматически.

pga_aggregate_target – Параметр необязателен при использовании автоматического

управления памятью. Если значение задано, и MEMORY_TARGET также задано, то

значение PGA_AGGREGATE_TARGET становится минимально возможной величиной

памяти, которая может быть выделена PGA автоматически.

Автоматическое управление разделяемой памятью (Automatic Shared Memory

Management)

Механизм Automatic Shared Memory Management (ASMM) является предшественником

автоматического управления памятью (Automatic Memory Management, AMM). Если есть

необходимость использовать ASMM вместо AMM, общий объем памяти экземпляра SGA задается с

помощью параметра инициализации SGA_TARGET. Экземпляр Oracle автоматически распределит эту

память между различными частями SGA. При использовании ASMM некоторые компоненты SGA

нужно задавать вручную, включая

LOG_BUFFER - Размер буфера журнала.

DB_KEEP_CACHE_SIZE - Размер буфера удержания.

DB_RECYCLE_CACHE_SIZE - Размер буфера повторного использования.

DB_nK_CACHE_SIZE - Размер буфера(ов) для нестандартных размеров блоков.

Вся память, выделенная управляемым вручную компонентам, вычитается из величины

SGA_TARGET, а остаток распределяется между компонентами, размер которых управляется

автоматически:

SHARED_POOL_SIZE - Разделяемый пул.

LARGE_POOL_SIZE - Большой пул.

JAVA_POOL_SIZE - Пул Java.

DB_CACHE_SIZE - Буферный кэш.

STREAMS_POOL_SIZE - Потоковый пул.

Механизм перераспределения памяти, как AMM, так и ASMM, использует статистики,

собранные для базы данных, поэтому ни одна из этих опций не может быть использована, если

параметр инициализации STATISTICS_LEVEL установлен в BASIC.

Буферный кэш

Буферный кэш базы данных разделен на несколько пулов. Отдельные пулы могут быть

настроены вручную либо для удержания данных в кэше, либо для возможного освобождения после

завершения использования. Определенным объектам схемы может быть назначен подходящий

буферный кэш для обеспечения лучшего контроля над старением блоков. В системе существуют

следующие буферные пулы:

Пул "по умолчанию" (Default pool) - Пул, где обычно располагаются, кэшируются, блоки.

Если дополнительные пулы вручную не настроены, то этот пул является единственным

пулов в системе.

Page 178: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

178

Пул удержания (Keep pool) - Пул предназначен для блоков, к которым предполагается

частое обращение, но они все равно покидают пул "по умолчанию" из-за старения и

требования пространства для размещения новых блоков. Целью буфера удержания

является сохранение объектов в памяти как можно дольше, чтобы снизить количество

операций ввода/вывода.

Пул повторного использования (Recycle pool) - Этот пул предназначен для блоков,

которые будут использоваться нечасто. Пул повторного использования предотвращает

избыточное использование пространства кэша объектами. В этой области следует

располагать большие сегменты, доступ к которым происходит случайным, хаотичным

образом. В пуле "по умолчанию" эти сегменты вызовут избыточный сброс буфера на диск

без каких-либо выгод, так как в момент, когда блок будет нужен повторно, он уже будет

сброшен на диск.

Page 179: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

179

Выявление и анализ проблем производительности Автоматический монитор диагностики базы данных (Automatic Database Diagnostic Monitor

или ADDM) представляет собой утилиту, встроенную в функциональность базы данных Oracle, которая

автоматически определяет и сообщает о проблемах с производительностью. Функциональность

ADDM основана на снимках репозитория автоматической нагрузки (Automatic Workload Repository,

AWR). Данные из снимков анализируются, а результаты отображаются как "находки" ADDM на

домашней странице базы данных в Oracle Enterprise Manager Cloud Control. Cloud Control является

начальным инструментом для диагностического мониторинга и, когда возможно, следует запускать

ADDM с его помощью. Если Cloud Control недоступен, то можно запускать ADDM с помощью пакета

DBMS_ADDM. Для использования API и пакета DBMS_ADDM необходимо наличие привилегии

ADVISOR.

Находки ADDM позволяют администраторам БД быстро обнаруживать проблемы с

производительностью, в идеале быстрее, чем об этом заявят пользователи. Первым или одним из

первых шагов в поиске и устранении проблем производительности должен быть просмотр

результатов анализа ADDM. Каждая находка ADDM будет включать в себя рекомендации для

устранения или уменьшения проблем с производительностью. Регулярный просмотр и реализация

рекомендаций ADDM должны быть частью регулярных обязанностей администратора по

обслуживанию БД.

После каждого снимка AWR ("по умолчанию" раз в час) выполняется анализ ADDM, а его

результаты сохраняются в базе данных. При обнаружении потенциальной проблемы, ADDM

выполняет следующие шаги:

Находит причину проблемы с производительностью.

Выдает рекомендации по устранения причины.

Оценивает ожидаемые результаты.

Указывает области, где нет необходимости настройки.

Монитор ADDM проводит анализ сверху вниз. Вначале определяются симптомы проблем

производительности, и уточняется анализ с целью обнаружить корневую причину. Монитор ADDM

использует временные статистики БД для определения наличия проблем с производительностью.

Время базы данных (DB time) это накопленное время, потраченное базой данных на выполнение

запросов пользователей. Время DB time включает в себя время ожидания и процессорное время всех

активных пользовательских сессий. Максимальной целью является минимизация DB time для данной

нагрузки. При этом база данных сможет обслужить максимально возможное количество запросов

пользователей на имеющихся ресурсах.

Настройка производительности это итерационный процесс. Когда одна проблема решена,

другая часть системы может стать новым узким местом. Решение проблем производительности

может потребовать нескольких циклов даже с использованием возможностей ADDM. Если проблема

производительности определена, то монитор ADDM рекомендует потенциальные решения. Если

возможно, то может быть выдан набор решений для одной проблемы. Рекомендации ADDM могут

включать себя следующие предложения:

Page 180: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

180

Аппаратные изменения - Добавление процессоров или изменение в системе

ввода/вывода.

Изменения параметров базы данных - Изменение параметров инициализации

экземпляра.

Изменения в схеме - Создание хэш-секционирования в таблице или индексе, или

применение автоматического управления сегментами (ASSM).

Изменение приложений - Примеры, которые могут быть использованы для опций

кэширования для последовательностей и использования связанных переменных.

Использование других ассистентов - Монитор ADDM может быть предложить

использовать SQL Tuning Advisor для вызывающих большую нагрузку SQL-запросов или

примененить Segment Advisor для активно используемых объектов (горячие объекты).

"По умолчанию" монитор ADDM включен. Его поведением управляют параметры

инициализации CONTROL_MANAGEMENT_PACK_ACCESS и STATISTICS_LEVEL. Чтобы включить монитор,

нужно установить параметр CONTROL_MANAGEMENT_PACK_ACCESS в DIAGNOSTIC+TUNING ("по

умолчанию") или DIAGNOSTIC. При установке этого параметра в NONE запрещает многие

возможности Oracle, включая ADDM. Для включения ADDM параметр STATISTICS_LEVEL следует

установить в TYPICAL ("по умолчанию") или же ALL. Установка этого параметра в BASIC запрещает

многие возможности Oracle, включая ADDM.

Анализ производительности ввода/вывода частично зависит от значения параметра

DBIO_EXPECTED, описывающего ожидаемую производительность подсистемы I/O. Это значение

является средним временем в миллисекундах, нужное для чтения одного блока. "По умолчанию",

Oracle использует 10 миллисекунд, что приемлемо для большинства жестких дисков. Основываясь на

имеющемся оборудовании, можно выбрать другое время. Если подходящее значение определено, то

можно изменить DBIO_EXPECTED. В примере показано, как установить значение 600 миллисекунд.

Приведенный код должен выполнять пользователь SYS:

SQL> EXECUTE DBMS_ADVISOR.SET_DEFAULT_TASK_PARAMETER('ADDM','DBIO_EXPECTED',600);

"По умолчанию" AWR создает снимки производительности каждый час и хранит статистики в

репозитории нагрузки в течение восьми дней. При необходимости можно изменить оба этих

временных интервала. Рекомендуется установить период хранения по крайней мере один месяц.

Более длинные периоды могут быть рекомендованы, если они включают полный бизнес-цикл, что

зависит от потребностей бизнеса.

Результаты анализа ADDM представлены в виде набора находок. Находки ADDM принадлежат

к одному из трех классов:

Проблема (Problem) - Находки, описывающие причину проблем с производительностью.

Признак (Symptom) - Находки, описывающие данные, часто ведущие к

проблемам/проблеме.

Информация (Information) - Находки, используемые для отчета о местах системы, не

влияющих на производительность.

Page 181: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

181

Любая найденная проблема будет квалифицирована с оценкой доли времени базы данных,

которую эта проблема вызывает. Если проблема имеет несколько причин, монитор ADDM может

сообщить о нескольких находках для нее. Рекомендации составляются из действий и объяснений. Все

действия в рекомендациях должны быть реализованы в требуемой последовательности, чтобы

достичь предполагаемой выгоды. Действие ADDM может представлять несколько решений. В этом

случае, логичнее всего реализовывать самое простое решение. В любом случае за все отвечает

администратор.

Page 182: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

182

Проведение реального тестирования приложений. Для тестирования реальной нагрузки приложений используются две утилиты Oracle - повтор

базы данных Database Replay и анализатор производительности SQL - SQL Performance Analyzer (SPA).

Эти две утилиты обеспечивают всеобъемлющее решение для тестирования влияния планируемых

изменений на производительность приложений. С их помощью можно удостовериться, что

планируемые изменения в базе данных не приведут к снижению производительности. Утилита SPA

позволяет оценить результаты изменений окружения базы данных на планы выполнения SQL-

запросов и наборы статистик, запуская запросы по отдельности и последовательно в текущем и

планируемом окружении. Утилита SQL Performance Analyzer использует наборы настройки SQL (SQL

Tuning Sets), советник настройки SQL (SQL Tuning Advisor) и систему управления планами SQL (SQL Plan

Management). Анализатор производительности автоматизирует и упрощает процесс выявления

потенциального влияния изменений даже при очень высоких SQL нагрузках.

SQL Performance Analyzer

Прежде, чем запустить анализатор производительности SQL (SQL Performance Analyzer), нужно

выполнить захват SQL операторов из промышленной системы. Захват рабочей нагрузки оказывает

незначительное влияние на БД. Захват рабочей нагрузки, содержащей большое количество SQL

операторов, лучше опишет базу данных промышленной системы, что поможет анализатору

производительности SQL точнее предсказать потенциальное влияние планируемых изменений на

производительность. В идеале, следует захватить все SQL-операторы, вызываемые приложениями

или выполняемые заданиями промышленной базы данных. Захваченные SQL-операторы могут быть

сохранены в виде набора настройки SQL и использованы в качестве входных данных анализатора

производительности. Набор настройки SQL представляет собой объект базы данных, включающие в

себя один и более оператор SQL, вместе с их статистиками и контекстом выполнения.

Операторы SQL могут быть загружены в набор настройки SQL из нескольких источников.

Можно использовать кэш курсоров, репозиторий нагрузки AWR или уже имеющийся набор настройки

SQL. Использование наборов настройки SQL позволяет администратору:

Хранить SQL код и любую необходимую дополнительную информацию в едином

постоянном объекте базы данных.

Заполнять, изменять, удалять и выбирать захваченные SQL операторы в наборы настройки

SQL.

Загружать и объединять содержимое различных источников, такие как репозиторий AWR

и кэш курсоров.

Экспортировать наборы настройки SQL из системы, где был произведен захват нагрузки, и

импортировать в другую систему

Использовать SQL нагрузку в качестве входных данных для других консультантов, таких как

SQL Tuning Advisor или the SQL Access Advisor

Используемые представления словаря данных

Для наблюдения работы анализатора производительности SQL и просмотра результатов

анализа используются следующие представления:

Page 183: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

183

Представление DBA_ADVISOR_TASKS содержит описания созданных задач анализатора

производительности SQL.

Представление DBA_ADVISOR_EXECUTIONS содержит данные о выполнении задач.

Представление DBA_ADVISOR_FINDINGS содержит результаты поиска анализатора

производительности SQL. SQL Performance Analyzer обнаруживает следующие типы

находок:

o Проблемы, такие как снижение производительности.

o Симптомы, такие как изменения планов выполнения.

o Ошибки, такие как отсутствие объектов или представлений.

o Информационные сообщения.

Представление DBA_ADVISOR_SQLPLANS содержит список всех планов выполнения.

Представление DBA_ADVISOR_SQLSTATS содержит список всех разборов SQL и статистик

их выполнения.

Представление V$ADVISOR_PROGRESS содержит ход анализа производительности SQL.

Последовательность действия при анализе изменения производительности

Захватить рабочую нагрузку SQL, которую предполагается анализировать, и сохранить ее в

виде набора настройки SQL.

Если для тестирования планируется использовать отдельную от продуктивной систему, то

окружение тестовой системы должно быть максимально близким к продуктивной. Набор

настройки SQL нужно перенести на тестовую систему.

На тестовой систем создается задача анализатора производительности SQL.

Выполняется предварительный перед внесением изменений в настройки прогон SQL-

операторов из набора настройки.

Выполняются планируемые изменения в системе.

На измененной системе выполняется прогон SQL-операторов из набора настройки.

Проводится сравнение данных производительности двух прогонов и создается отчет,

указывающий на SQL-операторы, выполнение которых улучшилось, не изменилось или

ухудшилось после изменений.

Проводится настройка SQL-операторов, выполнение которых ухудшилось.

Пакет DBMS_SQLPA содержит процедуры и функции для работы SQL Performance Analyzer.

Следующие процедуры применяются для создания и проведения задач анализа, а также создания

отчетов о находках:

CREATE_ANALYSIS_TASK - Эта функция применяется для создания задач анализа как для

одиночного SQL оператора из различных источников (SQL текста, AWR или кэша курсоров),

так и для набора настройки SQL.

EXECUTE_ANALYSIS_TASK - Эта функция/процедура выполняет ранее созданную задачу

анализа, функция возвращает новое имя задачи.

REPORT_ANALYSIS_TASK - Процедура выводит результаты выполнения задачи анализа.

Page 184: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

184

Повтор выполнения базы данных

Утилита Oracle Database Replay проигрывает ранее захваченные внешние вызовы базы

данных, сделанные за время захвата рабочей нагрузки. Захват включает в себя всю значимую

информацию о клиентских запросах, такую как SQL-запрос, значение переменных связывания и

информацию о транзакции. Фоновая активность базы данных и задания планировщика не

включаются в захват. Кроме того, следующие типы клиентских запросов не включаются в данные

захвата:

Данные прямой загрузки из внешних источников, загруженные при помощи утилиты SQL-

Loader.

Разделяемые серверные запросы (Oracle MTS).

Данные потоков Oracle (Oracle Streams).

Данные расширенной репликации (Advanced replication).

Отличные от PL/SQL Advanced Queuing (AQ).

Ретроспективные запросы.

Перемещения объектов на основе Oracle Call Interface (OCI).

Доступ к объектам без использования SQL.

Распределенные транзакции.

Хорошей практикой считается перезапуск экземпляра перед началом процесса захвата. При

этом можно быть уверенным, что текущие и зависимые транзакции завершились или были откачены

до начала процесса захвата. Если экземпляр не перезапущен, то транзакции не завершены и будут

лишь частично включены в данные захвата.

"По умолчанию" при захвате рабочей нагрузки записываются все действия всех

пользователей. Фильтры рабочей нагрузки могут исключить или наоборот включить сессии

определенных пользователей в данные захвата. Можно использовать либо фильтры включения или

исключения, но не оба типа одновременно. Фильтры включения описывают сессии, которые должны

быть захвачены в рабочую нагрузку. Фильтры исключения указывают пользовательские сессии,

которые не будут включены в данные захвата. Чтобы добавить фильтр к процедуре захвата нагрузки

нужно использовать процедуру DBMS_WORKLOAD_CAPTURE.ADD_FILTER. Для удаления

существующего фильтра нужно использовать процедуру DBMS_WORKLOAD_CAPTURE.DELETE_FILTER.

Следует назначить однозначно определенную точку начала снятия рабочей нагрузки, так

чтобы база данных, используемая для снятия нагрузки, могла быть восстановлена к той же самой

точке перед началом снятия нагрузки. Желательно, чтобы в базе данных перед началом снятия

нагрузки не было активных пользовательских сессий. Активные сессии могут иметь активные

транзакции, которые не смогут быть воспроизведены полностью. Следует рассмотреть возможность

перезапуска экземпляра в режиме RESTRICTED перед запуском процесса захвата. Когда начинается

процесс захвата, база данных автоматически переключается UNRESTRICTED, и нормальные операции

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

процедуры DBMS_WORKLOAD_CAPTURE.START_CAPTURE, остановить процесс захвата следует с

помощью процедуры DBMS_WORKLOAD_CAPTURE.FINISH_CAPTURE.

Page 185: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

185

При необходимости можно экспортировать данные AWR из продуктивной системы, чтобы

было можно провести подробный анализ нагрузки на обеих системах. Эти данные нужны, если

планируется выполнить сравнение периодов AWR для пары захватов загрузки или повторов

выполнения. Для экспорта данных AWR используется процедура

BMS_WORKLOAD_CAPTURE.EXPORT_AWR.

Для контроля хода процесса захвата нагрузки можно использовать Oracle Enterprise Manager

Cloud Control или следующие представления:

DBA_WORKLOAD_CAPTURES - Содержит список всех захватов, созданных в базе данных.

DBA_WORKLOAD_FILTERS - Содержит список всех фильтров, используемых для

фильтрации нагрузки для данный базы данных.

После завершения захвата нагрузки необходимо обработать файлы захвата для того, чтобы

использовать их для воспроизведения нагрузки. Предварительная обработка преобразовывает

захваченные данные в файлы повторного проигрывания и создает требуемые для проигрывания

нагрузки метаданные. Захваченная рабочая нагрузка после обработки может быть многократно

воспроизведена на любой системе с той же версией Oracle. В общем случае для обработки

рекомендуется перенести захваченные файлы на другую систему. Хотя захват нагрузки имеет

минимальную избыточную нагрузку на систему, но обработка его результатов может быть

продолжительным по времени и ресурсоемким процессом. Лучше, если процесс обработки будет

выполняться на системе, которую будут использовать для воспроизведения нагрузки, нежели на

продуктивной. Файлы захвата обрабатываются при помощи процедуры

DBMS_WORKLOAD_REPLAY.PROCESS_CAPTURE.

После завершения обработки захваченной нагрузки полученные данные могут быть

воспроизведены на тестовой системе. При воспроизведении Oracle выполнит все записанные во

время захвата действия. Он воссоздаст все захваченные внешние запросы клиентов с теми же

временными параметрами, степенью конкурентности и последовательностью транзакций, которые

имели место на продуктивной системе. Утилита Database Replay использует программу клиентского

повтора для воссоздания внешних запросов. В зависимости от объема захваченной нагрузки может

возникнуть необходимость применения нескольких клиентов повтора. Клиент повтора имеет

встроенное средство калибровки для определения требуемого количества клиентов для получения

данной нагрузки. Проигрывается полная нагрузка, полученная в продуктивной базе, включая

операции DML и запросы SQL, поэтому данные в системе, предназначенной для проигрывания,

должны быть максимально логически близкими к системе, где проводился захват.

Page 186: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

186

Применение ресурсного менеджера для управления распределением

ресурсов Менеджер ресурсов Oracle Database Resource Manager (DRM) создан для оптимизации

выделения ресурсов конкурирующим сессиям базы данных. Менеджер DRM попытается

предотвратить проблемы, которые могут возникнуть, если операционная система принимает

решение о выделении ресурсов, требующих больших издержек, не зная о потребностях базы данных.

Менеджер DRM позволяет преодолеть эти проблемы путем предоставления базе данных большего

контроля над выделением аппаратных ресурсов. Менеджер DRM дает возможность выделить группы

сессий на основании их атрибутов и затем выделять ресурсы для групп так, чтобы оптимизировать

использование оборудования для имеющегося программного окружения. Информация,

реализующая функции разделения сессий и присвоения ресурсов, называется ресурсным планом.

Oracle 12c содержит несколько настроенных ресурсных планов, обеспечивающих директивы

управления ресурсами, которые смогут дать немедленную выгоду для основных типов установок баз

данных:

DEFAULT_MAINTENANCE_PLAN - План "по умолчанию" для окон обслуживания.

DEFAULT_PLAN - Базисный план "по умолчанию", план отдает приоритет операциям

SYS_GROUP и выделяет минимальные ресурсы для автоматизированного обслуживания и

диагностики.

DSS_PLAN - Пример плана для хранилища данных, план отдает приоритет критичным DSS

запросам перед некритичными и операциями ETL.

ETL_CRITICAL_PLAN - Пример плана для хранилища данных, план отдает приоритет

операциям ETL перед запросами DSS.

INTERNAL_QUIESCE - План для "заморозки" базы данных. План не может быть активирован

напрямую. Для активации нужно использовать команду QUIESCE.

MIXED_WORKLOAD_PLAN - Пример плана для смешанной нагрузки, план отдает

приоритет интерактивным операциям перед пакетными операциями.

Директивы ресурсного плана

Директивы ресурсного плана для потребительских групп могут указывать предельные

значения потребления для CPU или ввода/вывода для сессий в этой группе. Это ограничение

реализуется путем задания действий, которые следует сделать, если какая-либо операция в сессии

потребует больших ресурсов, нежели указано. Эти действия, называемые "переключателями",

возникают только для выполняющихся и потребляющих ресурсы сессий, не ожидающих

пользовательского ввода или циклов процессора. Возможны следующие действия:

Сессия будет переключена в потребительскую группу с меньшими доступными ресурсами.

Сессия будет прервана.

Текущий SQL-оператор сессии будет прерван.

Атрибут директивы ресурсного плана, определяющий тип выполняемого действия,

называется SWITCH_GROUP. Этот атрибут определяет потребительскую группу, в которую будет

переключена сессия при достижении требуемого значения. Если значением этого атрибута является

потребительская группа, то сессия будет переключена в указанную группу. Если имя

Page 187: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

187

группы"CANCEL_SQL", то выполнение текущего оператора SQL будет прервано. Наконец, если имя

группы "KILL_SESSION", то сессия будет прервана.

Ограничения сессий по вводу/выводу или потреблению циклов процессора

Атрибуты директив ресурсного плана, используемые для задания условий переключения

между потребительскими группами, приводятся ниже. "По умолчанию" все они установлены в

значение UNLIMITED.

SWITCH_TIME: Задает время (в секундах процессора), которое может выполняться вызов

перед тем, как будет выполнено действие.

SWITCH_IO_MEGABYTES: Задает объем ввода/вывода в мегабайтах, которое может быть

записано/прочитано в сессии перед переключением.

SWITCH_IO_REQS: Задает количество операций ввода/вывода, которое сессия может

выполнить перед переключением.

Имеется два атрибута ресурсного плана, которые можно использовать для изменения

поведения переключения ресурсных планов:

SWITCH_ESTIMATE: Если атрибут установлен в TRUE, то база данных оценивает время

выполнения каждого вызова. Если оценка превысит SWITCH_TIME, то сессия будет

переведена в заданную в SWITCH_GROUP группу до начала выполнения вызова. "По

умолчанию" значение FALSE.

SWITCH_FOR_CALL: Если атрибут установлен в TRUE, то сессия, переключенная

автоматически в другую потребительскую групп, возвращается в исходную

потребительскую группу после завершения вызова верхнего уровня. "По умолчанию"

значение NULL.

Page 188: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

188

Замечания по настройке производительности Эта тема вполне заслуживает отдельной монографии, а отнюдь не главы. Таких монографий

существует невероятное количество, но всегда следует помнить, что в конечном итоге они не

содержат окончательных рекомендаций по настройке именно определенной базы данных именно с

конкретными приложениями для используемой операционной системы и оборудования. Самое

главное, что можно извлечь из многочисленных книг независимых авторов и документации Oracle это

общую методологию, как добиться приемлемого уровня производительности. Существует ряд

простых советов, что нужно делать:

Настраивайте БД только при наличии причин - До тех пор, пока не возникла проблема с

производительностью, не стоит проводить настройку. До тех пор, пока проблема не

возникла, не стоит пытаться ее решить. Это не значит, что администратор не должен

проводить проактивный поиск проблем. Если был обнаружен SQL-запрос, потребляющий

много ресурсов, то возможно(!) найдено узкое место. Работа по настройке такого запроса

является прямой задачей администратора.

Собирайте данные - Перед внесением любых изменений администратору следует

применять средства, предлагаемые Oracle для сбора информации о проблемах

производительности. Внесение изменений в отсутствие данных практически всегда

является пустой тратой времени. Последние релизы базы данных получили значительный

набор средств для сбора и анализа информации о наиболее общих причинах снижения

производительности. Воспользуйтесь ими перед внесением изменений.

Делайте последовательные изменения - Изменения нужно делать последовательно.

Внесено изменение - сделан тест. При внесении нескольких изменений сложно, или

вообще невозможно, сказать, какое из них стало причиной улучшения или ухудшения

ситуации. Это особенно важно, если вносимые изменения имеют глобальное влияние на

систему. Изменение, улучшающее производительность в коротком цикле тестирования,

может вызвать общую деградацию производительности или другую проблему в более

длительном периоде, что будет обнаружено после завершения тестирования. Например,

обычной ловушкой является разительное улучшение скорости работы подсистем ввода

данных и одновременная деградация подсистем, связанных с созданием отчетов.

Остановитесь - Как только было установлено исправление для найденной проблемы

производительности, нужно остановиться и не продолжать настройку. Хотя вы уже и

начали настройку, не забывайте о первом правиле и не продолжайте ее в отсутствие

проблемы.

Наблюдайте - Администратор, очевидно, отслеживает производительность базы данных

ежедневно. В дополнение к этим обязанностям необходимо следующие несколько дней

после внесения изменений обратить дополнительное внимание на любые элементы базы

данных, которые могут зависеть от внесенных изменений. Чем большие и широкие

изменения были сделаны, тем дольше следует отслеживать поведение базы данных на

предмет нежелательных последствий.

Page 189: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

189

Дисковая память

Управление объектами базы данных

Часть базисных административных функций администратор БД может выполнить с помощью

Oracle Enterprise Manager Express (EM Express). Используя web-интерфейс можно просматривать,

создавать и изменять различные объекты размещения данных. После первичной регистрации в EM

Express будет выведена следующая страница:

Рис. 33 Домашняя страница базы данных в EM Database Express

Вторая ссылка "Storage" открывает выпадающее меню для управления различными типами

структур хранения базы данных Oracle. При выборе одного из элементов меню откроется один из

следующих экранов.

Page 190: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

190

Рис. 34 Управление объектами дисковой памяти

Табличные пространства (Tablespaces)

С помощью функций этого экрана можно выполнять стандартные административные задачи

по управлению табличными пространствами, включая создание, удаление, добавление файлов

данных, изменение статуса (на "только чтение") и т.д.

Рис. 35 Управление табличными пространствами

Управление табличным пространством отката (Undo)

Эта вкладка предназначена для отображения статистики использования пространства отката.

Необходимость во втором пространстве undo встречается довольно редко, а единственное

пространство не требует больших административных затрат. Этот экран полезен для проверки, что

пространство отката имеет достаточный размер для текущей активности базы данных.

Page 191: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

191

Рис. 36 Управление табличным пространством UNDO

Группы журналов повторов (Redo Log Groups)

Как и экран табличных пространств, экран управления журналами повторов позволяет

выполнить ряд административных действий с журналами повторов: создать, удалить, добавить новых

членов и т.д. На экране отображается информация об активной группе журналов, завершении

архивирования и т.д.

Рис. 37 Управление журнальными файлами повторов

Архивные журналы (Archive Logs)

На экране приведена информация об архивированных журналах повторов.

Page 192: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

192

Рис. 38 Управление архивными журналами

Управляющие файлы (Control Files)

На экране выводятся данные об управляющих файлах базы данных. Единственной

административной операцией является возможность создания резервной копии файла в формате

трассировки.

Рис. 39 Управление управляющими файлами базы данных

Управляемые Oracle файлы

Система Oracle Managed Files (OMF) предназначена для упрощения администрирования

файлов базы данных. При использовании OMF администратор указывает директории файловой

системы для файлов разных типов, после чего база данных автоматически создаст, назовет и будет

управлять файлами на уровне объектов базы данных в указанных местах файловой системы.

Page 193: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

193

Например, при создании табличного пространства в параметрах DATAFILE не нужно указывать путь и

имя файла. Система OMF работает с менеджером логических томов (LVM), но не работает с "сырыми"

устройствами. OMF можно использовать для создания и удаления при необходимости следующих

объектов базы данных:

Табличных пространств (Tablespaces).

Журналов повторов (Redo log files).

Управляющих файлов (Control files).

Архивированных журналов (Archived logs).

Файлов отслеживания изменений блоков (Block change tracking files).

Ретроспективных журналов (Flashback logs).

Резервных копий RMAN (RMAN backups).

OMF не используется при создании или именовании административных файлов, как то, файлы

трассировки, аудита, журналы оповещений (alert logs) и дампы памяти.

Имеется три параметра инициализации, задающие директории для файлов разных типов.

Указанные директории должны существовать, и на эти директории должны быть установлены

разрешения, позволяющие базе данных создавать файлы. При использовании OMF Oracle проверяет

уникальность создаваемого файла и удаляет файл при отсутствии необходимости в нем. При

использовании OMF используются следующие параметры инициализации:

DB_CREATE_FILE_DEST - Определяет путь "по умолчанию", где база данных будет

создавать файлы данных или файлы временного табличного пространства. Этот же путь

используется как место "по умолчанию" для создания журналов повторов и управляющих

файлов, если не задан параметр DB_CREATE_ONLINE_LOG_DEST_n.

DB_CREATE_ONLINE_LOG_DEST_n - Определяет расположение "по умолчанию" журналов

повторов и управляющего файла. Меняя значение "n" можно мультиплексировать

журналы повторов или управляющие файлы. Всего можно задать до пяти копий.

DB_RECOVERY_FILE_DEST - Задает расположение области быстрого восстановления (Fast

Recovery Area). Указанные путь будет использоваться как место "по умолчанию" для

журналов повторов и управляющего файла или мультиплексированных копий файлов

повторов и управляющих файлов, если не задан параметр

DB_CREATE_ONLINE_LOG_DEST_n.

Page 194: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

194

Администрирование ASM

Система автоматического управления дисковой памятью Oracle (Automatic Storage

Management, ASM) это решение Oracle, предназначенное для управления размещением файлов базы

данных. Она работает как менеджер томов, создающий файловую систему, предназначенную

исключительно для базы данных. При создании тома указывается режим зеркалирования (mirroring)

или чередования (striping). При использовании технологии ASM, помимо обычной базы данных,

существует специальный выделенный экземпляр ASM. Экземпляр Oracle ASM также использует

возможности системы управляемых Oracle файлов (OMF). Файлы OMF создаются автоматически,

имена им присваиваются без участия администратора. Система OMF также автоматически удаляет

файлы, если табличные пространства или файлы были удалены в базе данных. Экземпляр ASM

управляет дисковым пространством и распределением нагрузки ввода/вывода между дисками для

оптимизации производительности. Система ASM дает следующие преимущества по сравнению с

обычными файловыми системами:

Упрощает операции по созданию баз данных и управлению дисковым пространством.

Распределяет данные между несколькими дисками для обеспечения равномерной

нагрузки.

Автоматически проводит балансировку данных после внесения изменений конфигурации

дисковой памяти.

Экземпляр Oracle ASM использует ту же базисную технологию, как и БД Oracle. Область

глобальной памяти SGA и фоновые процессы ASM экземпляра близки к аналогичным процессам

самой базы данных. Область SGA экземпляра ASM значительно меньше, чем область SGA базы

данных, и имеет меньшее количество внутренних компонент, так как ASM имеет меньшую

функциональность. Единственной функцией экземпляра ASM является монтаж дисковых групп и

обеспечение доступа к связанным с ними файлам базы данных со стороны экземпляров БД.

Экземпляр ASM не выполняет монтаж/запуск экземпляров БД. Экземпляр Oracle ASM состоит из

следующих логических элементов:

Диски ASM (ASM Disks) - Устройство дисковой памяти, выделенное для создания

дисковой группы ASM. Диск ASM это физический диск или его секция, логический диск

(Logical Unit Number, LUN) дискового массива, логический том или устройство сетевой

памяти.

Дисковые группы ASM (ASM Disk Groups) - Набор дисков ASM, управляемый как одно

логическое целое.

Файлы ASM (ASM Files) - Файлы, хранимые в группе Oracle ASM группе. База данных

может хранить файлы данных, управляющие файлы, текущие файлы повторов и

некоторые другие типы файлов на файловой системе Oracle ASM.

Экстенты ASM (ASM Extents) - Область, предназначенная для размещения содержимого

файлов Oracle ASM, используются сырые устройства. Файл ASM состоит из одного или

более экстента, экстент состоит из одного или более единиц размещения ASM.

Единицы размещения ASM (ASM Allocation Units) - Базисная единица размещения или

выделения памяти в дисковой группе.

Page 195: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

195

Экземпляр ASM (ASM Instance) - Специализированный экземпляр Oracle, управляющий

дисками Oracle ASM. Он управляют метаданными дисковой группы и сообщает

расположение файлов данных экземпляру базы данных.

Система Oracle ASM не поддерживает напрямую размещение некоторых типов

административных файлов в дисковых группах, а именно файлов трассировки, файлов журналов

оповещений, файлов экспорта и дампов ядра. Система Oracle ASM поддерживает основные типы

файлов, нужные базе данных. В списке приводятся наиболее часто используемые типы файлов и

шаблоны, описывающие атрибуты для их создания, которые могут быть размещены в ASM:

Управляющие файлы / Control files - CONTROLFILE

Файлы данных / Data files - DATAFILE

Журналы повторов / Redo log files - ONLINELOG

Архивные журналы / Archive log files - ARCHIVELOG

Временные файлы / Temporary files - TEMPFILE

Фрагменты резервных копий файлов данных / Data file backup pieces - BACKUPSET

Фрагменты резервных копий файлов журналов / Archive log backup piece - BACKUPSET

Файл параметров экземпляра / Server initialization parameter file (SPFILE) -

PARAMETERFILE

Журналы ретроспективных повторов / Flashback logs - FLASHBACK

Наборы утилиты DataPump / Data Pump dumpset - DUMPSET

Полностью квалифицированная форма имен файлов

Когда бы ни создавался файл в Oracle ASM, система Oracle Managed Files автоматически

создает для него полностью квалифицированное имя. Полностью квалифицированное имя

представляет собой полный путь в файловой системе Oracle ASM. Это имя можно использовать в

операциях Oracle ASM, за исключением операции создания дисковой группы. Полностью

квалифицированное имя имеет следующий вид:

+diskgroup/dbname/filetype/filetypetag.file.incarnation , где:

+diskgroup - Имя дисковой группы с предшествующим знаком "+". Знак "+" эквивалентен

корневой директории файловой системы ASM.

dbname - Значение параметра DB_UNIQUE_NAME базы данных, которой принадлежит

файл.

filetype - Тип файла Oracle.

filetypetag - Специфичная для данного типа информация о файле.

file.incarnation - Пара файл/инкарнация. Используется для гарантий уникальности.

Пример полностью квалифицированного файла:

+dg1/v11/controlfile/current.271.839783087

При запросе создания файла полностью квалифицированное имя не указывается. Имя

задается в виде алиаса или имени дисковой группы, после чего система Oracle ASM создает файл в

желаемом месте на основании типа файла. Затем система Oracle ASM присваивает подходящее

Page 196: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

196

полностью квалифицированное имя. Если в запросе на создание файла указан алиас, то система

Oracle ASM создает алиас и связывает его с полностью квалифицированным именем. За один запрос

можно создавать один или несколько файлов.

Алиасы имен файлов

Алиасы имен файлов могут быть использованы для ссылки на существующие файлы и для

создания новых файлов ASM. Алиас состоит из имени дисковой группы с лидирующим знаком "+" и

имени файла. Алисы имен файлов используют иерархическую структуру директорий со знаками "\"

или "/", разделяющими компоненты имени. Алиасы должны включать имя дисковой группы. Алиасы

не могут существовать на уровне корня (+). Если файл создан с алиасом, то для доступа к нему можно

использовать либо алиас, либо полное имя файла. Имена алиасов не могут оканчиваться на пару

чисел, разделенных точкой. Примеры алиасов:

+dg1/v11/control_file.bkp

В примере приводится создание табличного пространства отката с файлом данных,

расположенным в дисковой группе dg1 и имеющим алиас zz_2:

SQL> CREATE UNDO TABLESPACE z_undo_2 DATAFILE '+dg1/z/zz_2' size 200m;

В итоге будет создано табличное пространство с одним файлом, и этому файлу будет

назначен алиас:

ASMCMD> ls -l /dg1/z

Type Redund Striped Time Sys Name

DATAFILE UNPROT COARSE FEB 03 14:00:00 N zz_2 =>

+DG1/Z/DATAFILE/Z_UNDO_2.264.870704891

ASMCMD>

Если при создании файла данных использовался алиас, то он не является файлом Oracle

Managed Files (OMF), иначе говоря, при удалении табличного пространства, система OMF не удалит

его, и это придется делать вручную. Для удаления вручную нужно использовать следующую команду

SQL:

SQL> ALTER DISKGROUP dg1 DROP FILE '+dg1/z/zz_2';

Page 197: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

197

Управление дисками ASM и дисковыми группами

Дисковая группа ASM состоит из нескольких дисков и является базовым объектом, которым

управляет Oracle ASM. Дисковые группы содержат информацию, необходимую для управления

дисковым пространством. Дисковая группа состоит из дисков, файлов и единиц размещения. Файл

располагается внутри одной группы. Одна группа может содержать файлы разных баз данных. Одна

база данных может использовать файлы из разных дисковых групп.

Атрибуты дисковых групп

Атрибуты дисковой группы представляют собой параметры, привязанные к дисковой группе,

но не к экземпляру ASM. Некоторые из наиболее общих атрибутов приводятся ниже. Для получения

полной информации следует обратиться к документу Oracle ASM Administrator's Guide.

ACCESS_CONTROL.ENABLED - Атрибут определяет, включен ли контроль доступа (File

Access Control) Oracle ASM для группы. Возможные значения true или false. "По

умолчанию" FALSE. Атрибут может быть установлено только при изменении дисковой

группы.

ACCESS_CONTROL.UMASK - Атрибут определяет маскирование разрешений при создании

файлов Oracle ASM для пользователей-владельцев файла, пользователей, входящих в

группу владельца файла и остальных, не включенных в группу. Атрибут применяется ко

всем файлам дисковой группы.

AU_SIZE - Экстент файла состоит из одной или более единиц размещения. Файл Oracle

ASM состоит из одного или более экстента. При создании дисковой группы можно задать

размер единицы размещения с помощью параметра AU_SIZE. Допустимые значения 1, 2,

4, 8, 16, 32 или 64 MB, в зависимости от уровня совместимости группы.

COMPATIBLE.ASM - Этот атрибут задает формат структур данных для метаданных ASM в

дисковой группе. Версия ASM должна быть равна или выше, чем это значение, чтобы

получить доступ к данной дисковой группе. Параметр COMPATIBLE.ASM всегда должен

быть выше или равен COMPATIBLE.RDBMS для той же дисковой группы. Например, можно

установить COMPATIBLE.ASM дисковой группы в 11.0, а COMPATIBLE.RDBMS - в 10.1. В этом

случае дисковая группа может управляться только версией ASM 11.0 и выше. При этом

любая база данных версии 10.1 или старше может использовать данную дисковую группу.

При увеличении значений обоих этих параметров значение COMPATIBLE.ASM следует

увеличивать первым.

COMPATIBLE.RDBMS - Параметр задает формат сообщений, которыми обмениваются

экземпляр ASM и экземпляр базы данных. Параметр задает минимальную версию

клиентской базы данных, которая может использовать дисковую группу. Для разных

дисковых групп в рамках одного экземпляра ASM можно задавать разные значения

параметра в зависимости от версий клиентских БД.

CONTENT.TYPE - Задает тип дисковой группы: data, recovery или system.Значение

определяет "расстояние" до ближайшего соседнего диска в сбойной (failure) группе, куда

Oracle ASM копирует данные при зеркалировании. Значением "по умолчанию" является

"data", что определяет дистанцию 1 до ближайшего диска. Значение "recovery" задает

дистанцию 3, а значение "system" задает значение 5.

Page 198: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

198

DISK_REPAIR_TIME - Определяет продолжительность времени, которое диск может быть

недоступен из-за временной неработоспособности перед тем, диск будет удален из

дисковой группы. Чтобы функциональность можно было использовать, оба параметра

COMPATIBLE.RDBMS и COMPATIBLE.ASM должны быть установлены 11.1 или выше.

Параметр нельзя установить при создании дисковой группы, но можно модифицировать

атрибут DISK_REPAIR_TIME при помощи команды ALTER DISKGROUP SET ATTRIBUTE. Если

оба атрибута, COMPATIBLE.RDBMS и COMPATIBLE.ASM, установлены по крайней мере в

11.1, то значение "по умолчанию" равно 3.6 часа. Если любой из атрибутов меньше 11.1,

то диск удаляется из группы немедленно после того, как он стал недоступным. Время

может быть задано в минутах (M) или часах(H). Если задано неименованное значение, то

считается, что заданы часы. Значение времени нахождения диска в состоянии offline "по

умолчанию" может быть изменено с помощью конструкции DROP AFTER команды ALTER

DISKGROUP DISK OFFLINE. Если диск переведен в состояние offline с использованием

текущего значения DISK_REPAIR_TIME, а значение атрибута дисковой группы потом

изменено с помощью оператора ALTER DISKGROUP SET ATTRIBUTE, то измененное

значение будет использовано для определения момента удаления диска из группы.

Создание дисковой группы

Для создания дисковых групп используется оператор SQL CREATE DISKGROUP. При создании

дисковой группы указывается следующая информация:

Уникальное имя группы.

Уровень избыточности дисковой группы. Для зеркалирования файлов средствами Oracle

ASM нужно указывать уровень избыточности NORMAL REDUNDANCY (2-копии для

большинства типов файлов) или HIGH REDUNDANCY (3-копии для всех типов файлов). Если

нет необходимости зеркалирования средствами Oracle ASM, следует задать EXTERNAL

REDUNDANCY.

Список дисков, отформатированных как Oracle ASM диски, принадлежащих группе.

Список дисков, принадлежащих специальной группе сбоев (необязательно).

Тип группы сбоев (необязательно).

Атрибуты дисковой группы, такие как уровень совместимости или размер единиц

размещения (параметр является необязательным).

В примере создается дисковая группа с именем DG1 с нормальной избыточностью. Она

состоит из двух групп сбоя FG1 и FG2 с тремя дисками в каждой. Такой тип дисковой группы

применим для размещения файлов базы данных:

SQL> CREATE DISKGROUP DG1 NORMAL REDUNDANCY

FAILGROUP FG1 DISK

'/dev/rdsk/c6t6001438009B02AE90000400001910000d0s6' NAME diska1,

'/dev/rdsk/c6t6001438009B02AE90000400001950000d0s6' NAME diska2,

'/dev/rdsk/c6t6001438009B02AE90000400001970000d0s6' NAME diska3

FAILGROUP fg2 DISK

'/dev/rdsk/c6t6001438009B02AE900003000015D0000d0s6' NAME diskb1,

'/dev/rdsk/c6t6001438009B02AE90000300001610000d0s6' NAME diskb2,

Page 199: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

199

'/dev/rdsk/c6t6001438009B02AE90000300001650000d0s6' NAME diskb3

ATTRIBUTE 'au_size'='2M',

'compatible.asm' = '11.2',

'compatible.rdbms' = '11.2';

Модификация дисковой группы

Для изменения свойств дисковой группы применяется команда SQL ALTER DISKGROUP. С ее

помощью можно добавить, удалить, изменить размер дисков при открытой базе данных.

Совмещение нескольких операций в одной команде ALTER DISKGROUP возможно и рекомендуется.

Группирование операций в одной команде ALTER DISKGROUP может снизить затраты на

балансировку. Система Oracle ASM автоматически проводит балансировку дисковой группы после

проведения изменений. Представление V$ASM_OPERATION позволяет отслеживать статут операции

балансировки. В примере в существующую группу DG1 добавляются два новых диска:

SQL> ALTER DISKGROUP data ADD DISK

'/dev/rdsk/c6t6001438009B02AE90000400001990000d0s6' NAME diska4,

'/dev/rdsk/c6t6001438009B02AE900004000019B0000d0s6' NAME diska5;

Если в команде ALTER DISKGROUP для дисковой группы не задан параметр POWER, или

балансировка проходит неявно из-за добавления/удаления диска, то параметр инициализации

ASM_POWER_LIMIT определяет максимальную используемую вычислительную мощность. Значение

параметра может быть изменено динамически. Более высокие значения приведет к снижению

времени балансировки, но потребуют больше ресурсов ввода/вывода и процессорной мощности.

Значение "по умолчанию", 1, минимизирует влияние балансировки на другие процессы и

приложения.

Page 200: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

200

Управление экземпляром ASM

Запуск экземпляра ASM незначительно отличается от запуска обычного экземпляра базы

данных Oracle. При запуске экземпляра ASM следует иметь в виду следующее:

Нужно установить переменную окружения ORACLE_SID в соответствии с имеющимся

Oracle ASM system identifier (SID). Значение "по умолчанию" это +ASM для одиночной

инсталляции и +ASMnode_number для инсталляции RAC. Переменная окружения

ORACLE_HOME должна быть установлена в дом Grid Infrastructure, т.е. туда, где

установлено программное обеспечение Oracle ASM.

Файл параметров должен содержать запись INSTANCE_TYPE=ASM, указывающую, что

запускается экземпляр ASM.

Команда STARTUP приводит к монтажу дисковых групп, а не к монтажу и открытию баз

данных.

Экземпляр ASM интерпретирует параметры команды STARTUP в SQL*Plus следующим

образом:

FORCE - Выдает команду SHUTDOWN ABORT экземпляру Oracle ASM перед тем, как запустить

его.

MOUNT или OPEN - Монтирует дисковые группы, указанные в параметре ASM_DISKGROUPS.

Это параметр "по умолчанию". Режим "OPEN" для экземпляра ASM в реальности не

существует. Если задан, то трактуется как MOUNT.

NOMOUNT - Запускает экземпляр Oracle ASM, не монтируя какие-либо дисковые группы.

RESTRICT - Запускает экземпляр в режиме ограниченной функциональности. Только

пользователи, имеющие обе системные привилегии CREATE SESSION и RESTRICTED SESSION,

могут установить соединение.

Привилегии SYSASM операционной системы и OSASM группы операционной системы

позволяют передать ответственность по управлению дисковой памятью системным администраторам

без назначения высокоуровневого доступа к базе данных Oracle. Пользователи могут быть созданы

для экземпляра ASM, и им могут быть выданы привилегии SYSASM. Это позволит им подключаться к

экземпляру ASM и выполнять административные задачи. Аналогично, присвоение пользователю

операционной системы группы OSASM даст ему возможность подключиться к экземпляру в качестве

SYSASM с использованием аутентификации ОС.

$ . oraenv

ORACLE_SID = [] ? +ASM The Oracle base remains unchanged with value /u01/app/grid

$ sqlplus / as sysasm

SQL> CREATE USER asm_admin IDENTIFIED by password1;

User created.

SQL> GRANT SYSASM TO asm_admin;

SQL> SQLPLUS /NOLOG

SQL> CONNECT asm_admin AS SYSASM

Page 201: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

201

Enter password: password1

Connected to an idle instance.

SQL> STARTUP

ASM instance started

Total System Global Area 71303168 bytes

Fixed Size 1069292 bytes

Variable Size 45068052 bytes

ASM Cache 25165824 bytes

ASM disk groups mounted

Остановка экземпляра ASM

Остановка экземпляра ASM командой SHUTDOWN из SQL*Plus выполняется точно также, как и

остановка обычной базы данных Oracle. Перед подключением к экземпляру ASM с помощью SQL*Plus

следует убедиться, что переменная окружения ORACLE_SID указывает на ASM SID. Перед остановкой

экземпляра ASM нужно остановить все экземпляры баз данных, использующих его. Перед

выполнением остановки ASM также необходимо размонтировать все файловые системы,

смонтированные на томах Oracle ASM Dynamic Volume Manager. Для остановки экземпляра ASM

нужно выполнить следующие шаги:

$ . oraenv

ORACLE_SID = [] ? +ASM The Oracle base remains unchanged with value /u01/app/grid

$ sqlplus /nolog

SQL> CONNECT asm_admin AS SYSASM

Enter password: password1

Connected.

SQL>SHUTDOWN NORMAL;

Допустимы следующие режимы команды SHUTDOWN экземпляра Oracle ASM:

NORMAL - Экземпляр будет ждать завершения всех выполняющихся SQL операторов до

размонтирования дисковых групп и остановки. Экземпляр также ждет завершения всех

пользовательских сессий. Если какая-либо база данных подключена к экземпляру ASM, то

команда SHUTDOWN завершается с ошибкой и не выполняется. NORMAL это режим "по

умолчанию".

IMMEDIATE или TRANSACTIONAL - Экземпляр будет ждать завершения всех

выполняющихся SQL операторов до размонтирования дисковых групп и остановки.

Экземпляр не ждет завершения сессий пользователей, подключенных нему. Если какая-

либо база данных подключена к экземпляру, команда завершается в ошибкой и не

выполняется. Параметры TRANSACTIONAL и IMMEDIATE эквиваленты, так как экземпляр

ASM не имеет транзакций.

ABORT - Экземпляр ASM останавливается без размонтирования дисковых групп. При

последующем старте необходима процедура восстановления. Любые экземпляры баз

Page 202: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

202

данных, использующие это ASM, также будут остановлены аварийно, поскольку их файлы

данных станут недоступны.

Page 203: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

203

Управление очень большими данными (VLDB)

Общие замечания

Понятия "большой" и "очень большой" крайне размыты и неопределенны. 100ГБ данных это

много или мало? Это может быть всего лишь одно изображение с высокой степенью детализации, а

может быть массивом из миллионов записей. В первом случае доступ к данным достаточно

тривиален, хотя непросто просмотреть результат. Во втором случае отбор нужных данных может быть

весьма непростой задачей, хотя отображение явно сложностей не вызовет. В случае БД обычно

предполагают, что большая база данных это постоянно растущая база данных, таблицы которой

содержат миллионы и более записей. Определение нестрогое, но понятное на интуитивном уровне. В

эпоху молодости автора вместо слова "миллионы", говорили "сотни тысяч", но мощность

процессоров и доступность памяти слегка сдвинули планку вверх.

Управление размещением данных в Очень Больших Базах Данных чаще всего реализуется с

помощью секционирования. Секционирование улучшает способность Oracle поддерживать очень

большие таблицы, разделяя их на более мелкие и управляемые куски, называемые секциями или

партициями. Секционированные таблицы упрощают настройку SQL запросов, позволяя SQL

операторам избежать просмотра секций, не содержащих данных, при использовании "обрезания

секций" (partition pruning). Секционирование также может упростить настройку SQL путем разбиения

больших объединений сходно объединенных секционированных объектов при использовании

секционных объединений. Секционирование таблиц и индексов идет рука об руку с параллелизмом

запросов для увеличения производительности в хранилищах данных. Если объект базы данных

секционирован, то возможно параллельное выполнения просмотра разных секций таблицы или

индекса.

Методы секционирования

Существует три базовых метода, определяющих каким образом данные будут распределяться

по секциям: диапазон (Range), хэш (Hash) и список (List). При секционировании с использованием этих

методов можно разделить таблицы на секции на одном уровне или разделить ее на двух уровнях для

композитного секционирования. Каждый из двух методов имеет преимущества и предпосылки для

использования. Специфика данных в таблице определяет стратегию ее секционирования. Иначе

говоря, прежде чем заниматься деление таблицы следует посмотреть, что там хранится!

Одноуровневое секционирование

При одноуровневом секционировании при определении таблицы применяется один из трех

методов, при этом один или несколько столбцов таблицы используются в качестве ключей

секционирования:

Секционирование по диапазону (Range Partitioning) - В этом методе распределение

данных по секциям основано на интервале значений ключа секционирования. Для каждой

секции определен диапазон значений ключа, определяющий, какие записи попадут в

секцию. Это наиболее частый тип секционирования, а в качестве ключа секционирования

часто используются время. Секции создаются при помощи лексической конструкции

VALUES LESS THAN, которая указывает не включаемую верхнюю границу секции. Строки,

имеющие значение ключа секционирования равного или большего этой границы

Page 204: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

204

помешаются в следующую, более "высокую", секцию. Нижняя граница секции фактически

задается значением VALUES LESS THAN предыдущей секции. Первая секция не имеет

нижней границы. Самая старшая секция может использовать параметр MAXVALUE. Это

параметр представляет виртуальное бесконечное значение, используемое для сортировки

записей со значением ключа, большим, чем любые возможные значения, включая NULL.

Секционированию по хэш-коду (Hash Partitioning) - В этом методе для распределения

данных по секциям используется алгоритм хэширования на основе указанного ключа.

Хэширующий алгоритм спроектирован так, чтобы равномерно распределять записи между

секциями. Этот метод является идеальным, если нужно распределить данные равномерно

между разными устройствами. Он проще в реализации, нежели секционирование по

диапазону. Хэш-секционирование особенно полезно, если данные не являются

историческими или не имеют очевидного ключа секционирования.

Секционирование по списку (List Partitioning) - Этот метод позволяет провести

секционирование на основе списка дискретных значений ключа секционирования для

каждой секции. Таким способом администратор может точно управлять помещением

записей в секции. Секционирование по списку дает возможность сгруппировать

неупорядоченный и несвязанный набор данных. При секционировании по списку секция

DEFAULT обеспечивает хранение всех значений ключа, которые не отображены явно на

другие секции.

Композитное секционирование

Эта стратегия совмещает базовые методы секционирования, описанные ранее. При

композитном секционировании таблица делится на части, а затем каждая полученная секция делится

на подсекции. Методы, использованные для секционирования на обоих уровнях, могут быть как

одинаковыми, так и разными. Композитное секционирование может повысить уровень

потенциального обрезания секций и обеспечить более точное размещение данных по секциям.

Возможны следующие методы композитного секционирования:

Секционирование диапазон-диапазон (Range-Range Partitioning).

Секционирование диапазон-хэш (Range-Hash Partitioning).

Секционирование диапазон-список (Range-List Partitioning).

Секционирование список-диапазон (List-Range Partitioning).

Секционирование список-хэш (List-Hash Partitioning).

Секционирование список-список (List-List Partitioning).

Page 205: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

205

Управление табличным пространством

Самым первым и самым простым из шагов по эффективному управлению размещением

объектов в табличном пространстве является использование локального управления. Локально

управляемое табличное пространство использует битовые карты для отслеживания всей информации

об экстентах. Локальное управление имеет несколько преимуществ по сравнению с традиционными

табличными пространствами, которые хранят эту информацию в словаре данных:

Операции размещения и удаления модифицируют только локально управляемые

ресурсы, поэтому эти операции выполняются быстрее и параллельно, в результате чего

улучшается производительность системы в целом.

Локально управляемые временные табличные пространства не создают ни данных отката,

ни данных повторов.

При указании лексемы AUTOALLOCATE база данных автоматически выбирает подходящий

размер экстента.

Снижается частота обращений к словарю данных, снижая конкуренцию во времена

высокой интенсивности обращений к таблицам.

Нет необходимости в операциях слияния свободных экстентов.

Любое табличное пространство, включая SYSTEM и SYSAUX, может быть локально

управляемыми. Программный пакет DBMS_SPACE_ADMIN содержит набор специальных процедур

для обслуживания локально управляемых табличных пространств.

В синтаксисе команды создания локально управляемого табличного пространства CREATE

TABLESPACE в конструкции EXTENT MANAGEMENT содержится ключевое слово LOCAL. Значением "по

умолчанию" при создании постоянного табличного пространства является "EXTENT MANAGEMENT

LOCAL AUTOALLOCATE". Указание этой конструкции является опционным, за исключением случая,

когда не нужно использовать локальное управление или же требуется указать размещение типа

UNIFORM. "По умолчанию" база данных управляет экстентами локально. Если нужно, чтобы в

табличном пространстве использовались одинаковые экстенты определенного размера, то при его

создании необходимо задать ключевое слово UNIFORM. Ниже приведены две идентичные по

результатам команды создания табличного пространства:

SQL> CREATE TABLESPACE ocp_1

DATAFILE '/u01/app/oracle/oradata/X/ocp_01.dbf' SIZE 50M

EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

SQL> CREATE TABLESPACE ocpts

DATAFILE '/u01/app/oracle/oradata/X/ocpts_01.dbf' SIZE 50M;

Существует два метода, используемых базой данных Oracle, для управления сегментами в

локально управляемом табличном пространстве. Ручное управление использует свободные списки

для управления свободным пространством внутри сегмента, автоматическое - использует битовые

карты. Автоматическое управление более эффективно и является выбором "по умолчанию" для всех

новых постоянных локально управляемых табличных пространств. Можно явно включить

автоматическое управление с помощью конструкции SEGMENT SPACE MANAGEMENT AUTO:

Page 206: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

206

SQL> CREATE TABLESPACE ocp_1

DATAFILE '/u01/app/oracle/oradata/X/ocp_01.dbf' SIZE 50M

EXTENT MANAGEMENT LOCAL AUTOALLOCATE

SEGMENT SPACE MANAGEMENT AUTO;

Базовая компрессия таблиц (Basic Table Compression)

Базовая компрессия таблиц (Basic Table Compression) является наиболее ограниченным из

доступных методов сжатия данных. Базовая компрессия не применяет сжатие данных к операциям

DML (INSERT / UPDATE), выполняемым в таблице. Данные сжимаются только при массовой загрузке в

таблицу. Опция базовой компрессии включена в версию Database Enterprise Edition (EE) базы данных.

Форматы сжатия на диске для базисной компрессии и для расширенной строковой компрессии

(Advanced Row Compression) идентичны, поэтому технически возможна конвертация из базисной в

расширенную строковую компрессию путем замены опции размещения для таблицы или секции.

Расширенная строковая компрессия (Advanced Row Compression)

Расширенная строковая компрессия (Advanced Row Compression) была представлена в версии

11g под названием табличное сжатие для OLTP (OLTP Table compression). Этот вид компрессии

сжимает данные для всех типов операций с данными, включая обычные DML операции INSERT и

UPDATE. Расширенная строковая компрессия снижает накладные расходы, вызванные операциями

записи сжатых данных. Расширенная строковая компрессия является частью опции Advanced

Compression. Алгоритм работы расширенного строкового сжатия основан на удалении

дублирующихся значений внутри блока данных, в том числе в охватывающих несколько столбцов.

Гибридное колоночное сжатие (Hybrid Columnar Compression)

Технология гибридного колоночного сжатия (Hybrid Columnar Compression, HCC) представляет

собой метод организации сжатия данных внутри набора блоков базы данных. Для использования HCC

необходима поддержка со стороны файловой системы, на которой располагаются данные. В

настоящий момент для технологии HCC требует наличие дисковой памяти Oracle - Exadata, Pillar Axiom

или Sun ZFS Storage Appliance. В этом случае данные хранятся с использованием комбинации методов

построкового и поколоночного сжатия. Данные, сжатые HCC, хранятся в логических конструкциях,

называемых единицами сжатия (compression unit). При загрузке данных в таблицу с использованием

HCC, значения столбцов для группы строк группируются вместе и сжимаются. После сжатия данных

столбцов для набора строк полученный набор помещается в единицу сжатия. Поскольку данные

столбца имеют один тип и сходные характеристики, то алгоритм сжатия становится более

эффективным. По утверждениям разработчиков ожидаемая степень сжатия составляет от 6 до 15 раз

в зависимости от типа данных.

Таблицы, созданные в табличном пространстве со сжатием по методу HCC, будут

использовать данный метод "по умолчанию". При необходимости можно создать несжатую таблицу и

таблицу, использующую иной метод компрессии, указав опцию типа сжатия в команде создания

таблицы CREATE TABLE. При изменении типа сжатия табличного пространства все вновь создаваемые

таблицы будут использовать новый тип компрессии, но уже существующие сохранят старый тип.

Page 207: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

207

Сжатие сегментов (Segment Shrink)

Возможность сжатия сегментов дает возможность вернуть фрагментированное свободное

пространство ниже высшей отметки использования (high watermark) в сегменте. Сжатие сегментов

дает следующие возможности:

Сжатие данных ведет к лучшему использованию кэша.

При полном сканировании таблиц читается меньше блоков сжатых данные.

Сжатие сегментов является операцией, проводимой оперативно и почти без прерываний

текущей активности пользователей, иначе говоря, не взаимодействующей с операциями DML или

запросами. Конкурирующие операции DML блокируются на короткое время в момент завершения

операции сжатия, во время освобождения пространства. Индексы обслуживаются во время операции

сжатия и остаются доступными после ее завершения. Для операции не требуется выделения

дополнительного пространства. Сжатие сегментов возвращает неиспользуемое пространство и выше,

и ниже высшей отметки использования. "По умолчанию" операция сжатия уменьшает сегмент,

подстраивает отметку использования и освобождает неиспользуемое пространство.

При сжатии сегментов требуется перемещать строки на новое место, поэтому перед началом

операции требуется разрешить перемещение строк и запретить срабатывание любых триггеров,

работающих на основе изменения rowid. Операции сжатия могут быть выполнены только для

объектов в локально управляемых табличных пространствах с включенным механизмом

автоматического управления размещения сегментов (ASSM). Внутри табличного пространства с ASSM

могут быть динамически сжаты все типы сегментов за исключением следующих:

IOT mapping tables

Таблицы материализованных представлений на основе rowid

Таблицы с функциональными индексами

SECUREFILE LOB'ы

Сжатые таблицы (Compressed tables)

Запуск сжатия динамического сжатия сегментов

Можно сжать сегменты таблиц, индексно-организованных таблиц, индексов, секций,

подсекций или материализованных представлений. Эту операцию можно сделать с помощью команд

ALTER TABLE, ALTER INDEX, ALTER MATERIALIZED VIEW и ALTER MATERIALIZED VIEW LOG с заданием

операнда SHRINK SPACE. Существует два дополнительных операнда для управления поведением

операции сжатия:

COMPACT – В этом случае операция сжатия проводится в два этапа. Если указан это

параметр, то база данных дефрагментирует пространство сегмента и сжимает строки

таблицы, но не меняет значение отметки использования и не освобождает пространство.

Можно выполнить операцию с операндом SHRINK SPACE без COMPACT во время

нерабочего времени для завершения операции сжатия.

CASCADE – Этот операнд расширяет действие команды сжатия сегментов на все

зависимые сегменты объекта.

Page 208: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

208

Примеры

Выполняется сжатие таблицы и всех зависящих от нее сегментов:

SQL> ALTER TABLE table_001 SHRINK SPACE CASCADE;

Выполняется сжатие секции таблицы:

SQL> ALTER TABLE partitioned_table_002 MODIFY PARTITION part_01 SHRINK SPACE;

Page 209: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

209

Безопасность Тема огромная и очень важная. Тема, достойная отдельной и немалой книги, а отнюдь не

главы. Автор это осознает, но целью данной книги является краткое описание обязанностей DBA,

достаточное для прохождения соответствующего экзамена.

Разработка и внедрение политики безопасности

Политика безопасности для базы данных устанавливает методы защиты ее от случайного или

намеренного повреждения. База данных Oracle имеет отличные средства для защиты от потери

данных из-за аппаратных или других сбоев. Защита данных от внутренних сбоев и ошибок, вызванных

уполномоченными пользователями или лицами, получившими доступ нелегально (например, путем

получения полномочий легальных пользователей), является задачей администратора базы данных.

Правильно построенные политики безопасности могут:

Снизить возможности атакующего в получении доступа к базе данных.

Минимизировать ущерб, который может быть нанесен на уровне пользователей.

Обнаруживать попытки незаконного доступа к базе данной или данным ограниченного

доступа.

Существуют три области, требующие определения политики безопасности: пользователи,

привилегии, аудит.

Пользователи

Перед тем, как пользователь мог подключиться к базе данных нужно, чтобы он был

аутентифицирован с использованием допустимого, ранее определенного в базе данных, имени. В

базе данных Oracle существует несколько способов проведения аутентификации пользователей.

Наиболее общим является задание пароля. Начиная с версии 11g, пароли учетных записей

пользователей являются регистрозависимыми "по умолчанию". Это поведение можно изменить, хотя

Oracle рекомендует использовать регистрозависимые пароли. В версии 12c вместо одной введены

две функции проверки сложности паролей: ORA12C_VERIFY_FUNCTION и

ORA12C_STRONG_VERIFY_FUNCTION. Любая из них может быть использована, как в состоянии

поставки, так и модифицирована в соответствии с требованиями безопасности. Производитель

рекомендует произвести собственные настройки. "По умолчанию" функции проверки сложности

выключены. Включение любой из этих функций значительно снизит возможности подбора паролей к

базе данных.

Привилегии и роли

Сразу после аутентификации пользователя, т.е. после проверки, определен ли он в базе

данных, пользователь получает все привилегии, выданные ему ранее. Хорошей практикой является

назначение минимального количества привилегий, необходимого для выполнения служебных

функций пользователя. Выдача избыточных привилегий не имеет положительного влияния и может

скомпрометировать безопасность базы данных. К сожалению, для большинства администраторов

привычно выдавать избыточные привилегии пользователям, чтобы последние могли выполнить

желаемые действия и отстали от DBA, вместо того, чтобы потратить время и выдать только нужные

привилегии. В идеале следует давать привилегии, без которых нельзя обойтись, нежели те, которые

нужно или хочется получить! Пользователи базы данных могут получить права двумя способами:

Page 210: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

210

Явно - привилегии выдаются напрямую пользователю.

На основании ролей - привилегии присваиваются ролям. Роль в свою очередь

присваивается пользователю.

Роли упрощают и улучшают управление привилегиями. В идеале нужно создать в базе данных

типовые роли для всех бизнес-процессов. Минимальный набор или требуемые привилегии затем

должны быть присвоены ролям, а роли в свою очередь должны быть присвоены пользователям. При

таком подходе минимизируется работа DBA по выдаче полномочий пользователям, и снижается риск

выдачи им избыточных привилегий.

Аудит

Аудит позволяет администраторам базы данных отслеживать и записывать действия

пользователей, включая действия самих DBA. Аудит позволяет отслеживать как действия для всей

системы, так и действия с отдельным объектом базы данных. "По умолчанию" Oracle задает набор

объединенных политик аудита, содержащий стандартные настройки аудита. При необходимости

можно создать собственные объединенные политики. Пакет PL/SQL DBMS_FGA нужно применять для

создания точных политик аудита, срабатывающих на уровне строк и значений данных, нежели

объединенные политики аудита.

Аудит может помочь выявить попытки уполномоченных пользователей превысить уровень

своих привилегий как для получения доступа к данным, находящимся вне их полномочий, так и

попыток повреждения базы данных. Аудит также полезен при обнаружении попыток нелегального

доступа к базе данных.

Page 211: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

211

Настройка и управление аудитом

Встроенные в Oracle возможности позволяют отслеживать и сохранять выбранные действия

пользователей базы данных. Аудит может быть основан как на действиях пользователей базы

данных, так и внешних. Стандартный аудит может быть основан на индивидуальных действиях,

например, операторах SQL, или при использовании специфических системных или объектных

привилегий. Можно выполнять аудит успешных и неуспешных действий. Аудит должен быть включен

и настроен для нужд данной базы. Записи аудита будут занесены либо в словарь данных или в файлы

операционной системы. Аудит является эффективным средством для усиления внутреннего контроля.

Обычно аудит используется для выполнения следующих задач:

Отслеживать действия.

Удерживать пользователей или злоумышленников от неподобающих действий.

Расследовать подозрительные действия.

Предупреждать аудитора о запрещенных действиях.

Отслеживать и собирать данные об определенных действиях в базе данных.

Выявлять проблемы с авторизацией или контролем доступа.

Выполнять требования соответствия требованиям регулирующих органов.

Стандартный аудит включается с помощью параметра инициализации AUDIT_TRAIL.

Возможны следующие значения этого параметра:

DB – Направляет записи аудита в журнал аудита базы данных, за исключением

обязательных записей аудита и записей аудита пользователя SYS, которые всегда

записываются в журнал аудита операционной системы. DB является значением "по

умолчанию".

DB, EXTENDED – Имеет такой же смысл, что и DB, но при этом также заполняется

переменные SQL и текст SQL в формате CLOB-type в столбцы таблицы SYS.AUD$ вместе с

оператором SQL, использованным при аудируемом действии (при наличии).

OS – Направляет все записи аудита в файлы ОС. Параметр AUDIT_FILE_DEST задает

местоположение файла.

XML – Заносит записи аудита в формате XML. Значение XML AUDIT_TRAIL не влияет на

системный журнал аудита. Эти записи всегда будут в простом текстовом формате.

XML, EXTENDED – Поведение такое же, как и при AUDIT_TRAIL=XML, но вызывает

включение текста SQL и значения переменных SQLв файлы аудита в формате XML

операционной системы.

NONE – Выключает стандартный аудит.

Записи стандартного аудита заносятся в таблицу SYS.AUD$, а записи т.н. тонкого аудита

заносятся в таблицу SYS.FGA_LOG$. Записи аудита могут быть удалены только пользователем с

административными привилегиями. Действия администратора также должны аудироваться. Если

значение параметра инициализации O7_DICTIONARY_ACCESSIBILITY установлен в FALSE ("по

умолчанию"), то только пользователи с правами SYSDBA могут выполнять операции DML над

SYS.AUD$ и SYS.FGA_LOG$. При наличии лицензий, конечно, для дальнейшего улучшения защиты

данных быть применены такие продукты Oracle, как Database Vault иOracle Label Security.

Page 212: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

212

Определенные операции с базой данных всегда записываются в файлы аудита, находящиеся в

операционной системе. Прежде всего, это действия любого пользователя, зарегистрированного в

базе с правами SYSDBA или SYSOPER. Это т.н. обязательный аудит, выполняющийся независимо от

установок параметра AUDIT_TRAIL. "По умолчанию" файлы аудита в операционной системе находятся

в директории $ORACLE_BASE/admin/$ORACLE_SID/adump и имеют расширение aud.

Обязательный аудит отслеживает следующие операции

Запуск базы данных.

Регистрацию SYSDBA и SYSOPER.

Останов базы данных.

Каждая новая сессия пользователей с правами SYSDBA или SYSOPER записывается в

отдельный файл. Следует периодически проверять содержимое этих файлов и удалять их, так как

даже для слабонагруженной базы данных их количество может быть очень велико, до нескольких

миллионов, что может сильно замедлять работу сервера.

Тонкий аудит (Fine-grained auditing, FGA) расширяет возможности стандартного аудита. Тонкий

аудит позволяет задать специфические условия, выполнение которых вызовет срабатывание событий

аудита и запись в журнал. Это позволяет точно аудировать запросы и операции DML. Тогда как

стандартный аудит может обнаружить выполнение SELECT на заданной таблице, тонкий аудит может

выявить выполнение операции SELECT в определенное время, к определенному столбцу или

определенному набору строк. Иначе говоря, тонкий аудит (Fine Grained Auditing) позволяет точнее

задавать объект аудита с меньшим уровнем информационного "шума" из-за фальшивых

срабатываний.

Page 213: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

213

Создание файла паролей

Файл паролей Oracle необходим для поддержки административных прав SYSDBA, SYSOPER,

SYSBACKUP, SYSDG и SYSKM. Если файл потерян и поврежден, то он должен быть создан повторно с

помощью утилиты командной строки orapwd. Когда создается новый файл паролей, утилита

запрашивает пароль для SYS и заносит введенные данные в файл. Синтаксис команды:

$ orapwd FILE=filename [ENTRIES=numusers] [FORCE={Y|N}] [IGNORECASE={Y|N}]

Для всех аргументов команды запрещено использование пробелов вокруг знака "=".

Описание аргументов команды:

FILE --Имя создаваемого файла. Нужно задавать полный путь. Если задано только имя, то

файл будет создан в текущей директории.

ENTRIES - Максимальное количество записей (учетных записей), которое можно

разместить в файле. Необязательный параметр.

FORCE - Если Y, то существующий файл будет перезаписан. Необязательный параметр.

IGNORECASE - Если Y, то пароли считаются регистронезависимыми. Необязательный

параметр.

FORMAT - Если это параметр равен 12 ("по умолчанию"), то утилита ORAPWD создает файл

паролей в формате Oracle Database 12c. Формат 12c нужен для поддержки SYSBACKUP,

SYSDG и SYSKM административных прав. При установке параметра в legacy утилита

ORAPWD создает файл паролей с поддержкой только SYSDBA и SYSOPER привилегий.

SYSBACKUP - При задании параметра в Y ORAPWD создает запись SYSBACKUPфайле

паролей за запрашивает ввод пароля.

SYSDG - При задании параметра в Y ORAPWD создает запись SYSDG файле паролей за

запрашивает ввод пароля.

SYSKM - При задании параметра в Y ORAPWD создает запись SYSKM файле паролей за

запрашивает ввод пароля.

При выполнении следующей команды будет создан файл паролей, позволяющий задать 40

привилегированных пользователей с разными паролями:

$ orapwd FILE=/u01/app/oracle/product/12.1.0/dbhome_1/dbs/orapwX ENTRIES=40

Параметр инициализации REMOTE_LOGIN_PASSWORDFILE связан с файлом паролей. Этот

параметр нужно установить в SHARED, EXCLUSIVE или NONE. При значении SHARED файл паролей

может быть использован несколькими базами данных, но в таком режиме опознается только

пользователь SYS, даже если другие пользователи определены. При значении EXCLUSIVE файл

паролей может быть использован только одной базой данной, при этом поддерживаются несколько

пользователей.

Параметр инициализации REMOTE_LOGIN_PASSWORDFILE задает ражим работы с файлом

паролей. Параметр может иметь следующие значения:

none - База данных Oracle ведет себя так, как будто файла паролей не существует.

Пользователь с правами SYS должен быть аутентифицирован операционной системой.

Page 214: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

214

exclusive - Файл паролей может быть использован только одной базой данных. При

использовании выделенного файла паролей можно добавлять, удалять и

модифицировать пользователей, задавать пароли для SYS, SYSBACKUP, SYSDG и SYSKM с

помощью команды ALTER USER. Значение "по умолчанию".

shared - Файл паролей используется несколькими базами, запускаемыми на одном

сервере одновременно, или несколькими экземплярами Oracle RAC. Разделяемый файл

паролей является "read-only" и не может быть модифицирован. Таким образом,

невозможно добавлять пользователей. Все пользователи, которые должны быть в файле

паролей, нужно добавить в файл паролей, когда REMOTE_LOGIN_PASSWORDFILE

установлен в "exclusive", а затем значение может быть заменено на "shared".

Page 215: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

215

Шифрование столбцов и табличных пространств

Для шифрования столбцов и табличных пространств используется опция Oracle Transparent

Data Encryption (TDE). Перед началом использования TDE нужно создать программное хранилище

ключей, т.е. контейнер, хранящий мастер-ключ для шифрования TDE. На каждую базу данных должно

быть одно хранилище ключей, и база данных находит это хранилище, проверяя местоположение ее в

файле sqlnet.ora или в пути $ORACLE_BASE/admin/$ORACLE_SID/wallet. В примере приведена

последовательность создания шифрованного табличного пространства для базы данных X.

$ mkdir $ORACLE_BASE/admin/$ORACLE_SID/wallet

$ sqlplus / as sysdba

(Возможно выполнение операций, как пользователь SYSKM или SYSTEM).

SQL> ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "oracle";

System altered.

Цветом выделен мастер-ключ. Он является регистрозависимым, использование двойных

кавычек является обязательным. После выполнения команды хранилище ключа создано, открыто и

расположено в директории:

SQL> ! ls $ORACLE_BASE/admin/$ORACLE_SID/wallet/ewallet.p12

/u01/app/oracle/admin/X/wallet/ewallet.p12

SQL> CREATE TABLESPACE s2 DATAFILE '/u01/app/oracle/oradata/X/s2.dbf' SIZE 150M ENCRYPTION

USING '3DES168' DEFAULT STORAGE (ENCRYPT);

Tablespace created.

SQL> SELECT TABLESPACE_NAME, ENCRYPTED, STATUS FROM dba_tablespaces;

TABLESPACE_NAME ENC STATUS

------------------------------ --- ---------

SYSTEM NO ONLINE

SYSAUX NO ONLINE

UNDOTBS1 NO ONLINE

TEMP NO ONLINE

USERS NO ONLINE

S2 YES ONLINE

SQL> ALTER SYSTEM SET ENCRYPTION WALLET CLOSE IDENTOFIED BY "oracle";

System altered.

Расположение хранилища мастер-ключа также может быть задано параметром

ENCRYPTION_WALLET_LOCATION в файле $ORACLE_HOME/network/admin/sqlnet.ora. В этом случае

хранилище может быть доступно для нескольких экземпляров одновременно.

ENCRYPTION_WALLET_LOCATION =

(SOURCE=(METHOD=FILE)

Page 216: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

216

(METHOD_DATA=

(DIRECTORY=/u01/app/oracle/product/12.1.0/dbhome_1/network/admin/$ORACLE_SID)

)

)

После создания хранилище следует установить правильные полномочия доступа к нему.

Рекомендуется установить следующие полномочия:

$ chown -R oracle:oinstall $ORACLE_BASE/admin/$ORACLE_SID/wallet

$ chmod -R 700 $ORACLE_BASE/admin/$ORACLE_SID/wallet

$ chmod 600 $ORACLE_BASE/admin/$ORACLE_SID/wallet/ewallet.p12

и при наличии возможностей задать бит, блокирующий случайное удаление хранилища мастер-

ключа любым пользователем, включая администратора. Для файловой системы ZFS в Solaris 11 бит

устанавливается командой

$ chmod S+ci ewallet.p12

и снимается командой

$ chmod S-ci ewallet.p12.

Для получения детальной информации о настройке хранилища следует обратиться к

документу Oracle 12c Advanced Security Guide.

В ранних релизах программное хранилище называлось Oracle Wallet. Программное

хранилище должно быть открыто перед тем, как будет предпринята попытка создать шифрованный

столбец или табличное пространство, а также перед занесением или извлечением шифрованных

данных. Если хранилище открыто, то оно доступно всем сессиям, и остается открытым до того, как

будет явно закрыто или до остановки базы данных.

Технология Oracle Transparent Data Encryption (TDE) поддерживает индустриальные

стандартные алгоритмы шифрования, включая 3DES168, AES128, AES192, AES256. Длина

используемого ключа соответствует имени алгоритма, т.е. алгоритм AES128 использует 128-битный

ключ. Используемый алгоритм указывается при создании шифрованного столбца или табличного

пространства. При необходимости для каждого столбца или табличного пространства можно выбрать

свой алгоритм, не существует требования использовать общий алгоритм для экземпляра. Хотя более

длинные ключи теоретически предполагают более высокую стойкость и безопасность, но их

использование ведет к повышению нагрузки на процессор. По умолчания TDE использует алгоритм

шифрования AES с длиной ключа 192 (AES192). TDE добавляет произвольную текстовую константу

(salt) к простым текстовым данным перед шифрованием, чтобы усложнить расшифровку данных

путем перебора паролей. Для проверки целостности TDE также добавляет код аутентификации

сообщений (Message Authentication Code, MAC) к данным. "По умолчанию" для проверки целостности

используется алгоритм SHA-1.

Page 217: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

217

Шифрование столбцов

Шифрование столбцов реализует функциональность шифрования и расшифровки данных на

уровне SQL. Любая утилита или опция Oracle, обходящая уровень SQL, не может использовать

сервисы, обеспечиваемые TDE. Шифрование столбцов с использованием TDE не следует использовать

со следующими объектами/функциями базы данных:

Индексы, отличные от B-tree.

Интервальный поиск с использованием индекса.

Синхронный захват изменений данных.

Переносимые табличные пространства.

Также невозможно применение TDE для шифрования столбцов, используемых в качестве

внешних ограничений ссылочной целостности. При необходимости шифрования столбцов,

использующих неподдерживаемые возможности, следует воспользоваться пакетом DBMS_CRYPTO.

Столбцы типов BINARY_DOUBLE, BINARY_FLOAT, CHAR, DATE, INTERVAL DAY TO SECOND,

INTERVAL YEAR TO MONTH, NCHAR, NUMBER, NVARCHAR2, RAW, TIMESTAMP, VARCHAR2 можно

шифровать. Символьные типы данных имеют ограничения по размеру, для получения деталей

следует обратиться к документу Advanced Security Guide. В примере приводится команда создания

новой таблицы, содержащие шифрованный столбец SALARY с применением алгоритма шифрования

"по умолчанию" (AES192).

SQL> CREATE TABLE employee (emp_id NUMBER, first_name VARCHAR2(128),

last_name VARCHAR2(128),salary NUMBER ENCRYPT);

Если нужно проиндексировать зашифрованный столбец, то он должен быть зашифрован без

применения текстовой константы (salt). В примере приводится команда создания аналогичной выше

таблицы, содержащие шифрованные столбцы EMP_ID без константы и SALARY с применением

алгоритма шифрования AES256.

SQL> CREATE TABLE employee (emp_id NUMBER ENCRYPT NO SALT, first_name VARCHAR2(128),

last_name VARCHAR2(128),salary NUMBER ENCRYPT USING 'AES256');

С помощью команды ALTER TABLE ADD можно добавить шифрованный столбец к

существующей таблице:

SQL> ALTER TABLE employee ADD (ssn VARCHAR2(11) ENCRYPT);

С помощью команды ALTER TABLE MODIFY можно зашифровать существующий столбец:

SQL> ALTER TABLE employee MODIFY (last_name ENCRYPT);

Шифрование табличных пространств

Для защиты важных данных любое постоянное табличное пространство может быть

зашифровано. Шифрование табличного пространства прозрачно для базы данных, пользователей и

приложений. Если табличное пространство зашифровано, то все его блоки зашифрованы. Все типы

сегментов поддерживают шифрацию, включая таблицы, индексы, кластеры, LOB'ы, секции таблиц и

Page 218: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

218

индексов и т.п. Чтобы усилить безопасность данные из шифрованных табличных пространств

автоматически шифруются при записи в пространство отката, журналы повторов и любое временное

табличное пространство. Шифрование не требует дополнительного места на дисках. При

использовании шифрованных пространств существует ряд ограничений:

Нельзя зашифровать существующее пространство с помощью команды ALTER TABLESPACE.

Существует ограничения при переносе шифрованных пространств с помощью технологии

переносимых табличных пространств (Transportable Tablespace).

При восстановлении базы данных с шифрованными пространствами нужно открыть

хранилище ключей после монтажа базы данных и до ее открытия, чтобы процесс

восстановления мог расшифровать блоки данных и журналов повторов.

Следующая команда создает шифрованное табличное пространство с использованием

алгоритма шифрования "по умолчанию":

SQL> CREATE TABLESPACE secure_ts_01

DATAFILE '/u01/app/oracle/oradata/X/ocp_secure01.dbf' SIZE 100M

ENCRYPTION DEFAULT STORAGE(ENCRYPT);

Page 219: Oracle OCP: Oracle Database 12c Administrator Certified Professional Study Guide

219

Словарь Хотя на русском языке издано достаточно документации по СУБД Oracle, часть терминологии не

имеет признаваемого всем информационным сообществом перевода на русский язык. Автор считает

необходимым привести используемые англоязычные термины и используемый перевод. В тексте

книги там, где это было необходимо, наряду с русскими терминами использовались их английские

эквиваленты.

Краткий термин (англ.)

Полный термин (англ.) Русский перевод термина

archivelog архивный журнал

flashback ретроспективный откат

Fast recovery area область быстрого восстановления

redo log журнал повторов оперативный журнал

patch патч исправление обновление

partition секция

Queryable Patch Inventory интерактивный каталог исправлений

Software Library библиотека обеспечения библиотека программного обеспечения

undo откат отмена

undo tablespace табличное пространство отката табличное пространство отмены

ADO Automatic Data Optimization автоматическая оптимизация данных

ADR Automatic Diagnostic Repository репозиторий автоматической диагностики

ASH Active Session History история активных сессий

CBD Container DataBase контейнерная база данных

DBCA Database Create Assistant ассистент создания базы данных

DBA Database administrator администратор базы данных администратор БД

FDA Flashback Data Archive ретроспективный архив данных

FGA Fine-grained auditing тонкий аудит

ILM Information Lifecycle Management управление жизненным циклом информации

PITR Point-in-time recovery восстановление данных на момент времени

PDB Pluggable DataBase перемещаемая база данных

OUI Oracle Universal Installer универсальный установщик Oracle

VLDB Very Large Database Очень Большие Базы Данных