Поиск по этому блогу

четверг, марта 19, 2009

Делал Standby.

Пример делался на все том же vmware. Може за рекламу кто заплатит :) А так как за рекламу никто не платит, то базы расположились на одной виртуальной машине. Но в разных папочках. Описание не панацея, я с бубном долго бегал пока не заставил работать.
Пример делался в основном по этой документации.

Готовим файлы init.ora для базы PrimaryDB(pahomway) и StandbyDB(stpahomway).
Пример PrimaryDB(pahomway).
pahomway.__db_cache_size=96468992
pahomway.__java_pool_size=4194304
pahomway.__large_pool_size=4194304
pahomway.__shared_pool_size=58720256
pahomway.__streams_pool_size=0
*.audit_file_dest='/home/oracle/oracle/product/10.2.0/db_1/admin/pahomway/adump'
*.background_dump_dest='/home/oracle/oracle/product/10.2.0/db_1/admin/pahomway/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/home/oracle/oracle/product/10.2.0/oradata/pahomway/control01.ctl','/home/oracle/oracle/product/10.2.0/oradata/pahomway/control02.ctl','/home/oracle/oracle/product/10.2.0/oradata/pahomway/control03.ctl'
*.core_dump_dest='/home/oracle/oracle/product/10.2.0/db_1/admin/pahomway/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='pahomway'
*.db_recovery_file_dest='/home/oracle/oracle/product/10.2.0/db_1/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.db_unique_name='pahomway'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=pahomwayXDB)'
*.fal_client='stpahomway'
*.fal_server='pahomway'
*.job_queue_processes=10
*.log_archive_config='dg_config=(pahomway,stpahomway)'
*.log_archive_dest_1='location=/home/oracle/oracle/product/10.2.0/oradata/arch1/ db_unique_name=pahomway'
*.log_archive_dest_2='SERVICE=stpahomway LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=stpahomway'
*.log_archive_dest_state_1='enable'
*.log_archive_dest_state_2='enable'
*.open_cursors=300
*.pga_aggregate_target=16777216
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=167772160
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/home/oracle/oracle/product/10.2.0/db_1/admin/pahomway/udump'

Пример StandbyDB(stpahomway).
*.audit_file_dest='/home/oracle/oracle/product/10.2.0/db_1/admin/stpahomway/adump'
*.background_dump_dest='/home/oracle/oracle/product/10.2.0/db_1/admin/stpahomway/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/home/oracle/oracle/product/10.2.0/oradata/stpahomway/stpahomway.ctl'
*.core_dump_dest='/home/oracle/oracle/product/10.2.0/db_1/admin/stpahomway/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_file_name_convert='pahomway','stpahomway'
*.db_name='pahomway'
*.db_recovery_file_dest='/home/oracle/oracle/product/10.2.0/db_1/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.db_unique_name='stpahomway'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=stpahomwayXDB)'
*.fal_client='stpahomway'
*.fal_server='pahomway'
*.job_queue_processes=10
*.log_archive_config='dg_config=(pahomway,stpahomway)'
*.log_archive_dest_1='location=/home/oracle/oracle/product/10.2.0/oradata/arch2/ db_unique_name=stpahomway'
*.log_archive_dest_2='service=pahomway LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pahomway'
*.log_archive_dest_state_1='enable'
*.log_archive_dest_state_2='enable'
*.log_file_name_convert='/home/oracle/oracle/product/10.2.0/oradata/arch1/','/home/oracle/oracle/product/10.2.0/oradata/arch2/','/home/oracle/oracle/product/10.2.0/oradata/pahomway/','/home/oracle/oracle/product/10.2.0/oradata/stpahomway/'
*.open_cursors=300
*.pga_aggregate_target=16777216
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=167772160
*.standby_file_management='auto'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/home/oracle/oracle/product/10.2.0/db_1/admin/stpahomway/udump'
PrimaryDB - SQL> ALTER DATABASE FORCE LOGGING;
PrimaryDB - SQL> alter database archivelog;
PrimaryDB - делаем активными настройки init.ora
SQL> startup pfile='/home/oracle/oracle/product/10.2.0/db_1/admin/pahomway_last.ora';
PrimaryDB – Делаем оперативные логии для StandbyDB SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 10 2> ('/oracle/dbs/log1c.rdo','/oracle/dbs/log2c.rdo') SIZE 500M;
StandbyDB – создаем файл паролей orapwd file=/…/orapwpahomway password=a entries=4
StandbyDB – Настраиваем листенер и TNS
StandbyDB – создаем папки для архив логов и данных
StandbyDB – стартуем (рестартуем) листенер
lsnrctl stop
lsnrctl start
PrimaryDB - с помощью rman делаем backup RMAN> backup database plus archivelog;
PrimaryDB – SQL> alter database create standby controlfile as '/home/oracle/oracle/product/10.2.0/oradata/stpahomway/stpahomway.ctl';
StandbyDB – делаем восстановление стартуя с подготовленного файла
SQL> startup mount pfile='/home/oracle/oracle/product/10.2.0/db_1/admin/stpahomway_last.ora';
RMAN> connect target sys/a@stpahomway
RMAN> run {
2> allocate channel d1 type disk;
3> restore database;
4> recover database;
5> }
StandbyDB – запускаем то, шо получилось
SQL> shutdown immediate;
SQL> startup nomount pfile='/home/oracle/oracle/product/10.2.0/db_1/admin/stpahomway_last.ora';
SQL> alter database mount standby database;
SQL> alter database recover managed standby database disconnect from session;
PrimaryDB – проверяем работу SQL> alter system switch logfile;

Дальше не проверял. Но хочется верить в сказку :)

Перевод STANDBY в READ ONLY:

Соединяемся со STANDBY и выдаем:
SQL> alter database recover managed standby database cancel;
Media recovery complete.

Теперь логи все еще поступают на STANDBY, но она уже не «подкатывается».
SQL> alter database open read only;
Database altered.

Теперь с базой можно работать, но только в режиме чтения.

Перевод STANDBY в PRIMARY:

Соединяемся со STANDBY и выдаем:
SQL> alter database recover managed standby database cancel;
Media recovery complete.

SQL> alter database activate standby database;
Database altered.

SQL> shutdown immediate
ORA-01507: database not mounted
Oracle instance shut down.

SQL> startup
Oracle instance started.
Database mounted.
Database opened.