2011-04-18

Создание Standby общие идеи

На основании документации и статьи

Общие идеи

Подготовка primary

 

  1. База находится в режиме архивирования, есть password file.
  2. Перевести базу в режим force logging
  3. Опционально (если будет использоваться режим maximum protection и maximum aviablity, включен LGWR ASYNC transport mode). Этот случай не исследовался
  4. Изменить параметры базы данных. Можно делать alter system, можно через pfile с последующим перезапуском. Параметры применить перед снятием бекапа. Минимум параметров, которые необходимо задавать:
    • db_unique_name -- экземпляры открывают одну и туже базу данных, в которых db_name одинаковый. Параметры должны различаться в primary и standby. Что бы не было путаницы, лучше не называть с подчеркиваниями (oradim не может создать базу с sid содержащий подчеркивания), так же заводить в дальнейшем tnsnames с такой же строкой (service_name, совпадающий с идентификатором в tnsnames)
    • log_archive_config='dg_config=(db1_pri,db1_stb)' -- задаются db_unique_name, между которыми происходит обмен логами
    • LOG_ARCHIVE_DEST_1=  'SERVICE=db1stb VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)  DB_UNIQUE_NAME=db1_stb'
      LOG_ARCHIVE_DEST_STATE_1=ENABLE - т.к. у меня есть db_recovery_file_dest, то log_archive_dest_2 мне (наверное, перепроверить при измении ролей!!!) не нужен. В SERVICE указывается строка из tnsnames. Указывает, куда отсылаем логи.
    • FAL_SERVER='DB1STB'
      FAL_CLIENT='DB1'
      STANDBY_FILE_MANAGEMENT=auto -- параметры, необходимые при смене ролей primary
    • т.к. структура каталогов standby и primary  у меня совпадает, то параметры log_file_name_convert и db_file_name_convert я не указываю ни в primary, ни в standby. Вместо этого при разворачивании пользуюсь ключиком NOFILENAMECHECK
  5. Сделать бекап, из которого будем разворачивать standby, включая специальный бекап control file.
  6. Настроить tnsnames, прописав туда саму базу и standby-базу. Проверить tnsping правильность.

Подготовка standby

  1. Забираем с primary файлы:
    • tnsname.ora -- должен указывать и на primary и на standby
    • password (можно забрать и переименовать, можно создать новый)
    • pfile
    • бекапы - помещаем в тоже место, куда снимались в primary, хотя можно и рекоталагизировать.
    • redo логи, если они были созданы в primary (этот случай не рассматривался)
  2. Изменяем pfile
    • изменяем db_unique_name, см. примечания к этому в primary
    • control_files -- я закомментировал и он у меня создал контрольник в db_recovery_file_dest. В документации просто изменены пути
    • LOG_ARCHIVE_DEST_1=  'SERVICE=db1 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=db1_pri'. Куда отправляем файлы в случае смены ролей. Относительно Primary изменилось SERVICE и DB_UNIQUE_NAME
  3. Создаем каталоги, аналогичные по структуре primary для указанных в файле параметров путей, а так же файлов базы данных.
  4. Создаем экземпляр при помощи oradim, создаем сервис listenera. При использовании oradim не получается создать sid базы с подчеркиванием. Проверить, что службы сами запускаются.
  5. Делаем или изменяем password file.
  6. Создаем spfile, Запускаем базу в режиме nomount. Если появляется ошибка ora-12560 сделать set oracle_sid = ...
  7. Разворачиваем созданный на primary бекап. Если структура каталогов та же, то используем команду duplicate target database for standby dorecover NOFILENAMECHECK, что бы не ругалась на дублирование имен файлов. Запускать rman необходимо на standby, или прописывать базу в листенере, что бы к ней можно было подключиться удаленно.
  8. Делаем alter database recover managed standby database disconnect;
  9. Проверяем передачу и накат логов.

Комментариев нет: