Oracle备份方式
数据库备份与恢复
- 命令导出/导入(Export/Import);
- 冷备份;
- 热备份;
- rman数据备份与恢复
命令导入导出
冷备份
冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份时将关键性文件拷贝到另外的位置的一种说法。对于备份Oracle信息而言,冷备份是最快和最安全的方法。
冷备份文件内容
冷备份须拷贝的文件: 所有数据文件、所有控制文件、所有联机REDO LOG文件、Init.ora文件(可选)。
冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的。
备份DBF文件
1.关闭数据库
如不知道文件位置,关闭数据库之前先查询出控制文件、数据文件、日志文件的位置。
sqlplus /nolog
connect /as sysdba
shutdown normal;
2.拷贝全部的数据文件、全部的REDO日志文件、全部的控制文件、初始化参数文件(ora文件)。
-- 控制文件
select name from v$controlfile;
-- 数据文件,查看表空间DBF物理文件位置也可以查看v$datafile
select v$tablespace.name,v$datafile.name from v$tablespace, v$datafile where v$tablespace.ts#= v$datafile.ts#;
-- 日志文件
select member from v$logfile;
-- 初始化参数文件,这个文件夹下的ora文件(可不备份)
SELECT NAME, VALUE, DISPLAY_VALUE FROM V$PARAMETER WHERE NAME ='spfile';
通过sql查看相关文件的具体位置。把全部的DBF数据文件(不用备份temp文件)、全部的CTL控制文件、全部的LOG日志文件拷贝出来。
3.重启Oracle数据库
即使服务没有启动,sqlplus也可以连接登录。
sqlplus /nolog
connect /as sysdba
startup
恢复DBF文件
sqlplus /nolog
connect /as sysdba
#关闭ORACLE数据库
shutdown immediate;
#把控制文件、数据文件、日志文件覆盖到oracle位置。
#启动ORACLE数据库
startup;
如果只恢复dbf文件,控制文件和日志文件没有放回去,会报如下错误:
#恢复文件
recover datafile 'D:\ORACLE\ORADATA\SYSTEM01.DBF';
alter database open;
冷备份优缺点
优点
●非常快速、容易的备份方法,只需简单拷贝文件;
●非常容易恢复到某个时间点上,只需将文件再拷贝回去;
●能与归档方法相结合,做数据库“最佳状态”的恢复;
●低度维护,高度安全。
缺点
●单独使用时,只能提供到“某一时间点上”的恢复;
●实施冷备份的全过程中,数据库必须是关闭状态,因此会影响正常工作;
●不能按表或按用户恢复。
热备份
热备份是在数据库运行的情况下,采用archivelog mode方式备份数据库的方法。
更改数据库为归档模式
#查看归档模式
archive log list;
#更改数据库为归档模式
sqlplus /nolog
connect /as sysdba
shutdown immediate; #立即关闭数据库
startup mount; #启动实例并加载数据库,但不打开
alter database archivelog; #更改数据库为归档模式
alter database open; #打开数据库
alter system archive log start; #启用自动归档
exit;
热备份步骤
- 备份数据文件
备份表空间的dbf数据文件
#设置表空间为备份状态
alter tablespace tbl_sp begin backup;
#备份tbl_sp表空间的数据文件
select v$tablespace.name,v$datafile.name from v$tablespace, v$datafile where v$tablespace.ts#= v$datafile.ts#;
#回复表空间为正常状态
alter tablespace tbl_sp end backup;
- 备份归档日志文件
备份redo日志文件
最早的概要日志序列到当前日志序列的联机redo日志全部拷贝备份。
#强迫日志切换,让Oracle直接使用下一个日志组,而不管当前使用的日志组是否写满
alter system switch logfile;
#获取当前的日志顺序号
archive log list
- 备份控制文件
将控制文件重构在trace文件中,直接打开trace可以查看重构控制文件的命令
trace文件提供了两种创建控制文件的脚本,分别针对两种不同的应用场景:NORESETLOGS适用于当前redo log可用,而RESETLOGS适用于当前redo log不可用。
#获得控制文件备份
alter database backup controlfile to trace;
#为session加上标记,方便查找trace文件
alter session set tracefile_identifier='bak_control';
#将当前controlfile文件的创建语句放到了trace文件中
alter database backup controlfile to trace;
#获得当前trace文件生成路径
select tracefile from v$process where addr in (select paddr from v$session where sid in (select sid from v$mystat));
#找到刚才生成的文件并打开查看内容
恢复
dbf文件损坏恢复
#将损坏的表空间文件脱机
alter database datafile 'D:\ORACLE\DATABASE\INS_DATA.DBF' offline;
#把dbf文件复制回去
cp D:/backup/INS_DATA.DBF D:\ORACLE\DATABASE\INS_DATA.DBF
#恢复数据文津
recover datafile 'D:\ORACLE\DATABASE\INS_DATA.DBF';
alter database datafile 'D:\ORACLE\DATABASE\INS_DATA.DBF' online;
重构控制文件
1.执行脚本,重建控制文件
(CREATE CONTROLFILE REUSE DATABASE "ORCL"
RESETLOGS
NOARCHIVELOG......)
2.执行介质恢复
RECOVER DATABASE USING BACKUP CONTROLFILE
3.打开数据库ALTER DATABASE OPEN RESETLOGS;
4.添加临时表空间
热备份优缺点
优点
●可在表空间或数据库文件级备份,备份的时间短;
●备份时数据库仍可使用;
●可以恢复到某一时间点上;
●恢复快速。
缺点
●不能出错,否则将不能正常恢复数据;
●维护较困难,需要一定的oracle数据库知识。
rman
RMAN是Oracle数据库软件自带的备份/恢复工具。RMAN只能用于9i或更高的版本中。它能够备份整个数据库或数据库部件,如表空间、数据文件、控制文件、归档文件以及Spfile参数文件。
备份
备份数据文件
#连接数据库
rman target / log D:\backup\rman_logs.txt
#没有显式指定FORMAT参数,rman会自动为每个备份片段命名,并保存在ORACLE_HOME/database目录下
BACKUP DATABASE;
#整库备份
BACKUP DATABASE FORMAT 'D:\backup';
#查看创建的全库备份
LIST BACKUP OF DATABASE;
#备份表空间
backup tablespace TBLSP_NAME;
#查看指定的表空间备份
LIST BACKUP OF TABLESPACE TBLSP_NAME;
#备份指定数据文件
select file_name,file_id,tablespace_name from dba_data_files; #查看数据文件机器序号
#备份指定序号的文件
BACKUP DATAFILE num;
#查看指定数据文件的备份
LIST BACKUP OF DATAFILE num;
备份控制文件
#通过rman做任何备份操作的同时,都会自动对控制文件做备份
CONFIGURE CONTROLFILE AUTOBACKUP ON;
#手动备份控制文件
BACKUP CURRENT CONTROLFILE;
#执行BACKUP时指定INCLUDE CURRENT CONTROLFILE参数
BACKUP DATABASE INCLUDE CURRENT CONTROLFILE;
#查看备份的控制文件
LIST BACKUP OF CONTROLFILE;
备份归档日志文件
归档日志对于数据库介质恢复相当关键,虽然不像控制文件那样一旦损坏则数据库马上崩溃。但归档日志文件能确保我们将数据库恢复到备份之前的任意时刻。
在RMAN中备份归档日志有两种方式:
#备份归档日志
BACKUP ARCHIVELOG ALL;
#BACKUP过程中利用PLUS ARCHIVELOG参数备份
BACKUP DATABASE PLUS ARCHIVELOG;
增量备份
如果数据库运行于不归档模式下,那么你只能在数据库干净关闭的情况下(以NORMAL、IMMEDIATE、TRANSACTIONAL方式关闭)才能进行一致性的增量备份,如果数据库运行于归档模式下,那即可以在数据库关闭状态进行,也可以在数据库打开状态进行备份。
0级增量备份(level 0 incremental backup):相当于全备,可以作为其他增量的父级。
注意: 完整备份(full backup)不能成为增量备份策略的一部分; 不能作为后续增量备份的父级。
n级增量备份(level n incremental backup)可分两种:
差异增量备份(A differential incremental backup ):备份上一次备份(0或<=n级备份)后发生变化的数据;
累计增量备份(A cumulative incremental backup):用于备份上一次0级备份以后所有发生变化的数据;
#建立增量备份的父级LEVEL=0的全库备份
BACKUP INCREMENTAL LEVEL=0 DATABASE;
恢复
restore 是用备份的数据文件去还原,文件级的恢复。就是物理文件还原。
restore database #还原所有的数据文件。
restore tablespace #还原特定表空间的数据文件。
restore datafile #还原特定的数据文件。
restore controlfile #还原控制文件。
restore archivelog #还原归档日志文件。
recover 是恢复,数据级的恢复。逻辑上恢复,比如应用归档日志、重做日志,全部同步保持一致。
recover database #恢复所有的数据文件。
recover tablespace #恢复特定表空间的数据文件。
recover datafile #恢复特定的数据文件。
参考: https://blog.csdn.net/Aria_Miazzy/article/details/96477912
![微信公众号二维码](https://images.cnblogs.com/cnblogs_com/aeolian/1679458/o_wechat_gzh_qrcode.jpg)