mkdir -p /opt/oracle/flash_recovery_area/fengdb/archivelog
查看当前的redo组(fdb1)
select group#,member from v$logfile;
//增加standby日志组
alter database add standby logfile ('/opt/oracle/oradata/fengdb/standby04.log') size 50m;
alter database add standby logfile ('/opt/oracle/oradata/fengdb/standby05.log') size 50m;
alter database add standby logfile ('/opt/oracle/oradata/fengdb/standby06.log') size 50m;
alter database add standby logfile ('/opt/oracle/oradata/fengdb/standby07.log') size 50m;
创建原始参数文件用于备份(fdb1)
create pfile='/tmp/fengdb.pfile.ori' from spfile; 修改相关参数用于DataGuard环境,注意此处与Oracle 11G不同(fdb1)
alter system set db_unique_name=fdb1 scope=spfile;
alter system set log_archive_config='dg_config=(fdb1,fdb2)' scope=spfile;
alter system set log_archive_dest_1= 'location=/opt/oracle/flash_recovery_area/fengdb/archivelog valid_for=(all_logfiles,all_roles) db_unique_name=fdb1' scope=spfile;
alter system set log_archive_dest_2= 'service=fdb2 async valid_for=(online_logfiles,primary_role) db_unique_name=fdb2' scope=spfile;
alter system set log_archive_dest='' scope=spfile;
alter system set log_archive_dest_state_1=enable scope=spfile;
alter system set log_archive_dest_state_2=enable scope=spfile;
alter system set standby_file_management=auto scope=spfile;
alter system set fal_server=fdb2 scope=spfile;
alter system set fal_client=fdb1 scope=spfile;
alter system set db_file_name_convert='/opt/oracle/flash_recovery_area','/opt/oracle/flash_recovery_area' scope=spfile;
alter system set log_file_name_convert='/opt/oracle/flash_recovery_area','/opt/oracle/flash_recovery_area' scope=spfile;
注意:与Oracle 11G不同的地方有: alter system set log_archive_dest='' scope=spfile;
否则可能出现ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST
以及上面都是直接修改spfile的,不修改当前运行中的参数 scope=spfile
执行上面的语句其实就是改了下面的一些参数
*.db_unique_name='fdb1'
*.log_archive_config='dg_config=(fdb1,fdb2)'
*.log_archive_dest_1='location=/opt/oracle/flash_recovery_area/fengdb/archivelog valid_for=(all_logfiles,all_roles) db_unique_name=fdb1'
*.log_archive_dest_2='service=fdb2 async valid_for=(online_logfiles,primary_role) db_unique_name=fdb2'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.standby_file_management='AUTO'
*.fal_client='fdb1'
*.fal_server='fdb2'
*.db_file_name_convert='/opt/oracle/flash_recovery_area','/opt/oracle/flash_recovery_area'
*.log_file_name_convert='/opt/oracle/flash_recovery_area','/opt/oracle/flash_recovery_area'
*.log_archive_dest=''
重启数据库以使数据库生效(fdb1)
shutdown immediate
startup
修改监听(fdb1)
vim $ORACLE_HOME/network/admin/tnsnames.ora
fdb1 =
(DESCRIPTION =
(fdb1)SQL>> //在执行这条的时候,如果出现
ERROR at line 1:
ORA-01665: control file is not a standby control file
则是没有执行alter database commit to switchover to physical standby with session shutdown;
若出现ORA-38500: USING CURRENT LOGFILE option not available without stand
这种情况出现在主备切换之后,备再切换回主的情况下出现
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/opt/oracle/oradata/fengdb/redo03.log
/opt/oracle/oradata/fengdbredo02.log
/opt/oracle/oradata/fengdb/redo01.log
增加standby flog即可
alter database add standby logfile ('/opt/oracle/oradata/fengdb/standby04.log')>
alter database add standby logfile ('/opt/oracle/oradata/fengdb/standby05.log')>
alter database add standby logfile ('/opt/oracle/oradata/fengdb/standby06.log')>
alter database add standby logfile ('/opt/oracle/oradata/fengdb/standby07.log')> [oracle@fdb1 ~]$ lsnrctl start
(fdb2)SQL>> 注意:
若出现ORA-16139: media recovery required,执行如下语句:
SQL>>
SQL>> 如果出现,则可能是已打开了会话,加上with session shutdown强制关闭绘画
ERROR at line 1: