分类:
2012-03-08 21:05:03
原文地址:rman备份与还原 作者:louyuguang
备份方案与流程
目前有test1 , test2 ,CN_test 是用户建立的表
1. 建立一个catalog表空间,和即将要备份和恢复的数据不能为一个表空间
SQL> create tablespace recover1 datafile '/db/oracle/oradata/recover1' size 1024M;
2.建立一个rman2用户
授权:
3.登录创建目录
备份的时候自动备份控制文件:
Configure controlfile autobackup on;
4.注册目标数据库
5.分配通道,设置备份路径:
打开控制文件自动备份,并储存到/control目录下:
rman>configure controlfile autobackup on;
rman>configure controlfile autobakcup format for device type disk to '/control/%F';
6.开始备份:backup database plus archivelog;
增量0级备份:backup incremental level 0 database;
增量1级差异备份:backup incremental level 1 database;
增量1级累计备份:backup incremental level 1 cumulative database;
常见的备份策略(差异备份):
星期 |
差异增量 |
累积增量 |
星期天 |
0级 |
0级 |
星期一 |
2级 |
2级 |
星期二 |
2级 |
2级 |
星期三 |
1级 |
1级 |
星期四 |
2级 |
2级 |
星期五 |
2级 |
2级 |
星期六 |
2级 |
2级 |
星期天 |
0级 |
0级 |
还原步骤
1.因为有可能需要按时间点做还原,所以需要设置oracle用户的环境变量
NLS_DATE_FORMAT='mm/dd/yyyy hh24:mi:ss';
export NLS_DATE_FORMAT
2.使用rman登录
rman target=rman2/rman2@test
3.将数据库变更为挂载状态
startup mount;
强制更改:startup force mount;
4.以下为按照时间点不完全恢复
run{
set until time "to_date('2011/06/28 14:00:30','yyyy/mm/dd hh24:mi:ss')";
restore database;
recover database;
} <--- 基于时间点的不完全恢复
5.完成后重新挂载
alter database open resetlogs;
其他:
1.按时间点还原时候出现:
until time or recovery window is before resetlogs time 错误
需要将原型重置到恢复时间节点之前的resetlogs
list incarnation of database "test";
reset database to incarnation 数字 ;
源文档 <http://space.itpub.net/90618/viewspace-690291>
恢复误删除数据:
1.做全备份,归档当前日志:
2.备份一个pfile:
3.备份当前数据库
关闭数据库
SQL> shut immediate
数据库文件夹改名备份,并创建一个原库名文件夹
$mkdir test
4.启动数据库到nomount
5.恢复controlfile
run {
allocate channel t1 type disk;
restore controlfile from 'c-2053343983-20110630-01';
release channel t1;
}
6.启动数据库mount,恢复归档日志:
SQL> startup mount;
RMAN> list backup of archivelog all;
找到最近2两天的seq,进行恢复
run {
allocate channel t1 type disk;
set archivelog destination to '/db/oracle/flash_recovery_area/TEST/archivelog';
restore archivelog sequence 6 thread 1;
release channel t1;
}
7.恢复数据库
run {
allocate channel t1 type disk;
set until scn 916578;
restore database;
recover database;
release channel t1;
}
alter database open resetlogs;
scn用最后一个日志的next scn
exp按照用户导出
exp software/software rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 owner=software file=/oraexp/exp_software_201107.dmp log=/oraexp/exp_software_201107.log
Imp按用户导入
imp software/software fromuser=software touser=software rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y volsize=0 file=exp_software_201107.dmp