首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Oracle异机恢复

引言

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

说明

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

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

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

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

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

$ viPROD.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 -Chost_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---

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180829G11TGV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券