ORACLE数据库备份与恢复分为:
1、物理备份与恢复(介质恢复:磁盘或操作系统文件损坏的恢复)
(1)冷备份(脱机备份)与冷恢复(脱机恢复)
(2)热备份(联机备份)与热恢复(联机恢复)
2、逻辑备份与恢复
热备份(联机备份)与热恢复(联机恢复)
一、热备份(联机备份)
1、概念
热备份的前提是数据库必须运行在归档模式下,而且必须备份的只有数据文件,控制文件、重做日志文件、归档日志文件都是靠物理冗余来保护的
2、操作步骤
(1)select name from v$datafile;--查看所有数据文件位置
(2)select * from v$backup;--查看所有文件备份状态
(3)alter tablespace my begin backup;--将表空间置为备份状态(此处my为表空间名称)
(4)host copy E:\disk3\MY01.DBF E:\disk4\TBSbackup--复制数据文件到备份位置
(5)alter tablespace my end backup;--将表空间置为正常非备份状态
(6)select * from v$backup;--重新查看所有文件备份状态
(7)查看备份文件是否生成
(8)select group#,sequence#,status,archived from v$log;--查看重做日志切换的相关信息
(9)alter system archive log current;--将当前重做日志文件的信息写到归档日志文件中
(10)select group#,sequence#,status,archived from v$log;--再次查看重做日志切换的相关信息
3、联机备份自动自动化
(1)编写一个.sql文件
conn sys/123456 as sysdba
alter tablespace my begin backup;
host copy E:\disk3\MY01.DBF E:\disk4\TBSbackup
host copy E:\disk3\MY02.DBF E:\disk4\TBSbackup
alter tablespace my end backup;
exit
(2)编写一个.bat文件
sqlplus /nolog @E:\disk4\auto_backup.sql
nolog是为了执行的时候不显示sql文件的内容,避免密码泄露之类的问题
@后面加.sql文件的路径
需要备份的时候点击一下bat文件执行即可
二、热恢复(联机恢复)
1、最初处于打开状态下进行的开启数据库恢复
(1)适用场景
a、所需恢复的数据文件不属于系统(system)表空间或还原(redo)/回滚(rollback)段表空间
b、磁介质的损坏、数据文件的崩溃或丢失没有造成数据库的关闭
c、数据库是已7*24运行的方式操作的
(2)操作步骤
(1)查看数据文件的位置、状态等相关信息
select * from dba_data_files;
或者
select * from v$datafile;
(2)查看表空间状态
select tablespace_name,status from dba_tablespaces;
(3)将表空间或数据文件置为脱机状态
若表空间没有数据文件损坏或丢失:
alter tablespace my offline;
或者
alter database datafile MY01.DBF offline;
若表空间中有数据文件损坏或丢失:
alter tablespace my offline immediate;
或者
alter system checkpoint;
alter tablespace my offline temporary;
(4)复制备份数据文件到数据库原位置
host copy E:\disk4\TBSbackup\MY01.DBF E:\disk3\MY01.DBF
若文件不是恢复到原位置,则:
ALTER database rename file '旧文件名' to '新文件名';
例:ALTER database rename file 'E:\disk3\MY01.DBF' to 'E:\disk5\MY01.DBF';
(5)介质恢复,将重做日志文件和归档日志文件的已提交的数据写入数据文件
recover tablespace my
或者
recover datafile MY01.DBF
(6)将表空间或数据文件重置为联机状态
alter tablespace online;
或者
alter database datafile MY01.DBF online;
(7)查看数据文件是否处理联机状态
select * from dba_data_files;
或者
select * from v$datafile;
(8)查看表空间状态是否处理联机状态
select tablespace_name,status from dba_tablespaces;
(9)查询表数据,看是否恢复
2、最初处于关闭状态下进行的开启数据库恢复
(1)适用场景
a、所需恢复的数据文件不属于系统(system)表空间或还原(redo)/回滚(rollback)段表空间
b、磁介质的损坏、数据文件的崩溃或丢失已经造成数据库的关闭
c、数据库是已7*24运行的方式操作的
(2)操作步骤
(1)将数据库置为加载状态
startup mount
(2)查看数据文件状态等信息
select * from v$datafile;
(select * from dba_data_file只能在数据库打开时使用)
(3)将数据文件置为脱机状态
alter database datafile MY01.DBF offline;
(alter tablespace my offline;只能在数据库打开时使用)
(5)打开数据库
alter database open;
(5)复制备份的数据文件到数据库原位置
host copy E:\disk4\TBSbackup\MY01.DBF E:\disk3\
若不是回复到原位置,则:
ALTER database rename file '旧文件名' to '新文件名';
(6)介质恢复,将重做日志文件和归档日志文件中提交的数据写入数据文件
recover tablespace my
或者
recover datafile MY01.DBF
(7)将表空间或数据文件置为联机状态
alter tablespace online;
或者
alter database datafile MY01.DBF online;
(8)查看数据文件是否为联机状态
select * from dba_data_feiles;
(9)查看表空间是否为联机状态
select * from dba_tablespaces;
(10)查询表数据看是否恢复
3、恢复没有备份的数据文件
(1)适用场景
a、所需恢复的数据文件不属于系统(system)表空间或还原(redo)/回滚(rollback)段表空间
b、数据文件损坏或丢失,但是该数据文件从来没有备份过
c、从这个数据文件创建以来的所有归档日志文件都完好无损
(2)操作步骤
(1)若数据库是关闭状态,需要先将数据库启动,若数据是打开状态,省略第(1)步
将数据库已加载方式打开
startup mount
查看数据文件状态
select * from v$datafile;
将数据文件置为脱机状态
alter database datafile MY01.DBF offline;
打开数据库
alter database open;
(2)查看数据文件和表空间状态
select * from dba_data_files;
select tablespace_name,status from dba_tablespaces;
(3)将表空间或数据文件置为脱机状态,若已为脱机状态可省略
若表空间没有数据文件损坏或丢失:
alter tablespace my offline;
或者
alter database datafile MY01.DBF offline;
若表空间中有数据文件损坏或丢失:
alter tablespace my offline immediate;
或者
alter system checkpoint;
alter tablespace my offline temporary;
(4)查看数据文件的恢复状态
select * from v$recover_file;
(5)重建数据文件
重建与原数据文件名相同的数据文件
alter database create datafile '原文件名';
例:alter database create datafile 'E:\disk3\MY01.DBF';
重建与原数据文件名不同的数据文件
alter database create datafile '原文件名' as '新文件名';
例alter database create datafile 'E:\disk3\MY01.DBF' as 'E:\disk4\MY02.DBF'
(6)将所有提交的数据从重做日志文件和归档日志文件重新写入已经修复的数据文件
recover tablespace my
或者
recover datafile MY01.DBF
(7)将表空间或者数据文件置为联机状态
alter tablespace my online;
或者
alter database datafile MY01.DBF online;
(8)查看数据文件和表空间是否为联机状态
select * from dba_tablespaces;
select * from dba_data_files;
(9)查询表数据是否恢复
4、关闭状态下的数据库恢复
(1)适用场景
a、所需恢复的数据文件属于系统(system)表空间或还原(redo)/回滚(rollback)段表空间
b、整个数据库或大多数数据文件都需要恢复
c、数据库不是以7*24的运行方式操作,工作期间可关闭的
(2)操作步骤
(1)若数据库处于打开状态,先关闭数据库,再以加载方式启动数据库
shutdown abort
startup mount
(2)将备份的数据文件复制到数据库原位置
host copy E:\disk4\TBSbackup\MY01.DBF E:\disk3\
若不是恢复到元为止,还需修改数据文件名
ALTER database rename file '旧文件名' to '新文件名';
(3)将所有提交的数据从归档文件和重做日志文件重新写入已经修复的数据文件
recover database
(4)打开数据库
alter database open;
(5)查看数据文件和表空间是否为联机状态,确认是否恢复到正确位置
select * from dba_data_files;
select tablespace_name,status from dba_tablespaces;