h1. Инструкция по разворачиванию StanBy сервера --- h2. Разворачивание StandBy сервера oracle штатными средствами data guard broker. *Необходимые условия для разворачивания* * Идентичные по архитектуре и разрядности операционные системы на основном и резервном серверах. * Идентичные версии базы данных oracle. * Прямое сетевое соединение между основным и резервным серверами (без VPN и т.п.) * Права локального администратора на основном и резервном серверах. * Буквы и имена логических дисков должны совпадать. *Подготовка резервного сервера* _hint: Для удобства навигации между RDP-подключениями основного и резервного серверов, рекомендуется установить в качестве "обоев" рабочего стола резервного сервера ярко-красный фон._ *Установка СУБД oracle и создание резервной БД.* Запускаем инсталлятор, выбираем метод установки - advanced, нажимаем "next" !1.jpg! тип установки - Enterprise, нажимаем "next" !2.jpg! В следующем окне - Name оставляем по умолчанию, Path должен быть идентичен пути установки БД на основном сервере !3.jpg! В пунктах, имеющих статус "error", проставляем галочки. !4.jpg! Статус должен поменять на " user verified", нажимаем "next" !5.jpg! В следующем окне выбираем "Create a Database", нажимаем "next". !6.jpg! В следующем окне выбираем Advanced, жмем "next". !7.jpg! В следующем окне оставляем значения по умолчанию, жмем "next". !8.jpg! В следующем окне проверяем правильность введённых параметров и нажимаем "Install" !9.jpg! После окончания установки автоматически откроется Database Configuration Assistant. В первом окне выбираем General Purpose, нажимаем "next". !10.jpg! В следующем окне вводим Global Database и SID. *Они должны быть ИДЕНТИЧНЫ основной базе.* !11.jpg! В следующем окне оставляем всё без изменения. !12.jpg! В следующем окне вводим пароль для системных учётных записей oracle. *Он должен быть ИДЕНТИЧЕН паролю на основной базе.* Нажимаем "next". !13.jpg! В следующем окне оставляем все данные без изменения, нажимаем "next". !14.jpg! В следующем окне снимаем галочку "Specify Flash Recovery Area", ставим галочку "Enable Archiving, нажимаем кнопку Edit Archive Mode Parameters Standby15.JPG !15.jpg! В открывшемся окне указываем ПОЛНЫЙ путь к папке с архивными логами. Путь должен быть идентичен пути к папке на основном сервере. Если папки для архивных логов на резервном сервере не существует - её необходимо создать. Имя папки и её местонахождение на локальном диске должны быть полностью идентичными имени и местонахождению на основном сервере. Нажимаем "ok" и "next". !16.jpg! В следующем окне снимаем галочку "Sample Schemas", нажимаем "next" !17.jpg! В следующем окне ставим флаги Custom и Manual. Единицы измерения ВЕЗДЕ проставляем M Bytes. Рекомендуемые значения: Shared Pool: 128 M Bytes Buffer Cache: Указываем размер, исходя из оставшейся свободной оперативной памяти, за вычетом памяти, необходимой для корректной работы операционной системы. Для резервного сервера, имеющего 4 Гб оперативной памяти (как на скриншоте), оптимальным размером Buffer Cache будет 2 Гб, для сервера, имеющего, например, 32 Гб оперативной памяти, оптимальным будет 25 Гб. Java Pool: 128 M Bytes Large Pool: 512 M Bytes PGA Size: 256 M Bytes !18.jpg! Далее на вкладке Character Sets устанавливаем флаг "Choose from the list of character sets", Утанавливаем параметры, согласно скриншоту. Нажимаем кнопку "next". !19.jpg! В следующем окне оставляем все значения по умолчанию и нажимаем next. !20.jpg! В следующем окне оставляем все значения по умолчанию и нажимаем Готово. !21.jpg! В процессе создания БД и применения настроек, может появиться ошибка старта БД. Не пугаемся, нажимаем ОК. !22.jpg! По завершению установки, нажимаем next, в следующем окне - exit. !23.jpg! Далее заходим в диспетчер служб, проверяем, чтобы службы oracle были созданы, и их состояние было как на скриншоте. !24.jpg! Запускаем командную строку, вводим команду sqlplus. Логин sys as sysdba, пароль - указанный при установке. Если все вышеописанные действия были проведены верно - мы увидим информацию о версии СУБД и строку ввода команд SQL. !25.jpg! Прописываем уникальное имя базы, по которому data guard broker будет её идентифицировать, для резервного сервера это bwms. Для этого вводим команду: alter system set db_unique_name='bwms' scope=spfile; Включаем data guard broker. Для этого вводим команду: alter system st dg_broker_start=true scope=both; !26.jpg! Останавливаем БД. Для этого вводим команду shutdown immediate !27.jpg! Удаляем все файлы из каталога БД !28.jpg! Останавливаем службу OracleOraDb10g_home1TNSListener Редактируем файл E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora согласно тексту ниже, указываем реальные ip-адреса

WMS =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = WMS)
   )
 )

BWMS =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )

wms_XPT = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = wms)
   )
  )

wms_DGB = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = wms)
   )
 )

wms_DGMGRL = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = wms)
   )
 )
)
Редактируем файл E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora Значения, которые необходимо изменить выделены красным !29.jpg! !30.jpg! Стартуем службу OracleOraDb10g_home1TNSListener *Подготовка основного сервера* На основном сервере запускаем sqlplus, логин sys as sysdba Вводим команду ALTER DATABASE FORCE LOGGING; !31.jpg! Создаём REDO логи, которые в последствии будет использовать резервный сервер. Для этого вводим команду, где указываем путь к папке с ораклом: ALTER DATABASE ADD STANDBY LOGFILE GROUP 10 ('P:\oracle\product\10.2.0\oradata\VPI\log1c.rdo','P:\oracle\product\10.2.0\oradata\VPI\log2c.rdo','P:\oracle\product\10.2.0\oradata\VPI\log3c.rdo') SIZE 50M; Прописываем уникальное имя базы, по которому data guard broker будет её идентифицировать, для основного сервера это wms. Для этого вводим команду: alter system set db_unique_name='wms' scope=spfile; Включаем data guard broker. Для этого вводим команду: alter system st dg_broker_start=true scope=both; !32.jpg! Останавливаем службу OracleOraDb10g_home1TNSListener Редактируем файл E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora согласно тексту ниже, указываем реальные ip-адреса

WMS =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес основного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = wms)
   )
   
 )

bwms = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )

bwms_XPT = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )

bwms_DGB = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )

bwms_DGMGRL = 
(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = ip-адрес резервного сервера)(PORT = 1521))
   )
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = bwms)
   )
 )
   
)
Редактируем файл E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.ora Значения, которые необходимо изменить выделены красным !33.jpg! !34.jpg! Стартуем службу OracleOraDb10g_home1TNSListener Принудительно создаём логи, чтобы в них записались последние транзакции. Для этого вводим команду: alter system switch logfile; Для надежности - три раза, и СРАЗУ ЖЕ останавливаем базу командой: shutdown immediate !35.jpg! Стартуем базу в режиме mount. Для этого вводим команду: startup mount Создаём контрол-файл для резервного сервера. Для этого вводим команду: ALTER DATABASE CREATE STANDBY CONTROLFILE AS 'C:\boston.ctl' !36.jpg! Дважды клонируем полученный файл и переименовываем его. В результате из файла boston.ctl' должно получиться 3 идентичных файла: CONTROL01.CTL, CONTROL02.CTL, CONTROL01.CTL. Они нам пригодятся чуть позже. Останавливаем БД. Для этого вводим команду: shutdown immediate Останавливаем службу OracleService Копируем всё содержимое папки E:\oracle\product\10.2.0\oradata\Имя_Инстанса КРОМЕ ФАЙЛОВ С РАСШИРЕНИЕМ .CTL в аналогичную папку резервного сервера. !37.jpg! Далее в ту же папку РЕЗЕРВНОГО сервера копируем контрол-файлы, полученные в результате создания и клонирования файла boston.ctl (см. выше) Запускаем службу OracleService Подготовка основной БД закончена, можно продолжать работу в ней в штатном режиме. *Создание и настройка конфигурации data guard broker* Запускаем БД на РЕЗЕРВНОМ сервере. Для этого вводим команду: startup По результатам выполнения : создана резервная база создан слепок основной базы и перенесен на резервный сервер резервная база запущена и имеет точную копию основной Далее нам необходимо проверить связь между серверами в рамках алиасов. Для этого на ОСНОВНОМ СЕРВЕРЕ открываем командную строку и вводим команду: tnsping bwms результатом команды должен быть отчет об успешном прохождении пинга. !38.jpg! точно таким же образом пингуем остальные алиасы из tnsnames.ora: * tnsping wms * tnsping bwms_XPT * tnsping bwms_DGB * tnsping bwms_DGMGRL Аналогичную операцию проводим на РЕЗЕРВНОМ СЕРВЕРЕ, пингуя поочередно все алиасы из tnsnames.ora: * tnsping bwms * tnsping wms * tnsping wms_XPT * tnsping wms_DGB * tnsping wms_DGMGRL Все пинги должны выдать результат "ОК". На ОСНОВНОМ СЕРВЕРЕ создаём конфигурацию data guard. Для этого открываем командную строку, вводим команду: dgmgrl далее вводим команду: connect авторизуемся с учетными данными пользователя sys !39.jpg! Создаём конфигурацию, добавляем в конфигурацию наши базы, устанавливаем свойства, благодаря которым при добавлении файлов в основную базу, они автоматически будут создаваться на резервной. Для этого выполняем скрипт: CREATE CONFIGURATION 'SID БД_BACKUP' AS PRIMARY DATABASE IS 'wms' CONNECT IDENTIFIER IS wms; ADD DATABASE 'bwms' AS CONNECT IDENTIFIER IS bwms MAINTAINED AS PHYSICAL; EDIT DATABASE 'bwms' SET PROPERTY 'StandbyFileManagement'='AUTO'; EDIT DATABASE 'wms' SET PROPERTY 'StandbyFileManagement'='AUTO'; Для того, чтобы убедиться в том, что конфигурация успешно создалась, вводим команду: show configuration !40.jpg! Далее включаем конфигурацию, вводим команду: enable configuration После этого начнется процесс копирования логов с основного сервера на резервный и их применение. Процесс может занимать различное время, в зависимости от того, насколько основная база "убежала вперед" от резервной, после её включения (окончание П.2). Проверяем валидность конфигурации командой: show configuration При успешной синхронизации серверов команда должна возвратить "SUCCESS" !41.jpg! Далее смотрим очередь на применение логов к резервной базе(она должна быть пустая), для этого вводим команду: *SHOW DATABASE 'bwms' 'RecvQEntries';* И очередь на передачу логов с основного сервера(должно быть одно значение): *SHOW DATABASE 'wms' 'SendQEntries'* !42.jpg!