backup与recover

完全恢复:

1.关闭DB
2.拷贝文件
3.启动DB。<出错>startup mount
4.recover database until cancel using backup controlfile;
5.alter database open resetlogs;

一.数据库是打开状态,系统表空间和undo表空间未损坏。

1.表空间offline 2.拷贝备份文件 3.执行恢复操作recover tablespace 名字 或recover datafile #
4.表空间online

二.数据库是关闭状态,系统表空间和undo表空间损坏
1.startup mount
2.拷贝文件
3.recover database;
4.alter database open;

三.数据库是关闭状态,系统表空间和undo表空间未损害
1.startup mount
2.alter database datafile XX offline;
3.alter database open;
4.拷贝文件
5.recover datafile xx;
6.alter database datafile XX online;

四.数据无备份,但是所有的归档都存在。

不完全恢复:
一.基于时间的不完全恢复
1.误删除 看<alert>,确定在几点做的误操作
如果alert看不到,可以做日志挖掘
2.备份,干净关闭数据库
3.建议冷备份当前所有文件;如数据文件,redo,控制文件,归档文件,以防越改越糟
4.拷贝以前的备份(redolog,数据文件,控制文件);
5.startup mount;
6.alter session set NLS_date_format='yyyy-mm-dd hh24:mi:ss';
7.recover database until time '时间格式';
8.alter database open resetlogs;<v$datafile>
9.alter database rename file '看到的' to '目的';
10.select * from v$recover_file;
11.recover tablespace XX;
12.alter database datafile X online;
13.做一次完整的备份。

二.联机日志文件被删除
1.关闭DB
2.建议备份当前;
3.拷贝以前的备份;
4.startup mount;
5.recover database until cancel;
6.alter database open resetlogs;
7.做一次完整的备份

三.丢失所有的控制文件
1.对控制文件做了备份。
alter database backup controlfile to 'XXX';
2.做update操作
3.关闭数据库
4.模拟失败<控制文件别名>
5.备份的ctl拷贝目的路径
6.启动到mount
7.select group#,status from v$log;<看当前日志组>
select file#,checkpoint_change# from v$datafile;《看控制文件》
select file#,checkpoint_change# from v$datafile_header;《看数据文件》
如果scn不一致,不能auto恢复
8.recover database using backup controlfile;
/u01/app/oracle/oradata/openlab/XXX.log《当前的日志》
9.alter database open resetlogs;

四.控制文件备份的方法:
alter database backup controlfile to '名字';
alter database backup controlfile to trace;


rman
oracle备份和恢复的一个工具
补充:unix和linux dump--->restore
dump -0S /dev/sad1

dump -0u -f /opt/20130429 /dev/sda1

restore -tf /opt/20130429
restore -if /opt/20130429
>ls
>add file_name
>extract
1
>y|n
>q

tar+dump+ssh


链接
$rman
rman>connect target /《nocatlog模式》
rman>show all;<看rman参数的设置>

rman可以备份数据库的那些数据
1数据文件
2控制文件
3归档文件
4参数文件<spfile>
5不可以备份redo

备份方式
1.备份集
2.镜像

rman不一致

备份
1.report《要做啥》
2.list《做过啥》
3.backup database;<datafile,controlfile,spfile>
4.backup tablespace XXX;<某个表空间>
5.backup datafile XXX;<备份某个数据文件>
6.list backup;《列出备份信息---all》
7.list backup of tablespace XXX;《列出表空间备份信息》

如何恢复
1.数据库的状态?mount
2.首先在备份文件把文件提取到指定目录。。《controlfile》 restore
3.恢复操作 recover

rman参数设置
CONFIGURE RETENTION POLICY TO REDUNDANCY 1《至少有一个完整的备份》 配置冗余策略
<CONFIGURE RETENTION POLICY TO recovery window of 6 days;> 恢复到6天以内的任何一个时刻
CONFIGURE BACKUP OPTIMIZATION OFF; 《配置备份优化》
CONFIGURE DEFAULT DEVICE TYPE TO DISK;《备份设备》
CONFIGURE CONTROLFILE AUTOBACKUP OFF; 《自动备份控制文件》元数据<nocatlog>
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 '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_openlab.f'; # default


累计增量备份
backup incremental level=0 database;《周日》
backup incremental level=2 cumulative database;《周一》
backup incremental level=2 cumulative database;《周二》
backup incremental level=1 cumulative database;3
backup incremental level=2 cumulative database;4
backup incremental level=2 cumulative database;5
backup incremental level=2 cumulative database;6

差异增量备份
backup incremental level 0 database;《周日》
backup incremental level=2 database;《周一》
backup incremental level=2 database;《周二》
backup incremental level=1 database;3
backup incremental level=2 database;4
backup incremental level=2 database;5
backup incremental level=2 database;6


检查文件是否过期《OS管理员误删除》
crosscheck backupset of database;
标记删除的备份文件为过期


备份归档文件
backup database plus archivelog;备份数据库时候,同事备份归档。
backup as compressed backupset database plus archivelog;备份数据库时候压缩,同时备份归档。
backup archivelog all;备份所有的归档文件
backup archivelog from time 'sysdate-3';备份3天前
backup archivelog until time 'sysdate-3' delete input;截止
backup archivelog from sequence XX;从归档的指定序列号开始备份
《SQL>archive log list;》
backup archivelog all delete input;备份归档,删除归档文件
backup archivelog all delete all input;备份归档,删除所有的归档

单独备份控制文件
backup current controfile;

备份时候做压缩
backup as compressed backupset database;
rman只有备份集可以进行压缩备份,镜像拷贝不允许压缩

备份时候跳过
backup database skip readonly;
backup database skip offline;
backup database skip inaccessible;


非系统表空间损坏,控制文件和联机日志未损坏。。恢复的方法:
1.shutdown immediate;
2.startup mount;
3.rman target /
4.restore tablespace XXX;
5.recover database;
6.alter database open;
或者
run {
sql 'alter tablespace XXX offline immediate';
allocate channel c1 type disk;
allocate channel c2 type disk;
restore tablespace XXX;
recover tablespace XXX;
sql 'alter tablespace XXX online';
release channel c1;
release channel c2;
}
非系统数据文件损坏,控制文件和联机日志未损坏。。恢复的方法<undo>
1.关闭DB
2.启动mount
3.rman链接
4.restore datafile XX;
5.recover datafile XX;
6.打开DB

系统表空间损坏,控制文件和联机日志未损坏。。恢复的方法
1.关闭DB
2.启动mount
3.rman链接
4.restore tablespace XX;
5.recover database;
6.打开DB

所有的数据文件丢失,控制文件和联机日志未损坏。。恢复的方法
1.关闭DB
2.启动mount
3.rman链接
4.restore database;
5.recover database;
6.打开DB;

系统表空间损坏,users01.dbf文件丢失。控制文件和联机日志未丢失?


基于时间的不完全恢复《set until time》
to_date???????
run {
set until time "to_date('09/09/2012 14:39:00','mm/dd/yyyy hh24:mi:ss')";
restore datafile 4;
recover datafile 4;
}

基于SCN的
run {
XXX;
}


参数文件丢失


控制文件丢失


无法恢复到原来的路径

run {
allocate channel t1 type disk;
allocate channel t3 type disk;
backup datafile 1 channel t1;
backup datafile 2 channel t1;
release channel t1;
release channel t2;
sql 'alter system checkpoint';
}

原文地址:https://www.cnblogs.com/wwxbi/p/4216719.html