Oracle备份恢复方案.docx
- 文档编号:4770663
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:18
- 大小:23.46KB
Oracle备份恢复方案.docx
《Oracle备份恢复方案.docx》由会员分享,可在线阅读,更多相关《Oracle备份恢复方案.docx(18页珍藏版)》请在冰豆网上搜索。
Oracle备份恢复方案
Oracle备份恢复方案
第一章基础知识
一、备份内容:
备份数据库一般包括备份数据库文件、控制文件、归档重做日志文件和INIT.OTRA文件,如果有可能,备份还应包括可执行代码和配置文件。
二、备份方法分类:
主要的备份方法有物理备份、逻辑备份和恢复管理器(RMAN)备份。
1.物理备份是实际物理数据库文件从一处拷贝到另一处的备份,它使用操作系统提供的拷贝命令来完成,包括操作系统备份(NT下一般不用)、冷备份和热备份;
2.逻辑备份是利用SQL从数据库中抽取数据并存入二进制文件,这些数据可以重新导入原来的数据库,或者以后导入其它数据库,ORACLE提供的EXPORT/IMPORT工具可用于进行数据库的导入和导出。
3.恢复管理器RMAN(RecoveryManager)为Oracle8新引入,能够完成数据库的备份与恢复任务,既可以在图形用户界面GUI中使用,也可以在CLI(命令行)中使用。
三种方法各有长短,DBA应该综合灵活运用。
第二章物理备份和恢复
一、冷备份步骤如下:
1、关闭数据库实例:
命令行下关闭数据库有三种方式:
normal,immediate,和abort,对于备份而言,immediate方式最好,因为这种方式既避免了normal方式下因用户忘记退出而造成的等待,且因为Oracle进行了回滚和检查点操作,可以保证数据库的一致和完整性。
推荐在控制面板的服务窗口下关闭专用服务,可以彻底的关闭数据库,这里的数据库服务名为OracleServiceZZYD。
2、拷贝所有与数据库相关的物理文件:
包括控制文件、重做日志文件和数据库文件,这里拷贝目录E:
\ZZYD即可,另外最好把监听器配置文件(d:
\orace\ora81\network\admin\目录下的listener.ora和tnsnames.ora)也拷贝下来。
3、完成拷贝后重新启动数据库。
二、热备份步骤:
热备份是一个复杂的过程,这是因为每个表空间都是一个完整的备份过程。
具体步骤如下:
1、将某个表空间设置为备份模式:
altertablespaceYD_DATAbiginbackup;
2、拷贝与表空间相关的所有数据库文件;
3、取消该表空间的备份模式:
altertablespaceYD_DATAendbackup;
4、重复步骤1到3,直到所有的表空间都备份完毕;
5、拷贝控制文件;
6、拷贝联机重做日志。
三、恢复实例
假设由于系统瘫痪而重新安装了操作系统,那么安装Oracle软件之后不需要重新生成数据库即可实现原来数据的恢复,步骤如下:
1、把备份的内容拷贝到原来的目录下;
2、在命令行下重新创建和启动实例:
C:
\>oradim-new-sidZZYD-intpwdoracle-startmodeauto-pfilee:
\zzyd\pfile\init.ora
3、检查控制面板下的服务项已经起来;
4、配置网络或使用备份的listener.ora和tnsnames.ora文件重新启动监听器(注意:
如果用Net8EasyConfig配置网络,一定要在文件listener.ora里加入相应的内容
(SID_DESC=
(GLOBAL_DBNAME=zzyd)
(ORACLE_HOME=d:
\Oracle\Ora81)
(SID_NAME=ZZYD)
)
否则,智能代理将无法检测到该实例,便不能用OEM进行管理)
5、用其他方法对冷备份以来的数据库操作进行恢复。
如果是由于某种误操作导致数据库不能正常使用的情况,则恢复时先关闭数据库,再把e:
\zzyd的备份替换现在的目录,再重启数据库即可。
第三章逻辑备份和恢复
一、注意事项:
逻辑备份(导出/导入)相对来说较为简单,需注意的事项有
1、导出一致性,可有两种方法实现:
1)在导出过程中使用户不能连到数据库:
svrmgr>altersystemenablerestrictedsession
或暂时停止监听服务
2)导出时设置CONSISTENT=Y,导出过程中用户可以使用数据库,但速度较慢。
2、导出和导入时注册表中的HKEY_LOCAL_MACHINE/SOFTWHERE/ORACLE/HOME0/NLS_LANG语言设置要相同,否则会因字符集转换错误而不能进行导入。
二、导出
导出工作于三种模式,但同时只能使用一种,否则会提示有冲突:
用户模式OWNER=ownerlist
表模式TABLES=tablelist
完全数据库模式FULL=Y
下面是电业局用电MIS服务器用到的两个导出命令行:
expsystem/manager@zzydOWNER=dbofile=f:
\backup\zzyd_data.dmpconsistent=ylog=f:
\backlog\dmpzzyddata.log
expsystem/manager@zzydfile=f:
\backup\zzyd_sys.dmpconsistent=ylog=f:
\backlog\dmpzzydsys.logTABLES=(PBCATCOL,PBCATEDT,
PBCATFMT,PBCATTBL,PBCATVLD)
我们把导出写成了批处理文件(c:
\bakscript\expzzyd.bat),导出日志(f:
\backlog\dmpzzyddata.log和f:
\backlog\dmpzzydsys.log)记录了导出的整个过程。
注:
两次同样的导出,第二次会把第一次的到处文件覆盖,而用RMAN不会有同样的问题。
三、导入
导入与导出是互逆的,对应也有三种模式。
它可以在ASCII码和EBCDIC码之间进行转换,以实现数据能在不同平台之间进行移动。
值得注意的是,当原来的表空间已经充满数据时,这是导入会引起数据冲突,解决办法时重建空的表空间。
下面是郑州电业局用电MIS服务器:
impsystem/manager@ydfile=f:
\dmpyd\system0727.dmplog=f:
\dmpyd\impsys.logignore=ycommit=yfull=y
impdbo/dbo1021@ydfile=f:
\dmpyd\yd_data0727.dmplog=f:
\dmpyd\impdata.logignore=ycommit=yfull=y
第四章恢复管理器RMAN
一、RECOVERYMANAGER简介:
1、RECOVERYMANAGER为ORACLE8新引进。
既可以在图形用户界面GUI中使用,也可以在CLI(命令行)中使用,虽然在GUI中更加直观和容易理解,但在CLI中更加灵活和可靠,建议用户使用CLI进行备份和恢复操作。
2、RMAN能够建立除逻辑备份(EXPORT)以外的所有类型的备份,具体包括:
数据库备份(完全备份和增量备份)、表空间备份、数据文件备份、控制文件备份和归档日志备份。
3、RMAN工作时要使用恢复目录(RECOVERYCATALOG),备份操作信息被自动登记到RECOVERYCATALOG中,数据库进行恢复时要使用这些信息。
恢复目录需使用专用的数据库,如果恢复目录建立在要进行备份的数据库中,则一旦该数据库出现故障,恢复目录就不能使用,恢复工作也就无法完成。
4、一般为区别起见,完整备份和增量备份采用不同的CHANNEL,恢复时先利用完整备份ALLOCATCHANNEL,然后RESTOREDATABASE;再顺次利用各个增量备份ALLOCATE他们的CHANNEL,然后RESTOREDATABASE;都完成后,进行一次RECOVERDATABASE。
5、RECVOERYCATALOG支持三种备份:
备份集、数据文件拷贝(也成为快照拷贝)和操作系统备份。
备份集用BACKUP命令创建,快照拷贝使用RECOVERYMANAGER的COPY命令创建,这两种备份操作都自动登记到恢复目录中,操作系统备份要使用RECOVERYMANAGER的CATALOG命令登记到恢复目录中。
二、DBMS_BACKUP_RESTOREPACKAGE
此程序包为备份/恢复所必须使用的,DBMSBKRS.SQL脚本创建;正常情况下,已被CATPROC.SQL脚本调用过。
若不存在,会出现ORA-406错误。
三、RMAN的配置:
1、利用数据库创建助手(如ORACLEDATABASEASSISTANT)创建一个专用数据库RCV:
这个数据库用来存储RMAN的有关操作信息,在进行数据库恢复时要用到这些信息:
SVRMGR>connectinternal/oracle@rcv
连接成功。
2、创建RMAN用户:
SVRMGR>createtablespacercvdata
2>datafile
3>'d:
\Oracle\Oradata\rcv\rcvdata.dbf'size50M;
语句已处理。
SVRMGR>createtablespacercvtemp
2>datafile
3>'d:
\Oracle\Oradata\rcv\rcvtemp.dbf'size20M;
语句已处理。
SVRMGR>createuserrmanidentifiedbyrman
2>temporarytablespacercvtemp
3>defaulttablespacercvdata
4>quotaunlimitedonrcvdata;
语句已处理。
SVRMGR>grantrecovery_catalog_ownertorman;
语句已处理。
SVRMGR>grantconnect,resourcetorman;
语句已处理。
SVRMGR>
3、修改注册表HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0目录下的NLS_LANG项为America_America.ZHS16CGB231280(修改注册表后,显示变为英文,如不修改,以后数据库的恢复工作将难以进行)
4、把ZZYD的初始化文件INIT.ORA作如下修改并重新启动该数据库:
#mts_dispatchers="(protocol=TCP)(DISP=1)(mul=OFF)(pool=OFF)"
#mts_max_dispatchers=5
#mts_servers=1
#mts_max_servers=20
5、启动RMAN,提示没有安装恢复目录
SVRMGR>exit
ServerManagercomplete.
C:
\>rmancatalogrman/rman@rcv
RecoveryManager:
Release8.1.5.0.0-Production
RMAN-06008:
connectedtorecoverycatalogdatabase
RMAN-06428:
recoverycatalogisnotinstalled
6、创建恢复目录
RMAN>createcatalogtablespacercvdata;
RMAN-06431:
recoverycatalogcreated
7、重新连接目标数据库和恢复目录数据库并进行注册:
RMAN>exit
RecoveryManagercomplete.
C:
\>rmantargetinternal/oracle@zzydcatalogrman/rman@rcv
RecoveryManager:
Release8.1.5.0.0-Production
RMAN-06005:
connectedtotargetdatabase:
ZZYD(DBID=4191796885)
RMAN-06008:
connectedtorecoverycatalogdatabase
RMAN>registerdatabase;
RMAN-03022:
compilingcommand:
register
RMAN-03023:
executingcommand:
register
RMAN-08006:
databaseregisteredinrecoverycatalog
RMAN-03023:
executingcommand:
fullresync
RMAN-08029:
snapshotcontrolfilenamesettodefaultvalue:
%ORACLE_HOME%\DATABA
SE\SNCF%ORACLE_SID%.ORA
RMAN-08002:
startingfullresyncofrecoverycatalog
RMAN-08004:
fullresynccomplete
RMAN>
8、检验RMAN已经可以使用。
注:
一个数据库只能被注册一次,如果恢复目录创建失败或注册失败,应该先把现在的恢复目录删除,然后重新创建和注册,删除方法如下:
RMAN>dropcatalog;
RMAN-06435:
recoverycatalogownerisrman
RMAN-06436:
enterDROPCATALOGcommandagaintoconfirmcatalogremoval
RMAN>dropcatalog;
RMAN-06432:
recoverycatalogdropped
四、使用RMAN备份实例:
做完了RMAN的配置工作,以后就可以使用它进行数据库的备份和恢复了,在命令行下执行如下命令:
C:
\>rmantargetinternal/oracle@zzydcatalogrman/rman@rcv
RecoveryManager:
Release8.1.5.0.0-Production
RMAN-06005:
connectedtotargetdatabase:
ZZYD(DBID=4191796885)
RMAN-06008:
connectedtorecoverycatalogdatabase
RMAN>
然后直接输入命令行或调用事先写好的备份脚本就可以进行工作了。
这里为了方便用户,我们写了如下备份脚本和脚本调用批处理文件,并对程序运行结果做了完整记录,具体介绍如下:
1、数据库的完全备份
备份脚本:
c:
\backupscript\bakdbfull.txt
脚本调用批处理文件:
c:
\backupscript\bakdbfull.bat
执行结果记录文件:
f:
\backlog\bakdbfull.log
2、数据零级增量备份:
备份脚本:
c:
\backupscript\bakinc0.txt
脚本调用批处理文件:
c:
\backupscript\bakinc0.bat
执行结果记录文件:
f:
\backlog\bakinc0.log
3、数据库一级增量备份:
备份脚本:
c:
\backupscript\bakinc1.txt
脚本调用批处理文件:
c:
\backupscript\bakinc1.bat
执行结果记录文件:
f:
\backlog\bakinc1.log
4、数据库二级增量备份:
备份脚本:
c:
\backupscript\bakinc2.txt
脚本调用批处理文件:
c:
\backupscript\bakinc2.bat
执行结果记录文件:
f:
\backlog\bakinc2.log
5、控制文件的备份:
备份脚本:
c:
\backupscript\contr.txt
脚本调用批处理文件:
c:
\backupscript\contr.bat
执行结果记录文件:
f:
\backlog\contr.log
6、归档日志的备份:
备份脚本:
c:
\backupscript\bakarchall.txt
脚本调用批处理文件:
c:
\backupscript\bakarchall.bat
执行结果记录文件:
f:
\backlog\bakarchall.log
7、表空间的备份(这里以表空间YD_DATA为例):
备份脚本:
c:
\backupscript\tbs.txt
脚本调用批处理文件:
c:
\backupscript\baktbs.bat
执行结果记录文件:
f:
\backlog\tbs.log
8、数据文件的备份(这里以表空间YD_DATA的6个数据文件为例):
备份脚本:
c:
\backupscript\datafile.txt
脚本调用批处理文件:
c:
\backupscript\datafile.bat
执行结果记录文件:
f:
\backlog\datafile.log
9、在线重做日志及过去一天归档日志的备份:
备份脚本:
c:
\backupscript\onlinelog.txt
脚本调用批处理文件:
c:
\backupscript\onlinelog.bat
执行结果记录文件:
f:
\backlog\onlinelog.log
五、使用RMAN进行数据库恢复实例:
实例1:
系统表丢失的恢复验证过程:
1、模拟丢失系统表文件。
1)把目标数据库SHUTDOWN:
C:
\>svrmgrl
OracleServerManagerRelease3.1.5.0.0-Production
(c)Copyright1997,OracleCorporation.AllRightsReserved.
Oracle8iRelease8.1.5.0.0-Production
WiththeJavaoption
PL/SQLRelease8.1.5.0.0-Production
SVRMGR>connectinternal/oracle@zzyd;
Connected.
SVRMGR>shutdownimmediate;
Databaseclosed.
Databasedismounted.
ORACLEinstanceshutdown.
SVRMGR>
2)把目标数据库的系统表数据文件E:
\ZZYD\SYSTEM01.DBF重命名为:
SSYSTEM01.DBF;
3)重新启动目标数据库时,数据库不再能打开,出现如下信息:
SVRMGR>startuppfile=e:
\zzyd\pfile\init.ora;
ORACLEinstancestarted.
TotalSystemGlobalArea468557772bytes
FixedSize65484bytes
VariableSize450641920bytes
DatabaseBuffers17776640bytes
RedoBuffers73728bytes
Databasemounted.
ORA-01157:
cannotidentify/lockdatafile1-seeDBWRtracefile
ORA-01110:
datafile1:
'E:
\ZZYD\SYSTEM01.DBF'
SVRMGR>
2、利用RMAN进行恢复
这时可以发现,系统指出数据库因系统文件丢失错误而无法打开,下面根据做过的数据库备份进行恢复:
1)打开恢复管理器:
SVRMGR>exit;
ServerManagercomplete.
C:
\>rmantargetinternal/oracle@zzydcatalogrman/rman@rcv
RecoveryManager:
Release8.1.5.0.0-Production
RMAN-06005:
connectedtotargetdatabase:
ZZYD(DBID=4191048776)
RMAN-06008:
connectedtorecoverycatalogdatabase
RMAN>
2)运行系统表恢复脚本文件:
RMAN>@c:
\backup\rec.txt
RMAN>run{
2>allocatechanneldev1typedisk;
3>restoretablespacesystem;
4>recovertablespacesystem;
5>alterdatabaseopen;
6>releasechanneldev1;
7>}
RMAN-03022:
compilingcommand:
allocate
RMAN-03023:
executingcommand:
allocate
RMAN-08030:
allocatedchannel:
dev1
RMAN-08500:
channeldev1:
sid=10devtype=DISK
RMAN-03022:
compilingcommand:
restore
RMAN-03022:
compilingcommand:
IRESTORE
RMAN-03023:
executingcommand:
IRESTORE
RMAN-08016:
channeldev1:
startingdatafilebackupsetrestore
RMAN-08502:
set_count=34set_stamp=403871091creation_time=25-JUL-00
RMAN-08089:
channeldev1:
specifyingdatafile(s)torestorefrombackupset
RMAN-08523:
restoringdatafile00001toE:
\ZZYD\SYSTEM01.DBF
RMAN-08089:
channeldev1:
specifyingdatafile(s)torestorefrombackupset
RMAN-08523:
restoringdatafile00001toE:
\ZZYD\SYSTEM01.DBF
RMAN-08023:
channeldev1:
restoredbackuppiece1
RMAN-08511:
piecehandle=F:
\BACKUP\INC_LEVEL0_T%params=NULL
RMAN-08024:
channeldev1:
restorecomplete
RMAN-03023:
executingcommand:
partialresync
RMAN-08003:
startingpartialresyncofrecoverycatalog
RMAN-08005:
partialresynccomplete
RMAN-03022:
compilingcommand:
recover
RMAN-03022:
compilingcommand:
recover
(1)
RMAN-03022:
compilingco
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 备份 恢复 方案