1.为什么要备份
数据备份为什么要备份数据库造成数据丢失的主要原因:
(1)、介质故障。
(2)、用户的错误操作。
(3)、服务器的彻底崩溃。
(4)、计算机病毒。
(5)、不可预料的因素。
故障类型
(1)、语句故障
(2)、用户进程故障
(3)、实例故障
(4)、介质故障
2.备份类型
从物理⻆度与逻辑⻆度分类:
(1)、物理备份
(2)、逻辑备份
物理备份:对数据库操作系统的物理文件(如数据文件、控制文件和日志文件等)的备份。物理备份又可分为脱机备份(冷备份)和联机备份(热备份),前者是在关闭数据库的时候进行的,后者对运行在归档日志方式的数据库进行备份
逻辑备份:对数据库逻辑组件(如表和存储过程等数据对象)的备份。
从数据库的状态分类:
(1)、冷备份:冷备份是在数据库被关闭后备份所有文件。(属于物理备份)。
(2)、热备份:热备份是在数据库运行的情况下,采取archive log mode(打开归档模式才能备份)方式备份数据库的方法。
冷备份
1、冷备份(过程)
需要备份文件
(1)、数据库的数据文件 v
d
a
t
a
f
i
l
e
/
d
b
a
d
a
t
a
f
i
l
e
s
(
2
)
、
控
制
文
件
v
datafile / dba_datafiles (2)、控制文件 v
datafile/dbadatafiles(2)、控制文件vcontrofile / show parameter control_file
(3)、日志文件 v$log_file
(4)、 初始化参数文件 show parameter prfile / $ORACLE_HOME/dbs
(5)、 密码文件 $ORACLE_HOME/dbs/orapw{SID}
2、关闭数据库(正常关闭)
3、将文件复制到别的地方
4、正常启动数据库,投入使用
恢复文件过程
(1)、临时声明ORACLE_ID变量需要恢复的数据库实例名称
(2)、检查需要恢复的数据库初始化参数文件中,记录所有路径相关的参数,并把路径在操作系统上创建出来。
(3)、如果控制文件位置发生变化,需要修改初始化参数文件中相应的信息
(4)、尝试启动数据库到nomount状态
(5)、启动数据库到mount状态
(6)、如果数据文件、redo文件备份过程中路径发生改变,需要修改控制文件中记录的信息。
(7)、尝试启动数据库
从数据库的备份策略角度分类
(1)、完全备份:每次对数据进行完整备份
(2)、增量备份
(3)、差异备份
3.rman
rman是Oracle提供的恢复和备份工具,是随Oracle服务器软件一通安装的工具软件,可以用来恢复和备份数据文件、归档日志和控制文件,用来执行完全或不完全的数据库恢复。
备份文件指定存放地点为闪回区,也可以指定目录下存放。
rman具有独特的优势:跳过未使用的数据块
备份可存储为:
映像副本:指的是一个或多个二进制文件的集合,其中包含一个或多个数据文件、控制文件或归档日志文件。
rman环境至少包括两个部分:
目标数据库:即需要进行备份和恢复的数据
备份
完全备份:全备份是一个或多个数据文件中使用过的数据块的备份。没有使用过的数据块是不被备份的,也就是说,Oracle进行备份集合的压缩。
备份数据库中所有数据文件
RMAN> backup database;
备份所有数据文件到指定位置
RMAN> backup database format ‘(目录)(格式符号包括_%d_%s_%p_%t_%U).bak’;
备份指定数据文件
RMAN> backup datafile ‘(路径+文件名称)’ format ‘(路径+(文件格式df%U%d%t%s%p).bak’;
备份指定表空间下所有数据文件
RMAN> backup tablespace users format ‘/u01/app/oracle/
rmanbak%U%d%t%s%p.bak’;
备份归档日志文件
Rman> backup archivelog all format ‘文件目录+文件格式’ delete input;--备份所有归档日志
4.差异增量备份
0=全备份
1=差异增量
2=累计增量
使用rman工具
登录rman工具,默认使用sys角色登录
rman target/
查看工具默认配置
show all ;
5.备份文件
备份归档日志文件
Rman> backup archivelog all;--备份所有归档日志
Rman> backup archivelog sequence 80 —备份580号,这一个归档日志
Rman> backup archivelog sequence between 80 and 84;—备份80到84的归档日志
Rman> backup archivelog from sequence 80 until sequence 584;备份580到584的归档日志
Rman> backup archivelog from sequence 80;--备份80开始的所有归档日志
format 参数指定备份集路径及命名规则
delete input ——— 备份后删除
列出详细备份信
list backup;
列出备份集信息
list backupset;
列出所有数据文件的备份信息
list backup of database;
列出特定表空间的所有数据文件备份集
list backup of tablespace users;
列出指定文件的备份信息
list backup of datafile 1;
list backup of datafile '/u01/app/oracle/oradata/oradb/system01.dbf';
备份初始化参数配置文件
备份润块
如果配置了控制文件,参与文件自动备份,那参数文件和控制文件将备份两份
restore database:
主要功能是RMAN备份中还原文件,为恢复做准备
Restore可以将数据库还原到任何时间点
Restore命令也可根据分配给备份的给定标记还原给特定文件
6.数据的恢复
在RMAN用法中,还原和恢复是两个不同概念
还原/转储(restore):指访问之前生成的可用备份级,从中获得一个或多个文件,然后在磁盘上的某个位置还原这些文件。
恢复(recover):是一个数据库与给定时间点相一致以保证能顾打开这个数据库的实际进程,该进程通常是通过应用重做(包括联机重做日志和归档文件的重做日志)来完成的。
数据恢复类型:
(1)、完全恢复:不丢失数据
(2)、不完全恢复:部分数据丢失
restore datafiles
在不同位置上还原数据(非原位置)
set newname for datafile ‘备份文件位置’ to ‘新位置’
定义数据文件的需要恢复的新位置。
执行set newname后,使用tore、recover命令
打开数据库之前,告诉Oracle永久用新路径 —— switch命令
switch命令可以修改数据库控制文件中的数据文件位置。
6.1.恢复表空间
只丢失了某个表空间的数据文件,此时,可以只选择只恢复这个表空间,而不用恢复整个数据库。表空间可以再不关闭数据库的情况下进行。
SQL> Alter tablespace (表空间名称) offline;
RMAN> restore tablespace (表空间名称) ;
RMAN> recover tablespace(表空间名称) ;
SQL> Alter tablespace (表空间名称) online;
recover database;
Recover 命令用于恢复数据库。该命令可以执行数据库的完全恢复或者时间点恢复。
Recover 命令也用于判断是否存在可用的增量备份映像。
还原归档的重做日志时,recover 命令尝试使用磁盘上已有的重做日志。
7.RMAN备份的保留策略
三种保留策略
(1)、给予回复窗口的保留策略
(2)、基于冗余的保留策略
(3)、无保留策略
三种保留策略互斥,不可同时使用。
8.冗余策略
基于冗余的保留策略是依据备份数,而不是备份天数。该策略是默认的保留策略,
被设置为1。
如果将其设置为2,那么Oralce则会为当前备份保留2个副本,其余的、时间更早的
副本会全部被标记为过时的备份。
查看冗余策略
show retention policy;
默认为1
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
设置为冗余度2
CONFIGURE RETENTION POLICY TO REDUNDANCY 2:
无保留策略也就是禁用保留策略,不使用任何保留策略。
配置无保留策略: configure retention policy to none
恢复到缺省保留策略:configure retention policy clear
9.删除归档日志
删除某个Sequence之前(包含该Sequence)的归档日志
RMAN>delete archivelog until sequence xxx;
RMAN>delete archivelog from sequence xxx until sequence xxx;
删除系统时间1天以前的归档⽇志,不会删除闪回区有效的归档日志(可以指定删除多久日志)
RMAN>delete archivelog all completed before ‘sysdate-1‘;
force参数表示会删除有效归档日志
RMAN>delete force archivelog all completed before ‘sysdate-1‘;
删除某个时间段的归档日志,例如删除20天前到2天前的归档日志。
RMAN>delete noprompt archivelog from time ‘sysdate-20‘ until time ‘sysdate-2‘;
删除失效的备份及文件
delete expired archivelog all;
delete noprompt expired backupset;
保留最近几天的备份,删除其他备份
DELETE NOPROMPT OBSOLETE RECOVERY WINDOW OF 1 DAYS;
删除、清理所有的备份集
delete backupset;
delete noprompt backupset ;
删除特定的备份片
delete backuppiece ‘路径名称+文件名’;
10.不完全恢复
步骤
(1)、关闭数据库并备份数据库(以防止恢复失败)
(2)、启动数据库到mount状态
(3)、还原数据库
(4)、将数据库恢复到某个时间点、序列、或系统改变号
(5)、使用RESETLOGS关键字打开数据库
备份数据库的策略如何确定:
(1)、依赖于业务对数据的要求
(2)、恢复或还原的速度 RTO Recovery Time Objective
(3)、数据允许丢失的程度 RPO Recovery Point Objective
(4)、数据库大小与成本的平衡