这里使用Oracle 12C来大概演示说明一下rman的基本用法,这里不会深入讨论,因为本人也只是刚刚才接触,只是结合了网上的一些文章以及自己的实践来总结并拿出来大家学习,谢谢
目录
一、关于备份与恢复
二、逻辑备份(expdp和impdp)
三、物理备份
四、数据库日常备份计划及脚本参考
一、关于备份与恢复
1、备份定义
备份就是把数据库复制到转储设备的过程。其中,转储设备是指用于放置数据库副本的磁带或磁盘。通常也将存放于转储设备中的数据库的副本称为原数据库的备份或转储。备份是一份数据副本
2、备份分类
从物理与逻辑的角度来分类:
从物理与逻辑的,备份可以分为物理备份和逻辑备份。
物理备份:对数据库操作系统的物理文件(数据文件,控制文件和日志文件)的备份。物理备份又可以分为脱机备份(冷备份)和联机备份(热备份),前者是在关闭数据库的时候进行的,后者是以归档日志的方式对运行的数据库进行备份。可以使用oracle的恢复管理器(RMAN)或操作系统命令进行数据库的物理备份。
逻辑备份:对数据库逻辑组件(如表和存储过程等数据库对象)的备份。逻辑备份的手段很多,如传统的EXP,数据泵(EXPDP),数据库闪回技术等第三方工具,都可以进行数据库的逻辑备份。
从数据库的备份角度分类:
从数据库的备份角度,备份可以分为完全备份和增量备份和差异备份
完全备份:每次对数据库进行完整备份,当发生数据丢失的灾难时,完全备份无需依赖其他信息即可实现100%的数据恢复,其恢复时间最短且操作最方便。
增量备份:只有那些在上次完全备份或增量备份后被修改的文件才会被备份。优点是备份数据量小,需要的时间短,缺点是恢复的时候需要依赖以前备份记录,出问题的风险较大。
差异备份:备份那些自从上次完全备份之后被修改过的文件。从差异备份中恢复数据的时间较短,因此只需要两份数据---最后一次完整备份和最后一次差异备份,缺点是每次备份需要的时间较长。
3、恢复定义
恢复就是发生故障后,利用已备份的数据文件或控制文件,重新建立一个完整的数据库
4、恢复分类
实例恢复:当oracle实例出现失败后,oracle自动进行的恢复
介质恢复:当存放数据库的介质出现故障时所作的恢复。介质恢复又分为完全恢复和不完全恢复
完全恢复:将数据库恢复到数据库失败时的状态。这种恢复是通过装载数据库备份并应用全部的重做日志做到的。
不完全恢复:将数据库恢复到数据库失败前的某一时刻的状态。这种恢复是通过装载数据库备份并应用部分的重做日志做到的。进行不完全恢复后,必须在启动数据库时用resetlogs选项重设联机重做日志。
二、逻辑备份(expdp和impdp)
1、expdp/impdp和exp/imp的区别
exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
expdp和impdp是服务端的工具程序,他们只能在oracle服务端使用,不能在客户端使用。
imp只适用于exp导出的文件,不适用于expdp导出文件;impdp只适用于expdp导出的文件,而不适用于exp导出文件。
对于10g以上的服务器,使用exp通常不能导出0行数据的空表,而此时必须使用expdp导出。
本节主要讲解的是expdp/impdp的用法,不涉及到exp和imp
2、导出数据
在准备要备份的数据库服务器上创建备份目录(在后面使用sql命令创建的逻辑目录并不是在OS上创建目录,所以我们先要在服务器上创建一个目录)
用管理员身份登录到sqlplus
创建逻辑目录
查看管理员目录是否存在
使用管理员用户给指定的用户赋予在该目录的操作权限(比如该用户需要备份自己的数据)
导出可有五种方式
1、“full=y”,全量导出数据库
2、schemas按用户导出
3、按表空间导出
4、导出表
5、按查询条件导出
2、导入数据
首先将需要导入的数据文件存放导需要导入的数据库服务器上
参照导出的时候的建立目录方式建立物理目录和逻辑目录(只是建目录即可,如果需要给用户权限则加上给用户权限的那步)
使用命令导入,同时,导入方式也可以分为五种,分别对应着导出的五种方式
1、“full=y”,全量导入数据库;
2、同名用户导入,从用户A导入到用户A;
3、
①从A用户中把表table1和table2导入到B用户中;
②将表空间TBS01、TBS02、TBS03导入到表空间A_TBS,将用户B的数据导入到A,并生成新的oid防止冲突;
4、导入表空间;
5、追加数据;
3、并行操作
可以通过 PARALLEL 参数为导出使用一个以上的线程来显著地加速作业。每个线程创建一个单独的转储文件,因此参数 dumpfile 应当拥有和并行度一样多的项目。您可以指定通配符作为文件名,而不是显式地输入各个文件名,例如:
注意:dumpfile 参数拥有一个通配符 %U,它指示文件将按需要创建,格式将为expCASES_nn.dmp,其中nn 从 01 开始,然后按需要向上增加。
在并行模式下,状态屏幕将显示四个工作进程。(在默认模式下,只有一个进程是可见的)所有的工作进程同步取出数据,并在状态屏幕上显示它们的进度。
分离访问数据文件和转储目录文件系统的输入/输出通道是很重要的。否则,与维护 Data Pump 作业相关的开销可能超过并行线程的效益,并因此而降低性能。并行方式只有在表的数量多于并行值并且表很大时才是有效的。
数据库监控
您还可以从数据库视图获得关于运行的 Data Pump 作业的更多信息。监控作业的主视图是 DBA_DATAPUMP_JOBS,它将告诉您在作业上有多少个工作进程(列 DEGREE)在工作。
另一个重要的视图是 DBA_DATAPUMP_SESSIONS,当它与上述视图和 V$SESSION 结合时将给出主前台进程的会话 SID。
这条指令显示前台进程的会话。更多有用的信息可以从警报日志中获得。当进程启动时,MCP 和工作进程在警报日志中显示如下:
它显示为数据泵操作启动的会话的 PID。您可以用以下查询找到实际的 SID:
PROGRAM 列将对应警报日志文件中的名称显示进程 DM (为主进程)或 DW (为工作进程)。如果一个工作进程使用了并行查询,比如说 SID 23,您可以在视图 V$PX_SESSION 中看到它,并把它找出来。它将为您显示从 SID 23 代表的工作进程中运行的所有并行查询会话:
从视图 V$SESSION_LONGOPS
中可以获得其它的有用信息来预测完成作业将花费的时间。
列 totalwork 显示总工作量,该列的 sofar 数量被加和到当前的时刻 — 因而您可以用它来估计还要花多长时间。
4、不同版本数据库之间数据互导
如将11g数据库的数据导入导10g数据库的服务器上
首先在11g服务器上导出
然后在10g数据库服务器上导入
三、物理备份
1、使用rman工具备份及恢复
说明:
1. RMAN是 ORACLE提供的一个备份与恢复的工具,可以用来执行完全或不完全的数据库恢复。
2. RMAN不能用于备份初始化参数文件和口令文件。
3. 与传统工具相比,RMAN具有独特的优势:跳过未使用的数据块。当备份一个RMAN备份集时,RMAN不会备份从未被写入的数据块,而传统的方式无法获知那些是未被使用的数据块。
4. RMAN可以进行增量备份(增量备份是针对于上一次备份(无论是哪种备份):备份上一次备份后,所有发生变化的文件)
1、首先需要在将要备份的数据库服务器上切换服务器的归档模式,如果已经是归档模式了,那么可以跳过此步
2、启动并连接到rman(恢复管理器)
可以开个专门用于备份的用户,不过这里使用了sys用户
3、基本设置
具体路径可自己安装需求改,但是登录的用户需要对备份的目录有读写权限,目录建立方法可参考上面逻辑备份的备份目录建立
说明:
format:
%c:备份片的拷贝数(从1开始编号);
%d:数据库名称;
%D:位于该月中的天数(DD);
%M:位于该年中的月份(MM);
%F:一个基于DBID唯一的名称,这个格式的形式为c-xxx-YYYYMMDD-QQ,其中xxx位该数据库的DBID,YYYYMMDD为日期,QQ是一个1-256的序列;
%n:数据库名称,并且会在右侧用x字符进行填充,使其保持长度为8;
%u:是一个由备份集编号和建立时间压缩后组成的8字符名称。利用%u可以为每个备份集产生一个唯一的名称;
%p:表示备份集中的备份片的编号,从1开始编号;
%U:是%u_%p_%c的简写形式,利用它可以为每一个备份片段(既磁盘文件)生成一个唯一的名称,这是最常用的命名方式;
%t:备份集时间戳;
%T:年月日格式(YYYYMMDD);
channel的概念:一个channel是rman于目标数据库之间的一个连接,"allocate channel"命令在目标数据库启动一个服务器进程,同时必须定义服务器进程执行备份和恢复操作使用的I/O类型
通道控制命令可以用来:
控制rman使用的OS资源
影响并行度
指定I/O带宽的限制值(设置 limit read rate 参数)
指定备份片大小的限制(设置 limit kbytes)
指定当前打开文件的限制值(设置 limit maxopenfiles)
4、查看所有配置
5、查看数据库方案报表
6、全量备份数据库及全量恢复
1、全量备份全库
2、备份表空间
这里也可以改为备份某个表空间,比如 back tablespace users;就是备份users的表空间
3、备份归档日志
4、复制数据文件
说明一下,这里的数字1对应着命令report schema结果中的1
5、查看备份和文件副本
查看复制文件
6、验证备份
这里说明一下,3这个数字代表的是备份集的编号,可以在list backup命令的结果中查看
7、从自动备份中恢复表空间
如果只丢失了特定的表空间的数据文件,那么可以选择只恢复这个表空间,而不是恢复整个数据库,表空间恢复可以在不关闭数据库的情况下进行,只需要将需要恢复的表空间offline
现在模拟某个表空间丢失或损坏
现在开始恢复表空间users01
进入到rman
使表空间脱机
还原表空间
恢复表空间
将表空间联机
8、恢复和复原全数据库
模拟数据文件丢失或损坏
现在重新启动实例会报错
查看数据库当前状态
登录到rman
还原数据库
恢复数据库
打开数据库并登录数据库查看状态
此时数据文件已恢复了
9、某一个数据文件恢复
查看系统当前的数据文件
查看文件状态
模拟删除文件
将数据文件设置未offline状态
此时数据文件状态未recover
现在来恢复数据文件
进入到rman
还原和恢复数据文件
将数据文件设置为online并查看状态
7、增量备份数据库及增量恢复
本节从一个例子来说明增量恢复,首先在数据库表中插入一条数据
接着用rman做一次全量备份(设置的参数可参考上面的设置)
然后对数据库数据作更改,这里添加了一条数据
然后再做一次差异增量备份
这里再添加一条数据
然后再进行一次备份
然后再做一次差异增量备份
这里使用了scn的恢复方式
查看当前scn
然后对数据进行删除
还有一种常用的获取到scn的方式就是执行下面语句,将删除的时间转换为scn
然后我们现在来进行恢复
关闭数据库实例,然后开启实例,单不打开数据库
还原数据到指定scn的位置
恢复数据到指定scn的位置
因为是不完全恢复(指定了某个位置),所以在打开数据库的命令要加上resetlogs
然后再看看数据库,发现数据已经恢复了
如果需要基于时间点的恢复,可以参考一下(参考网上资料,没实践过)
基于日志序列的恢复(参考网上资料,没实践过):
日志序列查看命令:
其中有一个sequence字段.resetlogs就会把sequence 置为1
8、删除备份文件
删除无效备份。首先执行CROSSCHECK命令核对备份集,如果发现备份无效(比如备份对应的数据文件损坏或丢失),RMAN会将该备份集标记为 EXPIRED状态。要删除相应的备份记录,可以执行DELETE EXPIRED BACKUP命令:
删除EXPIRED副本,如下所示:
删除特定备份集,如下所示:
删除特定备份片,如下所示:
删除所有备份集,如下所示:
删除特定映像副本,如下所示:
删除所有映像副本,如下所示:
2、冷备
冷备相对来说比较简单,基本原来就是手动将日志文件、数据文件、控制文件复制到备份的目录
基本步骤是:shutdown数据库---> copy文件---> start数据库
说明:
*.dbf:数据文件
*.ctl:控制文件
*.log:日志文件
3、使用归档模式热备
说明:归档模式热备份的数据库是必须在归档模式下的(有点废话,但oracle默认安装是在非归档模式下)
将数据库转换为归档模式(注意数据库必须已装载到此实例并且不在任何实例中打开):
一些归档的相关操作记录:
热备的步骤如下:
四、数据库日常备份计划及脚本参考
1、如果是使用RMAN
备份计划可参考:
1.星期天晚上:全备份
2.星期一晚上:增量备份
3.星期二晚上:增量备份
4.星期三晚上:累积备份
5.星期四晚上:增量备份
6.星期五晚上:增量备份
7.星期六晚上:增量备份
如果星期二需要恢复的话,只需要1+2
如果星期四需要恢复的话,只需要1+4
如果星期五需要恢复的话,只需要1+4+5
如果星期六需要恢复的话,只需要1+4+5+6
如果需要自动备份,可使用备份脚本+crontab的方式执行
执行脚本命令:
脚本内容为:
改动以上的备份等级可弄出全量、增量、累积备份的脚本,然后使用crontab自动执行即可
2、如果是使用备份脚本
备份脚本内容如下:
然后添加脚本执行权限:
然后将脚本添加至crontab执行计划即可