Рубрика: Управление БД

  • Управление БД — Итоги

    Этаты запуска и остановки БД

    Существует три состояния NOMOUNT, MOUNT и OPEN

    NOMOUNT необходим файл параметров

    MOUNT использует файл контроля

    OPEN читает файлы данных и файлы логов

     

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

    Изменение статических параметров не влияет на работу БД до перезапуска

    Изменение остальных параметров влияет на работу без перезапуска, и может применяться как для экземпляра так и для отдельной сессии

    Значения параметров можно посмотреть в представлениях производительности V$PARAMETER и V$SPPAREMETER

     

    Использование системного журнала и файлов трассировки

    Системный журнал это файл которые содержит последовательные записи о всех критических операциях над БД

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

     

    Использование словаря данных и динамических представлений производительности

    Представления производительности содержат информацию об экзмепляре и из файла контроля

    Представления словаря данных используют информацию из словаря данных

    Представления производительности собирают данные все время пока экземпляр работает, и инициализируются заново при перезапуске

    Представления словаря данных отображают информацию которая сохраняется вне зависимости от циклов запуска/остановки

    Оба типа представлений используются с помощью синонимов

  • Использование словаря данных и динамических представлений производительности

    База данных Oracle описана её же словаре данных. Структура словаря данных не очень понятна, поэтому Oracle предоставляет эту информацию в виде набора представлений которые гораздо легче изучать. Также у работающего экземпляра есть набор таблиц (которые фактически являются структурами данных C), которые сложны для понимания. Они тоже преобразуются в динамические представления производительности, которые являются ключевым элементом для понимания что происходит с экземпляром БД в данный момент времени.

    Представления словаря данных

     Словарь данных содержим метаданные: грубо говоря данные о данных. Он содержит описание базы данных, физическую и логическую структуру и содержание БД. Учётные записи, информация о безопасности, целостные ограничения и (начиная с версии 10g) информацию о производительности – всё это хранится в словаре данных. Логически это набор сегментов а табличных пространствах SYSTEM и SYSAUX.

    Сегменты словаря данных практически идентичны обычным пользовательским сегментам (таблицам и индексам). Ключевым различием является то, что таблицы словаря данных создаются в момент создания БД и не могут быть использованы напрямую. Конечно физически это возможно,но любые изменения могут привести к нарушению БД и никто не сможет вам помочь. Создание словаря данных – это часть процесса создания базы данных. Словарь данных управляется DDL (Data Definition Language) командами. Когда вы запускаете команду CREATE TABLE – вы не только создаёте сегмент данных для хранения строк в нем – ваша команда также добавит строки в различные таблицы словаря данных, которые содержат информацию о табличном пространстве, extent-ах, столбцах и владельце сегмента.

    Для просмотра словаря данных, Oracle предоставляет набор представлений, отличающихся префиксом: DBA_, ALL_ или USER_. Практически все представления созданы для всех трёх префиксов. Любое представление начинающееся с USER_ отобразит инфомрацию об объектах, владельцем которых является текущий пользователь. Если пользователя ВАСЯ будет просматривать представление USER_TABLES, то он увидит только таблицы владельцем которых он является. Представления начинающиеся с ALL_ отображают объекты, к которым у текущего пользователя есть доступ. Т.е. если выполнить запрос в ALL_TABLES то вернутся строки таблица которые вы создали, плюс строки о таблицах других пользователей к которым у вас есть доступ для просмотра. Любое представление с префиксом DBA_ содержит информацию о всех объектах в БД, то есть DBA_TABLES будет содержать строки для всех таблиц во всей базе данных, без разницы кто их создал. Рисунок 3-10 отображает концепцию трех видов представлений. Для доступа к представлениям с префиксом DBA _– у пользователя дожны быть права доступа DBA.

    23

    Эти представления создаются во время создания БД, вместе с огромным количеством PL/SQL пакетов, которые предоставляет Oracle для упрощения администрарования БД и разработки приложений.

    Существует несколько сот представлений словаря данных. Некоторые часто используемые DBA это

    DBA_OBJECT содержит строки для всех объектов в БД

    DBA_DATA_FILES каждая строка описаывает файл данных

    DBA_USER строки отображают информацию об учётной записи

    DBA_TABLES описание таблиц

    DBA_ALERT_HISTORY строки описывают последние события для записи в системный журнал

    Также существует много других представлений и вместе с представлениями создаются синонимы. Следующий запрос

     

    select object_name,owner, object_type from dba_objects where object_name=’DBA_OBJECTS’;

     

    показывает, что фактически владельцем представления DBA_OBJECTS является SYS и создан синоним с таким же названием, к которому и выполнен запрос.

    Динамические представления производительности

    Существует больше чем три сотни представлений производительности. Вы будете часто слышать выражение “ви доллар” представления, потому что их названия начинаются с V$. На самом деле,  “ви доллар” представления совсем не представления – это синонимы созданные для представлений с префиксом V_$, как показано на рисунке 3-11

    24

    Также на рисунке 3-11 мы видим описание V$SQL, где хранится строка для каждого SQL запроса, сохранённого в shared pool, содержащая информацию такую как как часто выполнялся запрос и так далее.

    Представления производительности дают доступ к колоссальному количеству инфомрации об экземпляре БД и (в какой-то степени) о самой базе данных. Большинство представлений содержат информацию от экземпляра БД, остальные – информацию из файла контроля. Все они отображают информацию в режиме реального времени. Представления которые содержат информацию об экземпляре БД доступны в любое время когда экземпляр запущен, даже в состоянии NOMOUNT. Представления, которые содержат информацию из файла контроля, такие как V$DATABASE или V$DATAFILE недоступны до подключения базы данных (момента, когда читается файл контроля). Для сравнения, представления словаря данных могут использоваться только когда БД открыта.

    Динамические представления произодительности создаются в момент запуска, обновляются на протяжении всей работы экземпляра, и удаляются при выключении. Это значит что они содержат информацию после последнего запуска: есил ваба БД открыла на протяжении шести месяцев без остановки, все представления будут содержать информацию за весь период работы. После выключения/включения – они будут инициализированы заново. Конечно хранящиеся в момент времени итоги представляют собой важную информацию, однако они не дадут никакого представления что происходило в определенный момент времени, когда к примеру были проблемы с производительностью. По этой причине будет правильным сказать что эти представления производительности отображают статистику, а не метрики.

  • Использование системного журнала (Alert Log) и файлов трассировки (Trace Files)

    Системный журнал это файл содержащий последовательные записи всех значимых операций совершённых над экземпляром БД и самой базой данных. Местонахождение этого файла определяется параметром BACKGROUND_DUMP_DEST и имя alert_SID.log где SID это имя экзмепляра БД.

    Значимым операциями записываемыми в системный журнал являются

    Запуск и остановка БД (включая шаги подключения и открытия)

    Системные внутренние ошибки Oracle (например ошибка ORA-600)

    Любые найденные повреждения блоков файлов данных

    Возможные ситуации deadlock

    Изменения физической структуры БД (создание/изменение файлов данных или файлов логов)

    Выполнение команд ALTER SYSTEM

    Переключение логов (log switch) и архивирование логов

    В системном журнале будут отображеные все значения параметров не по умолчанию при запуске системы. Эта информация вместе со всеми записями выполнения команд ALTER SYSTEM и ALTER DATABASE позволяют в любой момент времени восстановить историю изменений БД и экземпляра. Это может быть незаменимой информацией при поиске источника возникновения проблемы.

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

  • Описание этапов запуска и остановки БД

    Oracle рекомендует следующий порядок действий для запуска БД: запуск Database Control, запуск listener-а, запуск БД. Запуск БД также является составным процессом. При запуске более сложного окружения, такого как cluster system или любого другого управляемого Enterprise Manager Grid Control могут быть дополнительные этапы, однако для Single Instance архитектуры этой последовательности вполне достаточно.

    Запуск и подключение к Database Control

    Database Control это инстурмент для управления одной БД. Эта БД может быть кластеризирована и тогда для каждого экземпляра БД работающего с одинаковой домашней директорией ORACLE_HOME будет свой экземпляр Database Control. Этот инструмент написан на языках Perl и Java и доступен через браузер. Нет необходимости устанавливать JRE или интерпретатор Perl: они оба доступны в домашней директории Oracle и устанавливаются OUI. Все запросы к Database Control осуществляются с использованием протокола HTTPS. Единственная необходимая настройка это проверить доступность порта используемого для работы с Database Control. Настройка Database Control осуществляется в момент создания БД. Эта настройка содержит два важных блока информации:  имя сервера и номер порта. Если возникнет необходимость изменить эти значения – необходимо перенастроить Database Control.

    Для запуска Database Control необходимо запустить программу emctl, расположенную в папке $ORACLE_HOME/bin. Ниже перечислены команды для запуска, остановки и проверки состояния Database Control

    emctl start dbconsole

    emctl stop dbconsole

    ecmtl status dbconsole

    Для успешного выполнения этих команд должны быть установлены следующие системные переменные: PATH, ORACLE_HOME и ORACLE_SID. PATH используется операционной системой для поиска пути к программе emctl. ORACLE_HOME и ORACLE_SID используются для поиска командой emctl файлов конфигурации. Эти файлы расположены в трёх местах: папка ORACLE_HOME/sysman/config содержит общие настройки для всех экземпляров Database Control работающих с текущей домашней директорией Oracle. ORACLE_HOME/hostname_sid/sysman/config и ORACLE_HOME/oc4j/j2ee/ OC4J_DBConsole_ hostname_sid/config содержат дополнительные расширенные настройки для каждой БД(hostname – имя компьютера, sid – значение переменной ORACLE_SID).

    На рисунке 3-3 показан результат выполнения команды запуска Database Control

    16

    Первая попытка запуска была неудачной так как не была установлена переменная ORACLE_SID. Без корректного значения этой переменной emctl не может найти необходимые файлы конфигурации (значение используется в названии папок). Команда проверки состояния ни что иное как запрос по адресу URL; доступность этого URL так же можно проверить в браузере

    http://hostname:port/em

    где hostname – это сетевое имя компьютера на котором запущен Database Control и port – это порт ответственный за входящие подключения. Если у вашего сервера несколько сетевых имён или несколько сетевых интерфейсов – можно использовть любой. Для определения порта можно использовать команду emctl либо посмотреть конфигурационный файл ORACLE_HOME/install/portlist.ini где указаны все порты настроенные OUI и DBCA. При незапущенном listener-е при подключении к Database Control вы увидите окно изображенное на рисунке 3-4.

    Запуск listener-а БД

    Listener – это процесс который следит за запросами к порту для подключения к базе данных. Запросы к БД (и весь остальной трафик после создания сессии) использует Oracle Net, закрытый протокол Oracle. Oracle Net – это прокотор который работает над любым низлежащим сетевым протоколом, обычно над TCP/IP. Управление listener-ом более детально расммотрим в главе 4, сейчас же рассмотрим как запустить listener. Это можно сделать двумя (в windows тремя) способами: используя программу lsnrctl, с помощью Database Control, запустить windows сервис.

    Программа lsnrctl расположена в каталоге ORACLE_HOME/bin. Параметрами могут быть

    lsnrctl start [listener name]

    lsnrctl status [listener name]

    Значение по умолчанию для названия listener-а  — LISTENER и обычно так и называют. На рисунке 3-5 показан результат выполнения команды lsnrctl status при работающем listener-е

    17

    18

    Обратите внимание на первую строчку – там указаны сетевое имя и порт listener-а, а также на пятую снизу строку, которая обозначает что listener будет принимать подключения для сервиса ocp11g который создан для экземпляра ocp11g. Это критически важная информация для подключения к БД. Если БД была успешна создана с помощью DBCA значит listener настроен и запущен. Если нет вы увидите другой ответ команды lsnrctl status, тогда используйте команду lsnrctl для запуска или нажмите кнопку START LISTENER в окне Database Control показанном на рисунке 3-4.

    Запуск SQL *Plus

    SQL *Plus — это простая клиент-серверная программа для запуска SQL команд. Единственный параметр который необходимо знать для запуска – это NOLOG. По умолчанию, SQL *Plus немедленно запрашивает имя и пароль пользователя и параметры подключения. Это корректно для обычных пользователей, но бессмысленно для DBA, так как база данных должна быть уже открыта. Для запуска SQL *Plus без подключения к БД используйте параметр /NOLOG

    sqlplus /nolog

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

    Запуск и остановка БД

    Если быть точным – нельзя запустить и остановить БД: только экземпляр может быть запущен и остановлен, а база данны может быть подключена, открыта, отключена и закрыта. Данные операции можно совершить с помощью SQL *Plus выполнив команды STARTUP и SHUTDOWN или используя Database Control. В Windows это можно сделать также с помощью управления сервисом созданным для экземпляра БД. Системный журнал содержит подробную информацию об этих операциях когда бы они не были вызваны. Запуск и остановка – очень важные операции, информация об их выполнении всегда записывается и они могут быть инициированы только пользователями с особым уровнем доступа.

    Подключение с повышенными правами доступа

    Обычный пользователь не может запустить или остановить БД – потому что он авторизуется используя словарь данных. Это логически невозможно поскольку в момент запуска словарь данных ещё не доступен. Таким образом для запуска необходимо подключаться к серверу используя механизм внешней авторизации:  системная авторизация пользователя как члена группы Oracle, или авторизация с использованием файла паролей. Тип авторизации указывается при выполнении команды CONNECT.  Ниже представлены различные комбинации команды CONNECT после подключения к серверу используя программу SQL *Plus с параметром /NOLOG

    connect user/pwd[@connect_alias]

    connect user/pwd[@connect_alias] as sysdba

    connect user/pwd[@connect_alias] as sysoper

    connect / as sysdba

    connect / as sysoper

    где user – имя пользователя, pwd – пароль, connect_alias – сетевой идентификатор (рассмотрим в главе 4). Первый пример использует авторизацию с помощью словаря данных, база данных должны быть открыта или команда вернёт ошибку. Любой пользователь после подключения к БД используя данный синтаксис не сможет выполнить команды запуска и остановки базы данных. Два следующих примеры указывают Oracle использовать авторизацию с помощью файла паролей. Последние команды используют авторизацию операционной системы: Oracle проверяет является ли текущий пользователь членом группы Oracle, и если проверка успешна – пользователь подключается к БД как SYSOPER или SYSDBA. Пользователь подключившийся к базе данных любым способом из последних четырёх может выполнить команды запуска и остановки БД вне зависимости от состояния базы данных – она может быть даже не создана на этом этапе.

    Если Database Control обнаруживает запущенный listener – то он использует авторизацию через словарь данных или файл паролей (в зависимости от выбора пользователя – рисунок 3-6). Если же listener не запущен (рисунок 3-4) при нажатии на кнопку STARTUP Database Control запрашивает системные имя пользователя и пароль для подключения к серверу.

    19

    Рисунок 3-6

    SYSOPER и SYSDBA

    SYSOPER и SYSDBA – это уровни доступа с повышенными полномочиями.  Они доступны только при системной авторизации или авторизации с помощью файла паролей. Уровень доступа SYSOPER может выполнять команды

    STARTUP

    SHUTDOWN

    ALTER DATABASE [MOUNT|OPEN|CLOSE|DISMOUNT]

    ALTER [DATABASE|TABLESPACE][BEGIN|END] BACKUP

    RECOVER

    Уровень доступа SYSDBA также может выполнять эти команды, плюс возможность создавать БД, запускать неполное восстановление и давать полномочия SYSOPER и SYSDBA другим пользователям.

    Вам может быть интерестно под каким пользователем вы подключаетесь к БД когда используется системная авторизация. Чтобы это выяснить, после подключения к базе данных выполните команду show user (эту команду можно вызвать набрав sho user – не стоит недооценивать сокращения, они могут ускорить время набора команд) – результат показан на рисунке 3-7.

    Уровень доступа SYSDBA использует пользоватля SYS – суперпользователя в системе и владельца словаря данных. Уровень доступа SYSOPER подключается как пользователь PUBLIC. PUBLIC – не пользователь в нормальном смысле, это пользователь который используется для задач администрирования, но (по умолчанию) не может просматривать или изменять данные. Подключаться с данными уровнями доступа стоит только для выполнения задач, которые не могут быть выполнены обычными пользователями.

    20

    Рисунок 3-7

    Запуск: NOMOUNT, MOUNT и OPEN

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

    Процесс запуска базы данных разбит на шаги: вначале запускается экземпляр БД, затем база данных подключается (mount) и открывается (open) для использования. В любой момент времени база данных может быть в одном из следующих состояний

    • SHUTDOWN
    • NOMOUNT
    • MOUNT
    • OPEN

    Когда база данных остановлена (SHUTDOWN) все файлы закрыты и экземпляр не существует. В отключенном состоянии (NOMOUNT) – экземпляр БД построен в памяти (SGA создана и фоновые процессы запущены согдасно файлу параметров), но база данных недоступна и может быть даже ещё не создана. В подключенном состоянии (MOUNT) экземпляр находит и читает файл контроля. В открытом состоянии (OPEN) все файлы найдены и открыты – т.е. база данных доступна для пользователей. Когды вы запускаете команду STARTUP – будут выполнены все шаги, однако команда может быть разбиты на этапы. Напирмер если файл контроля испорчен или копия недоступна – вы не сможете подключить базу данных. Однако вы можете запустить базу в неподключенном режиме (NOMOUNT) и восстановить файл контроля. Точно так же если у вас возникли проблемы с файлами данных или логовов, вы можете попробовать восстановить данные в MOUNT состоянии, перед тем как открывать БД.

    Как же экземпляр находит файлы которые ему нужны на каждом из шагов? Начнём с NOMOUNT. Когда вы запускаете команду STARTUP, Oracle будет искать файл параметров в определённом порядке как отображено на рисунке 3-8.

    Всего существует три пути и имени файла. На Unix подобных системах это

     

    $ORACLE_HOME/dbs/spfileSID.ora

    $ORACLE_HOME/dbs/spfile.ora

    $ORACLE_HOME/dbs/initSID.ora

    А на Windows

     

    %ORACLE_HOME%\database\SPFILESID.ORA

    %ORACLE_HOME%\database\SPFILE.ORA

    %ORACLE_HOME%\database\INITSID.ORA

    21Во всех случаях – SID это имя экземпляра. Порядок поиска очень важен. Oracle будет использовать первый найденный файл вне зависимости от наличия остальных. Если ни одного файла не существует – экземпляр не будет запущен. В режиме NOMOUNT используются только файл параметров и системный журнал. Значения параметров из файла параметров используются для создания SGA в памяти и запуска фоновых процессов. В системный журнал записывается информация об этот процессе. Где находится системный журнал? Путь можно узнать посмотрев параметр BACKGROUND_DUMP_DEST в файле параметров или выполнив команду

    sho parameter background_dump_dest

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

    Когда экземпляр запущен в режиме NOMOUNT, переход в состояние MOUNT будет осуществляться путём чтения файла контроля. Oracle находит эти файлы используя параметр CONTROL_FILES, прочитанный во время запуска экземпляра. Если файл контроля (или хотя бы одна копия) не найдены или повреждены, база данных не будет подключена и вы обязаны восстановить их перед подключением. Все копии должны быть доступны и одинаковы для успешного подключения БД.

    Как часть процесса подключения, все именя файлов данных и логов и пути к ним считываются из файла контроля, но Oracle просто запоминает эти значения, не пытаясь найти файлы. Поиск и чтение файлов происходит во время открытия базы данных (OPEN). Если какой-либо файл поврежден или отсутствует база данных останется в режиме MOUNT пока вы не исправите ошибки. Более того, все файлы должны быть синхронизированы перед тем как база данных будет открыта. Если последнее выключение было выполнено в определённом порядке, то все буферы из буфера кэша БД записаны на диск процессом DBWn и файлы синхронизированы, и Oracle будет знать при запуске что все подтверждённые транзакции сохранены в файлах данных и нет неподтвержденных транзакций ожидающих отмены.  Если же последнее выключение было не запланированным (к примеру от потери питания или системной перезагрузке сервера без правильного выключения экземпляра) то Oracle должен синхроинизировать файлы данных и файлы логов (отменив неподтверждённые транзакции). Процесс который подключает и открывает БД (и синхронизирует данные) называется SMON. Только когда база данных успешно открыта будет возможно подключение пользователей. Процесс запуска графически представлен на рисунке 3-9.

    Остановка процесс зеркальный запуску. Вначале закрывается БД (CLOSE), затем отключается (DISMOUNT) и далее останавливается экземпляр. Во время закрытия БД все сессии отключаются: текущие транзакции отменяются процессом PMON, подтверждённые транзакции записываются в файлы данных DBWn и файлы данных и логов закрываются. Во время отключения закрывается файл контроля. И экземпляр останавливается с освобождением памяти и остановкой фоновых процессов.

    22

    Выключение: NORMAL, TRANSACTIONAL, IMMEDIATE и ABORT

    Существуют параметры которые используются с командой SHUTDOWN – вызов SHUTDOWN команды требует уровня доступа SYSDBA или SYSOPER

     

    SHUTDOWN [NORMAL|TRANSACTIONAL|IMMEDIATE|ABORT]

     

    NORMAL: это значение по умолчанию. Новые подключения нельзя создать, но все текущие сессии могут работать до конца сессии. Когда все пользователю отключатся база данных будет выключена.

    TRANSACTIONAL: новые подключения недоступны; существующие сессии которые не выполняют транзакции отключаются; сессии которые выполняют транзанкцию завершают транзакцию и отключаются. Когда все сессии будут отключены, база данных останавливается.

    IMMEDIATE: новые подключения не разрешены. Все активные сессии отключаются. Все активные транзакции отменяются и база данных выключается.

    ABORT: это эквивалент отключению питания. Экземпляр останавливается без записи чего либо на диск, закрытия файлов, отмены транзакций.

    Параметры выключения «normal,» «immediateи «transactional» считаются «чистыми» выключениями (то есть выполненными в правильном порядке). После того как все сессии отключены, PMON отменяет все неподтверждённые транзакции. Создаётся контрольная точка процессом CKPT, которая заставляет DBWn записывать измененные данные из буфера кэша в файлы данных. LGWR записывает вектора изменений в файлы логов. Обновляются заголовки файлов и файлы закрываются. Это гарантирует что база в синхронизированном состоянии: все подверждённые транзакции в файлах данных и нет неподтверждённых транзакций требующих отмены.

    Параметр “abort” оставляет базу данных в рассинхронизированном состоянии: возможно что подтверждённые транзакции не записаны в файлы данных, так как на момент выключения они были сохранены в памяти и DBWn не записал изменения из буфера в файлы. Также может быть и такое, что неподтверждённые транзакции записаны в файлы данных. Это определение испорченной БД: она содержит некорректные данные. Эти повреждения должны быть восстановлены используя instance recovery. Таким образом можно протестировать что произойдёт если к примерну непредвиденно обесточить сервер в процессе работы БД.

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

     

    alter database close;

    alter database dismount;

     

    Эти команды полная противоположность командам запуска. На практике SHUTDOWN это единственная команда которой пользуются DBA. Пошаговый процесс также недоступен из Database Control.

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

    Итак, у нас есть установленная БД и мы готовы изучать как же управлять экземпляром БД и как он работает с БД. Изучение программы в настроенной учебной среде даёт определенные преимущества, самое главное из которых, это в процессе изчучения и экспериментов вы неизбежно столкнётесь с ошибками и решение этих ошибок – самый лучший способ изучения. Вы всегда можете удалить и заново установить систему если в резульате каких-либо образом система перестанет работать и у вас не получится восстановить работоспособность, но даже это даст вам определённый опыт использования 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’;

     

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