ORACLE RMAN备份及还原 RMAN能够进行增量备份:数据库,表空间,数据文件
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
ORACLE RMAN备份及还原 RMAN能够进行增量备份:数据库,表空间,数据文件的更多相关文章
- Oracle数据库表空间 数据文件 用户 以及表创建的SQL代码
--create the tablespace CREATE SMALLFILE TABLESPACE "TABLE_CONTAINER" --创建表空间 DATAFILE 'E: ...
- oracle 表空间 数据文件 表的关系
数据文件是表空间的容器,增加数据文件是增大表空间的容量,而不是往表空间里添加数据因此数据文件肯定能添加,如果表空间用完了,再添加新的数据就会报错你可以这样理解,数据库是一个箱子,表空间是箱子里的抽屉, ...
- [Oracle]System 表空间的文件丢失
如果system 表空间的文件丢失,假设有备份的情况,可以恢复.数据库需要设置为mount 状态,然后restore/recover datafile 模拟实验: SQL> select nam ...
- oracle数据库表空间追加数据库文件方法
oracle数据库表空间追加数据库文件方法 针对非大文件方式表空间,允许追加文件进行表空间的扩展,单个文件最大大小是32G 第一种方式:表空间增加数据文件 www.2cto.com 1 ...
- 新建oracle数据库表空间及删除表空间和用户
进入oracle的命令控制台,按具体情况执行以下命令: sqlplus 默认数据库普通用户登录sqlplus / as sysdba 默认数据库管理员登录sqlplus username/passwo ...
- Oracle数据库表空间与数据文件的关系描述正确的是( )
Oracle数据库表空间与数据文件的关系描述正确的是( ) A.一个表空间只能对应一个数据文件 B.一个表空间可以对应多个数据文件 C.一个数据文件可以对应多个表空间 D.表空间与数据文件没任何对应关 ...
- Oracle数据库表空间与用户的关系是 ( )
Oracle数据库表空间与用户的关系是 ( )? A.一对一 B.一对多 C.多对一 D.多对多 解答: D 一个用户可以使用一个或多个表空间,一个表空间也可以供多个用户使用.
- 查看Oracle数据库表空间大小(空闲、已使用),是否要增加表空间的数据文件
查看Oracle数据库表空间大小(空闲.已使用),是否要增加表空间的数据文件 1.查看表空间已经使用的百分比 Sql代码 select a.tablespace_name,a.bytes/1024/1 ...
- Oracle数据库表空间常用操作
1. 查看所有表空间大小 SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tables ...
随机推荐
- 项目: python爬虫 福利 煎蛋网妹子图
嘿嘿嘿! 嘿嘿嘿! 福利一波, 之前看小甲鱼的python教学视频的时候, 看到上面教的爬虫, 爬美女图片的, 心很痒痒, 但是不知道为啥, 按照视频一个字一个字敲的代码,总是报错, 有一天花了 一下 ...
- Gym 100952 G. The jar of divisors
http://codeforces.com/gym/100952/problem/G G. The jar of divisors time limit per test 2 seconds memo ...
- POJ 2981 Strange Way to Express Integers 模线性方程组
http://poj.org/problem?id=2891 结果看了半天还是没懂那个模的含义...懂了我再补充... 其他的思路都在注释里 /********************* Templa ...
- ElasticSearch 5.2.2 集群环境的搭建
在之前 ElasticSearch 搭建好之后,我们通过 elasticsearch-header 插件在查看 ES 服务的时候,发现 cluster-health 显示的是 YELLOW. Why? ...
- Mysql学习总结(18)——Mysql主从架构的复制原理及配置详解
一.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...
- 《深入理解java虚拟机》:类的初始化
深入理解java虚拟机>:类的初始化 类从被载入到虚拟机内存中開始.到卸载出内存为止,它的整个生命周期包含:载入.验证.准备.解析.初始化.使用和卸载七个阶段.当中验证.准备.解析3个部分统称为 ...
- 结构体类型重声明导致的bug一个
bug前提条件 当模块比較多.头文件较多,某个结构体类型会在当前模块中又一次声明进而引用其成员,而不直接包括其它模块的头文件. 这种优点是不引入不须要的类型声明到此模块.头文件包括的交叉:坏处是,添加 ...
- OpenStack_Swift源代码分析——ObjectReplicator源代码分析(1)
1.ObjectorReplicator的启动 首先执行启动脚本 swift-init object-replicator start 此执行脚本的执行过程和ring执行脚本执行过程差点儿相同.找到s ...
- javascript脚本从载入浏览器到显示执行的过程解析
版权声明:本文为博主原创文章,未经博主允许不得转载. 简单的代码: <script type="text/javascript" src="xxx.js" ...
- C# foreach 循环遍历数组
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...