当前位置: 移动技术网 > IT编程>数据库>Oracle > ORACLERMAN备份及还原RMAN可以进行增量备份:数据库,表空间,数据文件

ORACLERMAN备份及还原RMAN可以进行增量备份:数据库,表空间,数据文件

2019年04月25日  | 移动技术网IT编程  | 我要评论

托雷斯身价,避水金睛兽,超级礼物高清下载

oracle rman备份及还原




rman可以进行增量备份:,表空间,数据文件


只有使用过的block可以被备份成backup set


表空间与数据文件对应关系:dba_data_files / v$datafile_header


在noarchivelog模式下,可以使用rman备份read-only和offline的表空间


oracle rman停机备份:


备份


rman连接上oracle,windows下在命令模式下


rman target /


连接本地数据库用的是本地认证模式。rman连接数据库必须在dedicate模式下。因此在share模式下的数据库应配置一个dedicate的连接用于rman连接。


如果要把控制文件、参数文件也一起备份


configure controfile autobackup on;//打开autobackup
configure controfile autobackup off;//关闭autobackup
关闭数据库
rman>shutdown immediate
mount 数据库rman的备份必须在mount模式下,这也就是控制文件备份的重要。
rman>startup mount
最简单的备份
rman>backup database
就这一句就ok了
这样的备份,备份集在数据库默认位置。%oracle_home%/ora92/database
当然你也可以用run来灵活的定义你的备份。
rman>run{
>allocate chennel d1 type disk; //分配通道
>backup full database //全备份数据库
>include current controlfile //包括当前的controlfile
>format 'e:\oracle\orders\db_%d_%s_%p_%t_%t'; //备份文件位置和文件名格式
>release channel d1;//释放通道
>}


恢复
1、数据文件损坏,而控制文件是好,或者已经恢复
rman连上数据库
startup mount
restore database
recover database noredo;
alter database open resetlogs;
recover database noredo该命令指示rman执行最后的恢复操作以准备打开这个数据库。因为是在noarchivelog模式下并且不应用任何归档的重做日志并且丢失了联机重做日志,所以要求在这条命令中使用noredo参数。


最后使用alter database open resetlogs打开数据库。由于已经还原了控制文件并且需要重新构建重做日志,所以必须用resetlogs。
2、还原控制文件
startup nomount;
set dbid = <dbid>
restore controlfile from autobackup ;
alter database mount;
restore database;
recover database noredo;
alter database open resetlogs;
alter database open;
在这个例子中有一个dbid这个可以
select * from v$database中查到。但是一个数据库在控制文件坏掉了不能open如何能看的到呢这就在平时把这个dbid记下来。
这是最简单的用rman备份与恢复的例子,但从中可以看到rman备份与恢复的梗概。


oracle rman在线备份:


1. oracle rman在线备份之前需要切换日志方式为归档日志;


a. 关闭数据库
sql> shutdown immediate;


b. 启动数据库到mount状态
sql> startup mount;


c. 启用归档模式
sql> alter database archivelog;


d. 查看修改后的数据库备份和恢复策略及归档文件的位置
sql> archive log list;


注意:修改成archive模式之后,之前所有的数据库备份均无效。


e. 修改相应的初始化参数
oracle10g之前,你还需要修改初始化参数使数据库处于自动归档模式。
可用sql> show parameter log_archive_start;查看
name type value
------------------------------------ ----------- --------------
log_archive_start boolean false
sql> alter system set log_archive_start=true scope=spfile;
重启数据库此参数生效,此时数据库处于自动归档模式。


当然你也可以不做第5步,直接
sql>archive log start
使数据库启用自动归档,但是重启后数据库仍然处于手工归档模式。


2. 运行:rman target /


3. rman信息保存:默认保存在control file中,保存周期7天


调整:alter system set control_file_record_keep_time=天数;


4. 搭建独立数据库保存rman备份信息


由于只有一个数据库,就建在本身数据库上


a. 创建表空间rc:create tablespace rc datafile size 10m autoextend on next 1m


b. 创建用户rc:


create user rc identified by rc temporary tablespace temp default tablespace rc quota unlimited on rc;


c. 授权rc: grant recovery_catalog_owner to rc;


d. 搭建:


rman catalog rc/rc@orcl


rman>create catalog;


rman>exit


rman target / catalog rc/rc@orcl


rman>register database;


e. 使用:


rman target / catalog rc/rc@orcl


这种连接方式后,数据就会在控制文件和catalog各存一份


5. 全局参数配置:


查看:show all;


修改:configure 参数名称 具体设置


例如:修改是否自动保存control file:configure controlfile autobackup on;


恢复默认值:configure 参数名称 clear;


关键参数:


a. 保存周期:retention policy


默认是redundancy 1:保留一个备份;


可用值:recovery window of 7 days:保留可以满足7天恢复周期的备份


根据条件检查:report obsolete:rman会根据保存周期参数来列出可以删除的备份


删除多于备份:delete obsolete


b. 优化备份:backup optimization:rman会自动忽略已经备份过的内容(数据文件,归档日志,备份块)


前提:备份指定同一个channel


c. 默认备份渠道:default device type to disk:默认备份到磁盘,路径为flash recovery area


渠道类型:


disk:文件路径


flash recovery area:默认路径


sbt:磁带设备


修改到磁盘其他路径:configure channel device type disk format '路径/%u';


例如:configure channel device type disk format '/tmp/movedata/%u';


6. 备份结果


backupset:backup (as backupset) 备份内容,里面分割成一个或多个backup piece,只有该类型备份可以进行压缩。


copy:backup as copy 备份内容


按类型查看:


backupset 查看:list backup summary(list backupset summary)


查看详情:list backupset bs


copy查看:list copy


按内容查看:


整个数据库:list backup of database;


tablespace:list backup of tablespace users;


数据文件:list backup of datafile n;


控制文件:list backup of controlfile;


归档日志:list archivelog all;


按规则查看:


查看根据保存规则可删除文件:report obsolete;


查看根据保存规则需要备份内容:report


rman和os结合检查:corsscheck 内容;




7. 备份方式
full:全备;


incremental:增量备份


可以增量备份的类型:数据库,数据文件,表空间


a. 首先需要做level 0备份作为基础。例如:backup incremental level 0 备份内容;(备份内容:所有使用过的data block,和image copy不同)


b. 增量类型:


累计增量:backup cumulative level 1 备份内容;


差异增量:backup incremental level 1 备份内容;


区别:累计增量始终是基于level 0的备份;


第一次差异增量是基于level 0的备份;从第二开始就是基于前一次增量备份


c. image备份增量方式:


第一次:以image全备为基础;


第二次:基于全备,做增量备份;完成后合成成一个image全备


第三次:基于第二次的image全备,做增量备份;完成后合成成一个image全备


实现:


例如:针对tablespace example


run {
recover copy of tablespace example with tag 'incr_update';
backup incremental level 1 for recover of copy with tag 'incr_update'
tablespace example;
}


d. 开启参数"block change tracking",可以提高速度


查看状态:select status from v$block_change_tracking;


默认值:disabled


开启:alter database enable block change tracking;(默认存放路径omf中的db_create_file_dest)


设置文件路径:


alter database enable block change tracking using file '/u01/oradata/mysid/rman_change_track.f' reuse;


关闭:alter database disable block change tracking;


备份并检查:bakcup check logical 备份内容;


不备份只是检查文件:backup validate 备份内容;


如果检查有报错,查看:v$backup_corruption;v$copy_corruption


8. 备份内容:


整个数据库:rman>backup database;


经典整库备份:backup as compressed backupset database include current controlfile plus archivelog delete input;


tablespace:rman>backup tablespace 名字;


数据文件:rman>backup datafile n; (n:具体的数据文件编号select file_name,file_id,tablespace_name from dba_data_files;)


控制文件:rman>backup current controlfile;


或者rman>backup database include current controlfile;


日志文件:rman>backup archivelog all;


或者rman>backup database plus archivelog;


参数文件:rman>backup spfile;


9. 还原


a. 完全恢复


方法一:从最近的备份集恢复整个数据库,数据库会自动运行redo和archive日志(完全恢复):


sql>shutdown immediate


sql>startup mount


rman>restore database;


rman>recover database;


rman>sql 'alter database open';


方法二:从tag恢复整个数据库,数据库也会运行redo 和archive 日志(完全恢复),结果与上面的脚本一样:


1. 查看标签:


rman> list backupset summary;
key ty lv s device type completion time #pieces #copies compressed tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
25 b a a disk 25-jul-11 1 1 no tag20110725t104634
28 b 0 a disk 25-jul-11 1 1 no tag20110725t104645
29 b a a disk 25-jul-11 1 1 no tag20110725t104711
30 b f a disk 25-jul-11 1 1 no tag20110725t104713
31 b a a disk 25-jul-11 1 1 no tag20110725t105333
32 b a a disk 25-jul-11 1 1 no tag20110725t105350
33 b 1 a disk 25-jul-11 1 1 no tag20110725t105353
34 b a a disk 25-jul-11 1 1 no tag20110725t105408
35 b f a disk 25-jul-11 1 1 no tag20110725t105411
36 b a a disk 25-jul-11 1 1 no tag20110725t111403
37 b 1 a disk 25-jul-11 1 1 no tag20110725t111405
38 b a a disk 25-jul-11 1 1 no tag20110725t111421
39 b f a disk 25-jul-11 1 1 no tag20110725t111423


2. 还原数据库:


sql>shutdown immediate;
sql>startup mount;
rman>restore database from tag tag20110725t104645;


rman> recover database from tag tag20110725t104645;


rman> alter database open;


b. 不完全恢复:


sql>shutdown immediate;
sql>startup mount;
rman>restore database from tag tag20110725t104645;


rman>recover database until time "to_date('2011-08-04 15:37:25','yyyy/mm/dd hh24:mi:ss')";


rman>alter database open resetlogs;
注意:使用后所有的备份集都无效了,确保安全需要重新对数据库进行全备(oracle10g之后,resetlog之前的备份还是可以用的)


关键表空间恢复(system / undotbs1 / sysaux):


sql>shutdown abort


sql>startup mount


rman>restore tablespace 名字;


rman>recover tablespace 名字;


rman>sql 'alter database open';


非关键表空间恢复(example / users ):


select * from v$datafile_header; 表空间与数据文件对应关系


sql>alter database datafile 数字 offline;


rman>restore tablespace 名字;


rman>recover tablespace 名字;


sql>alter database datafile 数字 online;


10. 删除备份


所有backup备份集:delete backup;


所有copy备份机:delete copy;


特定备份机:delete backupset 19;


删除根据保存规则可删除文件:delete obsolete;


删除过期的备份:


delete expired backupset;


delete expired copy;


11. run块


例如:


rman> run {
allocate channel c1 device type sbt;
allocate channel c2 device type sbt;
allocate channel c3 device type sbt;
backup
incremental level = 0
format '/disk1/backup/df_%d_%s_%p.bak'
(datafile 1,4,5 channel c1)
(datafile 2,3,9 channel c2)
(datafile 6,7,8 channel c3);
alter system archive log current;
}
12. 外部变量:


语言:set nls_lang=american


日期:set nls_date_format=yyyy-mm-dd....


13. rman sciprt


前提条件:有catalog


写法:(global表示可以由多个数据库调用)


create global script 名


comment "备注说明"


{脚本内容}


例如:


create global script abc


comment "test"


{backup current controlfile;}


调用:run {execute script 名}


例如:run {execute script abc;}


查看:print script 名


改写:


replace global script 名


comment "备注说明"


{脚本内容}


删除:delete script 名;


14. 永久保留备份


条件是备份不能保留在flash recovery area中;


a. 创建备份:


run


{
allocate channel c1 device type disk format '/tmp/autobackup/%u';
backup tablespace example;
}


b. 查找该备份:


list backupset of tablespace example;


c. 修改属性为永久


change backupset 编号 keep forever nologs;


15. 建立多个固定大小的备份


例如:example 测试备份大小是大于50m


run


{


allocate channel c1 device type disk maxpiecesize 10m format '/tmp/autobackup/%u';


backup tablespace example;


}


/tmp/autobackup目录下有六个文件


16.运行脚本:backup recovery area


备份内容:


a. control file autobackup;


b. incremental backup sets


17.block change tracking


a. 针对整个数据库;


b. 默认存放路径:background_dump_dest

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网