Sysaux oracle что там хранится

Обновлено: 05.07.2024

A mandatory tablespace that consists of the data dictionary, including definitions of tables, views, and stored procedures needed by the database. Oracle Database automatically maintains information in this tablespace.

A mandatory, auxiliary system tablespace that is used by many Oracle Database features and products. This tablespace contains content that was previously stored in the DRSYS , CWMLITE , XDB , ODM , OEM_REPOSITORY , and SYSTEM tablespaces.

An user-created tablespace that consists of application data. As you create and enter data into tables, Oracle Database fills this space with your data.

A mandatory tablespace that contains temporary tables and indexes created during SQL statement processing. You may have to expand this tablespace if you run SQL statements that involve significant sorting, such as ANALYZE COMPUTE STATISTICS on a very large table, or the constructs GROUP BY , ORDER BY , or DISTINCT .

System-managed tablespaces that contain undo data for each instance. Each Oracle RAC instance uses a different value for n in the tablespace name. These tablespaces are used for automatic undo management.

A system tablespace that contains rollback segments. If you do not use automatic undo management, then you must configure the RBS tablespace. The RBS tablespace should only be used when needed for compatibility with earlier versions of Oracle Database.

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

В каких файлах хранятся табличные пространства.

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

В табличном пространстве system хранится «Словарь данных Oracle»

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

Словарь данных создается при создании экземпляра базы данных выполнением инструкций в файле $ORACLE_HOME/rdbms/admin/catalog.sql

Oracle не позволяет обращаться к таблицам словаря данных напрямую. Он создает представления на базе этих таблиц и общедоступные синонины для тих представлений, к которым могут обращаться пользователи. Существует три набора представлений словаря данных: USER, ALL и DBA – каждый из которых содержит сходный набор представлений со сходным набором столбцов.

Посмотреть содержимое табличного пространства system

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

Табличное пространство sysaux служит вспомогательным табличным пространством по отношению к табличному пространству system.

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

    SYSTEM: Табличное пространство SYSTEM используются сервером БД Oracle для управления базой данных.
    Оно содержит словарь данных и таблицы, содержащие административную информацию о базе данных. Все они содержатся в схеме SYS и к ним может обращаться только пользователь SYS или другие пользователи-администраторы с требуемыми привилегиями.

SYSAUX: Это вспомогательное табличное пространство к табличному пространству SYSTEM. Некоторые компоненты и продукты, которые использовали табличное пространство SYSTEM или свои собственные табличные пространства в более ранних релизах БД Oracle, теперь используют табличное пространство SYSAUX. Каждая БД Oracle 10g (или более раннего релиза) должна иметь табличное простанство SYSAUX.
В Enterprise Manager (EM) Вы можете увидеть круговую диаграмму содержимого этого табличного пространства. Чтобы сделать это, кликните Tablespaces на странице Administration. Выберите SYSAUX и кликните Edit. Затем кликните вкладку Occupants. После создания Вы можете наблюдать за использованием пространства каждым компонентом в ТП SYSAUX, используя EM. Если Вы заметите, что компонент занимает слишком много места в ТП SYSAUX, или Вы ожидаете, что это произойдет в будущем, Вы можете переместить компонент в другое табличное пространство, выбрав один из компонентов и кликнув Change Tablespace.

TEMP: Временная табличное пространство используется, когда Вы выполняете SQL-оператор, который требует создания временных сегментов (например при большой сортировке или создании индекса). Так же, как каждому пользователю присваивается табличное пространство по умолчанию для хранения создаваемых объектов данных, каждому пользователю присваивается временное табличное пространство. Передовая практика рекомендует определять временное табличное пространство по умолчанию для базы данных, которое присваивается всем создаваемым пользователям, если не указано иное временное ТП. В предварительно сконфигурированной базе данных табличное пространство TEMP определяется как временное табличное пространство по умолчанию. Это означает, что, если не указано никакое другое временное табличное пространство при создании учетной записи пользователя, БД Oracle присваивает это табличное пространство пользователю в качестве временного.

UNDOTBS1: Это - табличное пространство отката, используемое сервером базы данных, чтобы хранить информацию отката. Если база данных использует Автоматическое Управление Откатом, то она может использовать только одно табличное пространство отката в каждый момент времени. Это табличное пространство создается во время создания базы данных.

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

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

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

Укажите файловые операции с точки зрения объектов базы данных, а не в терминах имен файлов ОС.

Управляемые Oracle файлы избавляют от необходимости непосредственно управлять файлами операционной системы в базе данных Oracle. Вы определяете операции с точки зрения объектов базы данных, а не имен файлов ОС. База данных внутренне использует стандартные интерфейсы файловой системы, чтобы создавать и удалять файлы при необходимости для следующих структур базы данных:

Файлы журналов транзакций

Файлы отслеживания изменений блоков

Резервные копии RMAN

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

Пример показывает, что после того, как установлен параметр DB_CREATE_FILE_DEST, предложение DATAFILE может быть опущено в команде CREATE TABLESPACE. Файл данных создается в расположении, определенном DB_CREATE_FILE_DEST. Когда Вы создаете табличное пространство как показано, значения по умолчанию присваиваются всем параметрам.

У управляемых Oracle файлов есть определенный формат именования. Например, на Linux и Unix-подобных системах используется следующий формат:

Не переименовывайте управляемые Oracle файлы. База данных идентифицирует управляемый Oracle файл, основываясь на его имени. Если Вы переименуете файл, база данных будет больше не в состоянии распознать его как управляемый Oracle файл и соответственно не сможет управлять файлом. Следующий пример устанавливает расположение по умолчанию для создаваемых файлов данных в /u01/oradata, а затем создает табличное пространство tbs_1 с файлом данных в этом местоположении.

SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST = '/u01/oradata';

SQL> CREATE TABLESPACE tbs_1;

По умолчанию файлы данных, управляемые Oracle, включая те из них, которые предназначены для табличных пространств SYSTEM и SYSAUX, составляют 100 МБ и авторасширяемы.

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

Администраторы баз данных Oracle создают и управляют объектами схем, включая таблицы, индексы, представления, материализованные представления, синонимы, триггеры, ссылки на базы данных и т.д. Однако прежде чем рассматривать различные объекты схем, следует посмотреть, как управлять важнейшими табличными пространствами Oracle. Табличные пространства — это логические сущности, и каждая из прикладных таблиц и индексов хранятся в сегменте, в то время как сегменты хранятся в файлах данных, являющихся частью табличного пространства. Таким образом, табличное пространство - это логически веденное пространство для размещения объектов схемы Oracle. Однако не существует отношения “один к одному” между объектами схемы вроде таблицы или индекса и табличным пространством.

Когда вы используете словосочетание табличное пространство, то на самом деле имеете в виду непрерывное табличное пространство — место, где хранятся объекты вашей схемы. (Если вы перешли от базы данных выпуска, предшествовавшего Oracle Database 10g, то сначала потребуется создать табличное пространство Sysaux). Все постоянные табличные пространства создаются с использованием файлов данных Oracle. В дополнение к постоянным табличным пространствам существуют следующие важные типы табличных пространств Oracle.

    служат для хранения объектов, существующих на протяжении существования пользовательского сеанса. Вы используете временные файлы вместо файлов данных для создания временного табличного пространства.
  • Табличные пространства отмены (undo) — разновидность постоянных табличных пространств, служащих для хранения данных отмены, которые используются для возврата измененных данных в исходное состояние.

Каждое табличное пространство Oracle должно иметь обязательные табличные пространства System и Sysaux. Табличное пространство System является постоянным и содержит важнейшую информацию словаря, которая помогает работе базы данных. Табличное пространство System — это первое табличное пространство, которое вы создаете при создании новой базы данных. Табличное пространство Sysaux дополняет табличное пространство System, храня метаданные для различных приложений Oracle,а также оперативные данные для внутренних инструментов управления производительностью вроде Automatic Workload Repository. Табличные пространства System и Sysaux трактуется иначе, чем другие табличные пространства. Ни одно из них нельзя переименовывать либо удалять.

Прежде чем создать таблицы или индексы, вы должны создать табличные пространства для хранения данных. Табличные пространства состоят из одного или более файлов данных (или временных файлов, если речь идет о временном табличном пространстве). Хотя ваши данные и объекты располагаются в файлах операционной системы,организация этих файлов в табличные пространства Oracle облегчает группировку взаимосвязанной информации.

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

На заметку! Табличные пространства не уникальны для Oracle. СУБД DB2 также имеет табличные пространства, а вот базы данных Microsoft SQL Server их не используют. База данных tempdb в СУБД SQL Server соответствует временному табличному пространству в Oracle.

Установка размера экстента табличного пространства и управление пространством

Прежде чем вы в действительности создадите табличное пространство, следует разобраться в двух других важных концепциях: установке размеров экстента (extent sizing) и управлении пространством сегмента (segment space management).

Выделение размера экстента: AUTOALLOCATE или UNIFORM

Всякий раз, когда объект Oracle нуждается в увеличении своего размера, дополнительное место добавляется ему в виде экстентов. Когда вы создаете локально управляемые табличные пространства, то есть два варианта управления размерами экстентов: можно позволить базе данных автоматически выбирать размер экстента (указав опцию AUTOALLOCATE) или же специфицировать для табличного пространства добавление экстентов унифицированного размера (опция UNIFORM).

Если выбрана опция UNIFORM, потребуется специфицировать конкретное значение размера новых экстентов в конструкции SIZE. Если вы пропустите конструкцию SIZE,то Oracle будет создавать все экстенты с унифицированным размером в 1 Мбайт, но при желании можно указать и намного большее значение.

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

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

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

  • 64 Кбайт — для малых сегментов;
  • 1 Мбайт — для средних сегментов;
  • 64 Мбайт — для крупных сегментов.

При выборе опции AUTOALLOCATE Oracle управляет размером экстентов автоматически. Размер экстента начинается с 64 Кбайт и увеличивается базой данных прогрессивно до 64 Мбайт. База данных автоматически решает, каким должен быть размер нового экстента для объекта — на основе шаблона расширения экстента. Интересно, что Oracle в этом случае увеличивает размер экстента с ростом объекта! Автоматическое выделение особенно удобно, если вы не представляете коэффициента роста объекта и предоставляете Oracle право позаботиться об этом.

На заметку! По умолчанию для управления экстентами табличного пространства выбирается опция AUTOALLOCATE.

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

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

Совет. Oracle рекомендует, что если только все объекты в табличном пространстве не имеют один и тот же размер, следует использовать AUTOALLOCATE. В дополнение к простоте управления опция AUTOALLOCATE для размеров экстентов может потенциально сэкономить существенный объем дискового пространства по сравнению с опцией UNIFORM.

Сравнение автоматического и ручного управления пространством сегментов

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

Если вы специфицируете ручное управление размерами сегментов (посредством ключевого слова MANUAL), то база данных управляет свободным пространством сегментов в табличном пространстве, используя сущности, называемые свободными списками (freelists), и пары параметров хранения — PCTFREE и PCTUSED. Oracle отслеживает наличие свободного пространства в блоках данных, поддерживая свободные списки. Каждая таблица или индекс поддерживает список всех своих блоков данных, размер которых превышает PCTUSED. То есть свободные списки содержат список всех блоков, пригодных для вставки данных. Сначала Oracle проверяет соответствующий свободный список, прежде чем выполнить вставку в таблицы или индексы. База данных Oracle вынуждена выполнять много работы по поддержанию свободных списков, по мере того, как блоки достигают порогового значения PCTUSED при вставке и возвращаются к значениям ниже порогового при удалении.

Параметр PCTFREE позволяет резервировать определенный процент пространства в каждом блоке данных для будущих обновлений существующих данных. Например, в некотором блоке могут быть данные, содержащие адрес лица. Если позднее вы обновите этот адрес так, что он станет больше, то в идеале в существующем блоке должно быть место, чтобы вместить увеличенный адрес. Именно это и обеспечивает параметр PCTFREE: место для роста существующих строк. Параметр PCTUSED, с другой стороны,имеет дело с пороговым значением свободного пространства, превышение которого позволит вставлять новые данные в блок. Например, если параметр PCTFREE установлен в 40%, Oracle не сможет вставлять новые данные в блок до тех пор, пока объем занятого пространства не упадет ниже порогового значения.

Вы можете легко увидеть, как параметры PCTFREE и PCTUSED вместе позволяют оптимизировать использование пространства внутри блока Oracle. Предположим, что 80% пространства в блоке занято данными. Это будет максимальным объемом данных, которые вы сможете вставить внутрь блока, если параметр PCTFREE установлен в значение 20%. Если в блоке произойдут какие-то удаления, появится место для потенциальной вставки новых строк, однако Oracle применяет параметр PCTUSED интеллектуальным образом, не позволяя использовать немедленно любое освободившееся пространство для новых вставок. Попытки Oracle воспользоваться свободным пространством в блоках данных сопряжены с накладными расходами, поэтому Oracle ждет, пока использованное пространство не упадет ниже установки PCTUSED, прежде чем задействовать его.Поэтому, даже несмотря на то, что может быть свободное пространство в частично занятых блоках, Oracle игнорирует их и применяет для вставки данных новые блоки.

Параметры PCTFREE и PCTUSED вместе со свободными списками представляют собой ручной способ проверки пространства, поскольку вы заставляете Oracle непрерывно проверять блоки на наличие достаточного свободного пространства. В базе данных с интенсивными обновлениями, вставками и удалениями это может привести к замедлению транзакций.

Если вы предпочтете автоматическое управления пространством сегментов при создании табличного пространства (указав значение AUTO), то база данных использует битовые карты (bitmaps) для отслеживания доступного свободного пространства в сегменте. Битовая карта, которая содержится в специальном блоке, указывает, составляет ли свободное пространство в блоке объем менее 25%, либо между 25 и 50%, между 50 и 75% или же свыше 75%. Для индексного блока битовая карта может сообщить, является блок пустым или форматированным.

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

Хотя локально управляемые табличные пространства являются стандартными для выпуска Oracle Database 11g, если вы переходите к этому выпуску от более старых версий, то можете перевести свои табличные пространства из управляемых словарем к локально управляемым. Для этого нужно просто создать новые табличные пространства, которые будут по умолчанию локально управляемыми, и затем перенести все таблицы в новое табличное пространство командой ALTER TABLE, как показано ниже:

Чтобы перенести индексы, используйте команду ALTER INDEX REBUILD, как показано ниже:

Завершив миграцию всех объектов в новые локально управляемые табличные пространства, удалите старые табличные пространства, чтобы освободить занимаемое ими место.Если вы не хотите создавать новые табличные пространства или боитесь сложностей переноса всех таблиц и индексов, можете прибегнуть к PL/SQL-пакету DBMS_SPACE_ADMIN, который позволит выполнить миграцию имеющихся табличных пространств. Сначала потребуется выполнить миграцию к локально управляемым всех табличных пространств кроме System, а затем перевести в локально управляемые табличное пространство System. Если вы поступите наоборот, то все прочие табличные пространства станут доступными только для чтения. Не забудьте перед миграцией создать резервную копию базы данных. Ниже приведен пример переноса управляемого словарем табличного пространства (USERS) в локально управляемое табличное пространство:

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

После перевода всех рабочих табличных пространств в локально управляемые можно перевести табличное пространство System. Ниже показана команда (предварительно потребуется выполнить некоторую черновую работу вроде переключения прочих табличных пространств в режим доступа только для чтения и т.п.):

Обратите внимание, что если вы применяете пакет DBMS_SPACE_ADMIN для миграции от управляемых словарем к локально управляемым табличным пространствам, то не имеете возможности переключения на использование нового средства автоматического управления пространством сегментов (Automatic Segment Space Management). Все управляемые словарем табличные пространства используют по умолчанию старое ручное управления пространством сегментов, и вы не можете изменить его на автоматическое, когда переходите на локально управляемые табличные пространства. Поскольку автоматическое управление пространством сегментов предоставляет много преимуществ (вроде возможности использования онлайнового сжатия сегментов из Segment Advisor), вероятно лучше убить двух зайцев и запланировать перевод всех объектов во вновь созданные локально управляемые табличные пространства. По умолчанию Oracle создает все новые табличные пространства как локально управляемые с автоматическим управлением пространством сегментов.

Вдобавок, если ваши текущие управляемые словарем табличные пространства имеют проблему фрагментации свободного места, эта проблема не исчезнет, когда вы преобразуете их в локально управляемые табличные пространства посредством миграции “по месту” с помощью пакета DBMS_SPACE_ADMIN. В этом случае лучше создать новое локально управляемое табличное пространство и переместить необходимые объекты в него. Далее в блоге будет показано, как легко выполнить эту миграцию с помощью средств онлайновой реорганизации таблиц Oracle.

Oracle рекомендует использовать автоматическое управление сегментами и отмечает, что оно как масштабируемо, так и эффективно, когда речь идет об управлении пространством. Особенно заметен выигрыш в производительности, если объекты базы данных имеют строки различного размера. Поддержка этих битовых карт требует дополнительного места, однако оно составляет не более 1% от размера самых крупных объектов.

На заметку! Управление пространством сегментов, которое специфицируется во время создания табличного пространства, применяется ко всем сегментам, создаваемым позднее в этом табличном пространстве.

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