Создание БД Oracle 12c с максимальной производительностью

Андрей Васенин

Андрей Васенин

Автор статьи. Сфера интересов: ИТ-специалист (программирование, администрирование, DBA). Кандидат экономических наук. Подробнее .

Oracle Database 12c создание производительной базы данных

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

Проблема

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

  • Убедитесь, что каждое табличное пространство, когда-либо созданное в базе данных, должно управляться локально. Локально управляемые табличные пространства Oracle (Locally managed) обеспечивают лучшую производительность, чем устаревшая технология, управляемая словарем.
  • Убедитесь, что пользователям автоматически назначено постоянное табличное пространство по умолчанию. Это гарантирует, что при создании пользователей им назначается табличное пространство по умолчанию, отличное от SYSTEM. С функцией отложенного сегмента (deferred segment, подробнее об этом позже), если у пользователя есть привилегия CREATE TABLE, тогда этот пользователь может создавать объекты в табличном пространстве SYSTEM даже без наличия квоты пространства в табличном пространстве SYSTEM. Это нежелательно. Это правда, что они не смогут вставлять данные в таблицы без соответствующих квот пространства, но они могут создавать объекты и, таким образом, непреднамеренно загромождать табличное пространство SYSTEM.
  • Убедитесь, что пользователям автоматически назначено временное табличное пространство по умолчанию. Это гарантирует, что при создании пользователей им назначается правильное временное табличное пространство, если явно не указано значение по умолчанию.

Решение

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

  • SQL * Plus с использованием инструкции CREATE DATABASE
  • Ассистент настройки базы данных (dbca)

Эти методы и описаны в этой статье моего блога.

 

SQL*Plus

Используйте сценарий, приведенный ниже, чтобы создать базу данных Oracle Database 12c, которая учитывает разумные стандарты, которые устанавливают основу для хорошо работающей базы данных:

CREATE DATABASE O12C

   MAXLOGFILES 16
   MAXLOGMEMBERS 4
   MAXDATAFILES 1024
   MAXINSTANCES 1
   MAXLOGHISTORY 680
   CHARACTER SET AL32UTF8

DATAFILE

'/u01/dbfile/O12C/system01.dbf'

   SIZE 500M REUSE
   EXTENT MANAGEMENT LOCAL

UNDO TABLESPACE undotbs1 DATAFILE

'/u02/dbfile/O12C/undotbs01.dbf'

   SIZE 800M

SYSAUX DATAFILE

'/u01/dbfile/O12C/sysaux01.dbf'

   SIZE 500M

DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE

'/u02/dbfile/O12C/temp01.dbf'

   SIZE 500M

DEFAULT TABLESPACE USERS DATAFILE

'/u01/dbfile/O12C/users01.dbf'

   SIZE 50M

LOGFILE GROUP 1

        ('/u01/oraredo/O12C/redo01a.rdo',
         '/u02/oraredo/O12C/redo01b.rdo') SIZE 200M,

        GROUP 2

        ('/u01/oraredo/O12C/redo02a.rdo',
         '/u02/oraredo/O12C/redo02b.rdo') SIZE 200M,

        GROUP 3

        ('/u01/oraredo/O12C/redo03a.rdo',
         '/u02/oraredo/O12C/redo03b.rdo') SIZE 200M

USER sys    IDENTIFIED BY f0obar

USER system IDENTIFIED BY f0obar;

Этот сценарий CREATE DATABASE помогает заложить хорошую основу для производительности, включив такие функции, как:

  • Определяет табличное пространство SYSTEM как локально управляемое с помощью директивы EXTENT MANAGEMENT LOCAL; это гарантирует, что все табличные пространства, когда-либо созданные в базе данных, локально управляются. Начиная с Oracle Database 12c, табличное пространство SYSTEM всегда создается как локально управляемое.
  • Определяет табличное пространство по умолчанию с именем USERS для любого пользователя, созданного без явно определенного табличного пространства по умолчанию; это помогает предотвратить назначение пользователям табличного пространства SYSTEM по умолчанию.
  • Определяет временное табличное пространство по умолчанию с именем TEMP для всех пользователей; это помогает предотвратить назначение пользователям табличного пространства SYSTEM в качестве временного табличного пространства по умолчанию. Пользователи, созданные с временным табличным пространством по умолчанию SYSTEM, могут оказать негативное влияние на производительность, поскольку это вызовет конкуренцию за ресурсы в табличном пространстве SYSTEM.


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

dbca

Утилита Oracle dbca  имеет графический интерфейс и режим командной строки, из которого вы можете настроить и создать базы данных Оракл. Визуальный инструмент прост в использовании и имеет весьма интуитивно понятный интерфейс. Используя dbca в средах Linux / Unix в графическом режиме убедитесь, что у вас установлено надлежащее программное обеспечение X (графическая оболочка), затем выполните команду xhost + и убедитесь, что установлена ваша переменная DISPLAY, например:

$ xhost +

$ echo $DISPLAY

:0.0 



$ xhost +

$ echo $DISPLAY

:0.0

Dbca вызывается из командной строки операционной системы следующим образом:

$ dbca

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

По умолчанию dbca создает базу данных Oracle 12c со следующими характеристиками:

  • Определяет табличное пространство SYSTEM как локально управляемое.
  • Определяет табличное пространство по умолчанию с именем USERS для любого пользователя, созданного без явно определенного табличного пространства по умолчанию.
  • Определяет временное табличное пространство по умолчанию с именем TEMP для всех пользователей.

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

Утилита dbca также позволяет создавать базу данных в "тихом режиме" без графического компонента. Использование dbca в тихом режиме с файлом ответов является эффективным способом создания баз данных Oracle 12c последовательным и повторяемым образом. Этот подход также хорошо работает при установке на удаленных серверах, которые могут иметь медленное сетевое подключение или не иметь соответствующее программное обеспечение X.

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

  • Найдите файл dbca.rsp.
  • Сделайте копию файла dbca.rsp.
  • Измените копию файла dbca.rsp для вашей среды.
  • Запустите утилиту dbca в тихом режиме.

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

$ find . -name dbca.rsp

./12.1.0.1/database/response/dbca.rsp

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

$ cp dbca.rsp mydb.rsp

Теперь отредактируйте файл mydb.rsp. Минимально вам необходимо изменить следующие параметры: GDBNAME, SID, SYSPASSWORD, SYSTEMPASSWORD, SYSMANPASSWORD, DBSNMPPASSWORD, DATAFILEDESTINATION, STORAGETYPE, CHARACTERSET, and NATIONALCHARACTERSET. Ниже приведен пример измененных значений в файле mydb.rsp:

[CREATEDATABASE]

GDBNAME = "O12C"

SID = "O12C"

TEMPLATENAME = "General_Purpose.dbc"

SYSPASSWORD = "f00bar"

SYSTEMPASSWORD = "f00bar"

SYSMANPASSWORD = "f00bar"

DBSNMPPASSWORD = "f00bar"

DATAFILEDESTINATION ="/u01/dbfile"

STORAGETYPE="FS"

CHARACTERSET = "AL32UTF8"

NATIONALCHARACTERSET= "UTF8"

Затем запустите утилиту dbca в тихом режиме, используя файл ответов:

$ dbca -silent -responseFile /home/oracle/orainst/mydb.rsp

Вы должны увидеть результат, например

Copying database files

1% complete

...

Creating and starting Oracle instance

...

62% complete

Completing Database Creation

...

100% complete

Look at the log file ... for further details.

Если вы посмотрите в файлах журнала, обратите внимание, что утилита dbca использует утилиту rman для восстановления файлов данных, используемых для базы данных Oracle Database 12c. Затем он создает экземпляр и выполняет шаги после установки. На сервере Linux вы также должны иметь запись в файле /etc/oratab для вашей новой базы данных Оракл.

Многие администраторы баз данных запускают dbca и настраивают базы данных в графическом режиме, но некоторые используют доступные им варианты с использованием файла ответов. Благодаря эффективному использованию файла ответов вы можете автоматически автоматизировать процесс создания базы данных. Вы можете изменить файл ответов для создания баз данных в Oracle ASM и даже создавать базы данных RAC. Кроме того, вы можете контролировать практически все аспекты файла ответов, аналогично запуску dbca в графическом режиме.

 Tip  

Вы можете просмотреть все параметры dbca с помощью ключа справки: dbca -help

 

Как это работает

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

При создании базы данных Oracle 12c вы также должны учитывать функции, которые влияют на ремонтопригодность. Устойчивая база данных приводит к увеличению времени бесперебойной работы, что является частью общего уравнения производительности. Операция CREATE DATABASE в разделе «Решение» также имеет следующие особенности устойчивости:

  • Создает автоматическое табличное пространство UNDO (автоматическое управление отменой разрешено путем установки параметров инициализации UNDO_MANAGEMENT и UNDO_TABLESPACE); это позволяет Oracle автоматически управлять сегментами отката. Это облегчает вам регулярный мониторинг и настройку.
  • Помещает файлы данных в каталоги, которые соответствуют стандартам для среды, - это помогает в обслуживании и управляемости, что приводит к лучшей долговременной доступности и, следовательно, к повышению производительности.
  • Устанавливает пароли для значений, отличных от значений для пользователей, связанных с DBA; это гарантирует, что база данных будет более безопасной, что в конечном итоге также может повлиять на производительность (например, если злоумышленник взломает базу данных и удалит данные, производительность будет страдать).
  • Создает три группы онлайн-журналов повтора с двумя членами в каждой, соответствующим образом распределяет нагрузку на транзакцию; размер журнала повтора напрямую влияет на скорость, с которой они переключаются. Если  redo логи переключается слишком часто, то это может ухудшить производительность. Имейте в виду, что когда вы создаете новую базу данных Oracle 12c, Вы  может не знать оптимальный размер лог-файлов и вам придется его корректировать позже.

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

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

SELECT *

FROM database_properties

WHERE property_name = 'DEFAULT_PERMANENT_TABLESPACE';

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

SQL> alter database default tablespace users;

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

SELECT *

FROM database_properties

WHERE property_name = 'DEFAULT_TEMP_TABLESPACE';

To change the setting of the temporary tablespace, you can do so as follows:

SQL> alter database default temporary tablespace temp;

Вы можете проверить настройки табличного пространства UNDO с помощью этого запроса:

SELECT name, value

FROM v$parameter

WHERE name IN ('undo_management','undo_tablespace');

Если вам нужно изменить табличное пространство отмены, сначала создайте новое табличное пространство отмены, а затем используйте инструкцию ALTER SYSTEM SET UNDO_TABLESPACE.

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

Настройка памяти базы данных O...
Настройка памяти базы данных O... 19200 просмотров Stas Belkov Sat, 07 Jul 2018, 15:44:14
Мониторинг Oracle через метрик...
Мониторинг Oracle через метрик... 5060 просмотров sepia Tue, 21 Nov 2017, 13:18:05
Oracle ADDM - автоматическая д...
Oracle ADDM - автоматическая д... 7670 просмотров Алексей Вятский Tue, 21 Nov 2017, 13:18:05
Кэши, копии  и управление памя...
Кэши, копии и управление памя... 5880 просмотров Дэн Wed, 03 Jan 2018, 17:03:54
Войдите чтобы комментировать