Управление доступом к базе данных. Пользователи базы данных Oracle и схемы. Аутентификация в СУБД Oracle и SQL Server, страница 6

§  Квоты в табличном пространстве

Oracle может ограничить количество дискового пространства, доступного для хранения объектов схемы. Квота (quota) определяет максимальное пространство, которое пользователь может использовать в каждом табличном пространстве (нулевая квота делает табличное пространство недоступным). По умолчанию ни один пользователь не имеет квоты ни в каком табличном пространстве, поэтому, следовательно, не может создавать объекты, даже если имеет соответствующие привилегии.

§  Чтобы пользователь мог создавать или увеличивать размер объектов в собственной схеме, он должен иметь квоту на использование соответствующего табличного пространства

§  Если пользователь имеет привилегию на объекты другой схемы (например, привилегию на вставку строк в таблицу другого пользователя), квота в табличном пространстве не требуются

§  Квота на использование временного табличного пространства пользователю не нужна, т.к. все объекты, которые автоматически создаются во временных сегментах, являются собственностью пользователя SYS

Табличное пространство по умолчанию, временное табличное пространство и квоты на использование табличного пространства указываются при создании пользователя (предложений QUOTA может быть несколько – по одному для каждого табличного пространства).

CREATE USER пользователь IDENTIFIED BY {пароль | EXTERNALLY}
[DEFAULT TABLESPACE табличное_пространство]
[TEMPORARY TABLESPACE табличное_пространство]
[QUOTA {целое | UNLIMITED} ON табличное_пространство]
[QUOTA {целое | UNLIMITED} ON табличное_пространство]

DEFAULT TABLESPACE – устанавливает табличное пространство по умолчанию для объектов пользователя

TEMPORARY TABLESPACE – устанавливает временное табличное пространство для временных сегментов

QUOTA – разрешает пользователю занимать пространство в указанном табличном пространстве

целое – задает квоту в Кбайтах или Мбайтах (M)

UNLIMITED – разрешает пользователю выделять в указанном табличном пространстве неограниченное пространство

Пример:

SQL> CREATE USER student IDENTIFIED BY tbd

     DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp

     QUOTA 15M ON users QUOTA 5M ON system;

User created.

Профили и ограничение использования ресурсов

Каждому пользователю базы данных назначается профиль (profile), который задает ограничения на использование некоторых системных ресурсов, доступных пользователю. Системные ресурсы, на которые можно задать ограничение, включают:

§  Количество одновременных сеансов пользователя

§  Время использования центрального процессора для сеанса или отдельного SQL утверждения

§  Количество логического ввода/вывода для сеанса или отдельного SQL утверждения

§  Время бездействия, разрешенное для сеанса пользователя

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

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

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

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

§  Лимиты уровня сеанса контролируются для каждого соединения. Если превышен лимит уровня сеанса:

§  выполняется откат команды;

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

§  разрешаются только команды COMMIT, ROLLBACK или завершение сеанса;

§  никакие дальнейшие действия в текущем сеансе выполнены быть не могут.

§  Лимиты уровня команды контролируются для каждой команды SQL (и для каждого подзапроса). Если превышен лимит уровня команды:

§  обработка команды прекращается;

§  выполняется откат команды;

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

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

Ресурсы, контролируемые на уровне сеанса:

Ресурс

Описание

CPU_PER_SESSION

Общее процессорное время в сотых долях секунды

SESSIONS_PER_USER

Число одновременных сеансов для одного пользователя

CONNECT_TIME

Время соединения в минутах

IDLE_TIME

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

LOGICAL_READS_PER_SESSION

Число блоков данных (физическое и логическое чтение)

PRIVATE_SGA

Частная область в SGA (только для многопотокового сервера)

Ресурсы, контролируемые на уровне команды:

Ресурс

Описание

CPU_PER_CALL

Процессорное время на команду в сотых долях секунды

LOGICAL_READS_PER_CALL

Число прочитанных блоков данных (физическое и логическое чтение)

Создание профиля

Для создания профиля используется SQL команда CREATE PROFILE

CREATE PROFILE профиль LIMIT
[SESSIONS_PER_USER {целое | UNLIMITED | DEFAULT}]
[CPU_PER_SESSION {целое | UNLIMITED | DEFAULT}]
[CPU_PER_CALL {целое | UNLIMITED | DEFAULT}]
[CONNECT_TIME {целое | UNLIMITED | DEFAULT}]
[IDLE_TIME {целое | UNLIMITED | DEFAULT}]
[LOGICAL_READS_PER_SESSION {целое | UNLIMITED | DEFAULT}]
[LOGICAL_READS_PER_CALL {целое | UNLIMITED | DEFAULT}]
[PRIVATE_SGA {целое | UNLIMITED | DEFAULT}]

профиль – имя профиля

UNLIMITED – пользователь может использовать ресурс без ограничений

DEFAULT – для профиля копируется значение из профиля DEFAULT

Пример:

SQL> CREATE PROFIE student_profile LIMIT

     SESSIONS_PER_USER 5

     CPU_PER_CALL UNLIMITED

     IDLE_TIME 60;

Profile created.

Назначение профиля

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

CREATE USER пользователь IDENTIFIED BY {пароль | EXTERNALLY}
[DEFAULT TABLESPACE табличное_пространство]
[TEMPORARY TABLESPACE табличное_пространство]
[QUOTA {целое | UNLIMITED} ON табличное_пространство]
[QUOTA {целое | UNLIMITED} ON табличное_пространство]

PROFILE профиль

PROFILE профиль – назначает пользователю указанный профиль

Пользователи, которым не назначен профиль, имеют профиль DEFAULT, который всегда существует в базе данных и является профилем по умолчанию. Кроме того, для любого профиля все не заданные явно значения берутся из профиля DEFAULT.