【非關鍵性資料檔案丟失(可以離線資料檔案的丟失)-恢複-1】,關鍵性離線

來源:互聯網
上載者:User

【非關鍵性資料檔案丟失(可以離線資料檔案的丟失)-恢複-1】,關鍵性離線
非關鍵性資料檔案丟失(可以離線資料檔案的丟失):
run{
sql 'alter database datafile <> offline';
restore datafile <>;
recover datafile <>;
slq 'alter database datafile <> online';
}
除了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: '/u01/oracle/oradata/jadl10g/example01.dbf'
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
建立一個恢複的指令碼:
[oracle@oracle ~]$ cat /tmp/1.rman
run{
sql 'alter database datafile 5 offline';
restore datafile 5;
recover datafile 5;
sql 'alter database datafile 5 online';
}
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 'alter database datafile 5 offline';
3> restore datafile 5;
4> recover datafile 5;
5> sql 'alter database datafile 5 online';
6> }
7>
using target database control file 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.

此時執行查詢就不會出現錯誤了。

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

資料檔案從一個路徑遷移到新的路徑
資料檔案從檔案系統到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 'alter tablespace a1 offline immediate';
set newname for datafile 7 to '+DB';
restore datafile 7;
switch datafile all; ---分頁檔
recover datafile 7;
slq 'alter tablespace a1 online';
}
在rman執行該指令碼;

12c是比較特殊的:
alter database datafile 13 move '/u01/......';----移動到新的路徑

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.