Oracle经典数据库备份手册doc.docx
《Oracle经典数据库备份手册doc.docx》由会员分享,可在线阅读,更多相关《Oracle经典数据库备份手册doc.docx(18页珍藏版)》请在冰豆网上搜索。
![Oracle经典数据库备份手册doc.docx](https://file1.bdocx.com/fileroot1/2023-1/31/b8cddafa-53c4-4268-92a2-67c000bf8877/b8cddafa-53c4-4268-92a2-67c000bf88771.gif)
Oracle经典数据库备份手册doc
Oracle数据库备份手册
1故障类型
●实例故障
由ORACLE内部异常、操作系统故障或其它相关软件引起,导致ORACLE实例中的进程或内存区出现故障或数据库无法正常关闭,这种故障称为实例故障。
实例故障没有本质上的破坏,无须对数据库进行恢复,只要重启数据库就可正常。
●媒介故障
媒介故障主要是由于磁盘驱动器出问题、磁盘块坏、数据文件被删除或损坏等引起,文档中所介绍的备份方法基本为这种故障而设计的。
2与备份相关的数据库环境
2.1数据库类型
与数据库备份最紧密相关的数据库设置相信应该是有无重做日志的归档,依此可将数据库划分为两大类型:
●noarchivelog
重做日志归档的备份,这种情况数据运行性能高,但数据库恢复不够灵活。
对于无归档的备份,可采用的方式比较简单,主要是以逻辑备份和脱机准备份为主。
当数据文件或控制文件被损坏或丢失的情况下只能做全数据库的恢复,且只能恢复至备份的时间点。
●archivelog
有重做日志归档的备份,重做日志的归档将很大程度影响数据库的运行性能,但对数据库安全性要求极高的数据库系统必须要有重做日志的归档。
这种情况的备份和恢复可采用的形式较多,有逻辑备份、脱机冷备份、联机热备份。
可执行基于时间的恢复,单个数据文件的恢复。
2.2archivelog的设置
由于ORACLE数据库创建时缺省是为NOARCHIVELOG方式,下面的内容将介绍如何将无重做日志归档的数据库系统改为有重做日志归档的数据库系统。
2.2.1archivelog的查看
查看数据库是否有重做日志的归档,可以查看动态性能视图V$DATABASE中的LOG_MODE列,如果列值为ARCHIVELOG则为重做日志归档模式,如果列值为NOARCHIVELOG则为重做日志不归档模式。
查看命令如下:
selectlog_modefromv$database;
2.2.1archivelog的设置
重做日志不归档修改为重做日志归档的方法:
1、先关闭数据库svrmgrl>shutdownimmediate;
2、对数据库做一次冷备份,即备份所有的数据文件、控件文件、重做日志文件、参数文件、口令文件;
3、在initXXX.ora(XXX表示实例的SID)参数文件中,增加如下参数:
LOG_ARCHIVE_DEST=filenameordevicename(归档文件的路径)
LOG_ARCHIVE_FORMAT=filenameextension(归档文件名的格式)
例如:
LOG_ARCHIVE_DEST=/archive/arch
LOG_ARCHIVE_FORMAT=%s.arc
4、启动数据库实例svrmgrl>startupmount
5、改变数据库为归档模式svrmgrl>alterdatabasearchivelog;
6、打开数据库svrmgrl>alterdatabaseopen;
3备份方案
3.1备份方案1——操作系统脱机冷备份
对于可以down机的数据库系统,采用这种方法对数据库文件进行一次性备份,恢复时只能恢复到备份时间,建议在系统安装配置完成之后,提交运行前,采用这种方法进行数据库的一次备份,以后恢复时结合逻辑备份,基本可将系统恢复至可用状态。
具体方法如下:
通过V$DATAFILE,V$LOGFILE,V$CONTROLFILE查看有哪些数据文件、日志文件及控制文件需要进行备份,分别在哪些目录中。
将这三类文件用操作系统拷贝指令复制到一个独立的硬盘或磁带上,以备日后使用。
同时还需备份口令文件、参数文件及重做日志文件。
查询指令如下:
SVRMGR>selectfile#,namefromv$datafile;
FILE#NAME
1C:
\ORANT\DATABASE\SYS1ZXY.ORA
2C:
\ORANT\DATABASE\RBS1ZXY.ORA
3C:
\ORANT\DATABASE\USR2ZXY.ORA
4C:
\ORANT\DATABASE\TMP1ZXY.ORA
5C:
\ORANT\DATABASE\INDX1ZXY.ORA
6C:
\ORANT\DATABASE\ZXY1ZXY.ORA
SVRMGR>select*fromv$logfile;
GROUP#STATUSMEMBER
1C:
\ORANT\DATABASE\LOGZXY1.ORA
2STALEC:
\ORANT\DATABASE\LOGZXY2.ORA
SVRMGR>select*fromv$controlfile;
STATUSNAME
C:
\ORANT\DATABASE\CTL1ZXY.ORA
C:
\ORANT\DATABASE\CTL2ZXY.ORA
口令文件、参数文件在WINDOWS操作系统中一般存入在/orant/database目录下。
/orant/database/initXXX.ora(XXX表示数据库实例名)
/orant/database/pwdXXX.ora
重做日志文件的存放路径及文件名可通过如下指令来查看,
SVRMGR>showparameterarchive
名称类型值
----------------------------------------------------------------------
log_archive_buffer_size整数127
log_archive_buffers整数4
log_archive_dest字符串C:
\orant\database\archive
log_archive_duplex_dest字符串
log_archive_format字符串arc%S.%T
log_archive_min_succeed_dest整数1
log_archive_start布尔值FALSE
3.2备份方案2——操作系统联机热备份
对数据文件进行备份,使用方便,恢复快。
如果数据文件丢失或损坏,可以利用备份文件将文件恢复到当前时间的数据,但不能恢复控制文件。
对于数据文件的保护可采用这种方法进行备份和恢复。
对于会修改的数据文件,最好每日做备份。
对于静态数据文件,则只做一次性备份即可。
方法:
altertablespaceXXXbeginbackup;
操作系统拷贝
altertablespaceXXXendbackup;
可通过V$BACKUP及V$DATAFILE_HEADER来查看正在备份的数据文件。
SVRMGR>select*fromv$backup;
FILE#STATUSCHANGE#TIME
-----------------------------------------------
1NOTACTIVE0
2NOTACTIVE0
3ACTIVE2143572001-02-1
4NOTACTIVE0
5NOTACTIVE0
6NOTACTIVE0
SVRMGR>Selectname,status,fuzzyfromv$datafile_header;
NAMESTATUSFUZ
----------------------------------------------------------------
C:
\ORANT\DATABASE\SYS1ZXY.ORAONLINE
C:
\ORANT\DATABASE\RBS1ZXY.ORAONLINE
C:
\ORANT\DATABASE\USR2ZXY.ORAONLINEYES
C:
\ORANT\DATABASE\TMP1ZXY.ORAONLINE
C:
\ORANT\DATABASE\INDX1ZXY.ORAONLINE
C:
\ORANT\DATABASE\ZXY1ZXY.ORAONLINE
3.3备份方案3——使用RMAN联机热备份(需要catalog的情况)
1、创建一个recoverycatalog数据库,数据库名为rman,SID为rman,其中数据库数据如下:
Typeofspace
Spacerequirement
System
50MB
Temp
5MB
Rollback
5MB
Recoverycatalog
10MB
Onlinelogs(3groups,eachwith2members)
Each1MB
2、建表空间
svrmgrl>createtablespacerman_tsdatafile‘/’
>size20Mautoextendonnext20Mmaxsize50M;
3、建用户
svrmgrl>createuserrmanidentifiedbyrmandefaulttablespacerman_ts
>temporarytablespacetempquotaunlimitedonrman_ts;
4、给用户授权(注意授SYSDBA权限时,先确认有口令文件的存在,然后再给口令文件增加用户数)
svrmgrl>grantrecovery_catalog_ownertorman;
svrmgrl>connectsys/change_on_installassysdba;
svrmgrl>grantdba,connect,resource,sysdbatorman;
5、运行脚本
svrmgrl>connectrman/rman
svrmgrl>@$oracle_home/rdbms/admin/catrman.sql(UNIX)or
svrmgrl>@%oracle_home%/rdbms80/admin/catrman.sql(NT)
6、运行rman连接目标数据库及catalog数据库
$rmantargetsys/change_on_install@objectDBrcvcatrman/rman@rcvcat
7、在catalog上注册目标数据库
rman>registerdatabase;
8、如果上一次注册过数据库后又进行过数据库的修改,请同步目标数据库
rman>gesynchcatalog;
9、可通过查看catalog数据字典获得目标数据库注册信息:
rc_database,rc_tablespace,rc_datafile,rc_stored_script,rc_stored_script_line;
10、设置NLS_LANG=SIMPLIFIEDCHINESE_CHINA.ZHS16GBK;
11、设置NLS_DATE_FORMAT=‘YYYY-MM-DD:
HH24:
MI:
SS’;
12、进行如备份方案4所述的备份操作。
3.4备份方案4——使用RMAN联机热备份(不需要catalog的情况)
1.运行rman连接目标数据库
$rmantargetuser/password@tnsnamesnocatalog
2.在rman方式下主要可进行如下备份:
●database(全数据库备份)
●datafileNO.(按数据文件号备份)
●datafile‘directory/datafilename’(按数据文件名备份)
●tablespaceXXX(按表空间名备份)
●currentcontrol(备份控制文件)
●archivelogall(deleteinput)(备份所有归档日志文件)
●archivelogfromlogseq=1056untillogseq=1059(deleteinput)(按归档日志SEQ号备份)
●archivelogfromtime=’’untiltime=’’(按时间备份归档日志文件)
3.Imagecopy方式
类似于操作系统的COPY指令,将一个文件备份至一个文件,不进行检查和压缩。
指令例举如下:
Rman>run{
>Allocatechanneldev1typedisk;
>Copy
Datafile‘……’to‘……’tag=backup01,
Archivelog‘……’to‘……’,
Currentcontrolfileto‘……’;
>Releasechanneldev1;}
4.Backupset方式
在单个备份文件中包含一个或多个被备份的文件,备份时执行空块的压缩。
指令例举如下:
Rman>run{
>Allocatechanneldev1typedisk;
>backupincrementallevel=0format‘/df_%d_%s_%p’
>tag=backup01filesperset=4
(databaseincludeCurrentcontrolfile);
>Releasechanneldev1;}
3.5备份方案5——使用RMAN的增量备份
首次备份,用0级
run{
allocatechanneldev1type'sbt_tape';
backupincrementallevel0
(database
format'%d_%u');
}
以后的备份用0级或1级
run{
allocatechanneldev1type'sbt_tape';
backupincrementallevel1
(database
format'&d_%u');
}
如果在第一次备份之后增加了表空间或数据文件,需重新进行0级增量备份,否则再进行备份将无法识别新增的表空间或数据文件。
run{
allocatechanneldev1type'sbt_tape';
backupincrementallevel0
(tablespacenew_tbs
format'%d_%u');
}
3.6备份方案6——逻辑备份
逻辑备份最大的优越性在于备份时占用资源少,在备份与恢复时对数据库系统资影响最小。
另外对于个别表而非整个表空间或数据库的恢复也非常方便,且可以在不同的数据库上进行恢复,备份方案灵活,可根据需要选择性的备份表、表空间、用表户表信息或全局备份。
在实际应用中我建议以逻辑备份为主要的备份方案,然后结合脱机冷备份或联机热备份。
EXP、IMP命令详解:
E:
\>exphelp=y
通过输入EXP命令和用户名/口令,您可以在用户/口令之后的命令:
或者,您也可以通过输入跟有各种参数的EXP命令来控制“导出”的运行方式。
要指定参数,您可以使用关键字:
格式:
EXPKEYWORD=value或KEYWORD=(value1,value2,...,valueN)
实例:
exp80username/password@aliasfile=expfile.dmplog=mylog.log
关键字说明(默认)
---------------------------------------------------
USERID用户名/口令
FULL导出整个文件(N)
BUFFER数据缓冲区的大小(与操作系统有关)
OWNER所有者用户名列表
FILE输出文件(EXPDAT.DMP)
TABLES表名列表
COMPRESS导入一个范围(Y)
RECORDLENGTHIO记录的长度
GRANTS导出权限(Y)
INCTYPE增量导出类型
INDEXES导出索引(Y)
RECORD跟踪增量导出(Y)
ROWS导出数据行(Y)
PARFILE参数文件名
CONSTRAINTS导出限制(Y)
CONSISTENT交叉表一致性
LOG屏幕输出的日志文件
STATISTICS分析对象(ESTIMATE)
DIRECT直接路径(N)
TRIGGERS导出触发器(Y)
FEEDBACK显示每x行(0)的进度
FILESIZE各转储文件的最大尺寸
QUERY选定导出表子集的子句
下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE导出可传输的表空间元数据(N)
TABLESPACES将传输的表空间列表
E:
\>imphelp=y
可以通过输入IMP命令和您的用户名/口令
格式:
IMPKEYWORD=value或KEYWORD=(value1,value2,...,vlaueN)
实例:
imp80username/password@aliasfile=impfile.dmplog=mylog.logshow=y(查看Oracle数据表的建表语句)
关键字说明(默认)
----------------------------------------------
USERID用户名/口令
FULL导入整个文件(N)
BUFFER数据缓冲区大小
FROMUSER所有人用户名列表
FILE输入文件(EXPDAT.DMP)
TOUSER用户名列表
SHOW只列出文件内容(N)
TABLES表名列表
IGNORE忽略创建错误(N)
RECORDLENGTHIO记录的长度
GRANTS导入权限(Y)
INCTYPE增量导入类型
INDEXES导入索引(Y)
COMMIT提交数组插入(N)
ROWS导入数据行(Y)
PARFILE参数文件名
LOG屏幕输出的日志文件
CONSTRAINTS导入限制(Y)
DESTROY覆盖表空间数据文件(N)
INDEXFILE将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES跳过不可用索引的维护(N)
ANALYZE执行转储文件中的ANALYZE语句(Y)
FEEDBACK显示每x行(0)的进度
TOID_NOVALIDATE跳过指定类型id的校验
FILESIZE各转储文件的最大尺寸
RECALCULATE_STATISTICS重新计算统计值(N)
下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE导入可传输的表空间元数据(N)
TABLESPACES将要传输到数据库的表空间
DATAFILES将要传输到数据库的数据文件
TTS_OWNERS拥有可传输表空间集中数据的用户
增量卸出备份的参数是INCTYPE,这个参数的有效选项是COMPLETE、CUMULATIVE和INCREMENTAL。
COMPLETE确定为全卸出,而其它两个选项则依赖全卸出用于数据库复原。
CUMULATIVE卸出所有表和上次CUMULATIVE或COMPLETE卸出以来更改过的其它对象;如果更改表中一个记录,那么卸出整个表。
INCREMENTAL卸出上次INCREMENTAL、CUMULATIVE或COMPLETE卸出以来更改过的所有表和对象。
增量导入的参数为INCTYPE,如果正在导入一个增量卸出,那么撤消并重建表。
必须首先从上次SYSTEM卸出(规定INCTYPE=SYSTEM)中复原。
然后导入每个增量卸出(规定INCTYPE=RESTORE)直到需要的变化应用于数据库。
备份指令:
exp80username/password@aliasfile=expfile.dmplog=mylog.loginctype=complete
exp80username/password@aliasfile=expfile.dmplog=mylog.loginctype=incremental
注意事项:
备份文件每次都要更改不同的文件名,否则会被覆盖,整套备份将没有任何意义,建议每周做一次全备份,然后一周中其它时间做增量备份。
增量备份进行恢复时,不能指定恢复某张表或某个用户的表等参数,只能在“完整数据库”模式下执行增量导出,导入亦然。
只能用有管理员身份的用户连接才能执行增量备份。
恢复指令:
imp80username/password@aliasfile=expfile.dmplog=mylog.loginctype=system
imp80username/password@aliasfile=expfile.dmplog=mylog.loginctype=restore
4备份案例
做一套系统的备份策略,我个人觉得应该从两方面考虑:
一是技术手段,包括相应的设备,可用的备份恢复脚本等;
二是根据应用要求,确定备份周期、备份方式。
以下根据个人的测试提供给广州市工商很行的备份案例,广州市工行的运行环境如下:
windowsNT操作系统,oracle8.05enterpriseeditionserver,有重做日志的归档。
其它应用系统可根据系统及应用的不同,灵活的进行搭配和选择。
注意对备份文件、存放路径、备份日期及备份指令进行纸质记录,并对磁带进行有效的标识。
4.1备份文件的存放路径
请按如下目录结构在有较大空间的硬盘上建目录。
子目录
从子目录或文件
说明
Oracle_backup
Script
sun.bat、wed.bat
……
运行脚本所在目录(参见操作手册)
Copy_data
RMAN用imagecopy方式备份的数据
Backup_data
RMAN用backupset方式备份的数据
Exp_data
逻辑备份数据
Cold_data
冷备份数据
4.2RMAN的热备份
在执行备份前,先执行如下两步操作:
1、先增加操作系统环境变量:
NLS_DATE_FORMAT=‘YYYY-MM-DD:
HH24:
MI:
SS’;
2、在参数文件中增加对CONTROL文件的控件参数:
CONTROL_FILE_RECORD_TIME=30;(保留30天的备份记录);
计划用RMAN做基于全数据库的增量备份,增量备份周期图如下所示:
Sun
mon
tues
wed
tru
fri
sat
sun
o
2
2
1
2
2
2
0
●周日执行0级备份(即全备份)
备份脚本:
run{
allocatechanneldev1typedisk;
backup
incrementallevel0
tag='database'
(datab