- •Раздел 1 sql
- •Раздел 1
- •1 Основные сведения о субд Oracle
- •2. Общие сведения о sql
- •3. Основные правила написания sql-операторов
- •4. Инструкции dml
- •5. Инструкция select
- •6. Предложения select и from
- •7. Отбор строк (предложение where)
- •8. Многотабличные запросы
- •9. Многотабличные запросы на выборку в Oracle
- •10. Предложения group by и having
- •11. Статистические функции
- •12. Подчиненные запросы (подзапросы)
- •13. Добавление данных (инструкция insert)
- •14. Удаление данных (инструкция delete)
- •15. Обновление данных (инструкция update)
- •16. Инструкции ddl
- •17. Стандартные Типы данных sql
- •18. Создание таблиц (инструкция create table)
- •19. Удаление таблицы (инструкция drop table)
- •20. Изменение определения таблицы (инструкция alter table)
- •21. Условия целостности данных
- •22. Создание представлений
- •23. Псевдонимы таблиц (инструкции create / drop synonym)
- •24. Индексы (инструкции create/drop index)
- •25. Последовательности (инструкция create/drop sequence)
- •26. Транзакции
- •27. Журнал транзакций. Проблемы обработки параллельных транзакций
- •28. Блокировки транзакций
- •29. Понятие транзакции и виды блокировок Oracle
- •30. Концепция многоверсионной модели согласованности по чтению
- •31. Управление транзакциями в Oracle
- •32. Принципы защиты данных в стандартном sql (без редакции)
- •33. Разрешение и запрещение ролей
- •34. Способы обеспечения безопасности в Oracle
- •Аутентификация
- •Профили
- •Привилегии
- •Для предоставления системных привилегий или ролей:
- •Для предоставления привилегий доступа к объектам схемы:
- •Для изъятия системных привилегий или ролей:
- •Для изъятия привилегий доступа к объектам:
- •Другие возможности обеспечения безопасности
Привилегии
Привилегии – это права, назначаемые отдельным пользователям или ролям. Привилегии делятся на два основных вида:
Системные привилегии, которые дают пользователю или роли возможность выполнять определенные системные операции.
Объектные привилегии, которые дают пользователю или роли права доступа к отдельным объектам схемы.
Системные привилегии относятся к экземпляру Oracle в целом, например, есть привилегия для всех объектов одного типа. Объектные же привилегии связаны с конкретным объектом схемы внутри базы данных Oracle.
Системные привилегии. Перечислим все системные привилегии Oracle:
Таблица
Привилегия |
Назначение |
ANY
|
Дает привилегию на выполнение операции над объектами любой схемы. В отсутствие такого ключевого слова привилегия выдается только на объекты в рамках схемы пользователя. По умолчанию ключевое слово ANY дает пользователю привилегию на все объекты всех схем, включая SYS. Для того чтобы запретить привилегии ANY на доступ к схеме SYS, можно установить параметр инициализации 07_DISTIONARY_ACCESSIBILITY в FALSE. |
ALTER |
Дает привилегию на изменение объекта некоторого типа |
CREATE |
Дает привилегию на создание объекта данного типа |
DROP |
Дает привилегию на удаление объекта данного типа |
EXECUTE |
Дает привилегию на исполнение объекта данного типа или обращение к нему |
SELECT ANY |
Дает привилегию на доступ к объектам, применяется только с ключевым словом ANY, потому что пользователь всегда имеет возможность доступа к объектам собственной схемы. |
Для примера ниже приведены некоторые из системных привилегий, существующих в ORACLE:
CREATE SESSION (установить сеанс) – позволяет пользователю соединяться с сервером баз данных и устанавливать с ней сеанс связи;
CREATE TABLE (создать таблицу) – позволяет пользователю создавать таблицы в своей собственной схеме;
CREATE ANY TABLE (создать любую таблицу) – позволяет пользователю создавать таблицы в любой схеме базы данных;
CREATE ANY TYPE (создать любой тип) – позволяет пользователю создавать типы и тела соответствующих типов в любой схеме базы данных;
SELECT ANY TABLE (выбрать любую таблицу) – позволяет пользователю обращаться с запросами к любой таблице базы данных;
EXECUTE ANY PROCEDURE (выполнить любую процедуру) – позволяет пользователю выполнять любую хранимую процедуру, хранимую функцию или модульный компонент базы данных.
Каждая из представленных разновидностей привилегий является общей и может применяться со многими типами уникальных системных привилегий, описанных далее.
Таблица
Объект привилегий |
Описание привилегий |
Уникальные привилегии |
Общие привилегии |
AUDIT |
разрешает функции аудита |
AUDIT SYSTEM |
ANY |
CLUSTER |
предоставляет возможность работы с кластерами. |
нет |
CREATE [ANY], ALTER ANY, DROP ANY |
CONTEXT |
предоставляет возможность работы с контекстами. |
нет |
CREATE ANY, DROP ANY |
DATABASE |
предоставляет возможность выполнения команды ALTER DATABASE. |
нет |
ALTER |
DATABASE LINKS |
предоставляет возможность работы со связями БД |
CREATE PUBLIC, DROP PUBLIC |
CREATE |
DEBUG |
предоставляет возможность работы с отладчиком. |
DEBUG CONNECT, SESSION |
|
DIMENSION |
предоставляет возможность работы с измерениями |
нет |
CREATE [ANY], ALTER ANY, DROP ANY |
DIRECTORY |
предоставляет возможность работы с каталогами. |
нет |
CREATE ANY, DROP ANY |
INDEX |
предоставляет возможность работы с индексами |
QUERY REWRITE |
CREATE ANY, ALTER ANY, DROP ANY |
INDEXTYPE |
предоставляет возможность работы с объектами типа INDEXTYPE, |
нет |
CREATE [ANY], ALTER ANY, DROP ANY, EXECUTE ANY |
LIBRARY |
предоставляет возможность работы с библиотеками. |
нет |
CREATE [ANY], DROP ANY |
MATERIALIZED VIEW |
предоставляет возможность работы с материализованными представлениями |
ON COMMIT REFRESH |
CREATE [ANY], ALTER ANY, DROP ANY |
OPERATOR |
предоставляет возможность работы с определяемыми пользователем операторами |
нет |
CREATE [ANY], DROP, EXECUTE |
OUTLINE |
предоставляет возможность работы с хранимыми планами выполнения |
SELECT ANY |
CREATE ANY, ALTER ANY, DROP ANY |
PROCEDURE |
предоставляет возможность работы с процедурами |
нет |
CREATE [ANY], ALTER ANY, DROP ANY, EXECUTE ANY |
PROFILE |
предоставляет возможность работы с профилями |
нет |
CREATE, ALTER, DROP |
RESOURCE COST |
предоставляет возможность присваивания стоимостей ресурсам |
нет |
ALTER |
ROLE |
предоставляет возможность работы с ролями |
GRANT ANY |
CREATE, ALTER ANY, DROP ANY |
ROLLBACK SEGMENT |
предоставляет возможность работы с сегментами отката |
нет |
CREATE, ALTER, DROP |
SEQUENCE |
предоставляет возможность работы с последовательностями. |
нет |
CREATE [ANY], ALTER ANY, DROP ANY, SELECT ANY |
SESSION |
предоставляет возможность работы с сеансами |
ALTER RESOURCE COST, RESTRICTED SESSION |
CREATE, ALTER |
SYNONYM |
предоставляет возможность работы с синонимами |
нет |
CREATE [ANY] [PUBLIC], DROP ANY, DROP PUBLIC |
SYSTEM |
предоставляет возможность изменения параметров системы |
нет |
ALTER |
TABLE |
предоставляет возможность работы с таблицами |
BACKUP ANY, COMMENT ANY, INSERT ANY, LOCK ANY, FLASHBACK ANY, UPDATE ANY |
CREATE [ANY], CREATE ALTER ANY, DELETE ANY, DROP ANY, SELECT ANY |
TABLESPACES |
предоставляет возможность работы с табличными пространствами |
MANAGE, UNLIMITED TABLESPACE |
CREATE, ALTER, DROP |
TYPES |
предоставляет возможность работы с определяемыми пользователем типами |
UNDER ANY |
CREATE [ANY], ALTER ANY, DROP ANY, EXECUTE ANY |
USER |
предоставляет возможность работы с пользователями базы данных |
BECOME |
CREATE, ALTER, DROP |
VIEWS |
предоставляет возможность работы с представлениями |
UNDER ANY |
CREATE [ANY], DROP |
Особые системные привилегии. Существуют также системные привилегии, предназначенные для предоставления пользователю возможности выполнения всего набора операций. Это особые привилегии, поскольку одна привилегия предоставляет пользователю набор базовых полномочий.
Таблица
Привилегия |
Назначение |
Полномочия |
SYSDBA |
дает пользователю все права, необходимые для запуска и остановки базы данных Oracle |
ALTER DATABASE CREATE DATABASE ARCHIVELOG, RECOVERY CREATE SPFILE |
SYSOPER |
предоставляет пользователю чуть более ограниченный набор прав, предназначенный для оператора системы |
ALTER DATABASE OPEN | MOUNT | BACKUP ARCHIVELOG, RECOVERY CREATE SPFILE |
Привилегии доступа к объектам схемы. Существует несколько разновидностей привилегий доступа к объектам схемы. Они могут применяться к различным типам объектов схемы.
Общие привилегии доступа к объектам схемы приведены в таблице
Таблица
привилегия |
назначение |
ALTER |
изменяет определение объекта |
DEBUG |
обращается к PL/SQL_коду или информации о командах SQL, которые обращаются к объекту напрямую через отладчик |
DELETE |
удаляет строки из объекта |
EXECUTE |
компилирует или исполняет процедуру или функцию объекта, или же обращается к программному объекту, объявленному в объекте |
FLASHBACK |
выполняет ретроспективный запрос к объекту |
INSERT |
добавляет в объект новые строки |
REFERENCES |
создает ограничение (constraint), ссылающееся на объект |
SELECT |
запрашивает объект |
UNDER |
создает дочерний объект ниже уровня объекта |
UPDATE |
изменяет существующие данные объекта |
Объекты схемы и их уникальные привилегии. В разделе приведены все типы объектов схемы, при этом для каждого из них указаны общие и уникальные разновидности привилегий.
Таблица
Объект схемы |
назначение |
Уникальные привилегии |
Системные (общие) привилегии |
Каталоги |
предоставляет привилегии на выполнение операций над каталогами |
READ, WRITE |
|
Внешние таблицы |
предоставляет привилегии на выполнение операций над внешними таблицами |
|
ALTER, SELECT |
Библиотеки |
предоставляет привилегии на выполнение операций над библиотеками |
|
EXECUTE |
Материализованные представления |
предварительно агрегированные сводные данные, участвующие в операциях бизнес-интеллекта |
|
DELETE, FLASHBACK,INSERT, SELECT, UPDATE |
Операторы |
предоставляет привилегии на выполнение операций над операторами |
|
EXECUTE |
Процедуры, функции и пакеты |
предоставляет привилегии на выполнение операций над тремя типами программных единиц: процедурами, функциями и пакетами |
|
DEBUG, EXECUTE |
Последовательности |
предоставляет привилегии на выполнение операций над последовательностями |
|
ALTER, SELECT |
Таблицы |
предоставляет привилегии на выполнение операций над таблицами |
INDEX, ON COMMIT REFRESH, QUERY REWRITE |
ALTER, DELETE, DEBUG, FLASHBACK, INSERT, REF_ ERENCES, SELECT, UPDATE |
Пользовательские типы |
предоставляет привилегии на выполнение операций над пользовательскими типами |
|
DEBUG, EXECUTE, UNDER |
Представления |
Предоставляет привилегии на выполнение операций над представлениями |
|
DEBUG, DELETE, FLASHBACK, INSERT, REFERENCES, SELECT, UNDER |
Привилегии и пользователи. Для назначения привилегий пользователю или роли применяется команда GRANT. Команда REVOKE позволяет лишить пользователя или роль привилегии.
Общие ключевые слова и инструкции. Ключевые слова и инструкции, которые могут применяться как в команде GRANT, так и в REVOKE:
ALL PRIVILEGES – предоставляет или отбирает все системные привилегии, за исключением SELECT ANY DICTIONARY. Для объектов предоставляет все привилегии, имеющиеся для данного объекта, ключевое слово PRIVILEGES является необязательным.
получатель – один или несколько пользователей, одна или несколько ролей или ключевое слово PUBLIC, которое предоставляет или отбирает привилегии у всех пользователей базы данных. Если указывается несколько получателей, их следует разделить запятыми.
имя_столбца – один или несколько столбцов, для которых предоставляется или отбирается привилегия доступа к объектам INSERT, REFERENCES или UPDATE. Если имя столбца не указано, то привилегия предоставляется на все столбцы таблицы или представления.
схема.объект – указывает имя объекта, на который выдается или отбирается привилегия. Если схема не задана, то сервер Oracle считает, что объект находится в собственной схеме пользователя.
DIRECTORY имя_каталога – указывает имя каталога, на который выдается или отбирается привилегия.
Инструкция GRANT предоставляет пользователю или роли привилегии или роли. Для того чтобы предоставить привилегию, пользователь должен предварительно получить привилегию или роль с указанием WITH ADMIN OPTION. Также можно предоставлять привилегии, если есть привилегия GRANT ANY PRIVILEGE (для системных привилегий), GRANT ANY ROLE (для ролей), GRANT OPTION (для объектов схемы) или вы являетесь владельцем объекта. Системные привилегии и привилегии доступа к объектам схемы не могут быть предоставлены в одной команде GRANT.