ORACLE RMAN备份及还原
RMAN可以进行增量备份:数据库,表空间,数据文件 只有使用过的block可以被备份成backup set 表空间与数据文件对应关系:dba_data_files / v$datafile_header 在noarchivelog模式下,可以使用RMAN备份read-only和offline的表空间 ORACLE RMAN停机备份: 备份 RMAN连接上ORACLE,WINDOWS下在命令模式下 RMANTARGET / 连接本地数据库用的是本地认证模式。RMAN连接数据库必须在dedicate模式下。因此在share模式下的数据库应配置一个dedicate的连接用于RMAN连接。 如果要把控制文件、参数文件也一起备份 configure controfile autobackup on;//打开autobackup 恢复 最后使用alter database open resetlogs打开数据库。由于已经还原了控制文件并且需要重新构建重做日志,所以必须用resetlogs。 ORACLE RMAN在线备份: 1. ORACLE RMAN在线备份之前需要切换日志方式为归档日志; a. 关闭数据库 b. 启动数据库到mount状态 c. 启用归档模式 d. 查看修改后的数据库备份和恢复策略及归档文件的位置 注意:修改成archive模式之后,之前所有的数据库备份均无效。 e. 修改相应的初始化参数 当然你也可以不做第5步,直接 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 rcTEMPORARY TABLESPACE tempDEFAULT TABLESPACE rc QUOTA UNLIMITED ON rc; c. 授权RC: GRANT RECOVERY_CATALOG_OWNER TO rc; d. 搭建: rman catalogrc/rc@orcl RMAN>create catalog; RMAN>exit rman target / catalogRMAN>register database; e. 使用: 这种连接方式后,数据就会在控制文件和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 ofdatabase; tablespace:list backup of tablespace users; 数据文件:list backup ofdatafile n; 控制文件:list backupof 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 { 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>startupmount RMAN>restore database; RMAN>recover database; RMAN>sql 'alter database open'; 方法二:从tag恢复整个数据库,数据库也会运行redo 和archive 日志(完全恢复),结果与上面的脚本一样: 1. 查看标签: RMAN> list backupset summary; 2. 还原数据库: SQL>shutdown immediate; RMAN> recover database from tag TAG20110725T104645; RMAN> alter database open; b. 不完全恢复: RMAN>recover database until time "to_date('2011-08-04 15:37:25','yyyy/mm/dd hh24:mi:ss')"; RMAN>alter database open resetlogs; 关键表空间恢复(system / undotbs1 / sysaux): SQL>shutdown abort RMAN>restore tablespace 名字; RMAN>recover tablespace 名字; 非关键表空间恢复(example / users): select * from v$datafile_header; 表空间与数据文件对应关系 SQL>alter database datafile数字 offline; 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 { 语言: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. 名 删除:delete script. 名; 14. 永久保留备份 条件是备份不能保留在flash recovery area中; a. 创建备份: RUN { 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- database – 在PostgreSQL表中创建多个索引的缺点
- AJAX实例:用AJAX进行一次指定的 HEAD 请求
- findViewById() returns null for custom compon
- c# – 在WebAPI和asp.net核心中使用基于Cookie的
- c – 如何使用std ::函数作为C风格的回调
- ruby – 如何从Twitter Gem Twitter Object返回T
- ruby-on-rails – 如何从Rails中的哈希列表中删除
- PostgreSQL / GIST index require "LIMIT
- postgresql – 如何复制与数据库服务器相同的环境
- ajax与springmvc传参方式总结