(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

STANDBY STEP-BY-STEP

Источник: oracloid

Данное руководство создано с целью объяснить «на пальцах» всю процедуру организации STANDBY-базы под ОС Windows для версии СУБД Oracle 10g без ссылки на внешние источники.

Цель: Организовать передачу заархивированных файлов изменений, с «боевой» БД на резервную, посредством локальной сети, с целью последующего «наката» резервной БД до «боевой».

Исходные данные:

1. Два ПК, находящихся под управлением ОС Windows, между которыми установлено соединение по локальной сети.

2. Дистрибутив СУБД Oracle 10g.

3. Свободное время - не менее 3-ех часов.

4. Ангельское терпение и крепкий кофе ;)

Несмотря на то, что основной темой руководства является STANDBY, я затрону установку СУБД Oracle, а так же конфигурирование файлов listener.ora и tnsnames.ora.

Часть I : Установка и первоначальная настройка Oracle.

Запустите инсталяцию Oracle 10g на ПК, который вы выбрали в качестве хоста для «боевой» (PRIMARY) базы.

Из двух предложенных вариантов Basic и Advanced - выбираем Advanced. На следующем экране выбираем тип СУБД - «Custom», чтобы отсечь ненужные пока модули. Затем предлагается выбрать имя и путь к данной версии СУБД. Я выбрал

Name: OraDb10g

и

Path: C:\oracle\product - забегая вперед, скажу, что на ПК со STANDBY будет такой же путь - для удобства.

Теперь выбираем какие компоненты установить: оставим Oracle Database 10g, Enterprise Manager Console, Net Listener и Call Interface.

В следующем окошке кликаем NEXT , а когда появится предложение о создании БД ( Create Database ) - выберем вариант «Install database Software only» - БД мы создадим позже. Еще раз просмотрим, что мы выбрали для установки и нажмем «Install». Собственно теперь можно пойти и заварить себе кофе, если вы этого еще не сделали.

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

Находим в меню «Пуск» папку «Oracle - OraDb10g» (или как вы там её назвали) и запускаем утилиту «Database Configuration Assistant» . Выбираем опцию «Create Database» , затем, в окне выбора типа БД, опять же выбираем «Custom» . После этого появится предложение указать глобальное имя БД ( «Global DBName») и системный идентификатор для экземпляра ( «SID» ). В качестве имени БД я выбрал «TEST», а в качестве SID-а «PRIMARY» - чтобы было понятнее что где. В следующем окне все оставляем без изменений, так как пока нам не нужны ни уведомления на e-mail ни осуществление ежедневного бэкапа. После этого наступает еще один отвественный момент - определение пароля. Вы можете вписать свой пароль для каждой служебного пользователя отдельно, либо задать одинаковый для всех(как я и сделал, установив его равным «123») . В следующем окне(это уже 6-ой шаг установки БД) опять ничего не меняем, впрочем, как и на 7-ом шаге ))). На 8-ом шаге предлагается определить место под log-файлы, на случай если вы забудете потом прописать для них его явно. Также предлагается сразу включить режим архивирования логов. Я отказался от обоих вариантов, сняв галочки. Теперь кликаем на «NEXT» до 12 шага, где наконец жмем на «FINISH». Вот теперь можно не только сходить выпить кофе, но даже пообедать ;)

После установки БД, необходимо настроить сервисы Listener и Local Net Service Name , чтобы можно было подключаться к инстанции. Для этого запустите Net Configuration Assistant из того же раздела что и Database Configuration Assistant. Сначала создадим и настроим Listener: зададим имя(я оставил стандартное) и протокол - как правило TCP/IP. Порт тоже оставим стандартным.

Затем настроим сервис имен: зададим имя сервиса - он должен быть равным глобальному имени БД - TEST, протокол так же TCP, имя хоста - я указал IP адрес ПК 192.168.0.1, порт стандартный, пока сервис не тестируем.

После конфигурирования сервисов, в папке D:\oracle\product\network\ADMIN\ должны появиться файлы listener.ora и tnsnames.ora.

Листинг listener.ora:

SID_LIST_LISTENER=

(SID_LIST=

(SID_DESC=

(SID_NAME=PLSExtProc)

(ORACLE_HOME=С:\oracle\product)

(PROGRAM = extproc)

)

)

LISTENER=

(DESCRIPTION_LIST=

(DESCRIPTION=

(ADDRESS = (PROTOCOL=TCP)(HOST=ИМЯ_КОМПА)(PORT=1521))

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

)

)

Листинг tnsnames.ora:

TEST =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = TEST)

)

)

EXTPROC_CONNECTION_DATA =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

)

(CONNECT_DATA =

(SID = PLSExtProc)

(PRESENTATION = RO)

)

)

Подправим listener.ora:

SID_LIST_LISTENER=

(SID_LIST=

(SID_DESC=

(SID_NAME=PLSExtProc)

(ORACLE_HOME=С:\oracle\product)

(PROGRAM = extproc)

)

(SID_DESC=

(GLOBAL_DBNAME=TEST

(ORACLE_HOME=С:\oracle\product)

(SID_NAME=PRIMARY)

)

)

LISTENER=

(DESCRIPTION_LIST=

(DESCRIPTION=

(ADDRESS = (PROTOCOL=TCP)(HOST=IP PRIMARY-ПК)(PORT=1521))

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

)

)

Имя компьютера заменил на IP просто для ясности - можно было оставить без изменений. Теперь необходимо перезапустить сервис листенера. Это можно сделать в Панель инструментов\Администрирование\Сервисы (Control Panel\Administrative Tools\ Services).

Проверить работу сервиса имен можно выдав в командную строку: tnsping IP компа - если пришел отклик в милисекундах, значит связь есть(если нет - скорее всего настройки фаервола не позволяют это сделать, лучший вариант - отключить фаервол на тестовых машинах)

Попробуем подключиться к инстанции и выдадим в командную строку: sqlplus sys/123@test as sysdba. Должно произойти подключение к инстанции.

Итак, первоначальная настройка «боевой» базы завершена. Теперь установим СУБД на второй STANDBY-ПК(только СУБД - без БД) следуя тому же плану что и при установке на PRIMARY(пути должны совпадать).

Часть II: Собственно организация STANDBY.

Для того чтобы менять параметры инстанции, я буду использовать pfile init.ora, так как его можно менять из текстового редактора, в отличие от spfile-а. Готовый pfile init.ora возьмем из папки C:\oracle\admin\PRIMARY\pfile\. Удалим в расширении цифры и переименуем, получим iniPRIMARY.ora, который скопируем в C:\oracle\product\database\. А находящийся там spfilePRIMARY.ora нужно удалить.

Теперь перейдем к созданию копии основной БД. Я это делаю с помощью «холодного» резервирования.

«Холодное» резервирование:

  1. 1. Остановить Oracle командой в sqlplus: shutdown transactional или shutdown immediate.
  2. 2. Скопировать с PRIMARY на STANDBY папки admin и oradata, которые находятся в c:\oracle (учитывая, что oracle_home у меня С:\oracle\product)

Контрольные файлы для STANDBY нужно создавать отдельно. Для этого запустим инстанцию и выдадим sqlplus: alter database create standby controlfile as ‘c:\control01.ctl’ - в корневом каталоге диска C появится контрольный файл. Так как, при создании БД, Oracle автоматически создает 3 контрольных файла, мы тоже создадим файлы control02.ctl и control03.ctl путем простого копирования и переименования файла control01.ctl, который мы только что получили(создать 2-ой и 3-ий файл тем же способом что и 1-ый можно, но тогда не будут совпадать их версии и инстанция не стартует). Полученные контрольные файлы, необходимо скопировать на STANDBY-ПК в папку c:\oracle\oradata\TEST с заменой уже существующих.

Теперь скопируем initPRIMARY.ora на STANDBY-ПК (c:\oracle\product\database) и переименуем в initSTANDBY.ora

Следующим шагом будет перевод PRIMARY-БД в режим архивирования журнальных файлов:

  1. 1. Остановить Oracle командой в sqlplus: shutdown transactional или shutdown immediate.
  2. 2. Заведем папку для архивных журнальных файлов C:\oracle\oradata\TEST\ARCHIVE
  3. 3. Добавить в файл initPRIMARY.ora следующие строки:

log_archive_dest_1="location= C:\oracle\oradata\TEST\ARCHIVE"

log_archive_dest_state_1=enable

log_archive_format="test_%s_%t_%r.arc"

  1. 4. Выдать в sqlplus:

startup mount pfile= C:\oracle\product\database\initPRIMARY.ora

  1. 5. SQL> alter database archivelog;
  2. 6. SQL> alter database open;
  3. 7. SQL> archive log start;
  4. 8. SQL> archive log list; - убедимся что все работает.

Пришло время «оживить» STANDBY-базу. Необходимо сначала создать файл паролей. Для этого выдадим в командную строку (Для пользователей ОС Windows Vista, сеанс должен быть запущен в режиме "as administrator", иначе всплывет сообщение "Access denied"):

orapwd file=PWDSTANDBY.ora password=123 - полученный файл вы найдете в папке которая указана в командной строке (например у меня C:\Documents and Settings\Alexey). Скопируйте его в c:\oracle\product\database.

Теперь, нужно создать службу ОС для STANDBY-инстанции. Выдадим в командную строку:

oradim -new -sid STANDBY -startmode m -pfile c:\oracle\product\database\initSTANDBY.ora

Создадим сервис листенера так же как мы это делали для PRIMARY, подправим listener.ora и перезапустим cлужбу.

Листинг listener.ora для STANDBY:

SID_LIST_LISTENER=

(SID_LIST=

(SID_DESC=

(SID_NAME=PLSExtProc)

(ORACLE_HOME=С:\oracle\product)

(PROGRAM = extproc)

)

(SID_DESC=

(GLOBAL_DBNAME=TEST

(ORACLE_HOME=С:\oracle\product)

(SID_NAME=STANDBY)

)

)

LISTENER=

(DESCRIPTION_LIST=

(DESCRIPTION=

(ADDRESS = (PROTOCOL=TCP)(HOST=IP STANDBY-ПК)(PORT=1521))

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

)

)

Так же заведем службу имен, для связи с PRIMARY-инстанцией, подправим tnsnames.ora.

Листинг tnsnames.ora:

STANDBY =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.2)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = TEST)

)

)

TEST =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = TEST)

)

)

EXTPROC_CONNECTION_DATA =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

)

(CONNECT_DATA =

(SID = PLSExtProc)

(PRESENTATION = RO)

)

)

Изменим tnsnames.ora на PRIMARY-ПК, чтобы мы могли подключаться к STANDBY-инстанции. Он будет таким же как и для STANDBY.

Теперь можете проверить настройки, подключившись к каждой инстанции с каждого ПК. Должно произойти корректное подключение к инстанциям, без ошибок. При подключении к инстанции STANDBY вам выдаст предупреждение, что: «connected to idle instance» - это нормально.

Создаем папку, в которую будут складываться полученный архивные журнальные файлы: C:\oracle\oradata\TEST\STANDBY_ARCH

Теперь открываем initSTANDBY.ora и дописываем в него:

log_archive_format="test_%s_%t_%r.arc"

standby_archive_dest= C:\oracle\oradata\TEST\STANDBY_ARCH

fal_server=TEST - имя ПК с PRIMARY

Цепляемся к инстанции standby: sqlplus sys/123@standby as sysdba.

SQL> startup nomount pfile= C:\oracle\product\database\initSTANDBY.ora

SQL> alter database mount standby database;

SQL> recover managed standby database - на этом месте сеанс зависает - это нормально, теперь база находится в состоянии STANDBY и готова к приему архивов.

Осталось только прописать в initPRIMARY.ora куда пересылать архивы, для этого добавим в него:

log_archive_dest_2=’SERVICE=STANDBY reopen=60’

log_archive_dest_state_2=enable

fal_client=STANDBY - имя ПК со STANDBY

Теперь остановим PRIMARY-БД и снова запустим - для применения изменений.

Внимание: не забудьте снова запустить создание архивных логов, выдав в sqlplus: archive log start; так как оно отключилось при перезапуске инстанции.

Чтобы убедиться, что архивы пересылаются подключимся к primary:

sqlplus sys/123@test as sysdba

и выдадим в SQL> alter system switch logfile;

Произойдет принудительная смена журнального файла, на PRIMARY-ПК в папке C:\oracle\oradata\TEST\ARCHIVE появится новый (скорее всего первый) архив и, практически сразу, он же появится в папке C:\oracle\oradata\TEST\STANDBY_ARCH на STANDBY-ПК.

Если файлы пересылаются - поздравляю - вы добились своего и организовали STANDBY!

Теперь можете проверить применяются ли полученные архивлоги к базе, выдав: SQL> select name, applied from v$archived_log;

Вы получите имя и статус архивных логов, значение applied=yes означает, что лог был успешно применен к БД.

P.S.

STANDBY будет работать и без параметров fal_client/server, но если вдруг, по каким-либо причинам, она «упадет» на некоторое время и пропустит несколько архивов, то при получении следующего архива, не удовлетворяющего последовательности, STANDBY будет остановлен. Чтобы этого избежать и используются эти параметры, которые позволяют проверять целостность последовательности и, в случае нарушения, автоматически досылают нехватающие архивы.

Перевод STANDBY в READ ONLY:

Соединяемся со STANDBY и выдаем:

SQL> alter database recover managed standby database cancel;

Media recovery complete.

Теперь логи все еще поступают на STANDBY, но она уже не «подкатывается».

SQL> alter database open read only;

Database altered.

Теперь с базой можно работать, но только в режиме чтения.

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

Перевод STANDBY в PRIMARY:

Соединяемся со STANDBY и выдаем:

SQL> alter database recover managed standby database cancel;

Media recovery complete.

SQL> alter database activate standby database;

Database altered.

SQL> shutdown immediate

ORA-01507: database not mounted

Oracle instance shut down.

SQL> startup

Oracle instance started.

Database mounted.

Database opened.

Вернуть PRIMARY обратно в STANDBY теоретически можно, но сложно ;) в данной статье это не рассматривается.

Автор статьи: NITRO

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 31.03.2008 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Oracle Database Personal Edition Named User Plus Software Update License & Support
Oracle Database Standard Edition 2 Named User Plus License
Oracle Database Standard Edition 2 Processor License
Oracle Database Personal Edition Named User Plus License
ABBYY Lingvo x6 Многоязычная Профессиональная версия, электронный ключ
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Новые материалы
Один день системного администратора
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100