Что такое квота oracle

Обновлено: 06.07.2024

Когда пользователь подключается к БД, он подключается используя пользовательский аккаунт (user account) указывая имя аккаунта и метод аутентификации. Пользовательский аккаунт определяет первоначальные права доступа и атрибуты сессии. С пользовательским аккаунтам свзязывается схема (schema). Термины пользователь, пользовательский аккаунт и схема часто используется вместо друг друга в окружении Oracle, но это не одно и тоже. Пользователь – это человек который подключается к пользовательскому аккаунту устанавливая сессию к экземпляру БД и авторизуется используя имя аккаунта. Схема – это набор объектов принадлежащих пользовательскому аккаунту и мы рассмотрим детальнее в следующей главе. В зависимости от того как создался аккаунт будут установлены определнные аттрибуты для сесиий, некоторые из которых могут быть изменены позднее, во время существования сессии. Некоторые аккаунты создаются во время создания БД и DBA затем создаёт остальные аккаунты.

В некоторых приложениях, каждый пользователь использует свой аккаунт. Т.е. БД знает кто именно владелец каждой сессии. Такая модель хорошо работает для небольших систем но практически невозможна для среды в которой с БД работают сотник и тысячи пользователей. В больших системах пользователи подключаются к БД используя один аккаунт, и это добавляет сложностей для обеспечения безопаности сессии и аудита БД. Мы будем рассматривать модель где каждый пользователь имеет свой аккаунт.

Аттрибуты пользовательского аккаунта

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

  • Имя
  • Метод аутентификации
  • Табличное пространство по умолчанию
  • Лимит табличного пространтсва
  • Временное табличное пространство
  • Статус

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

Имя аккаунта

Имя аккаунта должно быть уникальным для всей БД и соблюдать определенные правила. Имя аккаунта должно начинаться с буквы, длина не более 30 символов и может состоять только из букв, цифр, знака $ и символа подчёркивания. Также именем аккаунта не может быть зарезервированное слово. Символы чувствительны к регистру но будут автоматически преобразованы к верхнему регистру. Все эти правила (за исключением длинны) можно обойти если использовать имя внутри двойных кавычек, как показано на рисунке 6-1.

51

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

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

Табличные пространтсва по умолчанию и лимиты

У каждого аккаунта есть табличное пространство по умолчанию. Это табличное пространство где создаются объекты схемы (такие как таблицы, индексы) создаваемые этим аккаунтом. Аккаунт может создать объекты (быть владельцем) во всех табличных пространствах к которым у него есть лимит (квота), но если явно не указывать табличное пространтсво при создании объекта – будет использователья табличное пространство аккаунта по умолчанию.

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

ALTER DATABASE DEFAULT TABLESPACE tablespace_name ;

Если у БД нет табличного пространства по умолчанию – используется SYSTEM.

На рисунке 6-2 отображено как проверять и устанавливать лимиты

52

Первая команда проверяет представление DBA_USERS и определяет табличные пространства пользователя JOHN. DBA_USERS хранит по одной строке для каждого пользователя БД. Пользователь JOHN получил значения временного и табличного пространства из значения по умолчанию БД (которые видны в результате выполнения запроса к database_properties).

Две команды ALTER USER позволяют аккаунту JOHN использовать 10 МБ пространтсва в табличном пространстве USERS и неограниченный доступ к пространтсву EXAMPLE. Запрос к DBA_TS_QUOTAS отображает затем эту информацию. -1 обозначает неограниченный лимит. Во время выполнения запроса у аккаунта JOHN нет созданных объектов, и поэтому BYTES=0, что значит пространство ещё не используется.

Before you can create a table, you must have both permission to

execute CREATE TABLE and quota on a tablespace in which to create it.

Most users will not need any quotas, because they will never create

objects. They will only have permissions against objects owned by other

schemas. The few object-owning schemas will probably have QUOTA

UNLIMITED on the tablespaces where their objects reside.

Временное табличное пространтсво

Постоянные объекты (такие как таблицы) хранятся в постоянных табличных пространствах; временные объекты хранятся во временном табличном пространстве. Сессии нужно место во временном табличном пространстве если будет использоваться места больше чем доступно в PGA сессии. Операции которым нужно временное место (в памяти если хватает PGA или во временном таблично пространтсве) включают в себя: сортировку строк, объекдинение таблиц, построение индексов и использование временных таблиц. Каждому аккаунту выделяется временное табличное пространство и все пользовательские сессии подключенные к аккаунту будут использовать одно и тоже временное табличное пространство.

Запрос к представлению DBA_USERS на рисунке 6-2 показывает временное пространство пользователя JOHN, которое также является временным табличным простратсвном по умолчанию для БД.

Управление пространством во временных табличных пространствах полностью автоматическое. Объекты создаются и удаляются при необходимости самой БД. Пользователю не нужен лимит на временное таблично пространство, так как все объекты создаются (и он же является владельцем) аккаунтом SYS, у которого неограниченные лимиты для всех табличных пространств.

Users do not need a quota on their temporary tablespace.

Для изменения временного пространства польователя (что затронет все сессии которые подключается в будущем используя этот аккаунт) используйте команду ALTER USER

ALTER USER username TEMPORARY TABLESPACE tablespace_name;

If many users are logging on to the same user account, they will share the

use of one temporary tablespace. This can be a performance bottleneck, which

may be avoided by using temporary tablespace groups.

Профили

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

Профили полезны для управления паролями и ресурсами но могут использоваться только в среде где у каждого пользователя свой аккаунт. Если много пользователей подключаются к БД под одним аккаунтом, вы не захотите чтобы аккаунт блокировался если ввёл пароль несколько раз один пользователь, потому что этим вы заблокируете доступ всем остальным пользователям. Так же и использование ресурсов часто лучше управлять на уровне сессии а не на уровне аккаунта в целом.

Статус аккаунта

Каждый аккаунт имеет определённый статус, и значение можно увидеть в столбце ACCOUNT_STATUS представления DBA_USERS. Всего существует 9 статусов

  • OPEN – аккаунт готов к использованию
  • LOCKED – DBA заблокировал аккаунт, пользовтель не можед подключиться используя заблокированный аккаунт
  • EXPIRED – Пароль может иметь ограниченное время действия. В данном статусе время действия пароля истекло. Пользователь не может подключиться к аккаунта пока пароль не будет восстановлен
  • EXPIRED & LOCKED – Аккаунт заблокирован и время действия пароля истекло
  • EXPIRED (GRACE) – Пароль можно настроить таким образом чтобы он не становился EXPIRED сразу, а ещё был так называемый grace период, во время которого можно подключиться и изменить пароль
  • LOCKED (TIMED) – это обозначает что аккаунт заблокирвоан в связи с неудачными попытками подключения. Аккаунт можно настроить на автоматическую блокировку на какое-то время после определённого количества неудачных попыток подключения
  • EXPIRED & LOCKED (TIMED)
  • EXPIRED (GRACE) & LOCKED
  • EXPIRED (GRACE) & LOCKED (TIMED)

Для блокировки или разблокирования аккаунта используются команды

ALTER USER username ACCOUNT LOCK;

ALTER USER username ACCOUNT UNLOCK;

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

ALTER USER username PASSWORD EXPIRE;

Эта команда автоматически установит грейс пероид, принуждая пользователя изменить пароль при следующей попытке подключения. Нет команды UNEXPIRE. Единственный способ восстановить аккаунт – это изменить пароль.

Методы аутентификации

Аккаунт должен иметь определённый метод аутентификации: что-то что позволяет определить БД есть ли у пользователя пытающегося создать сессию доступ к аккаунту. Самый простой метод это использование пароля который совпадает с паролем хранящемся в БД, но есть и альтернативы. Возможнные варианты это

  • Аутентификация ОС
  • Аутентификация с помощью файла паролей
  • Аутентификация паролем
  • Внешняя аутентификация
  • Глобальная аутентификация

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

Аутентификация ОС и файлом паролей

Для разрешения аккаунту использования этих методов аутентификации (эти два типа используется вместе) необходимо назначить аккаунта расширенные права SYSDBA или SYSOPER

GRANT [sysdba|sysoprt] TO username;

Назначение этих прав скопирует пароль аккаунта из словаря данных во внешний файл паролей, откуда он может быть считан экземпляром даже если БД ещё не открыта. Это также позволит экземпляру аутентифицировать пользователей путём проверки принадлежит ли пользователь группе-владельцу программ Oracle. После установки БД единственный аккаунт с этими правами – это SYS.

Для использования файла паролей можно использоуть следующий синтаксис

CONNECT username/password[@db_alias] AS [SYSOPER|SYSDBA];

Аутентификация с помощью файла паролей можно использовать для подключения к удалённой БД используя Oracle Net

Чтобы использовать авторизацию ОС пользователсь должен быть авторизован ОС с доступом к исполняемым файлам Oracle и затем можно выполнить команду

CONNECT / AS [SYSOPER|SYSDBA]

Пароли ОС не хранятся Oracle и поэтому не может быть проблем со сменой пароля.

Эквивалентом этой команды может быть подключения через Database Control при выбранном значении SYSDBA в списке Connect As. Для определения у кого есть пава SYSDBA и SYSOPER можно выполнить запрос к представлению V$PWFILE_USERS. Подключение с использованием аутентифкации файлом паролей или ОС всегда доступно вне зависимости от состояния экземпляра и БД и такой вид подключения необходим для выполнения команд STARTUP и SHUTDOWN.

Третий вид привилегий SYSASM но это выходит за рамки этого курса.

Аутентификация паролем

Синтаксис для подключения используя аутентификацию паролем используя SQL *Plus

Или в Database Control выбрать NORMAL в списке Connect As. Когда подключение происходит используя аутентифкацию паролем, экземпляр проверит пароль в строке подключения с паролем который хранится для этого аккаунта в словаре данных. Для того чтобы был доступен такой метод аутентификации БД должна быть открыта; и используя этот метод невозможно выполнять команды STARTUP и SHUTDOWN.Пользователь SYS не имеет прав подключения используя аутентификацию паролем – только через файл паролей, аутентификацию ОС или LDAP.

Начиная с версии 11g пароли чувствительны к регистру. Пароль хранится именно так как был введён без всяких преобразований регистра.

Когда подключение происходит по сети, 11g всегда использует шифрование перед передачей данных. Для шифрованя данных между пользовательским процессом и серверным процессом необходимо Advanced Security Option, но шифрование пароля включено по умолчанию.

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

ALTER USER username IDENTIFIED BY password;

Внешняя аутентификация

Если аккаунт был создан с директивой внешней аутентификации, Oracle делегирует аутентифкацию внешнему сервису; т.е. не будет запрошен пароль. Если куплена Advanced Security Option, то внешним сервисом может быть сервер Kerberos, сервер RADIUS или сервис аутентификации Windows. Когда пользователь пытается подключиться к аккаунту, вместо аутентификации пользователя, БД будет разрешать (или не разрешать) подключение в зависимости от того авторизован или пользователь во внешнем сервисе. Например если используется Kerberos – БД проверит существует ли у пользователя валидный Kerberos токен. Без Advanced Security Option – единственно доступной формой внешней аутентификации будет аутентификация ОС. Это требует прав SYSDBA или SYSOPER (как описано выше) но может быть использовано и для обычных аккаунтов. Необходимо создать пользователя Oracle с таким же именем как и аккаунт ОС с префиксом указанном в параметре OS_AUTHENT_PREFIX. По умолчанию значение OPS$. Для проверки значения можно использовать запрос

select value from v$parameter where name=’os_authent_prefix’

В Linux/Unix внешняя аутентификация ОС работает очень просто. Предполагая что значение OS_AUTHENT_PREFIX осталось по умолчанию и есть пользователь ОС с именем jwatson, можно создать пользователя Oracle и дать права подключения следующим образом

create user ops$jwatson identified externally;

grant create session to ops$jwatson;

Пользователь подключенный к ОС как jwatson сможет подключиться к БД выполнив команду

из командной строки ОС и будет подключен к БД как пользователь ops$jwatson.

В Windows обычно используется домен и тогда команда создания пользователя будет вида

Using external authentication can be very useful, but only if the users

actually log on to the machine hosting the database. Users will rarely do this,

so the technique is more likely to be of value for accounts used for running

maintenance or batch jobs.

Глобальная аутентификация

Стандартом для управления идентификацией признано использование LDAP серверов. Под глобальным пользователем (global user) подразумевается пользователь определённый в LDAP директории, и глобальная аутентификация (global authentification) значит делегирование аутентификации пользователя серверам LDAP.

Существует два метода для глобальной аутентификации

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

Если всё настроено как надо подключение будет создано без запроса пароля.

Создание аккаунтов

У команды CREATE USER всего два обязательных параметра: имя и метод аутентификации. Дополнительно, можно указать табличное пространство по умолчанию и временное табличное пространство, лимиты, профили и команды блокировки аккаута и управления паролем. Пример команды (номера строк добавлены для удобства)

1 create user scott identified by tiger

2 default tablespace users temporary tablespace temp

3 quota 100m on users, quota unlimited on example

4 profile developer_profile

5 password expire

6 account unlock;

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

  • Имя и пароль для аутентификации паролем
  • Табличное пространство по умолчанию и временное табличное пространство
  • Лимиты
  • Профиль для управления паролем и ресурсами
  • Принудительное изменение пароля при первом подключении
  • Аккаунт готов к использованию (команда по умолчанию)

Каждый параметр может быть изменён командой ALTER USER кроме имени. Для смены пароля выполните команду

alter user scott identified by lion;

Смена табличных пространств

alter user scott default tablespace store_data temporary tablespace temp;

alter user scott quota unlimited on store_data, quota 0 on users;

alter user scott profile prod_profile;

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

drop user scott;

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

drop user scott cascade;

Для управления пользователя в Database Control из домашней страницы перейдите на вкладку Server и перейдите по ссылке Users в секции Security. В новом окне отобразятся все пользователи остортированные по дате создания. Для сортировки по какому либо столбцу нажмите на заголовок столбца. На рисунке 6-3 отображается окно Database Control

рисунок 6-3 Окно управления пользователя в Database Control

рисунок 6-3 Окно управления пользователя в Database Control

Первый аккаунт на рисунке – PUBLIC. Это формальный пользователь которому необходимо назначить права для применения прав ко всем пользователям. Кнопки CREATE и DELETE позволяют создавать и удалять пользователей.

Для изменения аттрибутов аккаунта можно выделить пользователя и нажать EDIT. Октроется окно Edit User, показанное на рисунке 6-4. Это окно можно использовать для изменения аттрибутов кроме лимитов табличных пространств. Для этого есть отдельное окно. Также здесь можно назначать и удалять права и роли.

Рисунок 6-4 Редактирование аккаунта

Рисунок 6-4 Редактирование аккаунта

Свойство quota используется для установки предела по объему пространства, занимаемого файловой системой. Также предусмотрено свойство reservation , которое гарантирует наличие определенного объема пространства для файловой системы. Оба свойства применяются в отношении набора данных, в котором они установлены, и дочерних элементов этого набора данных.

Таким образом, при установке квоты для набора данных tank/home общий объем пространства, используемого tank/home и всеми дочерними элементами, не может превышать эту квоту. Аналогичным образом, при настройке резервируемого пространства для tank/home система tank/home и все ее дочерние элементы будут использовать это пространство. Объем пространства, используемого набором данных и всеми его дочерними элементами, указывается в свойстве used .

Свойства refquota и refreservation могут использоваться для управления пространством файловой системы (без учета пространства, потребленного дочерними элементами, например снимками и клонами).

В данной версии Solaris можно установить квоту user или group для объема пространства, используемого файлами, относящимися к отдельному пользователю или группе. Свойства квот для пользователей или групп не могут быть установлены для тома в файловой системе до версии 4 или в пуле до версии 15.

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

Свойства quota и reservation удобны для управления пространством, используемым наборами данных.

Свойства refquota и refreservation предназначены для управления пространством, используемым наборами данных и снимками.

Если указать для свойства refquota или refreservation значение, которое больше, чем значение свойства quota или, соответственно, reservation, то это значение не вступит в силу. Если настроено значение для свойства quota или refquota, то операции, пытающиеся использовать более высокое значение, будут заканчиваться сбоем. Допускается превышение значения quota, если оно больше значения refquota. Если отдельные блоки снимка испорчены, то можно превысить значение quota до того, как будет превышено значение refquota.

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

Для получения подробной информации о настройке квот и резервируемого пространства см. Установка квот в файловых системах ZFS и Настройка резервируемого пространства в файловых системах ZFS.

Установка квот в файловых системах ZFS

Для настройки и просмотра квот ZFS используются команды zfs set и zfs get . В следующем примере для tank/home/bonwick установлена квота 10 ГБ.

Квоты ZFS также влияют на выходные данные команд zfs list и df . Пример:

Следует отметить, что, несмотря на наличие в tank/home свободного пространства 33,5 ГБ, системам tank/home/bonwick и tank/home/bonwick/ws предоставляется только 10 ГБ свободного пространства, поскольку настроена квота для tank/home/bonwick .

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

Для набора данных можно настроить свойствоrefquota, ограничивающее объем доступного набору пространства. Этот жесткий лимит не включает пространство, используемое дочерними элементами, такими как снимки и клоны. Пример:

Кроме того, для набора данных можно установить еще одну квоту для управления пространством, которое используется снимками. Пример:

В данном случае studentA может достичь жесткого предела, определяемого свойством refquota (10 ГБ), но может удалить файлы для восстановления, даже если существуют снимки.

В приведенном выше примере команда zfs list отображает меньшую квоту (10 и 20 ГБ). Чтобы увидеть обе квоты, используйте команду zfs get . Пример:

Настройка квот пользователя или группы в файловой системе ZFS

Для настройки квоты пользователя или группы используются команды zfs userquota и zfs groupquota .

Отображение текущей квоты quota или group выполняется следующим образом:

Просмотр информации об общем использовании пространства пользователя или группы можно выполнить с помощью запроса следующих свойств:

Если требуется получить информацию об использовании пространства пользователя или группы по отдельности, используется запрос для следующих свойств:

Свойства квоты user и group не отображаются с помощью команд zfs get all dataset, которые используются для вывода перечня всех свойств файловой системы.

Удаление квот user или group выполняется следующим образом:

Квоты ZFS user и group имеют следующие функции:

При настройке в файловой системе квота user или group, установленная в родительской файловой системе, не наследуется автоматически дочерней файловой системой.

Однако квота user или group применяется при создании клона или снимка файловой системы, имеющий квоту user или group. Таким же образом квота user или group включается в файловую систему при создании потока с помощью команды zfs send даже без параметра -R .

Пользователи без соответствующих прав имеют доступ только к их собственному дисковому пространству. Пользователь типа root или пользователь, получивший права userused или groupused, может иметь доступ к информации о пространстве для учетных записей любого пользователя или группы.

Свойства userquota и groupquota невозможно настроить для томов ZFS, в файловой системе версии ниже 4 или в пуле версии ниже 15.

Для обзора квот пользователей в среде NFS может использоваться старая команда quota , например там, где смонтирована файловая система ZFS. Без указания параметров при выполнении команды quota выходные данные отображаются только в том случае, если превышена квота пользователя. Пример:

В случае сброса квоты, и если ограничение квоты более не превышается, для обзора квоты пользователя требуется использовать команду quota -v . Пример:

Настройка резервируемого пространства в файловых системах ZFS

Настройка резервируемого пространства ZFS подразумевает распределение пространства пула, гарантированно доступного набору данных. Таким образом, зарезервировать для набора данных пространство, которое в настоящее время не доступно в пуле, невозможно. Общий объем всех указанных резервирований не может превышать объем неиспользуемого пространства в пуле. Для настройки и просмотра резервируемого пространства ZFS используются команды zfs set и zfs get . Пример:

Настройка резервируемого пространства ZFS может повлиять на выходные данные команды zfs list . Пример:

Обратите внимание, что система tank/home использует пространство объемом 5 ГБ, несмотря на то, что общий объем пространства, доступного для tank/home и ее дочерних элементов, значительно меньше 5 ГБ. Используемое пространство отражает пространство, зарезервированное для tank/home/moore . Настройки резервируемого пространства учитываются при отображении занятого пространства родительского набора данных и проверяются на соблюдение установленных квот и прочих резервирований.

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

Настройки резервируемого пространства не суммируются. Это означает, что при втором вызове команды zfs set для определения резервируемого пространства суммирование зарезервированного объема не выполняется. Напротив, вторая настройка заменяет собой первую.

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

Можно также настроить резервирование пространства для того же набора данных, чтобы гарантировать пространство для набора данных и для снимков. Пример:

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

В приведенном выше примере команда zfs list отображает меньшую квоту (10 и 20 ГБ). Чтобы увидеть обе квоты, используйте команду zfs get . Пример:

Если установлено свойство refreservation, то иметь снимок разрешается только при наличии в пуле достаточного свободного пространства (за пределами данного резервирования) для размещения текущего объема байт referenced в наборе данных.

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;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SQL> CREATE PROFIE student_profile LIMIT

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

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

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

PROFILE профиль

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

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

Управление и обслуживание табличного пространства ORACLE

1: Концепция табличного пространства

В базе данных ORACLE все данные хранятся в табличном пространстве из логической структуры, конечно же, есть логические структуры, такие как сегменты, области, блоки под табличным пространством. Из физической структуры он помещается в файл данных. Табличное пространство может состоять из нескольких файлов данных.

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

clip_image002

clip_image002[4]

1.1 базовое табличное пространство

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

Сколько табличных пространств необходимо в системе?

Ответ: SYSTEM, SYSAUX, TEMP, UNDO, как USERS, ПРИМЕР Ожидание табличного пространства необязательно.

1.2 Классификация табличных пространств

Постоянное табличное пространство Храните постоянные данные, такие как таблицы, индексы и т. Д.

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

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

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

Метод управления табличным пространством:

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

2: создать табличное пространство

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

3.1 Информация табличного пространства

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

Просмотр табличного пространства:

Просмотр табличного пространства позволяет просматривать основную информацию через следующие системные представления

-Содержит описательную информацию для всех табличных пространств в базе данных

SELECT * FROM DBA_TABLESPACES

-Содержит информацию описания табличного пространства текущего пользователя

SELECT * FROM USER_TABLESPACES

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

SELECT * FROM V$TABLESPACE;

Просмотр файлов данных

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

SELECT * FROM DBA_DATA_FILES

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

SELECT * FROM DBA_TEMP_FILES

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

SELECT * FROM V$DATAFILE

- Содержит основную информацию обо всех временных файлах данных

SELECT * FROM V$TEMPFILE

3.1.1. Просмотр табличного пространства TEMP по умолчанию

Уровень базы данных

уровень пользователя

3.1.2. Просмотр постоянного табличного пространства по умолчанию

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

3.1.3. Просмотр табличного типа по умолчанию

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

3.1.4. Просмотр табличного пространства

SELECT * FROM DBA_TABLESPACES

3.1.5. Просмотр файла данных табличного пространства

Постоянное табличное пространство / UNDO табличное пространство

SELECT * FROM DBA_DATA_FILES;

Временное табличное пространство

SELECT * FROM V$TEMPFILE;

3.1.6. Просмотр использования табличного пространства

Рассчитать использование табличного пространства (с учетом автоматического роста файлов данных)

3.2 табличное пространство по умолчанию

В базе данных ORACLE 9i, когда создается пользователь базы данных, если не указано постоянное табличное пространство по умолчанию, система использует табличные пространства SYSTME в качестве постоянного табличного пространства пользователя по умолчанию, а временное табличное пространство по умолчанию - TEMP. В ORACLE 10 / 11g, если вы не укажете постоянное табличное пространство по умолчанию, это ПОЛЬЗОВАТЕЛИ. Временное табличное пространство по умолчанию - TEMP, конечно, при условии, что вы не изменили значение постоянного табличного пространства по умолчанию или не указали постоянное табличное пространство пользователя по умолчанию. ORACLE позволяет использовать настраиваемые табличные пространства в качестве постоянного табличного пространства по умолчанию, вы можете использовать следующий SQL для просмотра постоянного табличного пространства по умолчанию и временного табличного пространства по умолчанию в базе данных.

SQL>SELECT * FROM database_properties
WHERE PROPERTY_NAME = 'DEFAULT_PERMANENT_TABLESPACE';

SQL>SELECT * FROM database_properties
WHERE PROPERTY_NAME ='DEFAULT_PERMANENT_TABLESPACE'

Вы можете использовать инструкцию ALTER DATABASE DEFAULT TABLESPACE, чтобы установить постоянное табличное пространство по умолчанию для базы данных, чтобы при создании пользователя указанное табличное пространство использовалось по умолчанию.

Уровень базы данных:

Постоянное табличное пространство

SQL>ALTER DATABASE DEFAULT TABLESPACE USER;

Временное табличное пространство

SQL>ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP;

SQL>ALTER USER USERNAM DEFAULT TABLESPACE NEW_TABLESPACE_NAME

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

SELECTUSERNAME, DEFAULT_TABLESPACEFROMDBA_USERS

1: Если мы указали табличное пространство по умолчанию в качестве значения DEFAULT_PERMANENT_TABLESPACE при создании пользователя, то после изменения табличного пространства по умолчанию табличное пространство пользователя также изменится.

2: Если мы не указали табличное пространство пользователя при создании пользователя, то табличное пространство по умолчанию БД также будет использоваться по умолчанию. В это время, если мы изменим табличное пространство по умолчанию БД, табличное пространство пользователя также изменится.

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

3: Если мы создаем пользовательское табличное пространство пользователя, являющееся другим табличным пространством, то мы изменяем табличное пространство БД по умолчанию, которое не повлияет на табличное пространство пользователя.

4: табличное пространство по умолчанию БД не может быть удалено, если табличное пространство по умолчанию не указано на другие табличные пространства, прежде чем его можно будет удалить.

SQL> DROP TABLESPACE USERS;

DROP TABLESPACE USERS

ORA-12919: невозможно удалить постоянное табличное пространство по умолчанию

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

SQL> DROP TABLESPACE TEST2;

3.3 удалить табличное пространство

В дополнение к табличному пространству SYSTEM любое табличное пространство в базе данных может быть удалено. При удалении табличного пространства ORACLE просто удаляет информацию, связанную с табличным пространством и файлом данных, в управляющем файле и словаре данных. По умолчанию ORACLE не удаляет соответствующий файл данных в операционной системе, поэтому после успешного выполнения операции удаления табличного пространства необходимо вручную удалить соответствующий файл данных табличного пространства в операционной системе. Если вы удаляете соответствующий файл данных при удалении табличного пространства, вы должны отобразить указанное предложение INCLUDING CONTENTS AND DATAFILES. Примечание: Текущее табличное пространство по умолчанию на уровне базы данных не может быть удалено, а пользовательское табличное пространство может быть удалено. В противном случае будет сообщено об ошибке: ORA-12919: Невозможно удалить постоянное табличное пространство по умолчанию.

DROP TABLESPACE имя табличного пространства [ВКЛЮЧАЯ СОДЕРЖАНИЕ [И ДАННЫЕ ФАЙЛЫ] [КАСКАДНЫЕ СООТВЕТСТВИЯ]]

SQL> DROP TABLESPACE URER01 INCLUDING CONTENTS;

Если объект базы данных включен в табличное пространство, указанный оператор INCLUDING CONTENTS должен отображаться в операторе DROP TABLESPACE. Если вы хотите удалить табличное пространство USER при удалении соответствующего файла данных, вы можете использовать следующий оператор

SQL>DROP TABLESPACE USER01 INCLUDING CONTENTS AND DATAFILES;

Примечание. При удалении табличного пространства параметры CONTENTS и DATAFILES не выровнены, и будет показана следующая ошибка:

SQL>DROP TABLESPACE TBS_STAGE_DAT INCLUDING DATAFILES AND CONTENTS

ORA-01911:contents keyword expected

SQL>DROP TABLESPACE TBS_STAGE_DAT INCLUDING CONTENTS AND DATAFILES

3.4 Настройте табличное пространство

3.4.1 Добавить файл данных

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

При добавлении нового файла данных, если операционная система с таким именем уже существует, инструкция ALTER TABLESPACE завершится ошибкой. Если вы хотите перезаписать файл операционной системы с тем же именем, вы должны указать предложение REUSE, показанное ниже.

SQL> ALTER TABLESPACE TBS_EDS_DAT

2 ADD DATAFILE 'G:\datafile\TBS_EDS_DAT01.DBF'

4 AUTOEXTEND ON

6 MAXSIZE 51200M;

ALTER TABLESPACE TBS_EDS_DAT

Произошла ошибка в строке 1:

ORA-03206: максимальный размер файла (6553600) блока в предложении AUTOEXTEND вне диапазона

Размер файла данных, поддерживаемый ORACLE, определяется числом db_block_size и db_block. Число db_block (блок ORACLE) является фиксированным значением 2 ** 22-1 (4194303). Емкость файла данных = количество блоков * размер блока. В следующем списке показан максимальный размер физического файла, который могут поддерживать разные базы данных блоков данных:

Размер блока данных Максимальный физический файлMМаксимальный физический файл G

16KB 65535M 64G

32KB 131072M 128G

64KB 262144M 256G

3.4.2 Настройка размера файла данных

Сбросить размер файла данных

ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf'

3.4.3 Удалить файлы данных

ALTER TABLESPACE TEST

DROP DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf'

3.4.4 Мобильные файлы данных

Теперь есть такой случай: в прошлом на сервере базы данных был только один диск с относительно небольшой емкостью, и все файлы данных были помещены на диск D. Позже я подал заявку на диск 1T и мне нужно было освободить место для диска D (диск D заполнен). Переместите несколько больших файлов данных на диск 1T:

Под Linux / Unix

3.4.5 Файлы автономных данных

ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf' OFFLINE;

3.4.6 Файл данных онлайн

ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf' ONLINE;

4: поддерживать табличное пространство

4.1 Изменение состояния табличного пространства

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

Чтобы просмотреть состояние табличного пространства, вы можете просмотреть его с помощью следующего оператора SQL.

4.1.1 Табличное пространство не в сети

SQL>ALTER TABLESPACE TBS_DM_DAT OFFLINE IMMEDIATE;

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

НОРМАЛЬНЫЙ Этот параметр указывает, что табличное пространство переключается в автономное состояние обычным способом. Затем закройте все файлы данных табличного пространства. Если во время этого процесса не возникает ошибок, вы можете использовать параметр NORMAL, который также используется по умолчанию.

TEMPORARY Этот параметр временно переводит табличное пространство в автономный режим. В настоящее время ORACLE не будет проверять состояние каждого файла данных при выполнении контрольной точки. Даже если некоторые файлы данных недоступны, ORACLE будет игнорировать эти ошибки. Таким образом, когда табличное пространство установлено в оперативное состояние, может потребоваться восстановление данных.

IMMEDIATE Этот параметр немедленно переводит табличное пространство в автономный режим, при котором ORACLE не будет выполнять контрольную точку или проверять, доступен ли файл данных. Вместо этого файлы данных, принадлежащие табличному пространству, переводятся в автономный режим. База данных должна быть восстановлена ​​при следующем включении табличного пространства в оперативный режим.

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

Если база данных работает в неархивном режиме (NOARCHIVELOG), поскольку данные для восстановления, необходимые для восстановления табличного пространства, не могут быть сохранены, табличное пространство нельзя немедленно переключить в автономное состояние. Если табличное пространство находится в автономном режиме, запросите таблицы в табличном пространстве и сообщите об ошибке: в данный момент ORA-00376 не может прочитать файл, а ORA-01110: файл данных x .

Примечание. Автономный режим (автономный режим) обычно используется для оперативного резервного копирования базы данных, восстановления данных и других операций обслуживания. Некоторые табличные пространства не могут быть в автономном режиме, такие как: SYTEM, UNDO и т. Д.

1. SYTEM не может быть в автономном режиме или только для чтения

2. Пустое пространство текущей таблицы UNDO не может быть отключено или доступно только для чтения.

3. Текущее временное табличное пространство не может быть отключено или доступно только для чтения.

4. SYSAUX может быть в автономном режиме, но не только для чтения

SQL> ALTER TABLESPACE SYSTEM OFFLINE;

ALTER TABLESPACE SYSTEM OFFLINE

ORA-01541: system tablespace cannot be brought offline; shut down if necessary

SQL> ALTER TABLESPACE SYSTEM OFFLINE;

ALTER TABLESPACE SYSTEM OFFLINE

ORA-01541: system tablespace cannot be brought offline; shut down if necessary

4.1.2 Табличное пространство онлайн

SQL> ALTER TABLESPACE TBS_DM_DAT ONLINE;

4.1.3 Табличное пространство только для чтения

SQL>ALTER TABLESPACE TBS_DM_DAT READY ONLY;

Когда табличное пространство доступно только для чтения, никакие операции DML не могут быть выполнены с таблицами в нем, в противном случае будет сообщено об ошибке: ORA-00372: файл xxx не может быть изменен в данный момент

ORA-01110: файл данных xx: ********. Но таблицу можно удалить.

4.1.4 Табличное пространство для чтения и записи

SQL>ALTER TABLESPACE TBS_DM_DAT READ WRITE;

4.1.5 Переименование табличного пространства

До ORACLE 10g имя табличного пространства нельзя изменить. В ORACLE 11G, используя предложение RENAME в операторе ALTER TABLESPACE, администратор базы данных может изменить имя табличного пространства.

4.1.6 Включить автоматическое расширение

ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf' AUTOEXTEND ON;

4.1.7 Отключить автоматическое расширение

ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf' AUTOEXTEND OFF;

5 Квота табличного пространства

Недостаточное табличное пространство и недостаточная квота пользователя - это две разные концепции. Размер табличного пространства относится к размеру фактического пользовательского табличного пространства, а размер квоты относится к размеру табличного пространства, указанного пользователем. Два решения не совпадают

3.5.1 Просмотр квоты табличного пространства пользователя

MAX_BYTES = -1 означает, что квота не установлена,

3.5.2 Управление квотой табличного пространства пользователя

Создание и изменение квоты пользовательского табличного пространства:

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

CREATE USER TEST IDENTIFIED BY TEST

DEFAULT TABLESPACE TS_TEST

TEMPORARY TABLESPACE TEMP

QUOTA 3M ON TS_TEST

2. Измените ограничение табличного пространства пользователя:

A: Не контролируйте ограничение табличного пространства для пользователей:

Проверьте, нет ли ограничения табличного пространства

B: отменить квоту

Этот подход является глобальным.

SQL> GRANT UNLIMITED TABLESPACE TO SCOTT;

Или для конкретного табличного пространства.

SQL>ALTER USER SCOTT QUOTA UNIMITED ON TBS_EDS_DAT;

SELECT * FROM SESSION_PRIVS WHERE PRIVILEGE='UNLIMITED TABLESPACE'

SQL> REVOKE UNLIMITED TABLESPACE FROM SCOTT;

C: установить квоты

3. Может распространяться естественным путем или переработано:

revoke unlimited tablespace from TEST;

alter user skate quota 0 on TB;

Чтобы решить проблему недостаточного размера табличного пространства: используйте команду «ALTER TABLESPACE tablespace_name ADD DATAFILE filename SIZE size_of_file», чтобы увеличить табличное пространство до указанных данных, в зависимости от конкретной ситуации можно увеличить одно или несколько табличных пространств.

Читайте также: