Установка и настройка oracle database 11g на oracle linux 6.x

Структура базы данных Oracle Database

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

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

Любые данные, хранящиеся в базе Oracle, должны находиться в каком-то табличном пространстве. Табличное пространство (tablespace) – это логическая структура; нельзя попросить операционную систему показать вам табличное пространство. Каждое табличное пространство состоит из физических структур, называемых файлами данных (data files). В одном табличном пространстве может быть один или несколько файлов данных, тогда как каждый файл данных принадлежит ровно одному табличному пространству. При создании таблицы можно указать, в какое табличное пространство ее поместить. Тогда Oracle найдет для нее место в одном из файлов данных, составляющих указанное табличное пространство.

На рисунке 2 показано соотношение между табличными пространствами и файлами данных. Здесь мы видим два табличных пространства в базе данных Oracle.

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

Начиная с версии Oracle Database 10g Release 2 для всех типов таблиц по умолчанию подразумеваются локально управляемые табличные пространства. В таком табличном пространстве можно создавать большие файлы, то есть при работе в 64-разрядных системах задействуется возможность создавать сверхбольшие файлы.

Рис. 2. Табличные пространства и файлы данных Oracle

В Oracle9i появился механизм файлов, управляемых Oracle (Oracle Managed Files, OMF), позволяющий автоматически создавать, именовать и, если понадобится, удалять все файлы, составляющие базу дан­ных. OMF упрощает обслуживание базы данных, поскольку не нужно помнить имена всех составляющих ее файлов. К тому же не возникают проблемы из-за ошибок человека, ответственного за именование фай­лов. Начиная с версии Oracle Database 10g сочетание OMF и таблич­ных пространств с большими файлами делает работу с файлами дан­ных совершенно прозрачной.

Максимальное количество файлов данных в базе Oracle — 64 000. По­скольку табличное пространство с большими файлами может содер­жать файл, который в 1024 раза больше файла в табличном пространст­ве с малыми файлами, а размер блока в табличном пространстве с боль­шими файлами для 64-разрядных операционных систем составляет 32 Кбайт, общий размер базы данных Oracle может достигать 8 экза­байт (1 экзабайт = 1 000 000 терабайт). Табличные пространства с большими файлами предназначены для использования совместно с подсис­темой автоматического управления хранением Automatic Storage Ma­nagement (ASM), иными менеджерами логических томов, поддержи­вающими расслоение, и RAID-массивами.

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

База данных Oracle состоит из физических файлов трех основных ти­пов:

  • управляющие файлы (control files);
  • файлы данных (datafiles);
  • журнальные файлы, или журналы (redo log files).

На рис. 3 показаны эти три типа файлов и отношения между ними.

В управляющем файле хранится информация о местонахождении дру­гих физических файлов, составляющих базу данных, — файлов дан­ных и журналов. Там же хранится важнейшая информация о содер­жимом и состоянии базы данных:

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

 

 Рис. 3. Файлы, составляющие базу данных

Управляющие файлы не только содержат важную информацию, необ­ходимую при запуске экземпляра, они полезны и при удалении базы данных. Начиная с версии Oracle Database 10g с помощью команды можно удалить все файлы, перечисленные в управ­ляющем файле базы данных, а также сам управляющий файл.

Запуск базы данных средствами SQL Plus

Запуск базы данных можно осуществить и средствами командной строки SQLPlus. Для этого надо подключится к SQL*Plus с привилегиями SYSOPER или SYSDBA.

Включить нормальное отображение языка в CMD set NLS_LANG=RUSSIAN_CIS.CL8MSWIN1251chcp1251

Подключиться к базе в cmd авторизовавшись: sqlplus sys/пароль@назв.базы AS SYSDBA

Подключиться к выключенной базе: $ ./sqlplus / as sysdba SQL*Plus: Release 11.1.0.7.0 — Production on Fri Apr 10 12:43:16 2009 Copyright (c) 1982, 2008, Oracle. All rights reserved. Connected to an idle instance.SQL> startup ORACLE instance started. Total System Global Area 845348864 bytes Fixed Size 1316656 bytes Variable Size 473958608 bytes Database Buffers 364904448 bytes Redo Buffers 5169152 bytes Database mounted. Database opened. 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).

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

Аудит Oracle: безопасность баз…

4933 просмотров

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

Tue, 21 Nov 2017, 13:18:05

Требования к безопасности и ау…

1478 просмотров

Дэйзи ак-Макарова

Tue, 21 Nov 2017, 13:28:01

Безопасность Oracle: шифровани…

3474 просмотров

Rasen Fasenger

Tue, 21 Nov 2017, 13:18:05

Защита базы данных Oracle с то…

1205 просмотров

Дэн

Tue, 21 Nov 2017, 13:28:39

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

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

Что применять для ввода команд: SVRMGR30, SQL Plus или SQL Worksheet ?

            Указанные
в заголовке утилиты предназначены для ввода команд SQL (DMLи DDL),
запуска скриптов, просмотра ошибок выполнения команд и ввода других команд,
необходимых для управления БД. Следует отметить, что большинство «ручных»
действий (т.е. выполняемых фактически в режиме командной строки), можно проще,
нагляднее и быстрее осуществить в диалоговом режиме с помощью утилит пакета OracleEnterpriseManagerи других. В то же время,
наиболее «тонкое» управление БД, также как и самую исчерпывающую информацию
(находящуюся в Словаре БД, состоящим из многих групп таблиц и представлений),
можно получить только в режиме командной строки.

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

·SVRMGR30. Главное удобство – можно пользоваться на сервере NovellNetware. Имеется также удобная команда showparametersдля
просмотра конфигурационных параметров. Удобна для запуска больших скриптов
(например, генерации БД или запроса к большой таблице), т.к. не имеет буфера
для хранения исполненных команд. Недостатки – обычные недостатки утилит
командной строки, где все действия нужно определять вводом команд. Но это также
является  мощным достоинством – эту утилиту можно использовать в командных
файлах (BATи NCF), что позволяет набор однотипных действий выполнить
одним нажатием клавиши. Впрочем, был обнаружен более существенный недостаток – выполняемый
в этой утилите скрипт ломался на комментариях более 1000 символов (в OracleSQL*Plusвсе
прошло нормально). Следовательно, и слишком длинные SQL-выражения (часто
встречающиеся в insertи  update) также
не пройдут.

·OracleSQL*Plus. Главные удобства: имеется везде; можно использовать для запуска
больших скриптов (т.к. буфер ограничен); выводит после соединения версию БД. Неудобства:
никаких удобств (нельзя «ползать» по вводимой строке для ее правки; нельзя повторить
предыдущий ввод и т.д.). Еще один недостаток – при соединении нельзя указывать asdba (как в OracleSQLWorksheet) – для этого нужно явно вводить команду (как и вообще
последующие команды connect). И еще неудобство
– по умолчанию длинные строки переносятся (в отличие от OracleSQLWorksheet).
Впрочем, при определенном навыке, работа с OracleSQL*Plus перестает казаться неудобной.

·OracleSQLWorksheet.
Это наиболее удобный «командный» пульт. Имеет неограниченный буфер выполненных
команд и их результатов, имеет историю команд (Ctrl-P – ввод предыдущей комнды, Ctrl-N – ввод следующей команды), позволяет редактировать
вводимую строку. Запуск команды осуществляется кнопкой с молнией или клавишей Ctrl-Enter (в SVRMGR30 и OracleSQL*Plusнадо
было вводить «;», затем нажимать Enter).
Имеется также кнопка для соединения с БД. Утилитой можно пользоваться только на
клиенте, где установлен пакет OEM. Главный недостаток (запомните!) – нельзя
использовать для запуска больших скриптов (например, генерации Словаря БД),
т.к. при заполнении буфера происходит пропорциональное замедление обработки
следующих команд. Если Вам не повезет и в голову придет идея запустить скрипт
генерации БД (да еще без спулинга), то через несколько часов Вы все равно
снимите эту задачу, а потом потратите не известно сколько времени, чтобы
понять, что было создано, а что еще нет (и что надо удалять и заново
пересоздавать). Еще один недостаток – если скрипт большой или запрос
выполняется долго, а Вы переключились в другое окно, то, вернувшись, кроме
песочных часов можете обнаружить белый экран. В OracleSQL*Plusтакая
проблема возникает реже — Вы почти всегда видите весело бегущие строчки. Так
что — да здравствует неудобный OracleSQL*Plus. А если и он немеет – посмотрите, не «отвалилась» ли
сетка. Такое, к сожалению,
часто бывает.

Детальный контроль сетевого доступа

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

Пакеты и применяются для создания так называемых списков контроля доступа (access control list — ACL). Список контроля доступа — это список пользователей и выданных им полномочий. Списками ACL можно управлять посредством Oracle XML DB. База данных хранит списки ACL в форме XML-документа в папке в Oracle XML DB.

Создание списка контроля доступа

Для создания списка ACL используйте процедуру пакета , как показано в следующем примере:

Процедура принимает описанные ниже параметры.

  • acl

    Указывает имя XML-файла, который содержит имена пользователей и полномочия, перечисленные в списке ACL.

  • prinicpal

    Указывает имя пользователя и должен совпадать с именем пользователя сеанса.

  • is_grant

    Показывает, выдано или запрещено данное полномочие.

  • privilege

    Указывает сетевые полномочия, которые требуется предоставить или запретить. В качестве значений параметра полномочий можно указывать либо . Пользователю нужно выдать полномочия , если ему необходимо подключаться к базе данных посредством любого сетевого пакета PL/SQL, такого как, например, . Полномочия помогают получать имя хоста по заданному IP-адресу и наоборот с помощью пакета .

После создания списка ACL в него можно добавлять пользователей или полномочия, выполняя процедуру : 

Если список ACL, указанный в процедуре , не существует, база данных создаст его.

Назначение списка контроля доступа хосту

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

Списки ACL можно назначать хосту, домену или подсети IP. При этом в случае необходимости можно указывать диапазон портов TCP. При выполнении процедуры следует иметь в виду перечисленные ниже моменты.

  • Каждому хосту, домену или подсети IP можно присваивать только один список ACL.
  • При замене старого списка ACL новым база данных не удаляет старый список автоматически. Для удаления списка ACL понадобится выполнить процедуру .
  • Назначение списка контроля доступа можно отменить с помощью процедуры .

Порядок следования хост-компьютеров

При указании символа групповой подстановки в имени хоста, такового как *, база данных присваивает список контроля всем хостам указанного домена. Списки ACL оценивают имена хостов в следующем порядке:

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

Аналогично, списки ACL, присвоенные отдельным IP-адресам, получают приоритет над ACL, присвоенными подсетям.

Проверка полномочий и назначений хостов

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

Выполнение этой функции приведет к возврату значения , если полномочие было запрещено, и значения — если оно было предоставлено. Если полномочие не было ни предоставлено, ни запрещено, функция возвращает значение .

Виды таблиц по способу хранения

Есть четыре основных способа организации таблиц (table) в базе данных Oracle.

  • Таблицы, организованные в куче (heap-organized), или традиционные таблицы. Эти таблицы — не что иное, как обычные таблицы Oracle, в которых данные хранятся без какого-то определенного порядка.
  • Индекс-таблицы. Индекс-таблицы хранят данные в отсортированной индексной структуре — бинарном дереве (B-tree).
  • Кластеризованные таблицы. Кластеризованная таблица является частью группы таблиц, которые разделяют между собой одни и те же блоки данных, поскольку данные из кластеризованных таблиц часто запрашиваются совместно.
  • Секционированные таблицы. Секционированная таблица позволяет делить большие объемы данных на подтаблицы, именуемые разделами (partition), согласно различным критериям. Секционирование особенно полезно в среде хранилища данных.

В этой статье мы обсудим традиционные (организованные в куче) таблицы Oracle. Прочие типы таблиц будут рассматриваться нами в отдельной статье блога “Специальные таблицы Oracle”.

Файлы данных и табличные пространства

Табличное пространство в базе Oracle Database может иметь один или более файлов данных, а файл данных может принадлежать только одному табличному пространству. Oracle создает файл данных для табличного пространства, когда во время создания табличного пространства указывается ключевое слово DATAFILE. Создаваемому файлу данных выделяется определенный объем физического дискового пространства на диске операционной системы. Когда Oracle впервые создает файл данных, он пуст, но выделен исключительно для использования Oracle, а свободное место, которое показывает команда df –k, отражает его как занятое место с точки зрения операционной системы.

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

В простейшем случае локально управляемые табличные пространства всегда необходимо создавать с опцией AUTOALLOCATE по умолчанию, если только не ожидается,что табличное пространство будет содержать объекты одинакового размера, требующие экстентов одинакового размера. Аналогично выбирайте автоматическое управление пространством сегмента (указав SEGMENT SPACE MANAGEMENT AUTO при создании табличного пространства), потому что это дает лучшую производительность и использование пространства, чем ручное управление пространством сегмента. Как упоминалось ранее, AUTOALLOCATE принято по умолчанию для управления экстентами, и автоматическое управление пространством сегментов — стандарт для управления пространством сегментов.

Давайте создадим постоянное табличное пространство, используя команду CREATE TABLESPACE

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

SQL> CREATE TABLESPACE test01
2 DATAFILE '/pasx02/oradata/pasx/test01.dbf'
3* SIZE 500M;
Tablespace created.
SQL>

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

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

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

SQL> SELECT extent_management,
2 allocation_type,
3 segment_space_management
4 FROM dba_tablespaces
5* WHERE tablespace_name='TEST01';
EXTENT_MAN ALLOCATIO SEGMEN
---------- --------- -------
LOCAL      SYSTEM     AUTO
SQL>

Запомните правила по умолчанию, принятые в Oracle Database 11g Release 1:

  • управление экстентами: LOCAL
  • выделение размеров экстентов: AUTOALLOCATE (показано как SYSTEM в предыдущем выводе)
  • управление пространством сегмента: AUTO

Можно было бы создать идентичное табличное пространство, явно специфицируя все эти установки, как показано ниже:

SQL> CREATE TABLESPACE test02
2 DATAFILE '/pasx02/oradata/pasx/test02.dbf' size 500M
3 EXTENT MANAGEMENT local
4 AUTOALLOCATE 500M
5* SEGMENT SPACE MANAGEMENT auto;
Tablespace created.
SQL> 

Хотя по умолчанию управление экстентами локально для всех постоянных табличных пространств, вы указываете EXTENT MANAGEMENT LOCAL в операторе CREATE TABLESPACE, если хотите специфицировать конструкции AUTOALLOCATE или UNIFORM для расширения экстентов. Вы можете использовать тот же запрос, который применялся для табличного пространства test01, чтобы проверить, что два табличных пространства — test1 и test2 — имеют идентичное управление экстентами (LOCAL), тип расширения (AUTOALLOCATE) и управление пространством сегмента (AUTO).

На заметку! По умолчанию табличные пространства Oracle Database 11g являются локально управляемыми, с автоматическим управлением пространством сегмента. Когда вы создаете табличные пространства этого типа, можете специфицировать параметры хранения по умолчанию,такие как INITIAL, NEXT, PCTINCREASE, MINEXTENTS или MAXEXTENTS, но база данных проигнорирует эти установки.

Запуск базы данных Oracle

STARTUP

STARTUP NOMOUNT

Запуск экземпляра базы данных: состояние NOMOUNT Во время запуска экземпляра базы данных, необходимо выбрать состояние, в которое в результате прейдет экземпляр.

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

Запуск экземпляра подразумевает выполнение следующих задач:

1) Поиск в директории $ORACLE_HOME/dbs файла параметров, осуществляемый в следующем порядке.

• Ищется файл spfileSID.ora • Если он не найдет, тогда производится поиск файла spfile.ora; • Если он не найден, тогда поиск файла SID.ora. Искомый файл содержит параметры экземпляра базы данных;

  1. Задание параметра PFILE в команде STARTUP переопределяет установленный по умолчанию порядок выбора файла параметров.
  2. Выделение SGA;
  3. Запуск фоновых процессов.
  4. Открытие сигнального файла alertSID.log и файлов трассировки.

STARTUP MOUNT

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

STARTUP OPEN

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

• Открытие оперативных файлов данных; • Открытие оперативных журнальных файлов.

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

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

Ссылка на основную публикацию