暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle异机恢复

应用DBA 2021-04-21
2053

引言

在我们日常运维数据库中,备份是命,恢复是保命的技能,而Oracle异机恢复,也是我们工作中经常用到的。那什么是Oracle异机恢复呢?顾名思义,就是源机器的Oracle数据库恢复到另外一台机器上,且能在另外一台机器上面运行。事不宜迟,马上我们进入异机恢复的世界~

 

说明

操作目的:恢复Oracle11.2.0.4版本数据库

前期准备:准备目标机器,并安装好相同版本的CRS软件和Oracle数据库软件,当然还有netbackup agent软件

注意事项:以下操作都是在容灾环境上面执行,不要在生产机器上操作,不要在生产机器上操作,不要在生产机器上操作,还想说几遍。

 

蓝色斜字体需要根据各环境修改

 

1、配置并运行环境变量,实例名PROD

$ vi PROD.env

exportORACLE_HOME=/oracle/app/11.2.0.4/db_1

export ORACLE_SID=PROD

export ORACLE_BASE=/oracle/app/11.2.0.4

export PATH=$ORACLE_HOME/bin:$PATH

exportLD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

exportCLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

export EDITOR=vi

export

export NLS_LANG=american_america.AL32UTF8

export NLS_DATE_FORMAT='yyyy/mm/ddhh24:mi:ss'

umask 022

 

$ . PROD.env

 

2、进入netbackup软件目录netbackupdir,找到生产主机名hostname1最近的备份源backup1

# cd netbackupdir/bin

# ./bplist -C host_name1 -t 4 -l -R /|more

 

3、配置参数文件,创建相应的目录,启动数据库至nomount状态

$ vi oracle/app/11.2.0.4/db_1/dbs/initPROD.ora

db_name=PROD

audit_file_dest='/oracle/app/11.2.0.4/admin/PROD/adump'

audit_trail ='db'

db_recovery_file_dest='/oradata/PROD/flash_recovery_area'

db_recovery_file_dest_size=160G

sga_max_size=8G

sga_target=8G

db_block_size=8192

control_files='/oradata/PROD/control01.ctl','/oradata/PROD/control02.ctl'

compatible='11.2.0.4.0'

 

$ mkdir -p /oracle/app/11.2.0.4/admin/PROD/adump

$ mkdir -p /oradata/PROD/flash_recovery_area

$ sqlplus / as sysdba

SQL> startup nomount pfile='/oracle/app/11.2.0.4/db_1/dbs/initPROD.ora';

 

4、恢复控制文件,填入netbackup的服务器主机名nbuhostname1,生产主机名hostname1备份源backup1,修改数据库至mount状态

rman target /

RMAN> run {

allocate channel ch00 type 'SBT_TAPE';

allocate channel ch01 type 'SBT_TAPE';

send 'NB_ORA_SERV=nbuhostname1,NB_ORA_CLIENT=hostname1';

restore controlfile from 'backup1';

release channel ch00;

release channel ch01;

}

RMAN> alter database monut;

 

5、检查可恢复时间点 (例如时间点:2018/03/08 20:20:52)

RMAN> list backup of archivelog all;

 

6、恢复数据库

run {

allocate channel ch00 type 'SBT_TAPE';

allocate channel ch01 type 'SBT_TAPE';

allocate channel ch02 type 'SBT_TAPE';

allocate channel ch03 type 'SBT_TAPE';

send 'NB_ORA_SERV=nbuhostname1,NB_ORA_CLIENT=hostname1';

set newname for database to '/oradata/PROD/%b';

restore database;

switch datafile all;

switch tempfile all;

recover database until time "to_date('2018/03/08 20:20:52','yyyy/mm/ddhh24:mi:ss')";

alter databaseopen resetlogs;

release channel ch00;

release channel ch01;

release channel ch02;

release channel ch03;

}

 

7、创建spfile

$ sqlplus / assysdba

create spfile='/oracle/app/11.2.0.4/db_1/dbs/spfilePROD.ora' from pfile='/oracle/app/11.2.0.4/db_1/dbs/initPROD.ora'

 

8、大功告成,别忘了验证

验证数据库状态:

$ select instance_name,status from v$instance;

INSTANCE_NAME    STATUS

---------------- ------------

PROD          OPEN

 

验证数据恢复的时间:通过查询恢复后的最后产生的快照时间,与恢复时间点:2018/03/08 20:20:52对比,若时间差不多则说明当前数据库的确恢复到恢复时间点。

select SNAP_ID,TO_CHAR (end_interval_time, 'yyyymmdd hh24:mi:ss'),b.name from dba_hist_snapshot,v$database b order by snap_id;

  SNAP_ID TO_CHAR(END_INTER NAME

---------- ----------------- ---------

    24401 20180308 18:00:41 PROD

    24402 20180308 19:00:43 PROD

    24403 20180308 20:00:45 PROD


---END---


         


文章转载自应用DBA,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论