Словарь данных. Первыми
таблицами, создаваемыми в любой базе данных,
являются системные таблицы, или словарь
данных 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_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. Все привелегии можно разделить на
системные и объектные. Системные
привилегии относятся ко всему классу
объектов, а объектные относятся к заданным
объектам.