物理备份

1. 为什么要数据备份

1、数据丢失
2、用户的错误操作。
3、服务器的彻底崩溃。
4、计算机病毒。
5、不可预料的因素。

2.故障类型

(1)语句故障

执行SQL语句过程发生的逻辑故障可导致语句故障。如果用户编写的SQL语句无效,就会发生语句故障。
Oracle可自我修复语句故障,撤销语句产生的而印象,并将控制权交给应用程序。

(2)用户进程故障

用户程序出错而无法访问Oracle数据库时,就会发出用户进程故障。用户进程故障只会导致当前用户无法操作数据库,但不会印象其他用户进程,当用户进程出现故障时,进程监控程序(PMON)会自动执行进程恢复。

(3)实例故障

当Oracle 数据库实例由于硬件或软件问题而无法继续运行时,就会发生实例故障。硬件问题包括意外断电,而然间问题可能是服务器操作系统崩溃。如果发现实例故障, Oracle会⾃动完成实例修复。实例修复将数据库恢复到与故障之前的事务一致状态, Oracle会自动回滚未提交的数据

(4)介质故障

介质故障是当一个数据库文件或者磁盘不能读或者不能写时出现的故障

3备份类型

(1)从物理⻆度与逻辑⻆度分类:

物理备份:对数据库操作系统的物理文件(如数据文件、控制文件和日志文件等)的备份。物理备份又可分为脱机备份(冷备份)和联机备份(热备份),前者是在关闭数据库的时候进行的,后者对运行在归档日志方式的数据库进行备份。
逻辑备份:对数据库逻辑组件(如表和存储过程等数据对象)的备份。

(2)从数据库的状态分类:

冷备份:
定义:
冷备份数据库是将数据库关闭之后备份所有的关键性文件包括:数据文件、控制文件、联机REDO LOG文件,将其拷贝到另外的位置。此外冷备份也可以包含对参数文件和口令文件的备份。 冷备份实际也是一种物理备份。
方法:
以DBA用户或特权用户登录,查询动态性能视v d a t a f i l e 、 v datafile、 v datafilevcontrolfile、 v$logfile可以分别列出数据库的数据文件、控制文件以及日志文件。将其拷贝到另外的位置。
此外冷备份也可以包含对参数文件和口令文件的备份。

select name from v$datafile;
select name from v$controlfile;
select * from v$logfile;
cd $ORACLE_HOME/dbs

热备份:
定义:
热备份是在数据库运行的情况下,采用archive log mode方式备份数据库的方法。
方法:
热备份也叫联机备份,它是指数据库处于open状态下,对数据库的数据文件、控制文件、参数文件、密码文件等进行一系列备份操作(其中数据文件是必须备份的)。它要求数据库处在归档模式下。
在热备时,是可以进行DML操作的
过程:
冻结块头–>控制SCN在备份时不发生变化,并产生检查点,发生在置于备份状态的时候进行物理拷贝
解冻块头–>让SCN可以变化(当对SCN解冻后,系统会自动更新SCN至最新的状态)

备份可存储为:
• 映像副本:指的是数据或归档日志文件的副本
• 备份集 : 指的是一个或多个二进制文件的集合,其中包含一个或多个数据文件、控制文件、服务器参数文件或归档日志文件。

(3)从数据库的备份策略分类:

(1)完全备份:每次对数据进行完整备份。

全备份是一个或多个数据文件中使用过的数据块的的备份。没有使用过的数据块是不被备份的,也就是说,oracle进行备份集合的压缩。

(2)增量备份:值有那些在上次完全备份或者增量备份后备修改的文件才会被备份。优点是备份数据量小,需要的时间短,缺点是恢复的时候需要依赖之前的备份记录,出问题的风险较大。例如:如果在星期一进行完全备份,在星期二至星期五进行增量备份。如果星期五数据被破坏了,则数据恢复需要星期一的完全备份和从星期二至星期五的所有增量备份。
差异/增量备份(Differential)
0=全备
1=差异增量上次全备或LV1至今的增量(无论是否有,有N次LV2的备份,一律从上次lv1或0至今的变化)0/1 ~ NOW
2=累积增量上次任意级别备份至今的增量(任意一次备份至今)0/1/2 ~ NOW
(3)差异备份:备份那些从上次完全备份之后被修改过得文件。因此从差异备份中恢复数据的时间长短,因此只需要两份数据(最后一次完全备份和最后一次差异份),缺点是每次备份的时间较长。例如:如果在星期一进行完全备份,在星期二到星期五进行了差异备份,如果星期五数据被破坏了,则数据恢复只需要星期一的完全备份和星期四的差量备份。
差异/增量备份(Differential)
零级备份

backup incremental level 0 database;
backup incremental level 0databaseformat‘/u01/app/oracle/rman_bak/DB_%U_%d_%t_%s_%p.bak’;

一级差异增量

backup incremental level 1 database;
backup as compressed backupset incremental level 1 database;

二级差异增量

backupincremental level 2 database;

累积备份(Cumulative)
0=全备
1=上次全备至今的增量(无论是否有,有N次LV1的备份,一律从全备至今的变化)
0 ~ NOW
2=上次0或1级别备份至今的增量(2次LV2间的累积,也汇总备份至今)0/1~ NOW
累积备份(Cumulative)
零级备份

backup incremental level 0 database;

一级累计增量

backup incremental level 1 cumulative database;

二级累计增量

backup incremental level 2 cumulative database;

全备份与0级备份
Level 0级就是对数据库一个全库备份,增量备份必须从0级开始,也就是说必须要有一个全库备份当基础。
如果你做全库备份oracle也不认为这是level 0的全库备份,尽管是一样的也要单独做一次level 0。有了level 0当基础才能有后面的level 1 level 2 level 3 level 4。

(4)rman备份

RMAN是ORACLE提供的恢复和备份工具,是随Oracle服务器软件一同安装的工具软件,它可以用来备份和恢复数据库文件、归档日志和控制文件,用来执行完全或不完全的数据库恢复。

RMAN环境至少包括两部分:
• 目标数据库:即需要进行备份和恢复的数据库。
• RMAN客户端:默认存放于$ORACLE_HOME/bin⽬录下的可执行程序,用于执行RMAN命令进行数据库备份和恢复操作。

在某些情况下, RMAN环境还可能包括:
• 快速恢复区(fast recovery area):用于存放和管理备份恢复相关文件的地方,可通过DB_RECOVERY_FILE_DEST和DB_RECOVERY_FILE_DEST_SIZE设置。
• 介质管理器: RMAN与介质设备打交道所需要的应用程序;
• 恢复目录(recovery catalog):单独的数据库文案,用于存储其管理的多个目标数据库的元数据。

备份集备份片
包括一个或多个数据文件或归档日志一个备份集由若干个备份片组成。
以oracle专有的格式保存每个备份片是一个单独的输出文件
由一个完全的所有的备份片集合构成一个备份片的大小是有限制的,如果没有大小的限制,备份集就只由一个备份片构成。
构成一个完全备份或增量备份备份片的大小不能大于使用的文件系统所支持的文件长度的最大值。

使用rman工具
•登录rman工具,默认使用SYSDBA⻆色登陆。

rman target /

•查看工具默认配置

show all;

查看RMAN工具默认配置

RMAN> show all;
using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name ORADB are:CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # defaultCONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # defaultCONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD
TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11204/db_1/dbs/snapcf_oradb.f'; # default

修改RMAN配置信息

CONFIGURE DEFAULT DEVICE TYPE TOdisk;CONFIGURE DEVICE TYPE DISK BACKUP TYPE TOCOPY;CONFIGURE CONTROLFILE AUTOBACKUPON;
CONFIGURE BACKUP OPTIMIZATIONON;

备份文件命名规则

The most common substitution variable is%U, which generates a unique name.
%d for the DB_NAME
%t for the backup set time stamp
%s for the backup set number
%p for the backup piece number.

备份数据库文件
备份数据库所有数据文件

RMAN> backup database;
RMAN> backup databaseformat‘/u01/app/oracle/rman_bak/DB_%U_%d_%t_%s_%p.bak’;

备份指定数据文件

RMAN> backup datafile 4format‘/u01/app/oracle/rman_bak/%U_%d_%t_%s_%p.bak’;
RMAN> backup datafile ‘/u04/app/oracle/ORA11204/users01.dbf’format‘/u01/app/oracle/rman_bak/arch_%U_%d_%t_%s_%p.bak’;

备份指定表空间下所有数据文件

RMAN> backup tablespace usersformat‘/u01/app/oracle/rman_bak%U_%d_%t_%s_%p.bak’;

默认地在$ORACLE_HOME/dbs或者$ORACLE_HOME/DATABASE目录中创建服务器参数文件与控制文件。
备份归档日志文件

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 ———备份后删除
RMAN备份的保留策略
三种保留策略:
1.基于恢复窗口的保留策略
2.基于冗余的保留策略
3.无保留策略
三种保留策略互斥,不可同时使用
RMAN保留策略—恢复窗口
保留最近7天可用备份,删除其他备份

DELETE NOPROMPT OBSOLETE RECOVERY WINDOW OF7DAYS;

RMAN保留策略—冗余策略
•基于冗余的保留策略是依据备份数,而不是备份天数。该策略是默认的保留策略,被设置为1。
•如果将其设置为2,那么Oralce则会为当前备份保留2个副本,其余的、时间更早的
副本会全部被标记为过时的备份。
查看冗余策略

show retention policy;

默认为1

CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

设置为冗余度2

CONFIGURE RETENTION POLICY TO REDUNDANCY2:

无保留策略也就是禁用保留策略,不使用任何保留策略。
配置无保留策略:configure retention policy to none
恢复到缺省保留策略:configure retention policy clear
查看冗余策略

show retention policy;

默认为1

configure retention policy to none;

(5)镜像备份copy

镜像备份是独立文件(数据文件、归档日志、控制文件)的备份。类似操作系统级的文件备份。它不是备份集或备份片,也没有被压缩。

(6)压缩备份

备份数据库所有数据文件

RMAN> backupas compressed backupsetdatabase;
RMAN> backupas compressed backupsetdatabaseformat‘/u01/app/oracle/rman_bak/DB_%U_%d_%t_%s_%p.bak’;

备份所有归档日志

RMAN> backupas compressed backupsetarchivelog all;
RMAN> backupas compressed backupsetarchivelog allformat‘/u01/app/oracle/rman_bak/arch_%U_%d_%t_%s_%p.bak’;

4.备份操作的内部流程

可以采用交互方式执行用户管理的备份。但通常需要编写执行备份的脚本。
以下是脚本必须执行的一些操作:
• 查询 v$datafile以确定需要备份的数据文件及其当前状态
• 查询 v$logfile以标识联机重做日志文件
• 查询 v$controlfile以标识要备份的控制文件
• 将每个表空间置于联机备份模式下
• 查询 v$backup以查看哪些数据文本件包含在联机备份模式下的表空间中
• 发出操作系统复制命令,以将数据文件复制到备份位置
备份初始化参数文件和控制文件
1.开启了CONTROLFILE AUTOBACKUP,就算只备份一个归档日志最后一步也一定会备份控制文件和spfile(如果是pfile启动,则不会备份spfile)
2.指定include current controlfile选项

backup database include current controlfile archivelog all format'/db/backup/data_arch%U.bak' delete input;

①备份数据文件
②备份归档日志+删除归档日志(如果有的话,如果删除了归档日志但是备份期间又没有产生归档日志,则不会有这一步)
③备库控制文件和spfile(如果是pfile启动,则不会备份spfile)
最佳搭配

CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE BACKUP OPTIMIZATION ON;
backup database format '/db/backup/data%U.bak'plusarchivelogformat '/db/backup/arch%U.bak' delete input;

backup spfile
1.rman备份spfile

[oracle@vm01 ~]\$rman target /
RMAN> backup spfile;

2.备份控制文件及参数文件

RMAN> backup current controlfile;

3.备份数据文件是包含控制文件及参数文件

RMAN> backup datafile 4 includecurrent controlfile;
SQL> select dbid from v$database;
DBID
----------
2746652028

restore parameter
使用了闪回区目录存放备份信息时,恢复初始化参数文件:

1.restore spfile from autobackup;
2.restore spfile from/u01/app/oracle/oradata/arch/ORADB/backupset/2018_12_01/
o1_mf_nnsnf_TAG20181201T132403_g0d3vmmk_.bkp';
[oracle@vm01 dbs]$export ORACLE_SID=oradb
[oracle@vm01 dbs]$ cd $ORACLE_HOME/dbs
[oracle@vm01 dbs]$ vi initoradb.ora新建初始换参数,指定一个关键参数
db_name='oradb'
control_files='/u01/app/oracle/oradata/oradb/control01.ctl'
compatible=’11.2.0.4'
[oracle@vm01 dbs]$ rmantarget/
RMAN> set dbid=2746652028
RMAN>startupnomount;
RMAN> restorespfilefromautobackup;     rman恢复spfile文件
RMAN> shutdownimmediate;
RMAN> startup nomount关库使用新恢复的spflie文件启动数据库

备份RUN块
如果我们不想使用RMAN中的默认配置来备份数据库,就可以使用RUN代码块,RUN代码块以{开头,}结尾。{}中的语句可以做为一个代码块一起执行。例如

run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup database include current controlfile format ‘/u01/app/oracle/oradata/rman_bak/
data_%U.bak’;
backup archivelog all format ‘/u01/app/oracle/oradata/rman_bak/arch_%U_%d_%p.bak’  delete input;release channel c1;
release channel c2;
release channel c3;
}

如果我们配置了控制文件,参数文件自动备份。那么控制文件和参数文件将备份两份。
数据的恢复
在RMAN用于中,还原与恢复是两个不同的概念。
•还原(restore):指访问之前生成的可用备份,从中得到一个或多个对象,然后在磁盘上的某个位置还原这些对象。
•恢复(recover):是一个数据库与给定时间点相一致以保证能够打开这个数据库的实际进程,该进程通常是通过应用重做(包括联机重做日志和归档的重做日志)来完成的。
数据库恢复类型
1.完全恢复:不丢失数据
2.不完全恢复:部分数据丢失

restore controlfile

1.将控制文件从autobackup中恢复处理

list backup of controlfile;
restore controlfile from auto backup;

2.从指定的备份集中恢复控制文件

restore controlfile from/u01/app/oracle/oradata/arch/ORADB/backupset/2018_12_01/o1_mf_nnsnf_TAG20181201T132403_g0d3vmmk_.bkp';

3.将控制文件还原到不同的位置和文件中(假设数据库正在启动和运行)

restore controlfile to/u01/ctl_bak.ctl’ from autobackup;
export ORACLE_SID=oradb
shutdown immediate;

对于任何自动备份的还原操作来说,RMAN只查找过去10天内生成的控制文件的自动备份片。使用maxseq和maxdays参数在超过默认天数(10天)的时间周期内向后查找控制文件备份集:

export ORACLE_SID=oradb
rman target sys/pwd
startup nomount;
run
{
set controlfile auto backup format for device type disk to'f:/backup/%f';
allocate channel c1 device type disk;
restore spfile from autobackup maxseq 200
maxdays 1000;
} 
shutdown immediate;

restore datafiles
•restore database;
其主要功能是从RMAN备份中还原文件,为恢复做准备。
Restore可以将数据库还原到任何时间点。
Restore命令也可根据分配给备份的给定标记还原特定的备份。
在不同位置上还原数据文件(非原位置)

set newname for datafile ‘/u01/app/user01.dbf’ to/u02/app/user01.dbf’

定义数据文件的需要恢复的新位置
执行set new name后,使用restore、recover命令
打开数据库之前,告诉Oracle永久使用新路径——switch命令
switch命令可以修改数据库控制文件中的数据文件位置。
恢复表空间
只丢失了某个表空间的数据文件,此时,可以选择只恢复这个表空间,而不用恢复整个数据库。表空间恢复可以在不关闭数据库的情况下进行。示例:

SQL>  Alter tablespace tablespace_name offline;
RMAN>restore tablespace tablespace_name;
RMAN>recover tablespace tablespace_name;
SQL>  Alter tablespace tablespace_name online;

也可以同时还原多个表空间:

SQL>Alter tablespace tablespace_name1 offline;
SQL>Alter tablespace tablespace_name2 offline;
RMAN>restore tablespace tablespace_name1,tablespace_name2;
RMAN>recover tablespace tablespace_name1,tablespace_name2;
SQL>Alter tablespace tablespace_name1 online;
SQL>Alter tablespace tablespace_name2 online;

recover database
•recover database;
Recover命令用于恢复数据库。该命令可以执行数据库的完全恢复或者时间点恢复。
Recover命令也用于判断是否存在可用的增量备份映像。
还原归档的重做日志时,recover命令尝试使用磁盘上已有的重做日志。
删除归档日志
删除某个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>deletenopromptarchivelog from time ‘sysdate-20‘ until time ‘sysdate-2;

删除失效的备份及文件
最不推荐的一种方式就是使用命令从系统系统删除归档日志,如果使用rm删除了备份文件
后,需要执行crosscheck archivelog all命令校检归档日志是否失效。
删除失效的文件

delete expired archivelog all;
delete noprompt expired backupset;

实际上此命令不会真正删除归档日志,它删除的是那些本来RMAN以为存在但是实际上在磁盘或者磁带上已经被删除了文件的信息,实际删除的只是RMAN资料库或控制文件中的记录;
delete obsolete这个是清理过期备份,它也会删除过期的归档日志。

RMAN> delete obsolete;
RMAN> delete noprompt obsolete;

清理备份文件
保留最近一天的备份,删除其他备份

DELETE NOPROMPT OBSOLETE RECOVERY WINDOW OF1 DAYS;

删除、清理所有的备份集

delete backupset;
delete noprompt backupset ;

删除特定的备份片

deletebackuppiece‘/u01/app/oracle/oradata/rman_bak/20tk8vfa_1_1_ORA11.dbf’;

不完全恢复
重做日志文件丢失或损坏
重做日志文件,数据文件丢失或损坏
注意事项:每次不完全恢复完成后,按照规范,数据库应立即做一次全备,防止意外发生。
不完全恢复的步骤
a、关闭数据库并备份数据库(以防止恢复失败)
b、启动数据库到mount状态
c、还原数据库
d、将数据库恢复至某个时间点、序列、或系统改变号
e、使用RESETLOGS关键字打开数据库
基于时间的不完全恢复

run {
shutdown immediate;
startup mount;
set until time "to_date('2018121310:09:53','yyyymmdd
hh24:mi:ss')";
restore database;
recover database;
alter database open resetlogs;
}

基于SCN的不完全恢复

run {
shutdown immediate;
startup mount;
set until scn 3400;
restore database;
recover database;
alter database open resetlogs;
}

基于Sequence的不完全恢复

run {
shutdown immediate;
startup mount;
set until sequence 29;
restore database;
recover database;
alter database open resetlogs;
}

(5)list查看备份信息

列出详细备份信息

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';
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值