RMAN异地恢复测试

RMAN异地恢复测试
参考官方文档<> P317

大概步骤如下:

1. 创建用户名,组
2. 创建相同的目录
   拷贝spfile、tnsnames.ora 、listener.ora、密码文件、备份文件到相应的目录
3.-bash-3.00$ rman targetsystem/system@inst1002
RMAN>startup nomount
RMAN> restore controlfile from 'XXXX';
RMAN> restore database;
RMAN> recover database;
RMAN> alter database open resetlogs;

一 环境

1 原生产库的环境:
suse9_64bit + Oracle9208
10.230.12.2与10.230.12.3组成的DataGuard架构.

2 当前的备份策略:

先备份到本地磁盘,再通过CommVault以文件系统的形式备份到磁带.

第一次备份先做一个level 0
周一   level 2
周二   level 2
周三   level 2
周四   level 1
周五   level 2
周六   level 2
周日   level 0(全备)

3 目标库的环境

suse9_32bit + Oracle9208
现在将数据库做异机恢复到Z815 10.230.12.10上.时间点20100519.


二 涉及的问题

1 先从磁带库中将备份集恢复到10.230.12.10上.
考虑空间问题?
空间要求大于与原生产库数据库文件所在的目录大小,而不是备份集的大小
数据库文件大小:59485292 + 归档 +参数文件+控制文件 = full backupset的大小:66.23 GB
而在目标库/u01上还有274963028大小的空间.
空间上没什么问题.

5.16上的backup set:
piece handle=/u01/backup/dzzd/DZZDS20x_20100516_531_1.db
piece handle=/u01/backup/dzzd/DZZDS20x_20100516_532_1.db

piece handle=/u01/backup/dzzd/DZZDS20x_20100516_533_1.archivelog(还在)

piece handle=/u01/backup/dzzd/c-685940932-20100516-00.ctl(不存在,为什么会被retention policy所删掉?)

这样还原的话.变成控制文件比较新的,这有什么问题吗? 只要控制文件中还记录了之前的信息就可以?但它有记录吗?
这里理解有问题。

应该是这样的。因为现在是每天对文件系统做全备,所以在磁带库中看到的是每天备份目录的情况。要想恢复19号的就应在磁带库中找对应19的。
而不能用19中的磁带文件来恢复到16号的操作系统层文件


2 CommVault的异地还原如何做?
如不行,则先恢复到本机的异地,再拷贝到Z815上
注意,从CommVault还原回来的是备份集,不是原参数文件,控制文件,数据文件
可以做。


3 生产库采用的是Catalog方式.还原时也用Catalog方式?与用Controlfile方式有什么区别?
如用Catalog,这样的话也要注册Catalog到CatalogDB
不用,可以恢复后再做

4 Z815的目录结构是否与生产环境一致,如不一致要如何处理?
哪些目录结构呢?
数据文件,备份路径,??


原生产库:
ORACLE_BASE=/u01/oracle
ORACLE_HOME=/u01/oracle/product/92

数据文件路径:
/u01/oracle/oradata/dzzds20/*

备份路径:
/u01/backup/dzzd/*

目的库:
ORACLE_BASE=/u01/oracle
ORACLE_HOME=/u01/oracle/product/9i
这个不一样,有什么影响?

数据文件路径:
/u01/oracle/oradata/dzzds20 这个目录不存在,要建立.

备份路径:
/u01/backup/dzzd/*  这个目录不存在,要建立

因为用RMAN做还原的时候,如不做异地还原,则备份文件会找不到路径,解决方法,做异地还原,或建立目录。


5 由于没有Online redo log, 只能Incomplete Recovery.

也就是说只能恢复到还原的归档文件所在的SCN号.

perform. incomplete recovery up to the lowest SCN of the most recently archived log and open resetlogs.

obtain lowest scn:

SELECT MIN(SCN) FROM (SELECT MAX(NEXT_CHANGE#) SCN FROM V$ARCHIVED_LOG GROUP BY THREAD#);

或者用until cancel


6 恢复到10.230.12.10上,会不会对已存在的数据库造成影响?
理论上不会


7 管理目录必须建立.
/u01/oracle/admin/dzzds20/bdump|udump|cdump|create|pfile
密码文件也必须建立


8 归档路径目录必须存在

因为做归档还原的时候也同样面临路径问题。
 /u01/arch


9 定义ORACLE_SID
调用RMAN的时候要用吗? RMAN的执行过程怎么样的?
要用的。


三 操作步骤

1 CommVault还原备份集.
异机还原后的文件属主变成未知,应通过root用户还原为原文件属主.
#chown oracle:dba /u01/backup/dzzd/*

2 恢复参数文件
export ORACLE_SID=dzzds20
RMAN> startup nomount
RMAN> restore spfile to '/u01/oracle/product/9i/dbs/spfiledzzds20.ora' from '/u01/backup/dzzd/c-685940932-20100520-00.ctl'
这样spfiledzzds20.ora就被恢复到/u01/oracle/product/9i/dbs下

3 恢复控制文件从自动备份

RMAN> restore controlfile to '/u01/oracle/oradata/dzzds20/contorl01.ctl' from '/u01/backup/dzzd/c-685940932-20100520-00.ctl';

RMAN> sql 'alter database mount';
sql statement: alter database mount
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of sql command on default channel at 05/20/2010 11:11:43
RMAN-11003: failure during parse/execution of SQL statement: alter database mount
ORA-00209: control file blocksize mismatch, check alert log for more info


在alert log:/u01/oracle/product/9i/rdbms/log/alert_dzzds20.log
alter database mount
Thu May 20 11:11:43 2010
ORA-00218: block size 8192 of controlfile does not match DB_BLOCK_SIZE (2048)
ORA-00202: controlfile: '?/dbs/cntrl@.dbf'

这里应该是dummy参数文件中的Blocksize 与控制文件中的block size不匹配。


RMAN> shutdown immediate
没反应

通过SQLPLUS> shutdown abort 强制关闭


SQLPLUS> conn /as sysdba
SQLPLUS> create pfile='/home/oracle/pfiledzzds20.ora' from spfile

SQLPLUS> startup nomount pfile='/home/oracle/pfiledzzds20.ora' 

ORA-07446: sdnfy: bad value '/u01/oracle/admin/dzzds20/udump' for parameter user_dump_dest

目录没建立。
建立相关目录
create -p /u01/oracle/admin/dzzds20/bdump
create -p /u01/oracle/admin/dzzds20/udump
create -p /u01/oracle/admin/dzzds20/cdump
create -p /u01/oracle/admin/dzzds20/create
create -p /u01/oracle/admin/dzzds20/pfile

密码文件也要建立
orapwd file='/u01/oracle/product/9i/dbs/orapwdzzds20' password=sys_dzzds20 entries=2

SQLPLUS> shutdown immediate
SQLPLUS> startup mount
ORACLE instance started.

Total System Global Area 1698661744 bytes
Fixed Size                   742768 bytes
Variable Size             318767104 bytes
Database Buffers         1375731712 bytes
Redo Buffers                3420160 bytes
Database mounted.

4 恢复数据文件
RMAN>restore database;

在恢复的过程中:alert_log中不断报如下信息。

Thu May 20 11:53:03 2010
ARC1: Cannot archive online log based on backup controlfile
没有online redo log,
没建立,建个空的?

答:alter database open resetlogs时会重新建立empty redo log.


alert_log中报如下信息:

Full restore complete of datafile 2 /u01/oracle/oradata/dzzds20/undotbs01.dbf
  checkpoint is 2700933852727
Full restore complete of datafile 4 /u01/oracle/oradata/dzzds20/tools01.dbf
  checkpoint is 2700933852727
这个checkpoint 是什么意思呢? 最大的SCN号?

RMAN>recover database;

alert_log中的信息:

Incremental restore complete of datafile 7 /u01/oracle/oradata/dzzds20/MAILINDEX.dbf
  checkpoint is 2701080246790
Incremental restore complete of datafile 2 /u01/oracle/oradata/dzzds20/undotbs01.dbf
  checkpoint is 2701080246790
Incremental restore complete of datafile 4 /u01/oracle/oradata/dzzds20/tools01.dbf
  checkpoint is 2701080246790
Incremental restore complete of datafile 11 /u01/oracle/oradata/dzzds20/MTACONTENT02.dbf
  checkpoint is 270108024679
先应用增量备份,

没有应用归档,全部用的是增量备份.
如要应用备份发生时间20号1点, 到当前的数据,则应将今天所产生的归档文件拷贝到归档目录/u01/arch下,由RMAN做应用.

5 打开数据库

由于只能做不完全恢复,所以只能用resetlogs打开
SQLPLUS> alter database open resetlogs

打开成功,表明数据库的异地恢复是可行的.

 

四 问题:

1 备份任务做的时间是1:00,有三个JOB,分别也在1:00,2:00, 3:00;执行,这样可能出现的问题是,恢复时,2:00,3:00的JOB没有做,而1:00的Job已做。
是不是应该考虑这个问题呢?

2 恢复成功后
SQL> conn perfstat/perstat
ERROR:
ORA-01017: invalid username/password; logon denied


Warning: You are no longer connected to ORACLE.
SQL> conn perfstat/perfstat
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-06553: PLS-801: internal error [56319]


SQL>
SQL> conn bjggs/pwd_bjggs
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-06553: PLS-801: internal error [56319]
为什么所有的用户都访问不了呢?

会不会因为ORACLE_HOME不致导致的内部错误呢


3 恢复后,除查询,所有的动作都做不了?
表空间不够??不是
如何做个跟踪,查找问题的根源?

2,3问题可能是由于操作系统版本的问题32bit --&gt 64bit

已确认是这个原因引起的

原生产库环境:
oracle@Z813:~> uname -a
Linux Z813 2.6.5-7.315-bigsmp #1 SMP Wed Nov 26 13:03:18 UTC 2008 i686 i686 i386 GNU/Linux

目标:Z815# uname  -a
Linux Z815 2.6.5-7.308-smp #1 SMP Mon Dec 10 11:36:40 UTC 2007 x86_64 x86_64 x86_64 GNU/Linux

 

 

 

 

 

 

 

 

 

 


 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10248702/viewspace-664169/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10248702/viewspace-664169/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值