а) Режим защиты (protection mode): max protection, max availability (LGWR посылает redo на Standby, режим SYNC или ASYNC), max performance (ARCn посылает redo на Standby) б) Размещение — другая машина, неизменное наименование файлов и директории размещения
2. Технические особенности
2.1. На первичной базе не должно быть объектов, не поддерживаемых логическим standby. Наличие таких объектов можно выяснить с помощью view DBA_LOGSTDBY_UNSUPPORTED.
В текущий момент в базе есть объекты, не поддерживающие логический Standby: DOMAIN_TOOLS.CHAINED_ROWS (rowid) и DOMAIN.OBJECT_CHANGES (Compression). Изменения по этим объектам не будут передаваться на Standby (сообщений об ошибках не будет).
2.2. На первичной базе все таблицы должны иметь уникальный ключ. Наличие таблиц без ключа можно проверить с помощью view DBA_LOGSTDBY_NOT_UNIQUE.
Сейчас в базе 120 таблиц без уникального ключа.
На резервной базе должен быть запущен процесс remote file server (RFS), который принимает данные redu, отправляемые первичной базой.
3. Последовательность операций
3.1. Установить Oracle Database
3.1.1. Проверить пререквизиты
общая информация по системе: prtconf metadb -i cfgadm -al
и) создать директории: Oracle Base, Oracle Inventory, Oracle Home
3.1.2. Выполнить установку ПО
?? Oracle Universal Installer ?? или скриптом?
Базу при установке не создаем.
3.1.3. Сконфигурировать Oracle Net 3.1.4. Сконфигурировать автостарт базы
3.2. Cоздать физический Standby
3.2.1. Подготовить первичную базу
ALTER DATABASE FORCE LOGGING; создать файл паролей сконфигурировать параметры для транспортировки REDO на Standby: LOG_ARCHIVE_CONFIG, LOG_ARCHIVE_DEST_1, LOG_ARCHIVE_DEST_2
3.2.2. Создать Backup первичной базы (с помощью RMON например) 3.2.3. Создать controlfile для Standby-базы на первичной базе
ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/boston.ctl';
3.2.4. Подготовить файл параметров для Standby-базы
CREATE PFILE='/tmp/initboston.ora' FROM SPFILE;
поменять некоторые параметры (DB_UNIQUE_NAME, SERVICE_NAMES и т.д....)
3.2.5. Установить Oracle и создать Instance Standby-базы
создать файл паролей сконфигурировать listener установить таймаут в SQLNET.ORA: SQLNET.EXPIRE_TIME=2 создать имена Oracle Net service names. Восстановить базу из backup'а rman: nls_date_format=dd-mm-yy hh24:mi:ss export NLS_LANG=american_america.we8iso8859p15
Стартовать: STARTUP OPEN READ ONLY;
startup mount pfile=rdb_init.ora;
3.2.6. Включить применение REDO на Standby базе
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION
!! Открыть базу в режиме READ ONLY
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; ALTER DATABASE OPEN;
!! Переключить standby базу в режим primary
на primary: ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN; SHUTDOWN IMMEDIATE; STARTUP MOUNT;
на standby: SELECT SWITCHOVER_STATUS FROM V$DATABASE; - должен быть или TO PRIMARY or SESSIONS ACTIVE
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
ALTER DATABASE OPEN;
!!(при этом нужно убедиться, что присутствуют TEMP-файлы select tablespace_name,file_name,bytes from dba_temp_files; и redo-файлы alter system switch logfile; select group#, status from v$log; ALTER SYSTEM CHECKPOINT GLOBAL; alter database clear logfile group 1;
)
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE NODELAY;
на бывшем primary:
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION; /opt/oracle10/product/11.1.0/Db_1/admin/rdb/diag/rdbms/rdb/rdb/trace
3.3. Перевести Standby из физического в логический
3.3.1. Сконфигурировать на резервной базе Redo Log
Размер standby redo log должен быть в точности равен или быть больше, чем размер лог файла на первичной базе.
alter database add standby logfile group 3 ('/u01/app/oracle/oradata/stdby/redo_3a.dbf','/u01/app/oracle/oradata/stdby/redo_3b.dbf') size 200M;
На резервной базе должно быть, по крайней мере, на 1 группу больше, чем на первичной базе. В зависимости от количества потоков (threads) и нагрузки может потребоваться большее количество групп standby redo log.
!! Важно, чтобы параметры MAXLOGFILES и MAXLOGMEMBERS на первичной базе позволяли установить требуемое количество лог файлов и групп, иначе придется пересоздавать первичную базу.
Проверить созданный standby log можно так:
SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;
3.3.2. Остановить применение лога на резервной (физической) базе
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
3.3.3. Сгенерировать на первичной базе словарь для LogMiner
begin DBMS_LOGSTDBY.BUILD; end;
3.3.4. Запустить на резервной базе переход к логическому резерву и перезапустить базу
ALTER DATABASE RECOVER TO LOGICAL STANDBY <новый sid>;
STARTUP MOUNT; ALTER DATABASE OPEN RESETLOGS;
Добавить файл во временное файловое пространство
ALTER TABLESPACE TEMP1 ADD TEMPFILE 3.3.3. Запустить режим логического Standby ALTER DATABASE START LOGICAL STANDBY APPLY;