В общем, споткнулся об ошибку
ORA-01033: ORACLE initialization or shutdown in progress
И так и эдак... Заметил только потом, что standby создал под другим именем.
Итак, на всякий случай еще раз опишу последовательность, уже для 11g
Создаем инстанс RCK на обоих хостах, во избежание путаницы, на основном ставим db_uniq_name=rckp, на standby db_uniq_name=rcks.
Продуктив, понятно, с архивлогом, force logging. Создавалось все на Windows (обматерился, UAC отключайте в реестре, не забудьте проверить отсутствие IPv6), поэтому пришлось на втором сервере создать сервис ORADIM -NEW -SID RCK -SYSPWD qqq. Во избежание проблем на обоих базах sec_case_sensitive_logon=false. Остальное все в параметрах выше достаточно подробно описано, но суть - создать одинаковые инстансы и назначить им разные db_uniq_name. Убедитесь, что пароли в файлах orapwd одинаковые (скопированы с одного хоста), а так же вспомните, что в Linux и Windows файлы паролей по разному называются.
Параметры на продуктиве
Код:
*.audit_file_dest='C:\app\rck\admin\RCK\adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='E:\RCK\control01.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='RCK'
*.db_recovery_file_dest='C:\BACKUP'
*.db_recovery_file_dest_size=107374182400
*.db_unique_name='RCKP'
*.diagnostic_dest='C:\app\rck'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=RCKXDB)'
*.fal_client='RCKP'
*.fal_server='RCKS'
*.log_archive_config='dg_config=(rckp,rcks)'
*.log_archive_dest_2='SERVICE=rcks LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=rcks'
*.log_archive_dest_state_2='ENABLE'
*.log_archive_format='%t_%s_%r.arc'
*.open_cursors=300
*.pga_aggregate_target=4380950528
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sec_case_sensitive_logon=FALSE
*.sga_target=13144948736
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'
Параметры на standby
Код:
*.audit_file_dest='C:\app\rck\admin\RCK\adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='E:\RCK\CONTROL01.CTL'#Restore Controlfile
*.db_block_size=8192
*.db_domain=''
*.db_name='RCK'
*.db_recovery_file_dest='C:\BACKUP'
*.db_recovery_file_dest_size=107374182400
*.db_unique_name='RCKS'
*.diagnostic_dest='C:\app\rck'
*.fal_client='RCKS'
*.fal_server='RCKP'
*.log_archive_config='dg_config=(rckp,rcks)'
*.open_cursors=300
*.pga_aggregate_target=1380950528
*.processes=550
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=5144948736
*.undo_tablespace='UNDOTBS1'
*.standby_file_management='AUTO'
listener.ora на продуктиве
Код:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = RCK)
(SID_NAME = RCK)
(ORACLE_HOME = C:\app\rck\product\11.2.0\dbhome_1)
)
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\app\rck\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = RCK-DBV)(PORT = 1521))
(ADDRESS=(PROTOCOL=ipc)(KEY=extproc))
)
ADR_BASE_LISTENER = C:\app\rck\product\11.2.0\dbhome_1\log
listener.ora на standby
Код:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = RCK)
(SID_NAME = RCK)
(ORACLE_HOME = C:\app\rck\product\11.2.0\dbhome_1)
)
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\app\rck\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = RCK-DBRV)(PORT = 1521))
(ADDRESS=(PROTOCOL=ipc)(KEY=extproc))
)
ADR_BASE_LISTENER = C:\app\rck\product\11.2.0\dbhome_1\log
tnsnames.ora на продуктиве
Код:
RCKP =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rck-dbv)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = RCK)
(SERVER=dedicated)
)
)
RCKS =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rck-dbrv)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = RCK)
(SERVER=dedicated)
)
)
tnsnames.ora на standby
Код:
RCKP =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rck-dbv)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = RCK)
(SERVER=dedicated)
)
)
RCKS =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rck-dbrv)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = RCK)
(SERVER=dedicated)
)
)
Собственно, просто сделал backup database plus archivelog на продуктиве с учетом включенного controlfile autobackup и FRA целиком бросил по тому же пути, что и лежал на продуктиве. Затем, на продуктиве подключился к основной базе
Код:
set ORACLE_SID=RCK
rman target /
connect auxiliary sys@rcks
пароль
duplicate target database for standby nofilenamecheck dorecover;
база создалась и на standby
нашел в alertlog продуктива пожелание создать журнальные файлы, прямо эти команды и выполнил на standby, уточнив путь до файлов
SQL код:
ALTER DATABASE ADD STANDBY LOGFILE 'E:\RCK\srl1.f' SIZE 52428800;
ALTER DATABASE ADD STANDBY LOGFILE 'E:\RCK\srl2.f' SIZE 52428800;
ALTER DATABASE ADD STANDBY LOGFILE 'E:\RCK\srl3.f' SIZE 52428800;
ALTER DATABASE ADD STANDBY LOGFILE 'E:\RCK\srl4.f' SIZE 52428800;
они должны появиться в выводе
SQL код:
select * from v$standby_log;
ради интереса можно опустить и поднять standby
SQL код:
shutdown immediate;
startup nomount;
alter database mount standby database;
и пнуть применение журналов (можно это и сразу сделать)
SQL код:
alter database recover managed standby database using current logfile disconnect;
ну и проверить, что заработало
SQL код:
select recovery_mode from v$archive_dest_status;
(вверху должен быть MANAGED REAL TIME APPLY)
и переключением
SQL код:
alter system switch logfile;
на продуктиве с отслеживанием
SQL код:
select max(sequence#) from v$log_history;
на обоих хостах
возможно, что журналы где-то потеряются, их можно будет докопировать и докатить вручную, сначала разорвав связь
SQL код:
alter database recover managed standby database cancel;
докатив журналы
SQL код:
recover standby database;
и запустив все заново
SQL код:
alter database recover managed standby database using current logfile disconnect;
Вот, может, кому-то с Windows не повезло, для этого и писал...
Для открытия standby необходимо сохранить spfile в pfile где-нибудь и по необходимости надо сделать следующее
Код:
alter system reset FAL_SERVER;
alter system reset FAL_CLIENT;
alter system reset STANDBY_FILE_MANAGEMENT;
alter system set LOG_ARCHIVE_DEST_STATE_2=reset;
alter system set log_archive_dest_2='';
alter database recover managed standby database finish;
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
после чего перезагрузить базу