Home > Database > Mysql Tutorial > 【非关键性数据文件丢失(可以脱机数据文件的丢失)-恢复-1】

【非关键性数据文件丢失(可以脱机数据文件的丢失)-恢复-1】

WBOY
Release: 2016-06-07 16:12:57
Original
1151 people have browsed it

非关键性数据文件丢失(可以脱机数据文件的丢失): run{sql alter database datafile offline;restore datafile ;recover datafile ;slq alter database datafile online;} 除了system、undo_tablespace参数后值对应的表空间都可以采用以上的办法恢复。 [oracl

非关键性数据文件丢失(可以脱机数据文件的丢失):
run{
sql &#39;alter database datafile <> offline&#39;;
restore datafile <>;
recover datafile <>;
slq &#39;alter database datafile <> online&#39;;
}
Copy after login

除了system、undo_tablespace参数后值对应的表空间都可以采用以上的办法恢复。
[oracle@oracle ~]$ ls /u01/oracle/oradata/jadl10g/
control01.ctl control03.ctl redo01.log redo03.log system01.dbf undotbs01.dbf
control02.ctl example01.dbf redo02.log sysaux01.dbf temp01.dbf users01.dbf
[oracle@oracle ~]$ rm /u01/oracle/oradata/jadl10g/example01.dbf
[oracle@oracle ~]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.5.0 - Production on Thu Nov 6 15:23:57 2014
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining Scoring Engine
and Real Application Testing options


SQL> select * from hr.employees;
select * from hr.employees
*
ERROR at line 1:
ORA-01116: error in opening database file 5
ORA-01110: data file 5: &#39;/u01/oracle/oradata/jadl10g/example01.dbf&#39;
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
[oracle@oracle ~]$ vi /tmp/1.rman
Copy after login

创建一个恢复的脚本:
[oracle@oracle ~]$ cat /tmp/1.rman
run{
sql &#39;alter database datafile 5 offline&#39;;
restore datafile 5;
recover datafile 5;
sql &#39;alter database datafile 5 online&#39;;
}
Copy after login

rman利用建立的脚本恢复数据库的数据:
[oracle@oracle ~]$ rman target / cmdfile=/tmp/1.rman
Recovery Manager: Release 10.2.0.5.0 - Production on Thu Nov 6 15:29:28 2014
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: JADL10G (DBID=2011530396)


RMAN> run{
2> sql &#39;alter database datafile 5 offline&#39;;
3> restore datafile 5;
4> recover datafile 5;
5> sql &#39;alter database datafile 5 online&#39;;
6> }
7>
using target database control f【本文来自鸿网互联 (http://www.68idc.cn)】ile instead of recovery catalog
sql statement: alter database datafile 5 offline

Starting restore at 06-NOV-14
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=159 devtype=DISK

channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00005 to /u01/oracle/oradata/jadl10g/example01.dbf
channel ORA_DISK_1: reading from backup piece /u01/oracle/flash_recovery_area/JADL10G/backupset/2014_11_06/o1_mf_nnndf_TAG20141106T135107_b5p32dhf_.bkp
channel ORA_DISK_1: restored backup piece 1
piece handle=/u01/oracle/flash_recovery_area/JADL10G/backupset/2014_11_06/o1_mf_nnndf_TAG20141106T135107_b5p32dhf_.bkp tag=TAG20141106T135107
channel ORA_DISK_1: restore complete, elapsed time: 00:00:07
Finished restore at 06-NOV-14

Starting recover at 06-NOV-14
using channel ORA_DISK_1

starting media recovery
media recovery complete, elapsed time: 00:00:00

Finished recover at 06-NOV-14

sql statement: alter database datafile 5 online

Recovery Manager complete.
Copy after login

此时执行查询就不会出现错误了。

system/example 都丢失该如何处理?
shutdowm abort
restore datafile 1,5;
recover database;
alter database open;
这样操作后,不需要重新备份数据库 ,以前的备份是有效的。

恢复映像副本
RMAN> backup as copy datafile 5;

Starting backup at 06-NOV-14
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=159 devtype=DISK
channel ORA_DISK_1: starting datafile copy
input datafile fno=00005 name=/u01/oracle/oradata/jadl10g/example01.dbf
output filename=/u01/oracle/flash_recovery_area/JADL10G/datafile/o1_mf_example_b5pbo2pc_.dbf tag=TAG20141106T160034 recid=10 stamp=862934437
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
Finished backup at 06-NOV-14

RMAN> recover copy of datafile 5; ---改命令就是对上面的数据文件做增量的修改,
Starting recover at 06-NOV-14
using channel ORA_DISK_1
no copy of datafile 5 found to recover
Finished recover at 06-NOV-14
Copy after login


数据文件从一个路径迁移到新的路径
数据文件从文件系统到ASM
数据文件从ASM到文件系统
实施以上需求的办法:
set newname for datafile '...' to '...';
restore ...
switch datafile all;
recover ....
将数据文件迁移到ASM:
SQL> select name from v$asm_diskgroup;
vi a.rman
run{
sql &#39;alter tablespace a1 offline immediate&#39;;
set newname for datafile 7 to &#39;+DB&#39;;
restore datafile 7;
switch datafile all; ---交换文件
recover datafile 7;
slq &#39;alter tablespace a1 online&#39;;
}
Copy after login

在rman执行该脚本;

12c是比较特殊的:
alter database datafile 13 move '/u01/......';----移动到新的路径
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template