Физические структуры базы данных oracle: файлы данных, управляющие, журналы

Файлы данных Oracle

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

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

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

Управляемые Oracle файлы, которые были представлены в Oracle8i (и о которых речь пойдет ниже), упрощают администрирование баз данных Oracle. Средство Oracle Managed File (OMF) исключает необходимость в управлении файлами операционной системы. Вы просто специфицируете операции базы данных в терминах объектов базы данных, не используя имен файлов.

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

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

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

Например, предположим, что вы создаете табличное пространство под названием с файлом данных в 500 Мбайт. По мере загрузки данных в вашу базу Oracle будет распределять новые экстенты для таблиц базы данных, выделяя место в файле данных. Когда таблица займет почти все начальное выделенное пространство в 500 Мбайт, понадобится увеличить табличное пространство, добавляя к нему новый файл данных. В качестве альтернативы можно также увеличить размер существующего файла данных. Если вы этого не сделаете, таблица не сможет увеличиться в размерах,и любые попытки добавить данные приведут к ошибке.

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

История выпуска версий для различных операционных платформ[6]

История выпуска для Linux x86

  • сентябрь 1998 года — 8.0 (8.0.5)
  • 23 февраля 1999 года — 8.0 (8.0.5.1.0)
  • 22 ноября 2000 года — 8i Release 3 (8.1.7.0.1)
  • 25 марта 2003 года — 9i Release 2 (9.2.0.4)
  • 21 декабря 2004 года — 10g Release 1 (10.1.0.3)
  • 2 июля 2005 года — 10g Release 2 (10.2.0.1)
  • 10 августа 2007 года — 11g Release 1 (11.1.0.6)
  • 1 сентября 2009 года — 11g Release 2 (11.2.0.1)

История выпуска для Linux x86-64

  • 16 октября 2007 года — 11g Release 1 (11.1.0.6)
  • 1 сентября 2009 года — 11g Release 2 (11.2.0.1)
  • 26 июня 2013 года — 12c (12.1.0.1)
  • 23 марта 2006 года — 10g Release 2 (10.2.0.1)
  • 25 ноября 2009 года — 11g Release 2 (11.2.0.1)
  • 26 июня 2013 года — 12c (12.1.0.1)

История выпуска для Windows x86

  • март 1997 года — 7 (7.3.3) для Windows NT 3.51/4.0
  • октябрь 1997 года — 7 (7.3.4) для Windows NT 3.51/4.0
  • 1 июля 1998 года — 8.0 (8.0.5) для Windows NT
  • 10 марта 1999 года — 8i Release 1 (8.1.5) для Windows NT и Windows 95/98
  • 20 сентября 1999 года — 8.0 (8.0.6) для Windows NT
  • январь 2000 года — 8i Release 2 (8.1.6) для Windows NT
  • 16 ноября 2000 года — 8i Release 3 (8.1.7) для Windows NT
  • 13 сентября 2001 года — 9i Release 1 (9.0.1.0) для Windows 32-bit
  • 14 мая 2002 года — 9i Release 2 (9.2.0.1) для Windows 32-bit
  • 26 марта 2004 года — 10g Release 1 (10.1.0.2) для Windows 32-bit
  • 7 сентября 2005 года — 10g Release 2 (10.2.0.1) для Windows 32-bit
  • 15 октября 2007 года — 11g Release 1 (11.1.0.6) для Windows 32-bit
  • 5 апреля 2010 года — 11g Release 2 (11.2.0.1) для Windows 32-bit

История выпуска для Windows x86-64

  • 31 октября 2005 года — 10g Release 2 (10.2.0.1)
  • 7 ноября 2007 года — 11g Release 1 (11.1.0.6)
  • 2 апреля 2010 года — 11g Release 2 (11.2.0.1)
  • 1 августа 2013 года — 12c Release 1 (12.1.0.1)
  • 8 марта 2017 года — 12c Release 2 (12.2.0.1)
  • 2018 год — 18c (12.2.0.2)

Почему не SQL?

Без преувеличения можно сказать, что SQL — один из самых распространенных в мире языков. Информационные системы могут быть написаны на Java, Python, JavaScript, C#, PHP и десятке других языков, но SQL база в том или ином виде будет в абсолютном большинстве таких систем. Среди бизнес-приложений процент систем, использующих SQL, вообще стремится к 100%.
При этом большинство существующих материалов о SQL на хабре и других ресурсах сводятся к простым вопросам, вроде: «какие типы соединений бывают», «чем левое соединение отличается от правого», «что такое триггеры» и так далее. Более того, в этих материалах практически ничего не говорится о проблемах SQL (и его реализациях), которых на самом деле очень и очень немало. Поэтому мы решили восполнить оба этих пробела: с одной стороны рассказать, как многие вещи в SQL работают изнутри, а с другой стороны — почему они работают не так как нужно / хотелось бы.
При этом речь в статье пойдет не о «вкусах и цветах фломастеров». Все затрагиваемые проблемы носят фундаментальный характер: присутствуют при разработке практически любой информационной системы и не ограничиваются «красотой кода», а в той или иной степени приводят либо к критическому падению производительности, либо к существенному росту порога вхождения, либо к значительным трудозатратам со стороны разработчика.

Оценка размера таблицы

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

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

Можно упростить оценку размера таблицы, воспользовавшись OEM Database Control или же процедурой CREATE_TABLE_COST из пакета DBMS_SPACE. Оба подхода к установке размера новой таблицы описаны в последующих разделах.

Использование OEM Database Control для оценки размера таблиц

Давайте рассмотрим шаги, которые следует предпринять для определения размера новой таблицы с использованием интерфейса Database Control.

  • На домашней странице Database Control щелкните на вкладке Administration (Администрирование).
  • Щелкните на Tables (Таблицы) в списке Schema (Схема).
  • Щелкните на кнопке Create (Создать) в нижнем правом углу.
  • Выберите в качестве типа Standard (Стандартная) или Index Organized (Индекс-таблица).
  • На странице Create Table (Создать таблицу) введите имя новой таблицы и укажите типы данных столбцов в разделе столбцов. Щелкните на кнопке Estimate Table Size (Оценить размер таблицы).

На странице Estimate Table Size (Оценить размер таблицы) введите ожидаемое количество столбцов вашей таблицы (рис. 1).

Когда вы проделаете все эти шаги, OEM немедленно сообщит, сколько места следует отвести новой таблице. Он также сообщит о том, сколько места следует выделить табличному пространству, в котором вы собираетесь создавать новую таблицу.

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

Формат и размер строк Oracle

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

Использование пакета DBMS_SPACE для оценки потребностей в пространстве

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

SQL> SET SERVEROUTPUT ON
SQL> DECLARE
2 l_used_bytes NUMBER;
3 l_allocated_bytes NUMBER;
4 BEGIN
5 DBMS_SPACE.CREATE_TABLE_COST (
6 tablespace_name           => 'PERSON_D',
7 avg_row_size              => 120,
8 row_count                 => 1000000,
9 pct_free                  => 10,
10 used_bytes               => l_used_bytes,
11 alloc_bytes              => l_allocated_bytes);
12 DBMS_OUTPUT.PUT_LINE ('используется = ' || l_used_bytes || ' байт'
13 || 'выделено = ' || l_allocated_bytes || ' байт');
14* END;
SQL> /
используется = 138854400 байт выделено = 167772160 байт
PL/SQL procedure successfully completed.
SQL>

Обратите внимание, что пакет DBMS_SPACE также содержит процедуру SPACE_USAGE,которая поможет вернуть незанятое пространство (в действительности — неиспользованные экстенты), выделенные таблицам, индексам и прочим объектам. Вот как выглядит синтаксис вызова этой процедуры для возврата пространства, выделенного таблице:

SQL> ALTER TABLE persons DEALLOCATE UNUSED;
Table altered.
SQL> 

Выяснение SQL-запроса, выполняемого пользователем в данный момент

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

Регистрация в качестве другого пользователя

Иногда для выполнения определенных действий необходимо зарегистрироваться в качестве другого администратора БД. Однако даже пользователь DBA Oracle не имеет доступа к паролям пользователей, которые хранятся в зашифрованном виде. Можно было бы применить оператор , чтобы изменить пароль пользователя, но нежелательно создавать неудобства пользователю, изменяя пароль без нужды.

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

Теперь измените пароль пользователя , чтобы можно было зарегистрироваться под именем этого пользователя:

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

Прерывание сеанса пользователя

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

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

Прерывание UNIX-процесса пользователя, скорее всего, приведет и к прерыванию сеанса Oracle, но это — не самый изящный способ завершения сеанса. Если требуется прервать сеанс UNIX пользователя, а команда Oracle не работает или занимает длительное время, можно достаточно быстро прервать сеанс, воспользовавшись командой из UNIX

Обратите внимание, что команду можно применять как саму по себе, так и с ключом , но в большинстве случаев для прерывания сеанса UNIX пользователей Oracle достаточно простой команды : 

Следующий сценарий позволяет извлечь из динамического представления номер процесса (а также SID и порядковый номер):

В системах Windows концепция процессов не используется, но все процессы пользователей являются потоками одного и того же процесса Oracle. Для прерывания сеанса пользователя Oracle в системе Windows можно применить утилиту , которая завершит конкретный поток в процессе Oracle.

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

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

В этой статье была дана обширная информация касательно создания пользователей, предоставления полномочий и ролей, аудита базы данных Oracle, механизмов безопасности (в том числе концепции виртуальной приватной базы данных), методам аутентификации и шифрованию данных. Для более подробного ознакомления с механизмами управления пользователями и обеспечения безопасности Oracle обращайтесь к руководству Oracle Database Security Guide (Руководство по безопасности баз данных Oracle).

Аудит Oracle: безопасность баз… 5835 просмотров Александров Попков Tue, 21 Nov 2017, 13:18:05

Требования к безопасности и ау… 1859 просмотров Дэйзи ак-Макарова Tue, 21 Nov 2017, 13:28:01

Безопасность Oracle: шифровани… 4149 просмотров Rasen Fasenger Tue, 21 Nov 2017, 13:18:05

Защита базы данных Oracle с то… 1495 просмотров Дэн Tue, 21 Nov 2017, 13:28:39

Author: Александров Попков

Другие статьи автора:

Что нового?

Итак, что же примечательного в новой версии Oracle Database 18c XE? На самом деле масса вещей

Но самое важное отличие от предыдущих версий данной редакции состоит в том, что на этот раз в неё включены практически все самые популярные опции из Standard и даже Enterprise Edition. Рассмотрим более подробно самые примечательные из них

Multitenant

Начиная с 12c Oracle Database поддерживает так называемые Pluggable Databases — смысл в том, что база данных может быть «подключена» и «отключена» к инстансу буквально при помощи пары команд SQL*Plus. Это позволяет переносить базы данных между хостами и даже версиями СУБД без каких-либо сложностей. Обещают даже совместимость с более новыми версиями Oracle Database, т.е. процесс апгрейда будет выглядеть не сложнее, чем unplug-uninstall-install-plug. Также Multitenant-архитектура позволяет поддерживать, например, разные версии APEX в разных базах данных на одном хосте.

In-Memory Column Store и Aggregation

Одна из самых мощных и дорогих опций Oracle Database — это in-memory column store, которая позволяет хранить в памяти копию данных в колонкоориентированном формате для скорейшего доступа к ним в прозрачном режиме.

Partitioning

Партиционирование не является чем-то новым и захватывающим, однако, всегда было доступно в Oracle Database только для пользователей Enterprise Edition, тогда как в конкурирующих СУБД эта опция в большинстве случаев есть, что называется, «из коробки». Вот, например, в недавно вышедшем Postgres 11 также было добавлено хэш-партиционирование. Теперь же эта функциональной доступна и в бесплатной редакции Oracle.

Advanced Analytics и Security

Это целый набор инструментов для Data Mining. Интерфейсы Data Mining SQL, R programming, Oracle Data Miner UI. Что же касается Security, то это всё, что касается прозрачного шифрования данных.

Online Index Rebuid

Как же мне не хватало этой возможности в одном из проектов. Теперь можно производить неблокирующее перестроение индекса «на лету».

Online Table Redefinition

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

Query Results Cache и PL/SQL Function Result Cache

Не секрет, что если речь идет о производительности, то она не может вестись без кэширования данных. Кэширование на уровне инстанса результатов SQL-запросов и PL/SQL-функций теперь доступно и может использоваться для лучшей производительсности ваших приложений.

Bitmap Indexes

Специальный вид индексов, использование которых обычно сопряжено с аналитическими системами. Это так, потому что данный тип индексов рекомендуется использовать только на таблицах, редко подверженных апдейтам. Однако, их преимущество состоит в том, что эти индексы могут комбинироваться для ещё большего ускорения доступа к данным, а также использоваться для использования нескольких источников (так называемые Bitmap Join Indexes).

Oracle Advanced Compression

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

Materialized View Query Rewrite

Опция, позволяющая оптимизатору автоматическое «переписывание» SQL-запросов на использование материализованных представлений для улучшения их производительности.

Oracle Spatial and Graph

Всё что касается хранения и работы с геоданными.

К сожалению, не завезли такие опции как Parallel Query, Block Media Recovery, Diagnostics pack и Tuning pack. Однако, Roadmap проекта предполагает включение последних двух в следующие версии XE.

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

Ну и конечно не стоит забывать о количестве исправлений ошибок и усовершенствований внутренних механизмов, которые СУБД претерпела с версии 11g

Только подумайте какой рывок был сделан в работе самой важной и самой уважаемой компоненты Oracle Database — её оптимизатора

Проверка выполнения системных требований

Для проверки того, что компьютер удовлетворяет системным требованиям для инсталляции СУБД Oracle XE под ОС Microsoft Windows, следует выполнить действия, перечисленные ниже.

  1. На рабочем столе выбрать: | | | | .
  2. В открывшемся окне «Сведения о системе» щелкнуть мышкой на опции Сведения о системе для отображения информации о процессоре компьютера, об объеме физической памяти и о версии ОС Microsoft Windows.

  3.  В окне «Сведения о системе» выбрать опции Компоненты, Сеть, а затем выбрать опцию Протокол и выяснить, доступен ли протокол TCP/IP (есть ли его описание).

  4.  На рабочем столе щелкнуть по ярлыку Мой компьютер. В поле открывшегося окна щелкнуть правой кнопкой мышки и в появившемся контекстном меню выбрать опции | чтобы определить свободное место на жестких дисках компьютера.

  5.  В окне «Сведения о системе» выбрать опцию Программная среда, а затем выбрать опцию Загруженные модули. В появившемся списке загруженных модулей требуется найти модуль msi и выяснить его версию.

  6.  В окне «Сведения о системе» выбрать опции Параметры обозревателя, Internet Explorer, а затем выбрать опцию Итоги для определения версии Internet Explorer. Если на компьютере используется другой Web-браузер (не Internet Explorer), то его версию в большинстве случаев можно узнать с помощью опции About (о программе) в меню Help (Справка).

  7.  После работы с приложением «Сведения о системе» следует выбрать опции Файл и Выход.

Вас заинтересует / Intresting for you:

Oracle Database 11g Enterprise… 4668 просмотров Надин Tue, 21 Nov 2017, 13:32:12

Oracle alerts: генерируемые се… 3172 просмотров Алексей Вятский Tue, 21 Nov 2017, 13:18:05

Oracle Database: обзор базы да… 6542 просмотров Илья Дергунов Sun, 11 Aug 2019, 15:01:35

Запись в бд oracle (DBWn) 5869 просмотров Боба Tue, 21 Nov 2017, 13:31:33

Author: Илья Дергунов

Другие статьи автора:

Параметры ресурсов

Основная причина использования параметров ресурсов — стремление предотвратить монополизацию ресурсов базы данных и сервера одним пользователем или группой пользователей. Наиболее важные параметры ресурсов, которые можно устанавливать в базе данных Oracle Database 11g, перечислены ниже.

CONNECT_TIME. Указывает общее время (в минутах), в течение которого сеанс может оставаться подключенным к базе данных.
CPU_PER_CALL. Ограничивает время ЦП, используемое каждым вызовом внутри транзакции (для операций анализа, выполнения и выборки).
CPU_PER_SESSION. Ограничивает общее время ЦП, используемое во время сеанса.
SESSIONS_PER_USER. Указывает максимальное количество сеансов, которые могут быть параллельно открыты пользователем.
IDLE_TIME. Ограничивает время, в течение которого сеанс может оставаться бездействующим (когда никакие действия не выполняются по его инициативе).
LOGICAL_READS_PER_SESSION. Ограничивает общее количество считываний блоков данных (из области памяти SGA и чтений с диска).
LOGICAL_READS_PER_CALL. Ограничивает общее количество логических считываний для каждого вызова сеанса (анализа, выполнения и выборки).
PRIVATE_SGA. Указывает пределы пространства, выделенного сеансу в компоненте разделяемого пула SGA (этот параметр применим только к системам с архитектурой разделяемого сервера).
COMPOSITE_LIMIT. Устанавливает общий предел на использование ресурсов. Составной предел — это предел суммарного значения нескольких ранее описанных параметров ресурсов, измеряемый в сервисных единицах

Этим ресурсам назначаются веса в соответствие с их важностью. Для вычисления взвешенного значения параметра COMPOSITE_LIMIT Oracle учитывает четыре параметра: CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION и PRIVATE_SGA

Вес каждого из этих четырех параметров можно установить оператором ALTER RESOURCE COST, как показано в следующем примере.

      SQL> ALTER RESOURCE COST
      2 cpu_per_session 200
      3 connect_time 2;
      Resource cost altered.
      SQL> 

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *