Установка инициализационных параметров БД

Итак, у нас есть установленная БД и мы готовы изучать как же управлять экземпляром БД и как он работает с БД. Изучение программы в настроенной учебной среде даёт определенные преимущества, самое главное из которых, это в процессе изчучения и экспериментов вы неизбежно столкнётесь с ошибками и решение этих ошибок – самый лучший способ изучения. Вы всегда можете удалить и заново установить систему если в резульате каких-либо образом система перестанет работать и у вас не получится восстановить работоспособность, но даже это даст вам определённый опыт использования OUI.

БД и экзмепляр управляются набором инилизационных параметров. Их достаточно большое количество, однако наиболее важных всего тридцать три. Эти параметры регулируют такие значения как объём выделяемой памяти при запуске экземпляра, местоположение файлов данных и файлов логов, файла контроля и его копий, а также название БД. Значения по умолчанию не будут использоваться на реальных системах, но для тестовой среды подходят. Многие DBA немного боятся изменять эти параметры, однако в этом нет ничего страшного, лишь имзенения некоторыч параметры сложно отменить. Если вы поменяли какое-то значение в процессе попытки оптимизировать производительность и БД стала вести себя хуже – просто отмените изменения. Все эти параметры хранятся в инилизационном файле без которого экземляр не запустится.

Мы рассмотрим этапы запуска и остановки экземпляра БД, подключение БД и несмотря на то что эти шаги достаточно просты, необходимо понимать как эти этапы происходят в системе, как работает механизм для предотвращения сбоев и как фоновые процессы работают с БД.

Значимость файлов системных журналов и файлов трассировки (alert log и trace files) нельзя недооценивать, они очень важны для поиска причин возникновения проболем и Oracle изобрели удобный способ найти нужные файлы – значения хранятся в инилизационных параметрах. Системные журналы пожалуй самые важные файлы для DBA, так как в них хранятся данные о всех киритческих системных событиях, таких как запуск, остановка, возникновение ошибки и т.п. Файлы трассировки обычно используются фоновыми и серверными процессами и, как и  в системные журналы, содержат информацию о происходящих и произошедших событиях.

Также мы рассмотрим словарь данных и представления производительности. Эти объекты можно просмотреть с помощью SQL запросов и они содержат важную информацию о текущем состоянии системы. Данные в представлениях производительности недоступны после остановки экземпляра – они содержат информацию только о текущей активности БД и помогают системе и DBA понимать что происходит в системе в текущий момент. Использование и понимание этих объектов БД сильно облегчит процесс понимания что происходит со всей БД.

Экземпляр настраивается инилизационными параметрами используемыми при старте (запуске фоновых процессов и создании структур в памяти). Многие, но не все, параметры могут быть изменены после старта. Параметры используемые при создании экземпляра могут быть получены из файла параметров (который может быть статическим pfile или динамическим spfile) или использовать значения по умолчанию. У всех параметров кроме DB_NAME есть значение по умолчанию. Всего примерно триста параметров могут быть установлены DBA. На самом деле есть ещё примерно полторы тысячки параметров, но они обычно устанавливаются системой и изменяются только после консультации с поддержкой Oracle.

Настраиваемые триста параметров в свою очередь  делятся на базовые (basic) и продвинутые (advanced). Основной принцип разделения таков, что практически все БД будут хорошо работать со значениями по умолчанию для продвинутых параметров. Всего около тридцати трёх параметров являются базовыми. Таким образом установка значений для параметров не такая уж ужасная задача, однако эта задача очень важная.

Статические и динамические параметры. Инициализационный файл параметров

Для просмотра параметров и их значений можно выполнить запрос к представлению V$PARAMETER

SELECT NAME,VALUE FROM V$PARAMETER ORDER BY NAME;

Запрос который может вернуть немного другой результат

SELECT NAME,VALUE FROM V$SPPARAMETER ORDER BY NAME;

Разница между запросами в представлениях, откуда выбираются параметры и из значения: V$PARAMETER отображает значения, установленные для запущенного экземпляра БД, а V$SPPARAMETER содержит значения которые хранятся в spfile на диске. Обычно, параметры одинаковые, но не всегда. Некоторые параметры могут быть измененые в процессе работы экземпляра БД. Другие же, называемые статическими параметрами, устанавливаются только в момент запуска экземпляра БД. Изменение нестатических параметров приведёт к немедленному эффекту на работающем экземпляре и также может быть записано в spfile. Если это будет сделано, то при следующей остановке/запуске экземпляра будет использовано новое значение. Если не записывать изменения в файл – то изменения будут действовать только до перезапуска экземпляра.  Статические параметры могут быть измененые только записью в spfile и изменения будут применены при перезапуске экземпляра. Если существует разница между результатами выполнения двух  запросов, то скорее всего либо DBA тестирует какие-либо изменения и ещё не применил их, либо были изменения в статических параметрах, но экземплярд не был перезапущен.

Остальные столбцы в представлениях V$PARAMETER и V$SPPARAMETER не требуют пояснений.

Эти представления так же можно просмотреть используя Database Controle. На домашней странице выберите вкладку Server и нажмите ссылку Initialization Parameters. В отрывшемся окне – рисунок 3-1 доступно две вкладки: Current отображает значения работающего экземпляра, т.е. значения из представления V$PARAMETER. Вкладка SPFile  содержит информацию записанную в spfile и доступную в представлении V$SPPARAMETER.

Динамическим параметрам можно установить новое значение в этом же окне. Для изменеия статических параметров необходимо выбрать вкладку SPFile. Также можно изменить параметры используя команду ALTER SYSTEM. Примеры выполнения этой команды показаны на рисунке 3-2. Вначале просмотрим текущее значение параметра DB_CREATE_FILE_DEST – оно одинаковое для запущенного экземпляра и spfile. Затем установим значения параметров используя ключевое слово SCOPE (BOTH – значение по умолчанию при использовании SPFILE, MEMORY – значение по умолчанию при использовании PFILE).

11

12

Oracle ищет подходящий файл параметров в следующем порядке

  • Пытается использовать файл spfile${ORACLE_SID}.ora в директории $ORACLE_HOME/dbs (Unix) или ORACLE_HOME/database (Windows)
  • Пытается использовать файл spfile.ora в директории $ORACLE_HOME/dbs (Unix) или ORACLE_HOME/database (Windows)
  • Пытается использовать файл init${ORACLE_SID}.ora в директории $ORACLE_HOME/dbs (Unix) or ORACLE_HOME/database (Windows)

Вы можете переопределить местонахождение PFILE заданное по умолчанию указав параметр PFILE в команде запуске экземпляра

STARTUP PFILE=’/oradata/spfileORCL.ora’

Параметра SPFILE у команды STARTUP нет. Можно указать на желаемый SPFILE только прописав параметр SPFILE в файле PFILE.

PFILE можно конвертировать в SPFILE вызвав команду CREATE SPFILE[=’filename’] FROM PFILE[=’pfilename’] (параметры в квадратных скобках опциональны и значение по умолчанию формируется из переменных ORALCE_HOME и SID). Также можно выполнить обратное преобразование вызвыв команду CREATE PFILE FROM SPFILE.

Команды CREATE PFILE и CREATE SPFILE могут быть выполнены в любое время, даже без работающего экземпляра

Базовые параметры

Параметры экземпляра выделенные как базовые – это такие параметры значения которых необходимо обдумывать для любой БД. В некоторых случаях значения по умолчанию подойдут – но всегда необходимо осознанно указывать значения базовых параметров вашей БД. Базовые параметры и их значения можно посмотреть выполнив запрос

select name,value from v$parameter where isbasic=’TRUE’ order by name;

Также можно выполнить запрос сразу к двум представлениям

select p.name pfilename,p.value pfilevalue,s.name,s.value from v$spparameter s join v$parameter p on s.name=p.name where p.isbasic=’TRUE’ order by name;

Список базовых параметров и их описание представлены в таблице 3-1

13

14

Изменение параметров

Статические параметры могут быть изменены только командой ALTER SYSTEM с аргументом SCOPE=SPFILE. Эта команда изменяет SPFILE. Статические параметры изменяют экземпляр БД только после перезапуска. К примеру статическим параметром является LOG_BUFFER. Если вы хотите измение его значение то вам необходимо выполнить команду

 

alter system set log_buffer=6m;

 

Такой вызов команды приведёт к ошибке

15

Для успешной обработки команды необходимо добавить аргумент SCOPE=SPFILE. Команда будет выполнена успешно, однако для применения изменений экземпляр БД необходимо перезапустить.

Параметры применяются ко всей БД либо к конкретной сессии, либо и для сессий и для БД. Примером параметра который указывается для БД, но может также дополнительно настраивается для сессий является OPTIMIZER_MODE.  Значение этого параметра влияет на то, как Oracle будет выполнять запросы. Доступные значения ALL_ROWS и FIRST_ROWS. При выборе ALL_ROWS оптимизатор генерирует план выполнения запроса таким образом, чтобы закончить выполнение как можно быстрее, тогда как FIRST_ROWS создает такой план запроса, который вернёт часть результата как можно быстрее, тогда как запрос полностью будет выполняться гораздо дольшее время. Таким образом если ваша БД обычно используется для долгих DSS (Decision Support System) запросов, но некоторые пользователи используют БД для интерактивной работы то значение для системы может быть установлено ALL_ROWS а для сессий определенных пользователей FIRST_ROWS. Это достигается путем выполнения запросов

 

alter system set optimizer_mode=all_rows;

alter session set optimizer_mode=first_rows;

 

Существует всего несколько параметров которые указываются только для сессии. Главным примером является NLS_DATE_FORMAT. Этот параметр, который управляет форматом отображения даты и время, указывается в файле параметров, но не может быть изменен командой ALTER SYSTEM. Т.е. он является статическим, так как влияет на работу экзмепляра, но он может быть настроен на уровне сессии командой

 

alter session set nls_date_format=’dd-mm-yy hh24:mi:ss’;

 

Этот запрос установит формат даты/время для текущей сессии, но не затронет другие сессии.

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