Oracle备份与恢复--RMAN篇

 
一. 整体数据库的备份与恢复
1.       备份:(在10G版本中测试)增量备份会自动备份数据库中的数据库文件,控制文件,参数文件,备份完成后会有两个备份集生成,一个是由数据文件组成,另一个是由控制文件和参数文件组成。之所以自动备份控制文件,也许是由于RMAN是在非目录(nocatalog)的环境下工作的结果,因为此时所有的备份信息都存放在控制文件中。
问题 1:如何记录下控制文件备份集的名字,以便在特定情况下单独使用它们。免去再另外备份一次的麻烦。
备份脚本如下:
RMAN target system/Eisoo@test nocatalog cmdfile d:/backup/res.rcv (登录到RMAN)
 
Run {
        Allocate channel d1 type disk;
        Backup as compressed backupset( 可选的 ) incremental level 0 format
               ‘d:/backup/db_%d_%s_%p_%t’ database;
        Release channel d1;
        Alter database open;
}
 
2.       恢复:整体数据库的恢复在数据库被加载(mount)的情况下进行,因为RMAN需要读取控制文件中的备份信息。数据库的恢复脚本如下:
 
Shutdown immediate/abort; //有多中情况。
Startup mount;
Run {
Allocate channel d1 type disk;
Restore database;
Recover database;
Release channel d1;
Alter database open;
}
注意:在恢复脚本中的第一句(shutdown immediate/abort),当我们恢复时,数据库已经处于关闭状态时,脚本中如果有shutdown immediate/abort,则RMAN恢复会出错。当数据库处于Open状态时,如果不用shutdown immediate/abort,我们就不能将数据库以我们需要的方式(startup mount/nomount)启动,这样的话在恢复过程也会出问题。 问题 2:所以此时要想办法获得数据库的状态,再决定脚本的构成。
 
整体数据库的时间点恢复:
时间点恢复属于不完全恢复的一种,一般用于用户恢复误删除的某个表或某些记录,此时整个数据库(包括控制文件)会恢复到用户指定的某个时间点,这就意味着这个时间点以后的操作都将无效。其脚本如下:
 
Run {
        Set until time “TO_DATE(‘08/07/2007 12:00:00’, ‘MM/DD/YYYY HH24:MI:SS’)”;
        Shutdown immediate;
        Startup mount;
        Allocate channel d1 type disk;
        Restore database;
        Recover database;
        Release channel d1;
        Alter database open resetlogs;
}
当数据库被恢复后,会通过Alter database open resetlogs将重置日志,此时,新的控制文件会将以前的备份信息丢失,这样数据库就不能在用不完全恢复去恢复到‘08/07/2007 12:00:00之前的某个时间点。有一个办法就是首先恢复控制文件到先前的某个版本,然后再恢复数据库。
      
       建议不完全恢复都采用这种做法。先恢复控制文件,再恢复数据文件。
Shutdown abort;
Startup nomount;
Run {
        Allocate channel d1 type disk;
        Restore controlfile from ‘d:/backup/CTL_TEST_0_1_6555’;
        Release channel d1 ;
Alter database mount;
RMAN> run {
    set until time "TO_DATE('08/08/2007 10:30:00','MM/DD/YYYY HH24:MI:SS')";
     shutdown immediate;
    startup mount;
    allocate channel d1 type disk;
    restore database;
    recover database;
    release channel d1;
    alter database open resetlogs;
}
 
二. 表空间的备份与恢复
        表空间备份与恢复主要针对于大型数据库中,某个表空间数据变化非常大,增长速度非常快的情况。表空间的备份实现脚本:
run {
allocate channel d1 type disk;
backup tablespace "TEST","USERS" format 'd:/backup/tb_%d_%s_%p_%t';
release channel d1;
}
 
       恢复时,如果用户是要恢复被删除的表空间中的表或视图,或者是使用者用drop tablespace正常命令删除了表空间,此时控制文件中记录的数据库结构也跟着做了改变,此时只能用不完全恢复,让数据库恢复到以前的一个时间点或SCN。先恢复控制文件,再恢复表空间。
Shutdown abort;
Startup nomount;
run {
Allocate channel d1 type disk;
Restore controlfile from ‘d:/backup/CTL_TEST_0_1_6555’;
Release channel d1 ;
Alter database open; //要为打开状态
 
set until time "TO_DATE('08/08/2007 10:50:00','MM/DD/YYYY HH24:MI:SS')";
sql 'alter tablespace TEST, USERS offline immediate';
allocate channel d1 type disk;
restore tablespace  TEST, USERS;
recover tablespace  TEST, USERS;
release channel d1;
sql 'alter tablespace TEST, USERS online';
}
      注意: After you perform TSPITR on a tablespace, you cannot use backups of that tablespace
from before the TSPITR was completed and the tablespace put back on line. If you
start using the recovered tablespaces without taking a backup, you are running your
database without a usable backup of those tablespaces. For this example, the users
and tools tablespaces must be backed up, as follows:
RMAN> BACKUP TABLESPACE users, tools;
You can then safely bring the tablespaces online, as follows:
RMAN> SQL "ALTER TABLESPACE users, tools ONLINE";
Your recovered tablespaces are now ready for use.
 
三. 归档日志的备份与恢复
1. 备份
归档日志在数据库中占很重要的地位,它可以让数据库恢复到以前的任一时间点。结合数据库的增量备份,组成一个整体的数据库备份策略。一般来说,最好是保存归档日志有三个副本存在,以确保数据的安全性。
 
Run {
       Allocate channel d1 type disk;
       Sql ‘alter system archive log current’;
Backup archivelog from time ‘SYSDATE-2’ until ‘SYSDATE-1’ format ‘d:/backup/arch_%d_%s_%p_%t’ delete input;
       Release channel d1;
}
 
2. 恢复
在对数据库进行恢复时,RMAN会自动根据备份的归档日志信息来查找归档记录,达到恢复的目的。当然也可以利用脚本来恢复归档日志。
 
四. 控制文件的备份与恢复
1. 备份
在没有恢复目录的恢复模式下,控制文件保存了RMAN操作的所有信息,因为控制文件大小有限,所以它不像恢复目录那样保存所有历史记录,它只能保存一段时间的记录。系统默认为7天。所以我们必须在备份数据文件的同时也要对控制文件进行备份。
 
Shutdown immediate;
Startup mount;
Run {
       Allocate channel d1 type disk;
       Backup current controlfile format ‘d:/backup/ctl_%d_%s_%p_%t’;
       Release channel d1;
}
 
2. 恢复
恢复控制文件是在系统处于NOMOUNT的状态下进行的,此时控制文件没有被加载,所以我们必须指定需要恢复的文件(控制文件备份集)的具体位置,所以这就要求我们在备份时,应该记录下备份集的名字和路径,以便以后恢复时使用。
 
Shutdown abort;
Startup nomount;
Run {
       Allocate channel d1 type disk;
       Restore controlfile form ‘d:/backup/path+name’;
       Release channel d1;
}
Alter database mount;
Recover database; //恢复数据库,使其与控制文件保持一致状态
Alter database open resetlogs;
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值