当前位置: 首页 > news >正文

Oracle备份和恢复

Oracle备份和恢复
无论 IT 技术如何发展,数据总是一个应用系统的核心,数据就是一个企业的生命。
数据存储在数据库中,所以数据的安全一般都是在数据库这一层面必须保证的。无论数据库的安全保护措施多么完善,数据的备份都是不能忽略的,它是一种常规的数据容灾措施。备份意味着把重要的数据复制到磁带等存储设备中,而恢复意味着把数据重新复制到数据库最初所在的状态。备份的目的,是防止数据库服务器出现硬件故障、人为破坏等灾难性后果。如果这样的情况发生,利用备份,管理员则可以对数据进行恢复,从而使这些重要的数据重新产生。另外随着技术的发展以及系统规模的扩展,企业在对数据库进行升级改造时,必须对其中的数据进行迁移。数据库的这些维护任务,都是数据库管理员们必须完成的。
Oracle 公司提供了多种方式用于数据库的备份、恢复。本章将将介绍常用的数据库备份、恢复方式。数据库管理员需要区分备份方式的区别,在不同情况下使用相应的备份、恢复方式。数据库管理员针对数据库制定完善的备份策略,然后按照既定的策略对数据库进行备份, 这样才能真正保证数据库的安全。

13.1备份的概念和意义
备份与恢复存在的意义就是保护数据库(保护数据还有本身),防止由于设备故障或者人为误操作而导致数据库损坏或数据的丢失。即便无法找回已经丢失的数据也可以根据备份信息重建丢失的数据。
数据库经常发生的故障如下:
(1)语句故障:执行SQL语句过程发生的逻辑故障可导致语句故障。如果用户编写的SQL语句无效,就会发生语句故障。Oracle可自我修复语句故障,撤销语句产生的而印象,并将控制权交给应用程序。
(2)用户进程故障:当用户程序出错而无法访问Oracle数据库时,就会发生用户进程故障。用户进程故障只会导致当前用户无法操作数据库,但不会影响其他用户进程,当用户进程出现故障时,进程监控程序(PMON)会自动执行进程恢复。
(3)实例故障:当Oracle数据库实例由于硬件或软件问题而无法继续运行时,就会发生实例故障。硬件问题包括意外断电,问题可能是服务器操作系统崩溃。如果发现实例故障,Oracle会自动完成实例修复。实例修复将数据库恢复到与故障之前的事务一致状态,Oracle会自动回滚未提交的数据。
(4)介质故障:介质故障是当一个数据库文件或者磁盘不能读或者不能写时出现的故障。
1.备份定义
备份就是把数据库复制到转储设备的过程。其中,转储设备是指用于放置数据库副本的磁带或磁盘。通常也将存放于转储设备中的数据库的副本称为原数据库的备份或转储。备份是一份数据副本。
2.备份分类和意义
从物理与逻辑的角度来分类:
从物理与逻辑的,备份可以分为物理备份和逻辑备份。
物理备份:对数据库操作系统的物理文件(数据文件,控制文件和日志文件)的备份。物理备份又可以分为脱机备份(冷备份)和联机热备份,前者是在关闭数据库的时候进行的,后者是以归档日志的方式对运行的数据库进行备份。可以使用Oracle的恢复管理器(RMAN)或操作系统命令进行数据库的物理备份。
逻辑备份:对数据库逻辑组件(如表和存储过程等数据库对象)的备份。逻辑备份的手段很多,如传统的EXP,数据泵(EXPDP),数据库闪回技术等第三方工具,都可以进行数据库的逻辑备份。
从数据库的备份角度分类:
从数据库的备份角度,备份可以分为完全备份和增量备份和差异备份。
完全备份:每次对数据库进行完整备份,当发生数据丢失的灾难时,完全备份无需依赖其他信息即可实现100%的数据恢复,其恢复时间最短且操作最方便。
增量备份:只有那些在上次完全备份或增量备份后被修改的文件才会被备份。优点是备份数据量小,需要的时间短,缺点是恢复的时候需要依赖以前备份记录,出问题的风险较大。
差异备份:备份那些自从上次完全备份之后被修改过的文件。从差异备份中恢复数据的时间较短,因此只需要两份数据—最后一次完整备份和最后一次差异备份,缺点是每次备份需要的时间较长。
备份的意义:
(1)保护数据,避免因为各种故障而丢失数据。
(2)MTBF:平均故障间隔时间。
(3)MTTR:平均恢复时间。
3.恢复定义和分类
恢复就是发生故障后,利用已备份的数据文件或控制文件,重新建立一个完整的数据库。
恢复包括如下的分类:
实例恢复:当Oracle实例出现失败后,Oracle自动进行的恢复。
介质恢复:当存放数据库的介质出现故障时所作的恢复。介质恢复又分为完全恢复和不完全恢复。
完全恢复:将数据库恢复到数据库失败时的状态。这种恢复是通过装载数据库备份并应用全部的重做日志做到的。
不完全恢复:将数据库恢复到数据库失败前的某一时刻的状态。这种恢复是通过装载数据库备份并应用部分的重做日志做到的。进行不完全恢复后,必须在启动数据库时用resetlogs选项重设联机重做日志。

13.2手工备份
尽管在Oracle中,已经有了RMAN的备份与恢复。但是作为Oracle备份恢复的一种方式,在本节中通过一个例子介绍如何使用手工的方式来完成Oracle的备份。手工方式的本质是通过操作系统的cp命令完成,但是在备份与恢复的时候,需要把数据块置为正确的状态。
手工方式下也存在一些缺点,例如:需要手工管理备份内容,容易丢失,不利于管理
手工备份的步骤:
备份和还原都使用 OS 复制命令。
恢复用 sqlplus 命令recover。

【例13-1】使用手工备份方式,备份整个数据库和表空间users。
(1)检查需要备份的数据文件,代码如下:
–第13章\bfhf.sql

select name from v d a t a f i l e ; s e l e c t f i l e i d , f i l e n a m e , t a b l e s p a c e n a m e f r o m d b a d a t a f i l e s ; ( 2 ) 检查要备份的控制文件,代码如下: s e l e c t n a m e f r o m v datafile; select file_id,file_name,tablespace_name from dba_data_files; (2)检查要备份的控制文件,代码如下: select name from v datafile;selectfileidfilenametablespacenamefromdbadatafiles;(2)检查要备份的控制文件,代码如下:selectnamefromvcontrolfile;
(3)对整个数据库进行备份,在线 redo 日志不需要做备份。
注意:对只读的表空间不能做热备份,临时表空间不需要备份,数据库必须在归档模式
对整个库做备份,修改数据为备份状态,代码如下:
–查询数据库归档方式
select name,log_mode from v$database;
–修改数据库归档方式
shutdown immediate; --关闭数据库
startup mount; --打开数据库
alter database archivelog;–设置数据库为归档日志模式

alter database begin backup;
alter database end backup;
(4)对users表空间做备份,代码如下:
alter tablespace users begin backup;
alter tablespace users end backup;
(5)备份期间利用 vKaTeX parse error: Expected 'EOF', got '#' at position 66: …; select file#̲,checkpoint_cha…datafile_header;
select * from v$backup;
执行后,查看数据文件如图13-1所示。

图13-1 查看数据文件
执行后,动态如图13-2所示。

相关文章:

  • 政务大模型的春天,AI办公先萌芽
  • 【软件工程】面向对象编程(OOP)概念详解
  • if consteval
  • 9. 使用Gazebo和Rviz显示机器人(包括运动控制,雷达,摄像头仿真以及显示)
  • yum install 失败
  • 政策支持与市场驱动:充电桩可持续发展的双轮引擎
  • cmake qt 项目编译
  • 亚马逊环保标识运营指南:抢占流量新赛道的6大策略解析
  • 对话式 BI:让数据洞察从“专业门槛”变为“对话本能”
  • 【Keil5-开发指南】
  • 使用Docker安装Harbor
  • 机器学习day2
  • 防火墙拦截DNS请求-原理解析
  • 核心要点:线程
  • 机器学习-08-时序数据分析预测
  • IEEE会议:第十届网络安全与信息工程国际会议(ICCSIE 2025)
  • Java后端开发day38--不可变集合Stream流
  • 2799. 统计完全子数组的数目
  • 硅基计划 学习总结 拾
  • 在 cmd shell 中执行 metasploit vbs payload
  • 保利发展去年净利润约50亿元,在手现金1342亿元
  • 西班牙葡萄牙突发全国大停电,欧洲近年来最严重停电事故何以酿成
  • 特朗普的百日执政支持率与他“一税解千愁”的世界观和方法论
  • 下任美联储主席热门人选沃什:美联储犯下“系统性错误”,未能控制一代人以来最严重的通胀
  • 我国首个核电工业操作系统发布,将在华龙一号新机组全面应用
  • 大漠孤烟为何“直”?物理学家在唐诗中读出“不一样的美”