【操作】ORACLE DATAGUARD 重建备库
目的:
Oracle DataGuard环境中,一些情况下我们需要重建Standby DB,如主库执行flashback database,或某些archive log无法找回时。
环境:
Oracle Version:11.2
步骤:
1. 【备库】信息收集
SQL-Standby>
set pagesize 0
select name from v$datafile
union
select name from v$tempfile
union
select member from v$logfile
union
select name from v$controlfile;
2. 【备库】文件备份
SHELL-Standby>
cd ${ORACLE_HOME}/dbs
cp init${ORACLE_SID}.ora init${ORACLE_SID}.ora.`date +%Y%m%d`
cp spfile${ORACLE_SID}.ora spfile${ORACLE_SID}.ora.`date +%Y%m%d`
cp orapw${ORACLE_SID} orapw${ORACLE_SID}.`date +%Y%m%d`
3. 【备库】变更状态 - nomount
SQL-Standby>
shutdown immediate
startup nomount
4. 【主库】执行复制 - rman duplicate
SHELL-Primary>
AUXDB="STANDBY-DB"
SYSPW="xxxx"
# 需要修改变量值
rman target / auxiliary sys/${SYSPW}@${AUXDB}
RMAN-Primary>
duplicate target database for standby from active database nofilenamecheck;
5. 【备库】 - 确认同步状态
SQL-Standby>
alter database recover managed standby database using current logfile disconnect;
select client_process,process, sequence#, status from v$managed_standby;
附注
- DataGuard 需要使用spfile,因为在dupliate过程中,实例需要修改db_name等参数;
- Standby DB需要启动到nomount状态,因为需要重建control file;
- Duplicate操作只负责复制数据库,Finished Duplicate Db之后,需要手动启动Standby DB的日志应用;