2.3.2.5 Системные объекты базы данных.
Словарь данных. Первыми таблицами, создаваемыми в любой базе данных, являются системные таблицы, или словарь данных Oracle. Системные таблицы хранят информацию о структуре базы данных и объектов внутри нее, и Oracle обращается к ним, когда нуждается в информации о базе данных или когда выполняет оператор DDL (Data Definition Language - язык определения данных) либо оператор DML (Data Manipulation Language - язык манипулирования данными). Эти таблицы никогда непосредственно не обновляются, однако обновление в них происходит в фоновом режиме всякий раз, когда выполняется оператор DDL. Главные таблицы словаря данных содержат нормализованную информацию, которая является довольно трудной для восприятия человеком, так что в Oracle предусмотрен набор представлений, выдающих информацию главных системных таблиц в более понятном виде. Oracle запрашивает информацию из таблиц словаря данных для синтаксического разбора любого оператора SQL. Информация кэшируется в области словаря данных разделяемого пула в SGA.
Сегменты отката. Когда данные в Oracle изменяются, изменение должно быть или подтверждено, или отменено. Если изменение отменяется ("откатывается назад"), содержимое блоков данных восстанавливается в исходное состояние, существовавшее до изменения. Сегменты отката - это системные объекты, которые поддерживают этот процесс. Всякий раз, когда осуществляются какие-либо изменения в таблицах приложения или в системных таблицах, в сегмент отката автоматически помещается предыдущая версия изменяемых данных, так что старая версия данных всегда доступна, если требуется отказ. Другие пользователи при необходимости чтения данных, в то время как изменение не завершено, всегда имеют доступ к прежней версии из сегмента отката. Им предоставляется непротиворечивая по чтению версия данных. После того как изменение фиксируется, доступной становится измененная версия данных. Сегменты отката получают внешнюю память таким же образом, как другие сегменты - экстентами. Сегменту отката, однако, нужно первоначально распределить минимум два экстента.
Временные сегменты используют пространство в файлах базы данных, чтобы создать временную рабочую область для промежуточных стадий обработки SQL и для больших операций сортировки. Oracle создает временные сегменты в процессе работы и они автоматически удаляются, когда фоновый процесс SMON больше в них не нуждается. Если требуется только небольшая рабочая область, Oracle не создает временного сегмента, но вместо этого как временная рабочая область используется часть памяти PGA (глобальная область программы). Администратор базы данных может определять, в каких табличных пространствах будут располагаться временные сегменты для различных пользователей.
Сегмент начальной загрузки (или кэш-сегмент) - специальный тип объекта в базе данных, выполняющий начальную загрузку кэша словаря данных в область разделяемого пула SGA. Oracle использует кэш-сегмент только при запуске экземпляра и не обращается к нему вплоть до рестарта экземпляра. Сегмент необходим, чтобы выполнить начальную загрузку кэша словаря данных, после чего занимаемая им память освобождается.
Словарь данных.
Фундаментальное различие между RDBMS и другими БД и файловыми системами заключается в способе доступа к данным. RDBMS позволяет обращаться к физическим данным в более абстрактной, логической форме, обеспечивая легкость и гибкость при разработке кода приложения. Программы, использующие RDBMS, обращаются к данным через "машину" базы данных без непосредственной зависимости от фактического источника данных, изолируя приложение от деталей "нижележащих" физических структур данных. RDBMS сама заботится о том, где поле хранится в базе данных. Такая независимость данных возможна благодаря словарю данных RDBMS, который хранит метаданные (данные о данных) для всех объектов, расположенных в базе данных.
Словарь данных Oracle - множество таблиц и объектов базы данных, которое хранится в специальной области базы данных и ведется исключительно ядром Oracle. Словарь данных содержит информацию об объектах базы данных, пользователях и событиях. К этой информации можно обратиться с помощью представлений словаря данных. Как показано на рис.31, запросы чтения или обновления базы данных обрабатываются ядром Oracle с использованием информации из словаря данных.
Информация в словаре данных предназначена для подтверждения существования объектов, обеспечения доступа к ним и описания фактического физического расположения в памяти.
RDBMS не только обеспечивает размещение данных, но также определяет оптимальный путь доступа для хранения или выборки данных. Oracle использует сложные алгоритмы, которые позволяют выбирать информацию с наибольшей производительностью, исходя из критерия скорейшего получения первых строк результата или критерия минимального времени выполнения запроса в целом.
Представления словаря данных
Словарь данных содержит информацию об объектах базы данных, пользователях и событиях. К этой информации можно обратиться с помощью представления словаря данных:
ALL_OBJECTS |
Объекты, доступные пользователю. |
ALL_SEQUENCES |
Описание последовательностей, доступных пользователю. |
ALL_SNAPSHOTS |
Все моментальные копии, доступные пользователю. |
ALL_SOURCE |
Исходный текст объектов, доступных пользователю. |
ALL_SYNONYMS |
Все синонимы, доступные пользователю. |
ALL_TABLES |
Описание таблиц, доступных пользователю. |
ALL_TAB_COLUMNS |
Столбцы всех таблиц, представлений и кластеров, доступных пол. |
ALL_TAB_COMMENTS |
Комментарии к таблицам и представлениям, доступным пользователю. |
ALL_TAB_PRIVS |
Привилегии на объекты, которые получил пользователь непосредственно, через роль или как PUBLIC. |
ALL_TAB_PRIVS_MADE |
Привилегии пользователя и привилегии на его объекты. |
ALL_TAB_PRIVS_RECD |
Привилегии на объекты, которые получил пользователь непосредственно, через роль или как PUBLIC. |
ALL_TRIGGERS |
Триггеры, доступные пользователю. |
ALL_TRIGGER_COLS |
Использование столбцов в пользовательских триггерах, в триггерах для его таблиц или во всех триггкрах, если он имеет привелегию CREATE ANY TRIGGER. |
ALL_USERS |
Информация о всех пользователях базы данных. |
ALL_VIEWS |
Текст представлений, доступных пользователю. |
AUDIT_ACTIONS |
Коды типов аудиторских действий. |
CAT |
Синоним для USER_CATALOG. |
CLU |
Синоним для USER_CLUSTERS. |
CODE_PIECES |
Используется для создания представлений _OBJECT_SIZE. |
CODE_SIZE |
Используется для создания представлений _OBJECT_SIZE. |
COLS |
Синоним для USER_TAB_COLUMNS. |
COLUMN_PRIVILEGES |
Привилегии на столбцы, которые принадлежат пользователю, которые он выдал или получил непосредственно, через роль или как пользователь PUBLIC. |
DBA_2PC_NEIGHBORS |
Информация от вновь поступивших и отработанных запросов задержанных транзакций. |
DBA_2PC_PENDING |
Информация о транзакциях, в которых произошел сбой во время фазы подготовки. |
DBA_AUDIT_EXISTS |
Журнал записей протокола, созданных командой AUDIT EXISTS. |
DBA_AUDIT_OBJECT |
Журнал протокола команд над объектами. Создается в файле CATAUDIT.SQL. |
DBA_AUDIT_SESSION |
Журнал протокола команд входа и выхода из ORACLE. |
DBA_AUDIT_STATEMENT |
Синоним для USER_AUDIT_STATEMENT. |
DBA_AUDIT_TRAIL |
Журнал протокола всей системы. |
DBA_BLOCKERS |
Все сеансы, которые держат блокировки, которых ожидает кто-то другой. |
DBA_CATALOG |
Все таблицы, представления, синонимы и последовательности, принадлежащие пользователю. |
DBA_CLUSTERS |
Описание всех кластеров. |
DBA_CLU_COLUMNS |
Соответствие столбцов таблиц столбцам кластера. |
DBA_COL_COMMENTS |
Комментарии к столбцам всех таблиц и представлений. |
DBA_COL_PRIVS |
Привилегии на все столбцы базы данных. |
DBA_CONSTRAINTS |
Определения правил целостности для всех таблиц базы данных. |
DBA_CONS_COLUMNS |
Информация о столбцах в определениях правила целостности, созданных пользователем. |
DBA_DATA_FILES |
Файлы базы данных. |
DBA_DB_LINKS |
Все связи базы данных. |
DBA_DDL_LOCKS |
Все блокировки DDL в базе данных и все связанные с ними запросы к блокировкам DML. |
DBA_DEPENDENCIES |
Зависимости (от) всех объектов базы данных. |
DBA_DML_LOCKS |
Все блокировки DML в базе данных и все связанные с ними запросы к блокировкам DML. |
DBA_ERRORS |
Текущие ошибки для всех хранимых объектов. |
DBA_EXP_FILES |
Описание экспортных файлов. |
DBA_EXP_OBJECTS |
Объекты, которые экспортировались. |
DBA_EXP_VERSION |
Номер версии последнего экспорта. |
DBA_EXTENTS |
Экстенты всех сегментов базы данных. |
DBA_FREE_SPACE |
Свободные экстенты в табличных пространствах, доступных пользователю. |
DBA_INDEXES |
Описание индексов, доступных пользователю. |
DBA_IND_COLUMNS |
Столбцы индексов пользователь или его индексированных таблиц. |
DBA_LOCKS |
Все блокировки и задержки в базе данных, а также все поступающие на них запросы. |
DBA_OBJECTS |
Все объекты базы данных. |
DBA_OBJECT_SIZE |
Размер объектов PL/SQL базы данных. |
DBA_OBJ_AUDIT_OPTS |
Параметры аудиторства для всех таблиц и представлений. |
DBA_PRIV_AUDIT_OPTS |
Параметры аудиторства для привилегий. |
DBA_ROLES |
Все роли в базе данных. |
DBA_ROLE_PRIVS |
Роли, выданные пользователям или другим ролям. |
DBA_ROLLBACK_SEGS |
Описание сегментов отката базы данных. |
DBA_SEGMENTS |
Распределение пространства для всех сегментов базы данных. |
DBA_SEQUENCES |
Описание всех последовательностей в базе данных. |
DBA_SNAPSHOTS |
Все моментальные копии в базе данных. |
DBA_SNAPSHOT_LOGS |
Все журналы моментальных копий в базе данных. |
DBA_SOURCE |
Исходный текст всех хранимых объектов. |
DBA_STMT_AUDIT_OPTS |
Параметры системного аудиторства. |
DBA_SYNONYMS |
Все синонимы в базе данных. |
DBA_SYS_PRIVS |
Системные привилегии, выданные пользователям или ролям. |
DBA_TABLES |
Описание всех таблиц базы данных. |
DBA_TABLESPACES |
Описание всех табличных пространств в базе данных. |
DBA_TAB_COLUMNS |
Столбцы всех таблиц, представлений и кластеров. |
DBA_TAB_COMMENTS |
Комментарии к таблицам и представлениям базы данных. |
DBA_TAB_PRIVS |
Привилегии на объекты всей базы данных. |
DBA_TRIGGERS |
Описание всех триггеров базы данных. |
DBA_TRIGGERS_COLS |
Использование столбцов в пользовательских триггерах или в триггерах для его таблиц. |
DBA_TS_QUOTAS |
Квоты всех пользователей в табличном пространстве. |
DBA_USERS |
Информация о всех пользователях базы данных. |
DBA_VIEWS |
Текст всех представлений базы данных. |
DBA_WAITERS |
Все сеансы, ожидающие или владеющие блокировками. |
DBMS_ALERT_INFO |
Таблица регистрируемых сигналов тревоги. |
DBMS_LOCK_ALLOCATED |
Таблица пользовательских блокировок. |
DEPTREE |
Дерево зависимости объектов. |
DICT |
Синоним для DICTIONARY. |
DICTIONARY |
Описание таблиц и представлений словаря данных. |
DICT_COLUMNS |
Описание столбцов таблиц и представлений словаря данных. |
ERROR_SIZE |
Используется для создания представлений _OBJECT_SIZE. |
GLOBAL_NAME |
Содержит одну строку с глобальным именем текущей базы данных. |
IDEPTREE |
Отсортированный, сформатированный вариант DEPTREE. |
IND |
Синоним для USER_INDEXES. |
INDEX_HISTOGRAM |
Содержит статистику команды ANALYZE INDEX VALIDATE STRUCTURE. |
INDEX_STATS |
Содержит статистику команды ANALYZE INDEX VALIDATE STRUCTURE. |
LOADER_COL_INFO |
Представление SQL*LOADER, используемое для прямой загрузки. |
LOADER_CONSTRAINT_INFO |
Представление SQL*LOADER, используемое для прямой загрузки. |
LOADER_INDCOL_INFO |
Представление SQL*LOADER, используемое для прямой загрузки. |
LOADER_IND_INFO |
Представление SQL*LOADER, используемое для прямой загрузки. |
LOADER_PARAM_INFO |
Представление SQL*LOADER, используемое для прямой загрузки. |
LOADER_TAB_INFO |
Представление SQL*LOADER, используемое для прямой загрузки. |
LOADER_TRIGGER_INFO |
Представление SQL*LOADER, используемое для прямой загрузки. |
OBJ |
Синоним для USER_OBJECTS. |
PARSED_PIECES |
Используется для создания представлений _OBJECT_SIZE. |
PARSED_SIZE |
Используется для создания представлений _OBJECT_SIZE. |
PUBLIC_DEPENDENCY |
Зависимости между объектами. |
RESOURCE_COST |
Стоимость каждого ресурса. |
ROLE_ROLE_PRIVS |
Информация о ролях, назначенных другим ролям. |
ROLE_SYS_PRIVS |
Информация о системных привилегиях, назначенных ролям. |
ROLE-TAB-PRIVS |
Информация об объектных привилегиях, назначенных ролям. |
SEQ |
Синоним для USER_SEQUENCES. |
SESSION-PRIVS |
Привилегии, которые пользователь имеет в настоящий момент. |
SESSION-ROLES |
Роли, включенные для пользователя в настоящий момент. |
SOURCE-SIZE |
Используется для создания представлений -OBJECT_SIZE. |
STMT_AUDIT_OPTION_MAP |
Таблица описания кодов типов параметров протоколирования. |
SYN |
Синоним для USE_SYNONYMS. |
SYSTEM_PRIVILEGE_MAP |
Таблица описания кодов системных привилегий. |
TABLE_PRIVILEGES |
Привилегии на объекты, к которым пользователь получил привилегии, выдал, для которых он является владельцем или привилегия выдана пользователю PUBLIC. |
TABS |
Синоним для USER_TABLES. |
USER_AUDIT_OBJECT |
Записи протокольного журнала для команд обращающихся к объекту. |
USER_AUDIT_.SESSION |
Записи протокольного журнала о входах и выходах в систему. |
USER_AUDIT_STATEMENT |
Записи протокольного журнала о следующих командах: GRANT, REVOKE, AUDIT, NOAUDIT и ALTER SYSTEM. |
USER_AUDIT_TRAIL |
Записи протокольного журнала относящиеся к пользователю. |
USER_CATALOG |
Все таблицы, представления, синонимы и последовательности, принадлежащее пользователю. |
USER_CLUSTERS |
Описание кластеров пользователя. |
USER_CLU_COLUMNS |
Соответствие столбцов таблиц столбцам кластера. |
USER_COL_COMMENTS |
Комментарии к столбцам пользовательских таблиц и представлений. |
USER_COL_PR1VS |
Привилегии на столбцы, для которых пользователь является владельцем, выдал или получил привилегии. |
USER_COL_PRIVS_MADE |
Привилегии на столбцы, для которых пользователь является владельцем. |
USER_COL_PRIVS_RECD |
Привилегии на столбцы, для которых пользователь является владельцем, выдал или получил привилегии. |
USER_CONSTRAINTS |
Определения правил целостности для таблиц пользователя. |
USER_CONS_COLUMNS |
Информация о столбцах в определениях правила целостности, созданных пользователем. |
USER.DB_LINKS |
Связи базы данных, принадлежащие пользователю. |
USER_DEPENDENCIES |
Зависимости объектов пользователя. |
USER_ERRORS |
Текущие ошибки для всех объектов, принадлежащих пользователю. |
USER_EXTENTS |
Экстенты сегментов, выделенные объектам, принадлежащим пользователю. |
USER_FREE_SPACE |
Свободные экстенты в табличных пространствах, доступных пользователю |
USER_INDEXES |
Описание индексов, доступных пользователю |
USER_IND_COLUMNS |
Столбцы индексов пользователь или его индексированных таблиц. |
USER_OBJECTS |
Объекты, принадлежащие пользователю. |
USER_OBJECT_SIZE |
Размер объектов PL/SQL, принадлежащих пользователю. |
USER_OBJ_AUDIT_OPTS |
Параметры аудиторства для пользовательских таблиц и представлении. |
USER_RESOURCE_LIMITS |
Ограничения на ресурсы, доступные текущему пользователю. |
USER_ROLE_PRIVS |
Роли, выданные текущему пользователю. |
USER_SEGMENTS |
Распределение пространства для сегментов объектов пользователя. |
USER_SEQUENCES |
Описание последовательностей, созданных пользователем. |
USER_SNAPSHOTS |
Все моментальные копии, доступные пользователю. |
USER_SNAPSHOT_LOGS |
Все журналы моментальных копий, принадлежащие пользователю. |
USER_SOURCE |
Исходный текст хранимых объектов, принадлежащих пользователю. |
USER_SYNONYMS |
Все частные синонимы пользователя. |
USER_SYS_PRIVS |
Системные привилегии, выданные текущему пользователю. |
USER_TABLES |
Описание таблиц пользователя. |
USER_TABLESPACES |
Описание доступных табличных пространств. |
USER_TAB_COLUMNS |
Столбцы всех таблиц, представлений и кластеров. |
USER_TAB_COMMENTS |
Комментарии к таблицам и представлениям, принадлежащим пользователю |
USER_TAB_PR1VS |
Привилегии на объекты, для которых пользователь является владельцем, выдал или получил привилегии. |
USER_TAB_PRIVS_MADE |
Все привилегии на объекты, принадлежащие пользователю. |
USER_TAB_PR1VS_RECD |
Привилегии на объекты, которые получил пользователь. |
USER_TRIGGERS |
Описание всех пользовательских триггеров. |
USER_TRIGGER_COLS |
Использование столбцов в пользовательских триггерах или в триггерах для его таблиц. |
USER_TS_QUOTAS |
Квоты пользователя в табличном пространстве. |
USER_USERS |
Информация о текущем пользователе базы данных. |
USER_VIEWS |
Текст представлений пользователя. |
Динамические таблицы производительности, доступные пользователю SYS, позволяют управлять производительностью работы сервера СУБД.
V$ACCESS |
Заблокированные на текущий момент объекты и сеансы, в которых они используются. |
V$ARCHIVE |
Информация о журналах архива для каждого потока системы базы данных. . |
V$BACKUP |
Статус сброса всех ON-LINE баз данных. |
V$BGPROCESS |
Описание фоновых процессов. |
V$CIRCUIT |
Информация о виртуальных цепях. |
V$DATABASE |
Информация из контрольного файла о базе данных. |
V$DATAFILE |
Информация из контрольного файла о файлах базы данных. |
V$DBFILE |
Информация о всех файлах базы данных. |
V$DB-OBJECT-CACHE |
Объекты базы данных, находящиеся в библиотечном кеше. |
V$DISPATCHER |
Информация о процессах диспетчера. |
V$ENABLEDPRIVS |
Включенные привилегии. |
V$F1LESTAT |
Информация о статистике ввода/вывода в файл. |
V$FIXED-TABLE |
Все таблицы, представления и производные та |
V$INSTANCE |
блицы в базе данных. |
V$INSTANCE |
Статус текущего экземпляра |
V$ LATCH |
Число задержек каждого типа. (Строки этой таблицы однозначно соответствуют строкам таблицы V$ATCHHOLDER) |
V$LATCHHOLDER |
Информация о владельцах задержек. |
V$LATCHNAME |
Закодированные имена задержек из таблицы V$ATCH. |
V$LIBRARYCACHE |
Статистика по управлению буферами библиотечной памяти. |
V$LICENSE |
Параметры лицензии. |
V$ADCSTAT |
Статистика SQL*Loader при выполнении прямой загрузки. |
V$LOADTSTAT |
Статистика SQL* Loader при выполнении прямой загрузки. |
V$LOCK |
Блокировки и ресурсы. |
V$LOG |
Информация о журнальном файле. |
V$LOGFILE |
Информация о журнальных файлах. |
V$LOGHIST |
Информация об истории журнального файла. |
V$LOG-HISTORY |
Информация об истории журнального файла. |
U$NLS-PARAMETERS |
Текущие значения параметров NLS. |
V$OPEN-CURSOR |
Открытые пользователями курсоры. |
V$PARAMETER |
Информация о текущих значениях параметров. |
V$PROCESS |
Информация о всех активных процессах. |
V$QUEUE |
Информация об очереди мульти-серверных сообщений. |
V$RECOVERY-LOG |
Журнальные файлы, необходимые для полного восстановления базы данных. |
V$RECOVER-FILE |
Статус файлов, которые нужно восстанавливать. |
V$REQD1ST |
Гистограмма времен обращения, разделенная на 12 столбцов или периодов времени. |
V$RESOURCE |
Информация о ресурсах. |
V$ROLLNAME |
Имена всех активных сегментов отката. |
V$ROLLSTAT |
Статистика для всех активных сегментов отката. |
V$ROWCACHE |
Статистика активности словаря данных. (Одна строка для каждого буфера памяти) |
V$SECONDARY |
Представление Trusted ORACLE, u котором перечислены вторичнее смонтированные базы данных. |
V$SESS10N |
Информация о текущих сеансах. |
V$SESS10N-WA1T |
Список ресурсов или событий, которых ожидает текущий сеанс. |
V$SESSTAT |
Статистика для текущих сеансов. |
V$SGA |
Суммарная информация об SGA. |
V$SHARED-SERVER |
Информация о вcex разделяемых процессах сервера. |
V$SQLAREA |
Статистика о разделяемых буферах памяти курсора. Одна строка для каждого курсора. |
V$SQLTEXT |
Текст команд SQL, находящихся в разделенных курсорах SGA. |
V$STATNAME |
Раскодированные имена для статистик .из таблицы V$SESSTAT. |
V$SYSLABEL |
Представление Trusted ORACLE, в котором перечислены системные метки. |
V$SYSSTAT |
Текущие значения статистик из таблицы V$SESSTAT. |
V$THREAD |
Информация о потоках, содержащихся п контрольном файле. |
V$TIMER |
Текущее время в сотых долях секунды. |
V$TRANSACTION |
Информация о транзакциях. |
V$TYPE-SIZE |
Размеры различных компонентов базы данных. |
V$VERSION |
Имена версии компонентов библиотеки ядра ORACLE. |
V$WAITSTAT |
Статистика содержимого блока. Обновляется только при включенной временной статистики. |
Специальные таблицы
Таблица CHAINED_ROWS
Список сцепленных строк таблицы или кластера, использованного в команде ANALYZE.
Столбец |
Тип данных |
OWNER-NAME |
VARCHAR2 |
TABLE-NAME |
VARCHAR2 |
CLUSTER-NAME |
VARCHAR2 |
HEAD_ROWID |
ROWID |
TIMESTAMP |
DATE |
Таблица EXCEPTIONS
Эта таблица используется для определения строк, нарушающих правила целостности, если правила целостности включены.
Столбец |
Тип данных |
HEAD.ROWID |
ROWID |
OWNER |
VARCHAR2 |
TABLE-NAME |
VARCHAR2 |
CONSTRAINT |
VARCHAR2 |
PLAN_TABLE
Эта таблица может заполняться командой EXPLAIN PLAN для того, чтобы описать план выполнения оператора SQL.
Столбец |
Тип данных |
STATEMENT.ID |
VARCHAR2 |
TIMESTAMP |
DATE |
REMARKS |
VARCHAR2 |
OPERATION |
VARCHAR2 |
OPTIONS |
VARCHAR |
OBJECT_NODE |
VARCHAR2 |
OBJECT_OWNER |
VARCHAR2 |
OBJECT.NAME |
VARCHAR |
OBJECT_INSTANCE |
NUMBER |
OBJECT_TYPE |
VARCHAR2 |
SEARCH_COLUMNS |
NUMBER |
ID |
NUMBER |
PARENT.ID |
NUMBER |
POSITION |
NUMBER |
OTHER |
LONG |
2.3.3 Защита данных.
Транзакции, фиксация и откат. Изменения в базе данных не сохраняются, пока пользователь явно не укажет, что результаты вставки, модификации и удаления должны быть зафиксированы окончательно. Вплоть до этого момента изменения находятся в отложенном состоянии, и какие-либо сбои, подобные аварийному отказу машины, аннулируют изменения.
Транзакция - элементарная единица работы, состоящая из одного или нескольких операторов SQL;
Все результаты транзакции или целиком сохраняются (фиксируются), или.целиком отменяются (откатываются назад). Фиксация транзакции делает изменения окончательными, занося их в базу данных, и после того как транзакция фиксируется, изменения не могут быть отменены. Откат отменяет все вставки, модификации и удаления, сделанные в транзакции; после отката транзакции ее изменения не могут быть зафиксированы. Процесс фиксации транзакции подразумевает запись изменений, занесенных в журнальный кэш SGA, в оперативные журнальные файлы на диске. Если этот дисковый ввод/вывод успешен, приложение получает сообщение об успешной фиксации транзакции. (Текст сообшения изменяется в зависимости от инструментального средства.) Фоновый процесс DBWR может записывать блоки актуальных данных Oracle в буферный кэш SGA базы данных позже. В случае сбоя системы Oracle может автоматически повторить изменения из журнальных файлов, даже если блоки данных Oracle не были перед сбоем записаны в файлы базы данных.
Oracle также реализует идею отката на уровне оператора. Если произойдет единственный сбой при выполнении оператора, весь оператор завершится неудачей. Если оператор терпит неудачу в пределах транзакции, остальные операторы транзакции будут находиться в отложенном состоянии и должны либо фиксироваться, либо откатываться.
Все блокировки, захваченные транзакцией, автоматически освобождаются, когда транзакция фиксируется или откатывается, или когда фоновый процесс PMON отменяет транзакцию. Кроме того, другие ресурсы системы (такие как сегменты отката) освобождаются для использования другими транзакциями.
Точки сохранения позволяют устанавливать маркеры внутри транзакции таким образом, чтобы имелась возможность отмены только части работы, проделанной в транзакции. Целесообразно использовать точки сохранения в длинных и сложных транзакциях, чтобы обеспечить возможность отмены изменения для определенных операторов. Однако это обусловливает дополнительные затраты ресурсов системы - оператор выполняет работу, а изменения затем отменяются; обычно усовершенствование в логике обработки могут оказаться более оптимальным решением. Oracle освобождает блокировки, захваченные отмененными операторами.
Целостность данных связана с определением правил проверки достоверности данных гарантирующих, что недействительные данные не попадут в ваши таблицы. Oracle позволяет определять и хранить эти правила для объектов базы данных, которых они касаются, таким образом, чтобы кодировать их только однажды. При этом они активируются всякий раз, когда какой-либо вид изменения проводится в таблице, независимо от того, какая программа выполняет вставки, модификации или удаления. Этот контроль осуществляется в форме ограничений целостности и триггеров базы данных.
Ограничения целостности устанавливают бизнес-правила на уровне базы данных, определяя набор проверок для таблиц системы, Эти проверки автоматически выполняются всякий раз, когда вызываются оператор вставки, модификации или удаления данных в таблице. Если какие-либо ограничения нарушены, операторы отменяются. Другие операторы транзакции остаются в отложенном состоянии и могут фиксироваться или отменяться согласно логике приложения.
2.3.4 Привилегии системного уровня
Каждый пользователь Oracle, определяемый в базе данных, может иметь одну или несколько из более чем 80 привилегий системного уровня. Эти привилегии очень тонко управляют правами выполнения команд SQL. Администратор базы данных назначает системные привилегии или непосредственно пользовательским учетным разделам Oracle, или ролям. Роли затем назначаются учетным разделам Oracle.
Например, прежде чем создать триггер для таблицы (даже если вы владелец таблицы как пользователь Oracle), нужно иметь системную привилегию, называемую CREATE TRIGGER, назначенную вашему учетному разделу пользователя Oracle, или роли, присвоенной учетному разделу.
Привилегия CREATE SESSION - другая часто используемая привилегия системного уровня. Чтобы выполнить соединение с базой данных, учетный раздел Oracle должен иметь привилегию системного уровня CREATE SESSION.
Привилегии объектного уровня. Привилегии объектного уровня обеспечивают возможность выполнить определенный тип действия (выбрать, вставить, модифицировать, удалить и т.д.) с указанным объектом. Владелец объекта имеет полный контроль над объектом и может выполнять любые действия с ним; он не обязан иметь привилегии объектного уровня. Фактически владелец объекта - пользователь Oracle, который может предоставлять привилегии объектного уровня другим пользователям.
Например, если пользователь, который владеет таблицей, желает, чтобы другой пользователя вставлял и выбирал строки из его таблицы (но не модифицировал или удалял), он предоставляет другому пользователю привилегии (объектного уровня) отбора и вставки для этой таблицы. Вы можете предоставлять привилегии объектного уровня непосредственно пользователям или ролям, которые затем назначаются учетным разделам пользователей Oracle.
Привилегии выдаются пользователям и ролям командой GRANT и отбираются командой REVOKE. Все привелегии можно разделить на системные и объектные. Системные привилегии относятся ко всему классу объектов, а объектные относятся к заданным объектам.
Назад |
Содержание |
Вперед