平复与还原1,Oracle数据库不相同损坏级其他过来教程

第四步:设置已恢复数据文件联机

5. 配置RMAN增量备份

  • Level 0增量备份

RMAN> backup incremental level 0 database;
  • Level 1增量备份

RMAN> backup incremental level 1 database;
  • 快速增量备份

SQL> shutdown immediate;
SQL> startup mount;

SQL> select filename,status,bytes from v$block_change_tracking;
SQL> alter database enable block change tracking using file '/data/oracle/product/11.2.0/oradata/chtrack.log';
SQL> alter database disable block change tracking;
SQL> alter database rename file '/data/oracle/product/11.2.0/oradata/chtrack.log' to '/data/oracle/product/11.2.0/oradata/test/chtrack.log';
  • 应用增量备份

# 将增量备份添加到镜像副本上

RMAN> run{
          backup incremental level 1 for recover of copy with tag 'incr_copy_backup' database;
          recover copy of database with tag 'incr_copy_backup';}

一、RMAN在归档模式下的还原与恢复的简化例子

为了描述的方便,这里我们假设在一套归档方式运行的数据库中,所有控制文件由于介质损坏导致不可用。其他数据库文件,包括数据文件、参数文件、归档日志文件、联机重做日志文件等均完好无损。
我们可以按照下面的步骤进行恢复。由于数据库控制文件损坏,因此数据库这时只能处于脱机状态。

11. RMAN备份维护指令

  • validate backupset

RMAN> validate backupset 5;
  • restore…validate

RMAN> restore tablespace users validate;
RMAN> restore datafile '/data/oracle/oracent/system01.dbf' validate;
  • restore preview

RMAN> restore database preview
RMAN> restore tablespace sysaux preview;
RMAN> restore datafile 5 preview;
  • list

RMAN> list;
RMAN> list backupset;
RMAN> list backupset 5;
RMAN> list backup of tablespace users;
RMAN> list backup of datafile 1;
RMAN> list backup of archivelog all;
RMAN> list backup of archivelog from time ='sysdate-2';
RMAN> list backup of controlfile;
RMAN> list backup of spfile;
RMAN> list copy of controlfile;
RMAN> list backup summary;
  • report

RMAN> report schema;
RMAN> report need backup;

–对数据库做全备

2)执行下面的数据块修复命令进行数据块的修复:

3. 配置RMAN脱机备份

$ sqlplus rman/jansondors as sysdba
SQL> select file_type,percent_space_used,percent_space_reclaimable,number_of_files from v$flash_recovery_area_usage;
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter system set db_recovery_file_dest_size=10g;  
SQL> show parameter db_recovery_file_dest;

RMAN> backup database;
RMAN> backup as compressed backupset database;
RMAN> sql 'alter database open';

–下面的示例首先删除sun01_1.dbf,接下来将其恢复到oradata目录中

数据库得到不完全恢复。当然,上述过程也可以在RMAN中完成。

7. RMAN脚本

create script rman_backup{
 sql 'alter system checkpoint';
 backup database format '/home/oracle/Downloads/offline_backup/backup_$u.dbf';
 backup current controlfile format '/home/oracle/Downloads/offline_backup/backup_ctl_$u.dbf';
}
1 RMAN> run{
2 2> allocate channel ch1 type disk;
3 3> backup incremental level 1 database
4 4> format '/tmp/backup/Inc_1_%U'
5 5> tag=Inc_1;
6 6> release channel ch1;
7 7> }

1 SQL> shutdown immediate;   --关闭数据库
2 
3 SQL> ho rm $ORACLE_BASE/oradata/sunbak/*.dbf  --删除所有的数据文件 */
4 
5 SQL> startup mount
RMANsql “alter database datafile 4 online”;

1. 连接RMAN

SQL> create user rman identified by jansondors;
SQL> grant resource,connect,dba to rman;
$ rman target rman/jansondors

 3.恢复表空间(数据库open状态)

第六步:将数据库实例打开,但需要进行日志的重置:

10. RMAN恢复数据块

-> 1. 备份整个数据库
RMAN> backup database plus archivelog;

-> 2. 模拟环境
SQL> shutdown immediate;
# 人为修改dbf文件
# 此时startup指令无效,提示报错

-> 3. 恢复
RMAN> backup validate datafile 6;
SQL> select * from v$database_block_corruption;
RMAN> blockrecover datafile 6 block #BLOCK_NUM# from backupset;
RMAN> recover datafile 6;
SQL> alter database open;

–对数据库做1级增量备份

SQLrecover database until cancel;

4. 配置RMAN联机备份

  • 开启归档

$ sqlplus rman/jansondors as sysdba
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog/noarchivelog;
SQL> alter database open;
SQL> archive log list;
  • 备份数据库

RMAN> backup as compressed backupset database plus archivelog delete all input;

RMAN> run{
          allocate channel ch1 device type disk format '/home/oracle/Downloads/backup_ctl_file/ch1_%U';
          allocate channel ch2 device type disk format '/home/oracle/Downloads/backup_ctl_file/ch2_%U';
          backup as backupset
          (datafile 1,4 channel ch1)
          (datafile 2,3,5 channel ch2);
          sql 'alter system archive log current';}

RMAN> run{
          allocate channel ch1 device type disk;
          allocate channel ch2 device type disk;
          backup as backupset format '/home/oracle/Downloads/backup_ctl_file/%U'
          (datafile 1,4 channel ch1)
          (datafile 2,3,5 channel ch2);
          sql 'alter system archive log current';}
  • 备份表空间

RMAN> backup tablespace users;
RMAN> backup as compressed backupset tablespace users;
  • 备份数据文件

RMAN>  backup as backupset datafile 1 format '/home/oracle/Downloads/backup_ctl_file/datafile_1_%U';
  • 备份控制文件

->手工备份
RMAN> backup current controlfile format '/home/oracle/Downloads/backup_ctl_file_%U.dbf';
RMAN> backup current controlfile ;

->自动备份
RMAN> configure controlfile autobackup format for device type disk to '/home/oracle/Downloads/backup_ctl_file/%F';
RMAN> configure controlfile autobackup on ;
  • 备份坏块处理

默认情况下,RMAN会检查数据库是否发生物理损坏,不会检查逻辑损坏
->关闭物理损坏检查
RMAN> backup nochecksum tablespace users tag='weekly backup';
->启用逻辑损坏检查
RMAN> backup check logical tablespace users;
->设置maxcorrupt,当坏块个数超过指定数量时,backup进程会停止
RMAN-> run{
           set maxcorrupt for datafile 2,4 to 10;
           backup database;}

–执行数据库还原

第三步:从数据库备份集中装载控制文件备份

6. 配置恢复目录

SQL> create tablespace rcat_tbs datafile '/data/oracle/oradata/ORACENT/rcat_tbs01.dbf' size 100m;
SQL> create user rcat_owner identified by jansondors default tablespace rcat_tbs temporary tablespace temp;
SQL> grant recovery_catalog_owner to rcat_owner;
SQL> grant connect,resource to rcat_owner;

RMAN> rman catalog rman/jansondors target systemn/jansondors@targetOrcl

 

从指定备份集中恢复

北京pk赛车官网下载,8. 非归档完全恢复

联机重做日志是循环使用的,一个日志写满之后会切换到下一个,新的循环会覆盖掉部分变化的数据,非归档恢复是一种不完全恢复

  • 数据文件、控制文件以及重做日志文件全部丢失

# 数据库处于非归档模式
$ sqlplus rman/jansondors as sysdba
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database noarchivelog;
SQL> alter database open;
SQL> archive log list;

# 备份文件存储目录为默认的快闪恢复区
RMAN> configure controlfile autobackup format for device type disk clear;
RMAN> show all;

# 开启控制文件自动备份
RMAN> configure controlfile autobackup on;
RMAN> show all;

# 控制文件、数据文件、重做日志默认位置
SQL> show parameter control_files;
SQL> col name for a30
SQL> select file#,name,status from v$datafile;
SQL> select group#, status, member from v$logfile;

-> 1. 数据库开启挂载模式
SQL> startup mount;

-> 2. 新增测试数据
SQL> alter database open;
SQL> create table test123 as select * from dba_segments;

-> 3. 模拟文件丢失
SQL> shutdown immediate;
$ pwd
$ ls    
control01.ctl  redo02.log  sysaux01.dbf  temp01.dbf     users01.dbf
redo01.log     redo03.log  system01.dbf  undotbs01.dbf
$ rm -rf *.*

-> 4. 恢复数据
SQL> startup
ORACLE instance started.
Total System Global Area  759943168 bytes
Fixed Size          2217224 bytes
Variable Size         503319288 bytes
Database Buffers      251658240 bytes
Redo Buffers            2748416 bytes
ORA-00205: error in identifying control file, check alert log for more info
RMAN> restore controlfile from '/data/oracle/flash_recovery_area/ORACENT/autobackup/2017_05_17/o1_mf_s_944236355_dkr0s40f_.bkp';
SQL> alter database mount;
Database altered.
RMAN> restore database;     
RMAN> recover database noredo;
SQL> alter database open resetlogs;
SQL> select group#,sequence#,status from v$log;
SQL> select count(*) from test123;
  • 数据文件丢失

-> 1. 模拟USERS表空间丢失
SQL> shutdown immediate
$ pwd
/data/oracle/oracent
$ ls
control01.ctl  redo01.log  redo02.log  redo03.log  sysaux01.dbf  system01.dbf  temp01.dbf  undotbs01.dbf  users01.dbf
$ rm -rf users01.dbf
-> 2. RMAN恢复
SQL> select file#,name from v$datafile;
RMAN> restore datafile 4;
RMAN> recover datafile 4;
#重做日志被覆盖
RMAN> recover datafile 4 until cancel;
  • 重做日志文件丢失

-> 1. 模拟文件丢失
SQL> shutdown immediate;
$ pwd
/data/oracle/oracent
$ ls
control01.ctl  redo01.log  redo02.log  redo03.log  sysaux01.dbf  system01.dbf  temp01.dbf  undotbs01.dbf  users01.dbf
$ rm -rf *.dbf
$ rm -rf *.log
-> 2. 恢复
RMAN> restore database;
RMAN> recover database until cancel;
SQL> alter database open;
SQL> alter database open resetlogs;
  • 迁移数据文件

SQL> start mount
RMAN> run{
    set newname for datafile
    'A/system01.dbf' to 'B/system01.dbf';
    set newname for datafile
    'A/users01.dbf' to 'B/users01.dbf';
    restore database from tag=TAG20170517T131491;
    switch datafile all;
}
1 RMAN> run {
2 2> allocate channel ch1 type disk;
3 3> backup incremental level 0 database 
4 4> format '/tmp/backup/Inc_0_%U'
5 5> tag=Inc_0;
6 6> release channel ch1;
7 7> }

第五步:查看数据文件的可用性

9. 归档完全恢复

数据库一直处于归档模式下,且归档文件和重做日志文件损坏的情况下,可以在联机状态下恢复数据库文件

  • 非系统表空间损坏

-> 1. 模拟环境
$ pwd
/data/oracle/oracent
$ ls
control01.ctl  redo01.log  redo02.log  redo03.log  sysaux01.dbf  system01.dbf  temp01.dbf  undotbs01.dbf  users01.dbf
$ rm -rf users01.dbf

-> 2. 恢复
SQL> alter database datafile 4 offline;
SQL> alter database open;
RMAN> restore datafile 4;
RMAN> recover datafile 4;
SQL> alter database datafile 4 online;
SQL> select file_name,tablespace_name,status,online_status from dba_data_files;
RMAN> run{
    sql 'alter database datafile 4 offline';
    restore tablespace users;
    recover tablespace users;
    sql 'alter database datafile 4 online';
}
  • 系统表空间损坏

# system表空间损坏时,数据库无法启动;需要把数据库启动至mount状态,使用RMAN进行数据库恢复工作
SQL> startup mount
RMAN> run{
    sql 'alter database datafile 1 offline';
    restore datafile 1 ;
    recover datafile 1;
    sql 'alter database datafile 1 online';
}
SQL> alter database open;
  • 所有数据文件丢失

# 在所有数据文件丢失,但控制文件和重做日志文件都完好的情况下,可以通过RMAN进行数据库恢复工作
RMAN> run{
    restore database;
    recover database;
    sql 'alter database open';
}

2.磁盘损坏导致数据文件无法恢复到原始位置或不想恢复到原始位置的处理(数据库mount状态)

第五步:用RMAN备份恢复数据库

2. 配置RMAN参数

RMAN> show all;

using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name ORACENT are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # 保留备份副本的数量
CONFIGURE BACKUP OPTIMIZATION OFF; # 配置备份优化,如果已经备份了某个文件的相同版本,则不会再备份该文件
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # 备份的数据文件保留至服务器磁盘上
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # 配置是否启用控制文件的自动备份
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # 配置控制文件自动备份的格式
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # 备份并行度,通道数量越多,任务执行时间越短;备份文件类型为备份集
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/data/oracle/product/11.2.0/db_1/dbs/snapcf_oracent.f'; # default

RMAN> configure default device type to sbt;
RMAN> configure default device type to disk;
RMAN> configure backup optimization on;
RMAN> configure controlfile autobackup on;

-> 备份路径遵循的原则
statement format ->configure format ->FLASH_RECOVER_ARER ->$ORACLE_HOME/dbs

 

第一步:设置损坏的数据文件脱机

2.在nomount 阶段完成的灾难恢复:控制文件(controlfile)。

第二步:装载表空间

  在Oracle中,三大文件即控制文件,数据文件,日志文件的丢失与破坏都将需要使用还原或恢复来使数据库正常化。而RMAN还原与恢复是实现数据库完整性、可靠性必不可少的手段之一。还原简言之即是将所需的文件从备份中复制到原来文件所在的路径。还原通常可以包括数据库、表空间、数据文件级别的还原。通常还原后的内容会滞后于最新的数据库SCN,因此将归档日志、联机重做日志文件中的内容更新到还原的数据文件中,这个过程称之为恢复。

RMANrecover tablespace users;

1.数据文件丢失的恢复处理nocatalog(数据库mount状态)

第三步:恢复表空间

 

日志文件损坏的恢复

 1 SQL> select * from t order by 1;
 2 
 3         ID NAME
 4 ---------- ----------------
 5          0 oracle
 6          1 oracle
 7          2 oracle
 8          3 oracle
 9          4 oracle
10          5 oracle
11          6 oracle
12 
13 7 rows selected.
14 
15 SQL> insert into t select 7,'myrman' from dual;
16 
17 1 row created.
18 
19 SQL> commit;
20 
21 Commit complete.
22 
23 SQL> alter system checkpoint;
24 
25 SQL> alter system switch logfile;

数据块损坏的恢复

1 RMAN> run {
2 2> sql 'alter database datafile 6 offline immediate';
3 3> set newname for datafile 6 to '/u01/oradata/sunbak/sun01_1.dbf';
4 4> restore datafile 6;
5 5> switch datafile all;
6 6> recover tdatafile 6;
7 7> sql 'alter database datafile 6 online';
8 8> }

现在数据块得以恢复,系统继续运行。

 1 --关闭数据库
 2 SQL> shutdown immediate
 3 SQL> quit      
 4   
 5 --删除文件
 6 -bash-3.00$ rm -f /u01/oradata/sunbak/sun01_1.dbf
 7 
 8 --启到mount状态
 9 SQL> startup mount                        
10 ORACLE instance started.                        
11 SQL>
12 
13 --查看删除文件
14 SQL>  select file#,name,status from v$datafile;
15 
16      FILE# NAME                                STATUS
17 ---------- ----------------------------------- -------
18          1 /u01/oradata/sunbak/system01.dbf    SYSTEM
19          2 /u01/oradata/sunbak/undotbs01.dbf   ONLINE
20          3 /u01/oradata/sunbak/sysaux01.dbf    ONLINE
21          4 /u01/oradata/sunbak/users01.dbf     ONLINE
22          5 /u01/oradata/sunbak/example01.dbf   ONLINE
23          6 /u01/oradata/sunbak/sun01_1.dbf     ONLINE
24          7 /u01/oradata/sunbak/sun02_1.dbf     ONLINE
25          8 /u01/oradata/sunbak/sun03_1.dbf     ONLINE
26 
27 8 rows selected.
28 
29 SQL>             
30             
31 --连接rman
32 bash-3.00$ rman target / nocatalog
33 connected to target database: SUN (DBID=1913551800, not open)
34 using target database control file instead of recovery catalog
35 RMAN> 
36 
37 --恢复
38 RMAN> run{
39 2> set newname for datafile 6 to '/u01/oradata/sunbak/sun01.dbf';
40 3> restore database;
41 4> switch datafile all;
42 5> recover database;
43 6> alter database open;
44 7> }
45 --验证结果
46 SQL> conn user1/user1
47 Connected.
48 SQL> select * from t order by 1;
49 
50         ID NAME
51 ---------- ----------------
52          0 oracle
53          1 oracle
54          2 oracle
55          3 oracle
56          4 oracle
57          5 oracle
58          6 oracle
59          7 myrman
60 
61 8 rows selected.
62 
63 SQL> 
RMANalter database open resetlogs;

 

RMANrestore tablespace system;

 

RMANalter database open;

  使用switch命令将变更更新到控制文件:switch datafile n | all ;
–等同于alter database rename
file命令,该命令将恢复的数据文件重命名更新到控制文件

$rman target /rmanset DBID=1195474494

1.在mount 或open
阶段完成的灾难恢复:非系统表空间,undo表空间,所有的数据文件。

数据库的崩溃恢复

 

下面用备份来恢复表空间users中的全部数据文件:

–对表插入新记录并切换日志

SQLstartup mount
 1 -bash-3.00$ rman target / nocatalog
 2 
 3 Recovery Manager: Release 10.2.0.2.0 - Production on Sat Jan 26 13:24:57 2013
 4 
 5 Copyright (c) 1982, 2005, Oracle.  All rights reserved.
 6 
 7 connected to target database: SUN (DBID=1913551800, not open)
 8 using target database control file instead of recovery catalog
 9 
10 RMAN> 

由于某种原因,例如介质损坏导致所有控制文件都不可用时,管理员可以使用RMAN的控制文件自动备份,对控制文件进行恢复。

 1 --注意当存在完整备份也同时存在级增量备份时,Oracle会自动使用级增量备份来还原数据库
 2 RMAN> restore database;  
 3 
 4 --下面可以看出还原的数据来自级增量备份
 5 channel ORA_DISK_1: reading from backup piece /tmp/backup/Inc_0_1fo0cqbb_1_1
 6 channel ORA_DISK_1: restored backup piece 1
 7 piece handle=/tmp/backup/Inc_0_1fo0cqbb_1_1 tag=INC_0  
 8 
 9 
10 --执行数据库恢复
11 RMAN> recover database;
12 
13 channel ORA_DISK_1: reading from backup piece /tmp/backup/Inc_1_1ho0crhi_1_1
14 channel ORA_DISK_1: restored backup piece 1
15 piece handle=/tmp/backup/Inc_1_1ho0crhi_1_1 tag=INC_1
16 
17 --打开数据库验证恢复
18 RMAN> alter database open;
19 
20 SQL> select * from t order by 1;
21 
22         ID NAME
23 ---------- ----------------
24          0 oracle
25          1 oracle
26          2 oracle
27          3 oracle
28          4 oracle
29          5 oracle
30          6 oracle
31          7 myrman
32 
33 8 rows selected.
34 
35 SQL>

第三步:对损坏的数据文件进行恢复

 –删除表空间内的数据文件,删除后在针对位于该表空间的表进行插入记录以及实施检查点进程

第三步:装载数据库备份

  使用set newname 命令将数据文件还原到新路径:set newname for datafile
1 to ‘<newdir>/system01.dbf’; –为恢复的数据文件指定新路径或重命名

SQLselect name,enabled,status from v$datafile;
 1 --插入测试数据
 2 SQL> insert into user1.t select 8,'inspur' from dual;
 3 SQL> commit;
 4 SQL> alter system checkpoint;
 5 
 6 System altered.
 7 
 8 SQL> 
 9 
10 --强制检查点后,告警日志出现错误提示,视图v$recover_file给出了故障数据文件
11 [oracle@oradb ~]$ tail -f alert_sun.log 
12 Errors in file /u01/admin/sun/bdump/sun_ckpt_4554.trc:
13 ORA-01171: datafile 6 going offline due to error advancing checkpoint
14 ORA-01116: error in opening database file 6
15 ORA-01110: data file 6: '/u01/oradata/sunbak/sun01.dbf'
16 ORA-27041: unable to open file
17 Intel SVR4 UNIX Error: 2: No such file or directory
18 Additional information: 3
19 
20 
21 
22 SQL> select * from v$recover_file;
23 
24      FILE# ONLINE  ONLINE_ ERROR                 CHANGE# TIME
25 ---------- ------- ------- ------------------ ---------- ---------
26          6 OFFLINE OFFLINE FILE NOT FOUND              0
27          
28 
29 SQL>  select name,status from v$datafile where file#=6;
30 
31 NAME                                STATUS
32 ----------------------------------- -------
33 /u01/oradata/sunbak/sun01.dbf       RECOVER
34 
35 SQL>
36 
37 
38 --使用RMAN命令恢复数据文件,此时数据库处于OPEN状态,因此首先需要将表空间脱机,恢复完成之后再将其联机
39 RMAN> run {
40 2> sql 'alter tablespace sun01 offline immediate';
41 3> set newname for datafile 6 to '/u01/oradata/sunbak/sun01_1.dbf';
42 4> restore tablespace sun01;
43 5> switch datafile all;
44 6> recover tablespace sun01;
45 7> sql 'alter tablespace sun01 online';
46 8> }
47 
48 --检查状态
49 SQL> select name,status from v$datafile where file#=6;
50 
51 NAME                                STATUS
52 ----------------------------------- -------
53 /u01/oradata/sunbak/sun01_1.dbf     ONLINE
54 
55 SQL> 
56 
57 SQL> select * from user1.t order by 1;
58 
59         ID NAME
60 ---------- -----------------------------------
61          0 oracle
62          1 oracle
63          2 oracle
64          3 oracle
65          4 oracle
66          5 oracle
67          6 oracle
68          7 myrman
69          8 inspur
70 
71 9 rows selected.
72 
73 SQL>     
SQLselect name,enabled,status from v$datafile;
1 RMAN> backup as compressed backupset
2 2> format '/tmp/backup/whole_%U'
3 3> tag =Whole_bak database;
4 RMAN> sql 'alter system archive log current';
5 sql statement: alter system archive log current
6 RMAN> 

数据文件损坏的恢复

1 RMAN> connect target / nocatalog
2 
3 RMAN> startup mount;
4 
5 RMAN> restore database;
6 
7 RMAN> recover database;
8 
9 RMAN> alter database open;
RMANrecover datafile 4;

–使用RMAN连接到mount状态的数据库

控制文件损坏的恢复

二、使用RMAN进行还原与恢复(非catalog方式) 

SQLalter database open resetlogs;

 

1)连接RMAN环境,并以 SYSDBA(SYSOPER) 身份连接数据库:

–也可以使用下面的命令完成同样的功能
–注意如果表空间内有多个数据文件,而仅有单个数据文件损坏则采用下面的方式处理更为妥当

第四步:将数据库开启到mount状态:

恢复的几种情形

总结

–对数据库做0级增量备份

RMANrestore controlfile from autobackup

3.在mount 阶段完成的灾难恢复:系统表空间,联机重做日志文件。

第一步:启动数据库到nomount状态:

 

当数据文件中仅有少量的数据块发生了介质损坏时,我们可以利用RMAN对其进行数据块一级的恢复。数据块级的局部恢复可以大大缩短恢复时间,甚至缩短到其他恢复方式的千分之几。此外,在数据块存在损坏而进行的恢复中,系统可以处于运行状态,这个数据文件也可以处于联机应用状态,无须将其设置为脱机,保持应用运行状态。

SQLalter database open;
RMANrestore datafile 4;

第四步:将表空间联机

RMANsql “alter tablespace users online”;

第二步:装载表空间

SQL alter tablespace users offline;

第五步:查看数据文件的可用性

第二步:由RMAN装载数据文件

前言

rmanblockrecover datafile 3 block 2,150,152;

表空间损坏的恢复

RMANalter database mount

一种全数据库恢复方法,用于数据库彻底崩溃,不可以进行数据库局部恢复操作的情况。这种方法很简单—装载回数据库的一个完整备份集进行恢复操作。虽然方法是简单的,但代价是庞大的—-时间可能会很长!
首先需要启动数据库实例。在控制文件完好的情况下,启动到mount状态是没有问题的,如果控制文件损坏,则只能启动到nomount状态。在本例中,数据库可以启动到mount状态:

SQLstartup nomount

第四步:执行下面的命令进行数据库的完全恢复:

SQLalter database datafile 4 offline;

第五步:打开数据库

第一步:启动实例

第二步:进入到RMAN环境下:

当然数据库恢复方法不仅一个,管理员也可以按照表空间恢复的方法进行恢复操作。还是上面的案例,如果发生了失败,现在按照表空间损坏情况下的恢复方法进行恢复。

RMANrestore database;
RMAN run{ set until scn=1645604; --执行不完全恢复restore database from tag='TAG20110702T231137'; --指定备份集的tag值,在list backup of database中可以查到recover database;sql 'alter database open resetlogs'; }

第一步:连接RMAN

RMANrestore tablespace users;

第四步:打开数据库

RMANrecover tablespace system;
$rman target /
RMANrecover database;
$rman target /

系统表空间的恢复

第三步:恢复表空间

第一步:将表空间脱机

第二步:按照重置日志的方式打开数据库

在 DBA 的日常工作中不可避免存在着数据库的损坏,本文将主要介绍 Oracle
数据库遇到不同损坏级别下的应该采用的恢复方法,供读者在遇到此类情景时,能的找到适合自己的恢复方法,提高工作效率。

至此,一个非系统表空间的数据文件恢复过程完成。

如果是还原表空间或者系统表空间损坏,则数据库系统不能运行,数据库一定不能处于打开状态,在RMAN环境下连接Oracle,注意,此时的连接并不是连接到已经打开的数据库,而是连接到处于装载状态下的数据库:

第一步:进行数据库的不完全恢复

由于数据库日志可以采用多成员机制,这种方式保证在单个日志文件损坏下的系统连续运行。即便一个日志组的所有成员都已经损坏,如果是当前日志组,则数据丢失、数据库执行不完全恢复是必然的选择。如果不是当前日志组,可能根本无须修复,直接将日志组删除,再创建新的日志组就可以了。

第二步:在RMAN环境中,注册数据库ID(DBID)

由于数据库以resetlogs方式打开,虽然本系统数据并未丢失,但由于所有日志文件已被重置,因此,需要进行完全数据库备份。
如果控制文件损坏,且伴着其他数据文件等的损坏,则按照本节介绍的控制文件恢复,加上数据库的崩溃恢复,可以实现数据库的完全恢复。

$rman target /

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

RMANrecover database;

发表评论

电子邮件地址不会被公开。 必填项已用*标注