Upgrade with Transient Logical Standby (10.2.0.4 -> 11.2.0.1)

Leo.ka
Дата: 17.03.2011 10:09:08
Добрый день.
Пытаюсь обновить Oracle 10.2.0.4 (64-bit) до 11.2.0.1 (64-bit) по вышеуказанному способу. ОС Windows 2008 r2 (64-bit).

Пользуюсь в основном следующими документами:
  • Oracle Database Upgrade Guide 11g Release 2 (11.2) ( тынц )
  • Database Rolling Upgrade Using Transient Logical Standby: Oracle Data Guard 11g ( тынц )

    Что сделал (предварительно):
  • Создал 2 тестовых машины (виртуальных). ОС Windows 2008 r2 (64-bit).
  • Из backup'ов восстановил тестовую БД.
  • Сконфигурировал все идентично боевой связке (primary + physical standby).
  • Проверил все ли работает корректно: накатываются ли логи, происходит ли переключения баз. Все норм.
  • Сделал снимки виртуальных машин

    Тезисно upgrade (более наглядно в приложенной картинке):
  • Создал точки восстановления (и на primary, и на physical standby)
  • Установил ORACLE_HOME (11.2.0.1) (и на primary, и на physical standby)
  • Перевел physical standby в logical standby
  • Обновил logical standby до 11.2.0.1 (через dbua)
  • Переключил роли (то есть primary стала logical standby на 10.2.0.4, а logical standby стал primary на 11.2.0.1)
  • Сделал снимки виртуальных машин
  • Откатил оригинальную primary (нынешнюю logical standby) к точке восстановления (см. 1 пункт)

    Ответы на возникающие вопросы до этого удавалось решать самостоятельно. А вот что делать дальше мне не понятно... На картинке это пункт 6 и он говорит о следующем:
    Database Rolling Upgrade Using Transient Logical Standby
    6. Remount the original primary (now a logical standby) under the new Oracle Home

    Из-за того что у меня мало практического опыта и слаба теоретическая база я толком не понимаю как это сделать.
    Пробовал делать так (видимо это неправильно):
  • Откатил оригинальную primary (нынешнюю logical standby) к точке восстановления
    SHUTDOWN IMMEDIATE; 
    STARTUP MOUNT; 
    FLASHBACK DATABASE TO RESTORE POINT PRE_UPGRADE_1;
    SHUTDOWN IMMEDIATE;
  • Создаю новый listener
  • Захожу через новый ORACLE_HOME
  • Пытаюсь переключить logical standby (первоначальную primary) к physical standby
    STARTUP MOUNT; 
    ALTER DATABASE CONVERT TO PHYSICAL STANDBY;
    И получаю ошибку, которая мне совершенно не говорит, что же делать дальше...
    ERROR at line 1:
    ORA-16087: graceful switchover requires standby or current control file

    Есть подозрения, что данный алгоритм не применим в таком виде, если осуществляется upgrade Oracle 10.2.0.4. Но никаких четких идей нет. Поэтому с радостью приму любую помощь.
  • rujim
    Дата: 21.03.2012 03:57:25
    Вам сюда почитать тынц
    free_blocks
    Дата: 06.10.2014 11:46:19
    А что если logical standby невозможен из-за типов данных, как тогда возможно применение логов на этапах 2-4? Получается от Transient Logical Standby никакого толку.
    Alexander Ryndin
    Дата: 06.10.2014 12:48:11
    free_blocks
    А что если logical standby невозможен из-за типов данных, как тогда возможно применение логов на этапах 2-4? Получается от Transient Logical Standby никакого толку.
    каких типов данных?
    free_blocks
    Дата: 06.10.2014 13:46:45
    Alexander Ryndin, вот эти вот http://docs.oracle.com/cd/E18283_01/server.112/e17022/data_support.htm#CHDDCCIG

    Logical standby databases do not support the following datatypes:
    BFILE
    Collections (including VARRAYS and nested tables)
    Multimedia data types (including Spatial, Image, and Oracle Text)
    ROWID, UROWID
    User-defined types
    XMLType stored as Object Relational
    Binary XML
    
    free_blocks
    Дата: 06.10.2014 13:52:27
    В MMA дается рекомендация на случай неподдерживаемых типов данных

    - Suspend or prohibit changes to the unsupported data type objects.
    - Use DBA_LOGSTDBY_EVENTS with Oracle Data Pump or with the Export/Import utility.
    - Use Extended Datatype Support (EDS).
    
    Alexander Ryndin
    Дата: 06.10.2014 13:57:19
    free_blocks
    Alexander Ryndin, вот эти вот http://docs.oracle.com/cd/E18283_01/server.112/e17022/data_support.htm#CHDDCCIG

    Logical standby databases do not support the following datatypes:
    BFILE
    Collections (including VARRAYS and nested tables)
    Multimedia data types (including Spatial, Image, and Oracle Text)
    ROWID, UROWID
    User-defined types
    XMLType stored as Object Relational
    Binary XML
    
    Я понимаю, что есть список неподдерживаемых типов, но вы то с каким-то конкретным столкнулись, наверное? Или вопрос из области теории?
    free_blocks
    Дата: 06.10.2014 14:12:04
    Alexander Ryndin
    Я понимаю, что есть список неподдерживаемых типов, но вы то с каким-то конкретным столкнулись, наверное? Или вопрос из области теории?


    Это практический вопрос. Например, приложение ЦФТ-банк официально не поддерживает logical standby. Да и в других случаях несложно представить использование неподдерживаемых типов.
    Alexander Ryndin
    Дата: 06.10.2014 14:30:09
    free_blocks
    Alexander Ryndin
    Я понимаю, что есть список неподдерживаемых типов, но вы то с каким-то конкретным столкнулись, наверное? Или вопрос из области теории?


    Это практический вопрос. Например, приложение ЦФТ-банк официально не поддерживает logical standby. Да и в других случаях несложно представить использование неподдерживаемых типов.
    можно посмотреть в сторону goldengate. Там меньше ограничений по типам данных. Только я не пойму как это вам сможет помочь с точки зрения формальной поддержки решения со стороны цфт
    free_blocks
    Дата: 06.10.2014 15:02:08
    Alexander Ryndin
    можно посмотреть в сторону goldengate. Там меньше ограничений по типам данных. Только я не пойму как это вам сможет помочь с точки зрения формальной поддержки решения со стороны цфт


    Александр, ЦФТ тут упомянуто как пример приложения, которое не поддерживает logical standby. Вместо него может быть любое другое.

    Общий вопрос следующий. Работает приложение с физическим стендбаем. Заинтересовались минимальным временем простоя при обновлении, нашли решение - Transient Logical Standby, при котором время простоя равно времени переключения роли. Начинаем исследовать его плюсы и минусы. Ага, требуется преобразование физического стендбая в логический, значит возможны потери данных для неподдерживаемых типов. То есть не все так просто с Transient Logical Standby, если в погоне за минимальным временем простоя может потерять данные. Скорее всего, не стоит применять Transient Logical Standby в нашем случае, а нужно поискать другие варианты.