使用RMAN恢复数据库
http://blog.163.com/scott_guo/blog/static/1810260832011112832357453/
由于需要搭建一个测试环境,把上周末的一个全备拿出来做恢复,首先备份一下测试库上现有的重要表:
exp banping/bangping@ERPTEST file=f:\20090905.dmp tables=(msgtaskdef,rptcol,rptdata)
然后把全备的备份片文件和控制文件COPY过来:
rcp p5b1:/orabak/ctl_file/c-2400249746-20090828-02 /orabak
rcp p5b1:/orabak/arch/* /orabak
文件属主给Oracle:
p5b2@/orabak#chown oracle.dba *
然后启动数据库到nomount状态,进入Rman环境,restore控制文件:
$ rman target /
RMAN> restore controlfile from '/orabak/ c-2400249746-20090828-02';
启动到mount状态:
RMAN> sql 'alter database mount';
根据测试库的环境重命名数据文件的位置:
run {
allocate channel c1 device type disk;
allocate channel c2 device type disk;
set newname for datafile '/dev/rdb_system' to '/u02/oradata/erpdev2/rdb_system';
set newname for datafile '/dev/rdb_undotbs1' to '/u02/oradata/erpdev2/rdb_undotbs1';
set newname for datafile '/dev/rdb_sysaux' to '/u02/oradata/erpdev2/rdb_sysaux';
set newname for datafile '/dev/rdb_undotbs2' to '/u02/oradata/erpdev2/rdb_undotbs2';
set newname for datafile '/dev/rdb_users' to '/u02/oradata/erpdev2/rdb_users';
set newname for datafile '/dev/rdb_erp' to '/u02/oradata/erpdev2/rdb_erp';
set newname for datafile '/dev/rdb_erp_index' to '/u02/oradata/erpdev2/rdb_erp_index';
set newname for datafile '/dev/rdb_erp_xm' to '/u02/oradata/erpdev2/rdb_erp_xm';
set newname for datafile '/dev/rdb_erp_ht' to '/u02/oradata/erpdev2/rdb_erp_ht';
set newname for datafile '/dev/rdb_erp_wl' to '/u02/oradata/erpdev2/rdb_erp_wl';
set newname for datafile '/dev/rdb_erp_cw' to '/u02/oradata/erpdev2/rdb_erp_cw';
set newname for datafile '/dev/rdb_erp_zj' to '/u02/oradata/erpdev2/rdb_erp_zj';
set newname for datafile '/dev/rdb_erp_sp' to '/u02/oradata/erpdev2/rdb_erp_sp';
set newname for datafile '/dev/rdb_cndwl' to '/u02/oradata/erpdev2/rdb_cndwl';
set newname for datafile '/dev/rdb_xdwl' to '/u02/oradata/erpdev2/rdb_xdwl';
set newname for datafile '/dev/rdb_sysaux2' to '/u02/oradata/erpdev2/rdb_sysaux2';
set newname for datafile '/dev/rdb_erp2' to '/u02/oradata/erpdev2/rdb_erp2';
set newname for datafile '/dev/rdb_erp_ht2' to '/u02/oradata/erpdev2/rdb_erp_ht2';
restore database;
switch datafile all;
}
然后执行recover操作:
RMAN> recover database;
这时数据库报错了:
Oracle Error:
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: '/u02/oradata/erpdev2/rdb_system'RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 09/04/2009 14:31:39
RMAN-06053: unable to perform media recovery because of missing log
RMAN-06025: no backup of log thread 2 seq 106090 lowscn 10440022578 found to restore
RMAN-06025: no backup of log thread 2 seq 106089 lowscn 10440021828 found to restore
RMAN-06025: no backup of log thread 2 seq 106088 lowscn 10440020848 found to restore
RMAN-06025: no backup of log thread 2 seq 106087 lowscn 10440018779 found to restore
RMAN-06025: no backup of log thread 2 seq 106086 lowscn 10440007985 found to restore
RMAN-06025: no backup of log thread 2 seq 106085 lowscn 10439981571 found to restore
RMAN-06025: no backup of log thread 2 seq 106084 lowscn 10439980750 found to restore
RMAN-06025: no backup of log thread 1 seq 99356 lowscn 10440022588 found to restore
RMAN-06025: no backup of log thread 1 seq 99355 lowscn 10440021839 found to restore
RMAN-06025: no backup of log thread 1 seq 99354 lowscn 10440020856 found to restore
RMAN-06025: no backup of log thread 1 seq 99353 lowscn 10440018824 found to restore
RMAN-06025: no backup of log thread 1 seq 99352 lowscn 10440008036 found to restore
RMAN-06025: no backup of log thread 1 seq 99351 lowscn 10439981670 found to restore
RMAN-06025: no backup of log thread 1 seq 99350 lowscn 10439980746 found to restore
看来有些备份片不全,于是把全备后的备份片弄过来放到/orabak/arch目录,先注册到控制文件:
RMAN> catalog start with '/orabak/arch';
searching for all files that match the pattern /orabak/arch
List of Files Unknown to the Database
=====================================
File Name: /orabak/arch/CNDERPDB_arch_20090829_696171285_15256_1
File Name: /orabak/arch/CNDERPDB_arch_20090829_696171311_15258_1
File Name: /orabak/arch/CNDERPDB_arch_20090829_696171617_15257_1
File Name: /orabak/arch/CNDERPDB_arch_20090829_696171922_15259_1
File Name: /orabak/arch/CNDERPDB_arch_20090829_696172209_15260_1
File Name: /orabak/arch/CNDERPDB_arch_20090829_696172385_15261_1Do you really want to catalog the above files (enter YES or NO)? y
cataloging files...
cataloging doneList of Cataloged Files
=======================
File Name: /orabak/arch/CNDERPDB_arch_20090829_696171285_15256_1
File Name: /orabak/arch/CNDERPDB_arch_20090829_696171311_15258_1
File Name: /orabak/arch/CNDERPDB_arch_20090829_696171617_15257_1
File Name: /orabak/arch/CNDERPDB_arch_20090829_696171922_15259_1
File Name: /orabak/arch/CNDERPDB_arch_20090829_696172209_15260_1
File Name: /orabak/arch/CNDERPDB_arch_20090829_696172385_15261_1
重新进行recover操作:
RMAN> recover database;
Starting recover at 07-SEP-09
using channel ORA_DISK_1starting media recovery
archive log thread 1 sequence 99417 is already on disk as file /u02/ora_arch/1_99417_640266118.dbf
unable to find archive log
archive log thread=2 sequence=106154
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 09/07/2009 08:59:16
RMAN-06054: media recovery requesting unknown log: thread 2 seq 106154 lowscn 10444622603
继续找不到需要的备份片,尝试了几次后发现会一直这样找下去:
unable to find archive log
archive log thread=1 sequence=99470
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 09/07/2009 09:29:02
RMAN-06054: media recovery requesting unknown log: thread 1 seq 99470 lowscn 10444784948
由于测试用,指定SCN恢复:
RMAN> run {
2> set until scn 10444783788;
3> recover database ;
4> }executing command: SET until clause
Starting recover at 07-SEP-09
using channel ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 09/07/2009 09:38:44
RMAN-06556: datafile 1 must be restored from backup older than scn 10444783788
这个通过list backup of archivelog all找出来的SCN竟然不对,继续把备份片拿回来,执行到刚才说缺失的10444784948号SCN进行恢复:
RMAN> run {
2> set until scn 10444784948;
3> recover database ;
4> }executing command: SET until clause
Starting recover at 07-SEP-09
using channel ORA_DISK_1starting media recovery
archive log thread 2 sequence 106205 is already on disk as file /u02/ora_arch/2_106205_640266118.dbf
channel ORA_DISK_1: starting archive log restore to default destination
channel ORA_DISK_1: restoring archive log
archive log thread=1 sequence=99470
channel ORA_DISK_1: reading from backup piece /orabak/arch/CNDERPDB_arch_20090830_696257683_15267_1
channel ORA_DISK_1: restored backup piece 1
piece handle=/orabak/arch/CNDERPDB_arch_20090830_696257683_15267_1 tag=TAG20090830T130014
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
archive log filename=/u02/ora_arch/1_99470_640266118.dbf thread=1 sequence=99470
archive log filename=/u02/ora_arch/2_106205_640266118.dbf thread=2 sequence=106205
media recovery complete, elapsed time: 00:00:03
Finished recover at 07-SEP-09
尝试打开后报错:
RMAN> alter database open;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 09/07/2009 09:57:10
ORA-01589: must use RESETLOGS or NORESETLOGS option for database openRMAN> alter database open resetlogs;
RMAN-06900: WARNING: unable to generate V$RMAN_STATUS or V$RMAN_OUTPUT row
RMAN-06901: WARNING: disabling update of the V$RMAN_STATUS and V$RMAN_OUTPUT rows
ORACLE error from target database:
ORA-19921: maximum number of 64 rows exceededRMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 09/07/2009 09:57:20
ORA-00344: unable to re-create online log '/dev/rdb_redo1_11'
ORA-27040: file create error, unable to create file
IBM AIX RISC System/6000 Error: 13: Permission denied
按照备份的文件,先在测试库建立一系列redo文件:
SQL> alter database rename file '/dev/rdb_redo1_11' to '/u02/oradata/erpdev2/rdb_redo1_1';
Database altered.
建立临时表空间文件,可以删除不必要的:
SQL> select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
/dev/rdb_erp_temp
/dev/rdb_erp_temp2
/dev/rdb_erp_temp3SQL> alter database rename file '/dev/rdb_erp_temp' to '/u02/oradata/erpdev2/rdb_erp_temp';
Database altered.
SQL> select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
/u02/oradata/erpdev2/rdb_erp_temp
/dev/rdb_erp_temp2
/dev/rdb_erp_temp3SQL> alter database tempfile '/dev/rdb_erp_temp2' drop including datafiles;
Database altered.
SQL> alter database tempfile '/dev/rdb_erp_temp3' drop including datafiles;
Database altered.
SQL> select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
/u02/oradata/erpdev2/rdb_erp_temp
由于是不完全恢复,要resetlogs打开:
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> alter database open resetlogs;Database altered.
查看归档模式:
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u02/ora_arch/
Oldest online log sequence 0
Next log sequence to archive 1
Current log sequence 1
关闭归档:
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.Total System Global Area 603979776 bytes
Fixed Size 2074704 bytes
Variable Size 318769072 bytes
Database Buffers 276824064 bytes
Redo Buffers 6311936 bytes
Database mounted.
SQL> alter database noarchivelog;Database altered.
SQL> alter database open;
Database altered.
转载于:https://blog.51cto.com/itbull/1180204
使用RMAN恢复数据库相关推荐
- linux ora 01157,案例:Oracle报错ORA-01157 ORA-01110 数据启动报错RMAN恢复数据库思路
天萃荷净 rman从多份备份中还原操作,运维DBA工程师反映数据库在进行恢复时报错ORA-01157 ORA-01110,分析原因为11号数据文件需要recover 1.数据恢复ORA错误 RMAN& ...
- |给燕玲|RMAN恢复数据库到过去某一时间点
今天和13燕玲打电话沟通得知她实施的客户遇到过还原系统到几天前的情况(比如增加了很多的辅助,可是发现不合理,又不想让数据库产生垃圾数据,就需要用昨天的exp备份的东西imp还原),但是我考虑到了一个问 ...
- ORACLE 11G rman恢复数据库实战纪实
今天领导需要将某天的备份恢复过来到临时库,因为线上采用的是rman备份,所以会有rman备份集合,但是rman出来的备份集合,每次恢复过程中都会出现各种各样的细节问题,都记录下来,以备后来参考,大概流 ...
- linux异机拷贝,rman恢复异机数据库
2,利用scp拷贝到异机 [oracle@db101 ab]$ ls liu0stl8tun_1_1 liu0ttl8u58_1_1 [oracle@db101 ab]$ scp * oracle@1 ...
- oracle备份还原到本地_Oracle 11g R2 RAC数据库备份通过RMAN恢复到单实例数据库实现...
Oracle 11g R2 RAC数据库备份通过RMAN恢复到单实例数据库实现 下面是我的一次从Oracle 11g R2 RAC到单实例间通过RMAN恢复备份集的过程,记录在此. 有些人以此方法作为 ...
- window oracle 只有bak文件怎么恢复_Oracle 11g R2 RAC数据库备份通过RMAN恢复到单实例数据库实现...
Oracle 11g R2 RAC数据库备份通过RMAN恢复到单实例数据库实现 下面是我的一次从Oracle 11g R2 RAC到单实例间通过RMAN恢复备份集的过程,记录在此. 有些人以此方法作为 ...
- Oracle rman备份和还原恢复数据库
1.切换服务器归档模式,如果已经是归档模式可跳过此步: %sqlplus /nolog (启动sqlplus) SQL> conn / as sysdba (以DBA身份连接数据库) SQL ...
- oracle9i 恢复数据库,Oracle9i RMAN备份及恢复步骤(zt)
1.切换服务器归档模式,如果已经是归档模式可跳过此步: %sqlplus /nolog (启动sqlplus) SQL> conn / as sysdba (以DBA身份连接数据库) SQL&g ...
- RMAN duplicate恢复数据库报错RMAN-06054问题处理
最近生产上要搞大动作,需要把生产库备份每天都恢复到另外一台机器上,进行测试.于是想到了用DUPLIDATE的方式,简单方便,前期配置好目录,然后一条命令就可以把库恢复出来.于是写了恢复脚本,也通过了测 ...
最新文章
- OpenCV使用CNN进行目标检测
- linux 股票指南针,IOS开发入门之ios指南针
- root目录空间不够的问题
- mysql 报错3534_win7下安装MYSQL报错:MYSQL 服务无法启动的3534问题
- 分享几个Python小技巧函数里的4个小花招
- 史上最全Oracle文件损坏处理办法(附实验步骤)
- python函数中文手册-Python参考手册(第4版)
- matlab索引超出数组边界且不提示数组边界的一种处理办法
- ZZULIOJ:1047: 对数表
- 机器视觉可以应用到哪些领域,你都知道吗?
- 【海量地图图源合集】教你如何一键获取150+高清卫星影像、电子地图、地质图、DEM等地图图源
- 工业相机软件参数介绍
- SAP 月末结账步骤
- python打开读取文件内容
- 十年MFC经历认识的Microsoft技术
- 面试一次问一次,HashMap是该拿下了(一)
- 尝试从redis未授权访问到getshell的四种姿势(失败)
- 苹果cms是什么东西?
- 时间序列分类05:滑动窗口处理时间序列分类数据
- 设计模式-设计原则-开闭原则是目标,里氏代换原则是基础,依赖倒转原则是手段...