Удалить пользователя oracle вместе с табличным пространством
Типы табличных пространств (постоянные, временные и отката)
Основными типами табличных пространств в базах данных Oracle являются постоянные и временные табличные пространства, а также табличные пространства отката.
В постоянных табличных пространствах содержатся сегменты, существование которых не ограничено текущим сеансом или транзакцией.
Хотя табличные пространства отката также могут содержать сегменты, которые будут сохранены и после окончания сеанса или транзакции, они обеспечивают согласованность по чтению (read consistency) для операторов выборки данных (select), которые обращаются к модифицируемым таблицам, а также данные отката для значительного количества ретроспективных (flashback) возможностей базы данных. Однако главным назначением сегментов отката является сохранение старых значений модифицируемых (обновляемых и удаляемых) столбцов, или указание на то, что не существует строки для вставки, так что, если сеанс пользователя аварийно закончится еще до того, как пользователь задаст команду commit или rollback, все обновления, вставки или удаления будут автоматически отменены. Прямой доступ к сегментам отката из сеанса пользователя всегда запрещен, и в табличных пространствах отката могут содержаться только управляемые автоматически сегменты отката (undo segments).
Как следует из их названия, во временных табличных пространствах содержатся только переменные (динамические) данные (transient data), которые существуют исключительно во время сеанса, например дисковое пространство, необходимое для завершения операции сортировки, которая не умещается целиком в оперативной памяти.
Табличные пространства типа bigfile могут быть использованы для любого из трех упомянутых выше типов табличных пространств, и они упрощают управление табличными пространствами, перенося точку приложения усилий по сопровождению с файлов данных на табличные пространства. Табличные пространства тина bigfile состоят из одного и только одного файла данных.
Табличные пространства создаваемые в процессе стандартной инсталляции Oracle с использованием универсального инсталлятора Oracle (OUI).
SYSTEM
SYSAUX
TEMP
UNDOTBS1
USERS
EXAMPLE
Управление табличными пространствами и файлами данных
Управление табличными пространствами с помощью Oracle отличная идея, предполагающая соответствие простых старых файлов на диске хост-системы более абстрактному понятию пространства, в котором база данных Oracle может хранить информацию. То, что физический и логический компоненты отображаются совместно, является основой понимания материала.
SQL> select file_name, tablespace_name, bytes/1024/1024 as megs from dba_data_files;
Описание логической структуры базы данных
Три основных компонента мира логических дисковых ресурсов Oracle - табличные пространства, сегменты и экстенты. Табличное пространство (tablespace) логическая структура базы данных, предназначенная для хранения других логических структур базы данных. Oracle представляет табличное пространство как большую область пространства, в котором Oracle может размещать новые объекты. Место в табличных пространствах выделяется в сегментах.
Сегмент (segment) выделение пространства, используемого для хранения данных таблиц, индексов, сегментов отмены или временного объекта. Когда объект базы данных исчерпает пространство в своем сегменте, а ему потребуется добавить данные, Oracle позволяет выделить ему дополнительное пространство в форме экстента.
Экстент (extent) аналогичен сегменту в части хранения информации, относящейся к таблице, индексу, сегменту отмены или временному объекту.
Другая организация, представленная в базе данных Oracle, та, которая обеспечивается операционной системой хост-машины. В основе логической памяти в Oracle лежит физический метод, используемый хост-системой для хранения данных, краеугольным камнем которых является блок (block). Сегменты и экстенты состоят из блоков данных, а взятые вместе блоки, в свою очередь, содержат файл данных (datafile).
Значение параметра инициализации DB_BLICK_SIZE задается в байтах. Этот параметр определил стандартный размер каждого блока Oracle. Как правило, размер блока кратен размеру блока операционной системы. Блоки Oracle обычно раны 2, 4, 8 и иногда 16 Кбайт.
Табличное пространство может состоять из одного или многих файлов данных, а объекты табличного пространства Oracle может хранить где-нибудь в многочисленных файлах данных, составляющих табличное пространство. Хотя у табличного пространства может быть много файлов данных, каждый из них должен принадлежать только одному табличному пространству.
Как Oracle осуществляет управление местом в табличном пространстве
Управление свободным местом важная задача, так как без этого Oracle не знала бы, где размещать таблицы или индексы, когда вам потребуется создать и изменить их.
Начиная с версии Oracle8i, существует тип табличного пространства, называемый локально управляемым табличным пространством (locally managed tablespace). Локально управляемые табличные пространства используются для битовых массивов, которые хранятся в заголовках составляющих табличное пространство файлов данных, в целях отслеживания использования свободного пространства. Этот битовый массив представляет каждый блок в файле данных, а каждый бит в карте показывает, является этот блок свободным или нет.
Внутри табличных пространств Oracle управляет свободным пространством, объединяя его в непрерывные сегменты. Этим объединением в Oracle автоматически управляет системный монитор, или фоновый процесс SMON. При создании новых объектов базы данных, Oracle получает необходимый объем непрерывного пространства в памяти в виде сегмента для нового объекта. Объем используемого SMON пространства зависит от собственной конструкции объекта storage, от конструкции default storage для этого табличного пространства или от назначения однородного экстента, сконфигурированного для данного табличного пространства. SMON процесс, управляющий текущим объединением свободного пространства в непрерывные участки памяти во время работы таблицы словаря в табличное пространство SYSTEM, чтобы Oracle знала, где в управляемом словарем пространстве есть свободное место, или это поддерживает битовый массив в файлах данных табличного пространства, если используются локально управляемые табличные пространства.
Табличное пространство SYSTEM всегда управляемое словарем табличное пространство. Прочему? Поскольку файлы словаря в любом случае находятся в табличном пространстве SYSTEM, локально управляемое табличное пространство SYSTEM не сможет обеспечить достаточный рос производительности, если словать данных уже является локальным по отношению к табличному пространству!
Почему может потребоваться табличное пространство, управляемое локально, а не словарем? Локально управляемые табличные пространства предлагают более высокую производительность, потому что Oracle хранит информацию о памяти в заголовках файла и битовых массивах, устраняя рекурсивные операции, необходимые при выделении пространства под управлением словаря.
Начиная с Oracle9i для табличных пространств, за исключением табличного пространства SYSTEM, по умолчанию, задается локальное управление пространством. Однако можно явно указать, что вам требуется создать табличное пространство, управляемое словарем.
Постоянные табличные пространства и временные табличные пространства.
Независимо от конфигурации Oracle для управления пространством в табличном пространстве, само табличное пространство, как правило, конфигурируется для хранения двух типов сегментов: постоянного и временного. Постоянный сегмент предназначен для долговременного хранения данных таблицы или другого объекта. Например, если Oracle используется для управления информацией о сотрудниках в большой корпорации, вполне вероятно, что данные о сотрудниках будут находиться в базе данных, в течение многих месяцев или лет. Таким образом, для размещения таких данных в базе данных вы использовали бы постоянные сегменты. Продолжая рассуждать таким же образом, вы захотели бы поместить постоянные сегменты в постоянное табличное пространство. Так и есть в действительности, Oracle требует, чтобы постоянные сегменты находились в постоянных табличных пространствах.
Временные табличные пространства по умолчанию
DEFAULT TEMPORARY TABLESPACE tempTEMPFILE /u04/oradata/oracle/temp01.dbf SIZE 100M;
Создание табличного пространства
Исторически в Oracle табличное пространство SYSTEM было единственным табличным пространством, которое можно было создать во время создания базы данных. Это делалось в явном виде; определялось местоположение файла данных табличного пространства SYSTEM в команде create database. Все это можно делать и до сих пор, но начиная с Oracle9i одновременно можно создавать два других типа табличных пространств. Мы уже рассматривали пример, где в команде create database создавалось временное табличное пространство по умолчанию. Другой пример табличное пространство сегмента отмены. Тем, кто переходит на Oracle, имея опыт работы администратором в предыдущих версиях Oracle, следует учесть, что отмена (undo) то же самое, что откат (rollback). В Oracle 9i, при создании базы данных можно создать следующие табличные пространства: SYSTEM, временное и UNDOTDS.
Какие табличные пространства могут понадобиться?
В типовой базе данных может потребоваться разнести различные типы данных по разным табличным пространствам. Как правило, создается следующий минимальный набор табличных пространств:
SYSTEM - Каждая база данных должна иметь табличное пространство SYSTEM. Оно создается во время создания базы данных.
DATA - табличное пространство DATA используется для размещения данных таблиц.
INDEX - табличное пространство INDEX используется для размещения индексов отдельно от других типов объектов.
UNDOTBS - табличное пространство UNDOTBS содержит сегменты отмены (в предыдущих версиях Oracle они назывались сегментами отката). Их нужно хранить отдельно от других типов объектов иза непостоянства назначения экстентов.
TEMP табличное пространство TEMP содержит временные сегменты. Их также следует хранить отдельно от других типов объектов из-за непостоянства назначения экстентов.
TOOLS табличное пространство TOOLS содержит объекты, поддерживающие административные или другие инструментальные средства, которые могут применяться вместе с базой данных, например Oracle Enterprise Manager.
Создание табличного пространства для хранения постоянных сегментов
Все дополнительные табличные пространства должны создаваться с помощью команды create tablespace после создания базы данных.Рассмотрим пример создания локально управляемого табличного пространства для хранения табличных данных в базе данных, работающей под Windows. Откуда может быть известно, что в этом табличном пространстве будут содержаться данные таблицы? Из-за спецификации обратите внимание на имя табличного пространства DATA. Как правило, это говорит о том, что табличное пространство будет использоваться для хранения данных таблицы. А теперь рассмотрим саму команду:
SQL>CREATE TABLESPACE DATA DATAFILEE:\oradata\oracle\data01.dat SIZE 20M,
F:\oradata\oracle\data01.dat SIZE 30M,
AUTOOEXTEND ON NEXT 10M MAXSIZE 50M
MINIMUM EXTENT 150K
EXTENT MANAGEMENT LOCAL
PERMANENT ONLINE;
На создание табличного пространства может потребоваться довольно много времени, в зависимости от задаваемого размера файлов данных табличного пространства. Причина в том, что Oracle должна физически назначить себя файлу любого размера, задаваемого вами в хост-системе. Эта операция требует терпения, особенно если задано очень большое табличное пространство.
Как видим, в команде create tablespace существует несколько компонентов. Сначала с помощью абсолютных имен путей определяются файлы данных табличного пространства. Учтите, что в одном из файлов данных для этого определена фраза autoextend. Это свойство позволяет файлу данных автоматически выходить за пределы первоначально определенного размера, чтобы соответствовать росту данных.
На следующем шаге необходимо определить фразу default storage, чтобы задать применяемые к созданию объекта базы данных опции, если для созданного объекта не определены параметры памяти. Если для помещенного в это табличное пространство объекта задана своя собственная фраза storage, то настройки фразы storage объекта отменят заданные по умолчанию настройки фразы storage табличного пространства за одним исключением. Существует одна опция памяти, которую нельзя отменить, если она определена в табличном пространстве. Это опция minimum extent - обеспечивает кратность каждого используемого в табличном пространстве размера экстента целочисленному значению. Вскоре мы рассмотрим параметры default storage более подробно.
Постоянные табличные пространства, аналогичные созданным в предыдущем блоке кода, могут содержать постоянные и временные сегменты. Эта функциональная возможность обеспечивается Oracle для обратной совместимости. Однако вам следует помещать временные сегменты во временные табличные пространства.
Обратите также внимание на то, что фраза extent management local позволяет определить это табличное пространство как локально управляемое. В версиях Oracle9i и выше, эта настройка управления пространством для табличного пространства задается по умолчанию, поэтому нет необходимости указывать эту фразу, чтобы задать локальное управлении экстентом. Если бы потребовалось определить табличные пространства, управляемые словарем, вместо этого мы воспользовались бы фразой extent management dictionary. Можно указать, что табличное пространство содержит постоянные объекты базы с помощью ключевого слова permanent; однако Oracle предполагает, что табличное пространство является постоянным, даже если ключевое слово permanent опущено. И наконец, ключевое слово online дает Oracle указание перевести созданное табличное пространство в оперативных режим. Оперативное (online) это задаваемое по умолчанию состояние созданного табличного пространства. Если в команде create tablespace ключевое слово online опущено, табличное пространство все равно будет оперативным. Впоследствии его также можно сделать оперативным, введя команду alter tablespace name online.
Если в команде create tablespace нет никаких указаний на локальное управление или управление словарем. Oracle9i создаст его как локально управляемое табличное пространство.
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd. Перевод: zCarot
Табличное пространство Oracle 11g R2, создание и удаление пользователей
1, запрос местоположения табличного пространства
Создать табличное пространство данных
4, удалите табличное пространство (при необходимости)
5. Создайте пользователей и укажите табличные пространства
6, предоставить разрешения пользователям
Системная классификация разрешений:
- Администратор базы данных: он обладает всеми привилегиями и является высшим органом системы. Только администратор базы данных может создать структуру базы данных.
- РЕСУРС: Пользователи с разрешениями Ресурс могут создавать только объекты, а не структуры базы данных.
- CONNECT: пользователи с разрешением Connect могут входить только в Oracle, не могут создавать сущности и не могут создавать структуры базы данных.
Для обычных пользователей: предоставить подключение, ресурсные разрешения.
Для администраторов-администраторов баз данных: предоставьте разрешения connect, resource, dba.
Команда авторизации системных прав:
- Системные разрешения могут быть предоставлены только пользователем DBA: sys, system (в начале только эти два пользователя)
- Команда авторизации:
банкнота: Обычные пользователи могут иметь те же права пользователя, что и система, через авторизацию, но они никогда не могут получить те же права, что и пользователь sys, и права пользователя системы также могут быть восстановлены.
Восстановить разрешения DBA
- Запрос пользователей с полномочиями администратора БД
- Отменить полномочия администратора БД
7, удалить пользователя (ТЕСТ)
Если выдается ошибка ORA-01940: невозможно удалить подключенного пользователя
Если все еще предложено ORA-01940: не может удалить связанного пользователя Чтобы запросить статус сеанса
Разблокировать заблокированных пользователей
банкнота: Пользователь, выполняющий вышеприведенный оператор, должен иметь полномочия администратора БД.
Иногда нужно избавиться от табличного пространства. Удалить табличное пространство из базы Oracle Database можно, выполнив следующую команду:
Если табличное пространство test01 включает таблицы или индексы на момент ввода команды DROP TABLESPACE, то вы получите ошибку. Вы можете либо переместить все объекты в другое табличное пространство, либо, если эти объекты не нужны, просто использовать следующую команду, которая уничтожит табличное пространство вместе со всеми объектами, входящими в него:
Внимание! В Oracle Database 10g объекты базы, такие как таблицы, не уничтожаются окончательно при выдаче команды DROP TABLE. Вместо этого они отправляются в корзину (Recycle Bin), откуда их можно потом восстановить. При использовании команды DROP TABLESPACE. INCLUDING CONTENTS объекты табличного пространства уничтожаются окончательно, не попадая в корзину! Любые объекты, относящиеся к этому табличному пространству и находящиеся в корзине, также уничтожаются безвозвратно при выполнении этой команды. Если опустить конструкцию INCLUDING CONTENTS, а табличное пространство содержит объекты, оператор даст сбой, но при этом все объекты из корзины все-таки будут уничтожены.
Оператор DROP TABLESPACE. INCLUDING CONTENTS не освободит файлы данных для операционной системы. Чтобы сделать это, потребуется либо вручную удалить файлы данных, бывшие частью табличного пространства, либо выполнить следующую команду, чтобы удалить и объекты, и файлы данных сразу:
Приведенный оператор автоматически уничтожит файлы данных вместе с табличным пространством.
Если в других таблицах окажутся активные ограничения целостности, ссылающиеся на таблицы в табличном пространстве, которое вы собираетесь уничтожить, нужно будет использовать такую команду:
Единственное табличное пространство, которое нельзя уничтожить — это, конечно,ваше табличное пространство System. Кроме того, во время обычной операции базы данных невозможно уничтожить табличное пространство Sysaux. Однако имея привилегию SYSDBA и запустив базу данных в режиме MIGRATE, удалить табличное пространство Sysaux можно.
Разумеется, что причин для уничтожения табличного пространства Sysaux не так много. Если просто нужно перенести определенных пользователей из этого табличного пространства, вы всегда можете воспользоваться соответствующей процедурой перемещения, специфицированной в представлении V$SYSAUX_OCCUPANTS.
Представление V$SYSAUX_OCCUPANTS покажет подробности о пространстве, занятом каждым элементом табличного пространства System. Оно также предоставит процедуру перемещения для заданного элемента, если вы захотите переместить его в другое табличное пространство. Вот простой запрос, использующий это представление:
Если необходимо переместить элемент ULTRASEARCH из System в новое табличное пространство по имени ULTRA1, это можно сделать с помощью процедуры MOVE_WK, принадлежащей схеме WKYS, как показано ниже:
Далее в моих заметках будет представлено несколько полезных представлений словаря данных, которые помогут управлять базой данных Oracle Database. Хотя использование OEM Database Control сокращает необходимость в частом обращении к большинству из этих представлений, важно знать об их существовании и содержимом, чтобы иметь понятие, где база данных хранит важную информацию.
Теории было достаточно, теперь немного практики. Попробуем создавать табличные пространства и поработать с ними руками. Для ясности понимания я приведу основные команды БД, для манипулирования табличными пространствами, а затем мы все это опробуем на практике. Итак, создание табличного пространства. Для создания, удаления и изменения табличных пространств, пользователь должен иметь следующие привилегии - CREATE TABLESPACE, DROP TABLESPACE, ALTER TABLESPACE. Рассмотрим первую из них:
Рассмотрим основные конструкции. С первого взгляда их здесь много, но это не столь важно, просто я привел полную конструкцию команды из руководства администратора, по этому не пугайтесь все будет понятно. Значок -* и *- в данном случае указывает, что строка продолжается как бы в одну строку. Начнем помаленьку:
- "конструкция_авторасширения" - разрешает или запрещает авто расширение файла данных. ON разрешает и OFF запрещает соответственно.
- "конструкция_максимального_размера" - указывает максимальное дисковое пространство, которое может быть выделено файлу данных. UNLIMITED - снимает ограничения на выделение дискового пространства файлу данных.
- LOGGING/NOLGGING - указывает атрибуты протоколирования, по умолчанию LOGGING.
- DEFAULT STORAGE - определяет для всех объектов создаваемых в табличном пространстве, значения параметров хранения по умолчанию.
- ONLINE/OFFLINE - определяет сразу после создания доступность табличного пространства.
- PERMANENT/TEMPORARY - постоянное или временное пространство для хранения объектов БД, по умолчанию PERMANENT.
- "конструкция_управления_экстентами" - определяет способ управления экстентами табличного пространства.
- DICTIONARY - установка по умолчанию, определяет управление по таблицам словаря данных.
- LOCAL - указывает на локальное управление экстентами.
- AUTOALLOCATE - управляется системой и пользователь не может влиять на размер экстента БД.
- UNIFORM - указывает, что экстенты имеют фиксированный размер в SIZE байт.
Давайте сразу рассмотрим конструкцию изменения табличного пространства, которая почти аналогична конструкции создания за исключением некоторых нюансов:
Что появилось нового? Рассмотрим:
- NORMAL - исключает все блоки файла данных из SGA. По умолчанию.
- TEMPORARY - выполняет контрольную точку для всех оперативных файлов данных табличного пространства.
- IMMEDATE - немедленно без выполнения контрольной точки для файла данных.
- OFFLINE - FOR RECOVER - переводит в автономный режим для выполнения восстановления с привязкой по времени.
- BEGIN - BACKUP - запускает процесс открытого резервного копирования.
- END - останавливает процесс открытого резервного копирования. Доступ к табличному пространству при этом не запрещается.
- COALESCE - (!) Для каждого файла данных, в табличном пространстве, объединяет все непрерывные свободные экстенты в один непрерывный экстент большого размера.
- DATAFILE / ADD - TEMPFILE - (спецификация_файла) - (авторасширение) - Добавляет файл данных к табличному пространству, или временный файл.
- RENAME - DATAFILE - * - имя файла *- TO -* имя файла -* - Переименовывает один или несколько файлов данных, перед этим необходимо перевести табличное пространство в автономный режим.
Ну и конечно же удаление табличного пространства производиться командой:
Заметьте, что при этом сам файл с физического диска не удаляется! Его необходимо удалить средствами операционной системы! Не забывайте об этом. Вот таким образом происходит управление созданием и работой табличного пространства БД и его файлами данных. Далее, мы рассмотрим все это на примере! Запоминайте!
Когда пользователь подключается к БД, он подключается используя пользовательский аккаунт (user account) указывая имя аккаунта и метод аутентификации. Пользовательский аккаунт определяет первоначальные права доступа и атрибуты сессии. С пользовательским аккаунтам свзязывается схема (schema). Термины пользователь, пользовательский аккаунт и схема часто используется вместо друг друга в окружении Oracle, но это не одно и тоже. Пользователь – это человек который подключается к пользовательскому аккаунту устанавливая сессию к экземпляру БД и авторизуется используя имя аккаунта. Схема – это набор объектов принадлежащих пользовательскому аккаунту и мы рассмотрим детальнее в следующей главе. В зависимости от того как создался аккаунт будут установлены определнные аттрибуты для сесиий, некоторые из которых могут быть изменены позднее, во время существования сессии. Некоторые аккаунты создаются во время создания БД и DBA затем создаёт остальные аккаунты.
В некоторых приложениях, каждый пользователь использует свой аккаунт. Т.е. БД знает кто именно владелец каждой сессии. Такая модель хорошо работает для небольших систем но практически невозможна для среды в которой с БД работают сотник и тысячи пользователей. В больших системах пользователи подключаются к БД используя один аккаунт, и это добавляет сложностей для обеспечения безопаности сессии и аудита БД. Мы будем рассматривать модель где каждый пользователь имеет свой аккаунт.
Аттрибуты пользовательского аккаунта
У аккаунта сущуествует набор аттрибутов которые задаются при создании. Эти значения используются для сессии, и некоторые могут быть изменены либо самой сессией, либо DBA изменит значение во время существования сессии. Этими атрибутами являются
- Имя
- Метод аутентификации
- Табличное пространство по умолчанию
- Лимит табличного пространтсва
- Временное табличное пространство
- Статус
Все эти аттрибуты должны указываться в момент создания аккаунта, несмотря на то что только имя и метод аутентификации являются обязательными а для остальных существуют значения по умолчанию.
Имя аккаунта
Имя аккаунта должно быть уникальным для всей БД и соблюдать определенные правила. Имя аккаунта должно начинаться с буквы, длина не более 30 символов и может состоять только из букв, цифр, знака $ и символа подчёркивания. Также именем аккаунта не может быть зарезервированное слово. Символы чувствительны к регистру но будут автоматически преобразованы к верхнему регистру. Все эти правила (за исключением длинны) можно обойти если использовать имя внутри двойных кавычек, как показано на рисунке 6-1.
В первом примере создается аккаунт JOHN. Имя было введено строчными буквами но было преобразовано в прописные как видно в результате выполнения запроса. Второй аккаунт был создан с использованием того же имени и двойных кавычек. Третий и четвертый пример показывают что можно обойти правила неиспользуемых символов и зарезервированных слов используя кавычки.
Имя не может быть изменено после создания. Если необходимо изменить его, то можно удалить старый аккаунт и создать новый. Это критическое действие так как все объекты в схеме аккаунта будут удалены.
Табличные пространтсва по умолчанию и лимиты
У каждого аккаунта есть табличное пространство по умолчанию. Это табличное пространство где создаются объекты схемы (такие как таблицы, индексы) создаваемые этим аккаунтом. Аккаунт может создать объекты (быть владельцем) во всех табличных пространствах к которым у него есть лимит (квота), но если явно не указывать табличное пространтсво при создании объекта – будет использователья табличное пространство аккаунта по умолчанию.
Существует значение по умолчанию для БД которое будет использоваться для всех пользователей созданных без указания табличное пространства. Это значение можно установить во время создания БД или изменить выполнив команду
ALTER DATABASE DEFAULT TABLESPACE tablespace_name ;
Если у БД нет табличного пространства по умолчанию – используется SYSTEM.
На рисунке 6-2 отображено как проверять и устанавливать лимиты
Первая команда проверяет представление 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
Первый аккаунт на рисунке – PUBLIC. Это формальный пользователь которому необходимо назначить права для применения прав ко всем пользователям. Кнопки CREATE и DELETE позволяют создавать и удалять пользователей.
Для изменения аттрибутов аккаунта можно выделить пользователя и нажать EDIT. Октроется окно Edit User, показанное на рисунке 6-4. Это окно можно использовать для изменения аттрибутов кроме лимитов табличных пространств. Для этого есть отдельное окно. Также здесь можно назначать и удалять права и роли.
Рисунок 6-4 Редактирование аккаунта
Читайте также: