前言
这篇文章,本是我为CSDN写的,面向对象为中低用户,但考虑到这里也有人问过这样
的问题,偶就往这里也复制一份。在读该文章之前,建议对ORACLE构架有所了解,因为
ORACLE的备份与恢复,都是与ORACLE的构架紧密相关的,特别是ORACLE的SCN。
关于备份与恢复的文章,网上也有不少,进入Google,输入ORACLE备份,点击搜索,
我相信搜索出来的记录没有一个人能读完,但是大部分不是太老,也就是太不完全,很早我
就想总结一下了,我的这篇文章,主旨并不是说大家读了这篇文章,就会了备份的相关知
识,它仅仅也是一个提示,希望大家能从中得到益处。
概要
1、了解什么是备份
2、了解备份的重要性
3、理解数据库的两种运行方式
4、理解不同的备份方式及其区别
5、了解正确的备份策略及其好处
一、了解备份的重要性
可以说,从计算机系统出世的那天起,就有了备份这个概念,计算机以其强大的速度处理能力,
取代了很多人为的工作,但是,往往很多时候,它又是那么弱不禁风,主板上的芯片、主板电
路、内存、电源等任何一项不能正常工作,都会导致计算机系统不能正常工作。当然,这些损坏
可以修复,不会导致应用和数据的损坏。但是,如果计算机的硬盘损坏,将会导致数据丢失,此
时必须用备份恢复数据。
其实,在我们的现实世界中,已经就存在很多备份策略,如RAID技术,双机热备,集群技术发
展的不就是计算机系统的备份和高可用性吗?有很多时候,系统的备份的确就能解决数据库备份
的问题,如磁盘介质的损坏,往往从镜相上面做简单的恢复,或简单的切换机器就可以了。
但是,上面所说的系统备份策略是从硬件的角度来考虑备份与恢复的问题,这是需要代价的。我
们所能选择备份策略的依据是:丢是数据的代价与确保数据不丢失的代价之比。还有的时候,硬
件的备份有时根本满足不了现实需要,假如你误删了一个表,但是你又想恢复的时候,数据库的
备份就变的重要了。ORACLE本身就提供了强大的备份与恢复策略,这里我们只讨论ORACLE
备份策略,以下的备份都是指ORACLE数据库备份,恢复将放到下一讲中。
所谓备份,就是把数据库复制到转储设备的过程。其中,转储设备是指用于放置数据库拷贝的磁
带或磁盘。
能够进行什么样的恢复依赖于有什么样的备份。作为 DBA,有责任从以下三个方面维护数据库
的可恢复性:
·使数据库的失效次数减到最少,从而使数据库保持最大的可用性;
·当数据库不可避免地失效后,要使恢复时间减到最少,从而使恢复的效率达到最高;
·当数据库失效后,要确保尽量少的数据丢失或根本不丢失,从而使数据具有最大的可恢复
性。
灾难恢复的最重要的工作是设计充足频率的硬盘备份过程。备份过程应该满足系统要求的可恢复
性。例如,如果数据库可有较长的关机时间,则可以每周进行一次冷备份,并归档重做日志,对
于24*7的系统,或许我们考虑的只能是热备份。 如果每天都能备份当然会很理想,但要考虑其
现实性。企业都在想办法降低维护成本,现实的方案才可能被采用。只要仔细计划,并想办法达
到数据库可用性的底线,花少量的钱进行成功的备份与恢复也是可能的。
二、了解ORACLE的运行方式
ORACLE数据库有两种运行方式:一是归档方式(ARCHIVELOG),归档方式的目的是当数据
库发生故障时最大限度恢复数据库,可以保证不丢失任何已提交的数据;二是不归档方式
(NOARCHIVELOG),只能恢复数据库到最近的回收点(冷备份或是逻辑备份)。我们根据数据
库的高可用性和用户可承受丢失的工作量的多少,对于生产数据库,强烈要求采用为归档方式;
那些正在开发和调试的数据库可以采用不归档方式。
如何改变数据库的运行方式,在创建数据库时,作为创建数据库的一部分,就决定了数据库初始
的存档方式。一般情况下为NOARCHIVELOG方式。当数据库创建好以后,根据我们的需要把
需要运行在归档方式的数据库改成ARCHIVELOG方式。
1、改变不归档方式为为归档方式
a.关闭数据库,备份已有的数据,改变数据库的运行方式是对数据库的重要改动,所以要对数据
库做备份,对可能出现的问题作出保护。
b. 修改初试化参数,使能自动存档
修改(添加)初始化文件init[SID].ora参数:
log_archive_start=true #启动自动归档
log_archive_format=ARC%T%S.arc #归档文件格式
log_archive_dest=/arch12/arch #归档路径
在8i中,可以最多有五个归档路径,并可以归档到其它服务器,如备用数据库(standby
database)服务器
c.启动Instance到Mount状态,即加载数据库但不打开数据库:
$>SVRMGRL
SVRMGRL >connect internal
SVRMGRL >startup mount
d.发出修改命令
SVRMGRL >alter database archivelog;
SVRMGRL>alter database open;
2、改变归档状态为不归档状态
与以上步骤相同,但有些操作不一样,主要是在以上的b操作中,现在为删除或注释该参数,
在d操作中,命令为
SVRMGRL >alter database noarchivelog;
注意,从归档方式转换到非归档方式后一定要做一次数据库的全冷备份,防止意外事件的发
生。