序言
任何数据库在常年使用过程中,就会存在一定的安全隐患。对于数据库管理员来说不能仅寄希望于计算机操作系统的安全运行,而是要构建一整套的数据库备份与恢复机制。
当数据库发生故障后,希望能重新构建一个完整的数据库,该处理称为数据库恢复。恢复子系统是数据库管理系统的一个重要组成部份。恢复处理随所发生的故障类型所影响的结构而变化。如何能够对Oracle数据库进行备份?怎么能够对删掉的数据再进行恢复?这是本篇文章主要讲的内容。
ORACLE数据库有两类备份方式。
第一类为化学备份:
该方式实现数据库的完整恢复,但数据库必须运行在归挡模式下(业务数据库在非归挡模式下运行),且须要极大的外部储存设备,比如磁带库;
第二类为逻辑备份:
业务数据库采用此种方法,此方式不须要数据库运行在归挡模式下,不但备份简单,并且可以不须要外部储存设备。
数据库逻辑备份方式:
ORACLE数据库的逻辑备份分为三种模式:表备份、用户备份和完全备份。
表模式
备份某个用户模式下指定的对象(表)。业务数据库一般采用这些备份方法。
若备份到本地文件,使用如下命令:
[root@~]#expicdmain/icdrows=yindexes=ncompress=nbuffer=65536feedback=100000volsize=0file=exp_icdmain_csd_yyyymmdd.dmplog=exp_icdmain_csd_yyyymmdd.logtables=moninformation,icdmain.serviceinfo,icdmain.dealinfo
若直接备份到磁带设备,使用如下命令:
[root@~]#expicdmain/icdrows=yindexes=ncompress=nbuffer=65536feedback=100000volsize=0file=/dev/rmt0log=exp_icdmain_csd_yyyymmdd.logtables=moninformation,icdmain.serviceinfo,icdmain.dealinfo
注:在c盘空间容许的情况下,应先备份到本地服务器linux系统数据库备份,之后再拷贝到磁带。出于速率方面的考虑,尽量不要直接备份到磁带设备。
用户模式
备份某个用户模式下的所有对象。业务数据库一般采用这些备份方法。
若备份到本地文件,使用如下命令:
[root@~]#expicdmain/icdowner=icdmainrows=yindexes=ncompress=nbuffer=65536feedback=100000volsize=0file=exp_icdmain_yyyymmdd.dmplog=exp_icdmain_yyyymmdd.log
若直接备份到磁带设备,使用如下命令:
[root@~]#expicdmain/icdowner=icdmainrows=yindexes=ncompress=nbuffer=65536feedback=100000volsize=0file=/dev/rmt0log=exp_icdmain_yyyymmdd.log
注:假如c盘有空间,建议备份到c盘,之后再拷贝到磁带。假如数据库数据量较小,可采用这些办法备份。
完全模式
备份完整的数据库,业务数据库不采用这些备份方法。
完全备份:
[root@~]#expicdmain/icdrows=yindexes=ncompress=nbuffer=65536feedback=100000volsize=0full=yfile=exp_fulldb_yyyymmdd.dmp(磁带设备则为/dev/rmt0)log=exp_fulldb_yyyymmdd.log
注:对于数据库备份,建议采用增量备份,即只备份上一次备份以来修改的数据。
增量备份:
[root@~]#expicdmain/icdrows=yindexes=ncompress=nbuffer=65536feedback=100000volsize=0full=yinctype=incrementalfile=exp_fulldb_yyyymmdd.dmplog=exp_fulldb_yyyymmdd.log(磁带设备则为file=/dev/rmt0)
注:关于增量备份必须满足下述条件:
只对完整数据库备份有效红旗linux下载,且第一次须要full=y参数,之后须要inctype=incremental参数。
用户必须有EXP_FULL_DATABASE的系统角色。
话务量较小时方可采用数据库备份。
假如c盘有空间,建议备份到c盘,之后再备份到磁带。
业务数据库备份方式及周期
用EXP进行备份前,先在SYS用户下运行CATEXP.SQL文件(假如曾经已运行该文件,则不要执行这个脚本),没有特殊说明,不容许在顾客端执行备份命令。
日结表数据备份,每月备份一次。
要备份的表为:
ALLSTAFFWORK_DAY_LOG
ALLSTAFFWORK_DAYLOG
AUTOCALLLOG_DAYLOG
LOCALZONE_DAYLOG
SERVICEINFO_DAYLOG
TELFEELOG_DAYLOG
TSHANDLEREPLY_DAYLOG
备份命令参照表模式下的备份命令。
业务相关表数据备份
每周一、四备份。要备份的表为:
Commoninformation
ServiceInfo
DealInfo
AutoCallLog
AutoFaxLog
ServiceInfoAdd
TelFeeLog
备份命令参照表模式下的备份命令。
从c盘文件备份到磁带
假如首先备份到本地c盘文件linux系统数据库备份,则须要轮询到磁带设备上。
若需查看主机上配置的磁带设备,使用如下命令:
[root@~]#lsdev-Cctape
显示的结果如下例所示:
rmt0Available30-58-00-2,0SCSI4mmTapeDrive
rmt1Defined30-58-00-0,0SCSI4mmTapeDrive
标注Available的设备是可用的磁带设备。
若需查看磁带储存的内容,使用如下命令:
[root@~]#tar-tvf/dev/rmt0
显示的结果如下例所示:
-rw-r--r--300Jan1114:33:572001exp_icdmain_20010111.dmp
注:假如显示类似如下内容qq for linux,则表示该磁带储存的备份数据是从数据库直接备份到磁带上,而非从本地c盘轮询到磁带的备份文件,因而操作系统未能辨识。
tar:0511-193Anerroroccurredwhilereadingfromthemedia.Thereisaninputoroutputerror.或
tar:0511-169Adirectorychecksumerroronmedia;-267331077notequalto25626.
对于新磁带或无需保留现存数据的磁带,使用如下命令:
[root@~]#tar-cvf/dev/rmt0exp_icdmain_yyyymmdd.dmp
注:
1.该命令将无条件覆盖磁带上的现存数据。
2.文件名不容许包含路径信息,如:/backup/exp_icdmain_yyyymmdd.dmp。
对于须要保留现存数据的磁带,使用如下命令:
[root@~]#tar-rvf/dev/rmt0exp_icdmain_yyyymmdd.dmp
注:该命令将文件exp_icdmain_yyyymmdd.dmp追加到磁带的末端,不会覆盖现存的数据。
非常指出:假如备份时是从数据库直接备份到磁带上,则不可再向该磁带上追加复制任何其他文件,否则该备份数据失效。
若需将轮询到磁带上的备份文件复制到本地硬碟,使用如下命令:
A.将磁带上的全部文件复制到本地硬碟的当前目录
[root@~]#tar-xvf/dev/rmt0
B.将磁带上的指定文件复制到本地硬碟的当前目录
[root@~]#tar-xvf/dev/rmt0exp_icdmain_yyyymmdd.dmp
备份时间安排
因为备份时对系统I/O有较大影响,所以,建议在夜晚11点之后进行备份工作。
业务数据库Oracle版本的恢复
恢复方案需依照备份方案确定。因为业务数据库采用表备份和用户备份相结合的方案,所以业务数据库的恢复需依照实际情况采用表恢复和用户恢复相结合的方案。
恢复方案
数据库的逻辑恢复分为表恢复、用户恢复、完全恢复三种模式。
表模式
此方法将按照根据表模式备份的数据进行恢复。
恢复备份数据的全部内容
若从本地文件恢复,使用如下命令:
[root@~]#impicdmain/icdfromuser=icdmaintouser=icdmainrows=yindexes=ncommit=ybuffer=65536feedback=100000ignore=nvolsize=0file=exp_icdmain_csd_yyyymmdd.dmplog=imp_icdmain_csd_yyyymmdd.log
若从磁带设备恢复,使用如下命令:
[root@~]#impicdmain/icdfromuser=icdmaintouser=icdmainrows=yindexes=ncommit=ybuffer=65536feedback=100000ignore=nvolsize=0file=/dev/rmt0log=imp_icdmain_csd_yyyymmdd.log
B.恢复备份数据中的指定表
若从本地文件恢复,使用如下命令:
[root@~]#impicdmain/icdfromuser=icdmaintouser=icdmainrows=yindexes=ncommit=ybuffer=65536feedback=100000ignore=nvolsize=0file=exp_icdmain_csd_yyyymmdd.dmplog=imp_icdmain_csd_yyyymmdd.logtables=commoninformation,serviceinfo
若从磁带设备恢复,使用如下命令:
[root@~]#impicdmain/icdfromuser=icdmaintouser=icdmainrows=yindexes=ncommit=ybuffer=65536feedback=100000ignore=nvolsize=0file=/dev/rmt0log=imp_icdmain_csd_yyyymmdd.logtables=commoninformation,serviceinfo
用户模式
此方法将按照根据用户模式备份的数据进行恢复
恢复备份数据的全部内容
若从本地文件恢复,使用如下命令:
[root@~]#impicdmain/icdfromuser=icdmaintouser=icdmainrows=yindexes=ncommit=ybuffer=65536feedback=100000ignore=nvolsize=0file=exp_icdmain_yyyymmdd.dmplog=imp_icdmain_yyyymmdd.log
若从磁带设备恢复,使用如下命令:
[root@~]#impicdmain/icdfromuser=icdmaintouser=icdmainrows=yindexes=ncommit=ybuffer=65536feedback=100000ignore=nvolsize=0file=/dev/rmt0log=imp_icdmain_yyyymmdd.log
恢复备份数据中的指定表
若从本地文件恢复,使用如下命令:
[root@~]#impicdmain/icdfromuser=icdmaintouser=icdmainrows=yindexes=ncommit=ybuffer=65536feedback=100000ignore=nvolsize=0file=exp_icdmain_yyyymmdd.dmplog=imp_icdmain_yyyymmdd.logtables=commoninformation,serviceinfo
若从磁带设备恢复,使用如下命令:
[root@~]#impicdmain/icdfromuser=icdmaintouser=icdmainrows=yindexes=ncommit=ybuffer=65536feedback=100000ignore=nvolsize=0file=/dev/rmt0log=imp_icdmain_yyyymmdd.logtables=commoninformation,serviceinfo
完全模式
假如备份方法为完全模式,采用下述恢复方式:
若从本地文件恢复,使用如下命令:
[root@~]#impsystem/managerrows=yindexes=ncommit=ybuffer=65536feedback=100000
END
Oracle数据库的常用的备份方式就写那么多,对于无论哪一种类型的数据库,备份对数据库来说都是重中之重的事情,假如数据库没有备份,这么一旦数据库死掉,这么将是灾难性的,所以说互联网中数据才是最重要的。
更多Oracle相关信息见Oracle专题页面
本文永久更新链接地址: