oracle认证:数据库备份与还原
http://itpx.eol.cn 来源: 作者:互联网 2011-06-15 大 中 小
Oracle认证考试由Oracle公司授权国际考试认证中心对考生进行资格认证的。考生按考试标准要求参加几门课程的考试(一般为三至五门),在通过全部考试后,将获得OCP的专家认证。Oracle认证考试目前分Oracle DBA, DBO(Database Operator, DBD(Database Developer), Java Developer等几类。
一、总述
1.数据库归档模式:
*非归档模式:当数据库数据只读不会改变时,数据不会改变,数据库适合用非归档模式,这样提高性能
*归档模式:对于数据库数据经常变动,数据库最好用归档模式,这样可以尽量避免数据库数据丢失,使出现问题时灾害降到最低
2.非归档模式与归档模式间的切换(在命令窗口下):
@检查当前日志操作模式
f:\》sqlplussys/dbaassysdba
连接数据库
sql》selectlog_modefromv$database;
@关闭数据库,后装载数据库,只能在mount状态下改变日志操作模式
sql》startupmount
@改变日志模式
sql》alterdatabaseachivelog;(变为归档方式,否则为nochivelog)
sql》alterdatabaseopen;
3.查看归档模式相关信息:
@若采用默认设置,归档日志位置在快速恢复区
@配置归档日志位置log_archive_dest_n(n=[1:10])
sql》altersystemset
log_archive_dest_1=‘location=c:\demo\archive[optional]’;
sql》altersystemset
log_archive_dest_2=‘service=standby[mandatory][reopen]’;
其中:location是本地
service是远程
optional无论归档是否成功,都会覆盖重做日志
mandatory只有成功归档才会覆盖重做日志
reopen重新归档时间间隔默认是300s
@显示归档信息,即显示显示日志操作模式
sql》selectname,log_modefromv$database;
@显示归档日志信息
sql》selectname,seqnce#,first_change#fromv$archive_log;
seqnce#:归档序列号
first_change#:起始SCN值
@显示归档日志位置
sql》selectdest_name,destination,statusfromv$archive_dest;
dest_name归档位置参数名
destination位置
@显示日志历史信息
sql》select*fromv$loghist;
threade#:重做线程号
seqnce#:日志序列号
first_change#:起始SCN值
first_time:起始SCN发生时间
switch_change:切换SCN值
二、非归档模式下的备份与还原
日志采用覆盖原有日志的方式存储
出现介质失败时,只能恢复到过去的完全备份点
数据库OPEN状态是,不能备份数据库
必须先关闭数据库,再备份,且必须备份所有数据,控制文件
1.备份==冷备份
@先关闭数据库
sql》shutdownimmediate
@拷贝所有数据文件,和控制文件
2.恢复
*数据文件出现丢失,但备份以来的重做日志内容尚未被覆盖,此时可以完全恢复
@装载数据库
sql》startupforcemount
@复制数据文件备份
@恢复数据文件
sql》recoverdatafile1
@打开数据库
sql》alterdatabaseopen;
*备份文件的重做日志内容已经被覆盖,则只能还原到备份点
@关闭数据库
@复制所有数据和控制备份文件至原位置
@装载数据库,执行恢复命令
sql》startupmount
sql》recoverdatabaseuntilcancel
提示控制文件不再使用原有重做日志
@用resetlogs选项打开数据库
sql》alterdatabaseopenresetlogs;
三、归档模式
可以防止数据丢失
数据处于OPEN状态时可以进行备份
当出现介质失败时,除了SYSTEM表空间中的数据文件外其他的都可以在open状态下恢复
可执行完全恢复,也可以恢复到备份点与失败点之间的某时刻
1.备份
1)冷备份
shutdown后拷贝所需数据文件和控制文件
2)热备份
@将数据库设置为归档模式
@在数据库上发出全局检查点,在所有的数据文件头块上加锁
sql》alterdatabasebeginbackup;
@备份数据文件及控制文件
数据文件直接拷贝至其他目录
控制文件需使用alterdatabasebackupcontrolfile
sql》alterdatabasebackupcontrolfileto‘d:\backup\demo.ctl’;
@结束数据备份,为确保数据文件备份的同步性,还应该归档当前日志组
sql》alterdatabaseendbackup;
sql》altersystemarchivelogcuurent;
3)备份表空间
*脱机备份(表空间处于OFFLINE状态,SYSTEM表空间和正在使用的UNDO空间不能脱机)
@确定表空间包涵的数据文件,如空间USERS
sql》selectfile_namefromdba_data_files
wheretablespace_name=‘users’;
@设置表空间为脱机状态
sql》altertablespaceusersoffline;
@复制数据文件
@设置表空间联机
sql》altertablespaceusersonline;
*联机备份
@确定对应关系
@设置表空间为备份模式
sql》altertablespaceusersbeginbackup;
@复制数据文件
@设置表空间为正常模式
sql》altertablespaceusersendbackup;
*处理联机备份失败
当执行联机备份时,若出现例程失败,再次打开数据库时,如果数据文件仍处于备份状态,则会出错,此时需要结束备份
@装载数据库
sql》startupforcemount
@查看处于联机备份状态的所有数据文件
sql》selectfile#fromv$backupwherestatus=‘active’;
@结束联机备份状态
sql》altertablespaceendbackup
或altertablespacedatafilebackup;
或recoverdatafile序号
@打开数据库
sql》alterdatabaseopen;
2.还原
1)完全恢复
相关命令:
recoverdatabase:恢复数据库的多个数据文件(在MOUNT状态下运行)
recovertadaspace:恢复多个表空间的所有数据文件(在open状态下运行)
recoverdatafile:恢复一个或多个数据文件(在mount,open状态下都可)
*在mount状态下恢复数据文件(用于SYSTEM表空间恢复)
@装载数据库mount状态
@确定需要恢复的数据文件
sql》selectfile#,errorfromv$recover_file
@拷贝备份至原位置
@恢复数据库recover.。上述命令
@打开数据库alterdatabaseopen;
*在open状态下恢复关闭后意外对视的数据文件,此时数据库将无法打开
@装载数据库mount
@确定需要恢复的数据文件
@使相应的数据文件脱机
sql》alterdatabasedatafile4offline;
@打开数据库
sql》alterdatabaseopen
@复制数据备份文件
@恢复数据文件
@是数据文件联机alterdatabasedatafile4online;
*在open状态下恢复打开时意外丢失的数据文件
@确定要恢复的数据文件
@使数据文件脱机
@复制数据文件
@恢复相应的表空间或数据文件
@使相应的表空间或数据文件联机
*在open状态下恢复未备份的数据文件(要求在归档模式下,新建数据文件,其从简历开始的所有归档日志必须全部存在)
@装载数据库
@确定要恢复的数据文件
@是数据文件脱机
@打开数据库
@重新建立数据文件
sql》alterdatabasecreatedatafile‘d:\demo\users01.dbf’;
@恢复数据文件
@使数据文件联机
2)不完全恢复
使用已备份的数据文件,归档日志,和重做日志,将数据库恢复到备份点与失败点之间某个时刻的状态
*恢复分类
基于时间的恢复:误删除表,误截断表,提交了错误的数据
基于取笑恢复:恢复到某个日志序列号之前的状态
基于SCN的恢复:恢复到特定SCN值的状态
基于备份控制文件恢复:表空间被意外删除,或所有控制文件全部损坏
*不完全恢复指令
recoverdatabaseuntiltime
recoverdatabaseuntilchange
recoverdatabaseuntilcancel
recoverdatabase……usingbackupcontrolfile
*基于时间的恢复
@关闭数据库(为防止备份失败,应备份当前数据库所有文件
@装载数据库startupmount
@复制所有备份数据文件,并确定备份文件的时间点
sql》selectfile#,to_char(time,‘yyyy-mm-ddhh24:mi:ss)
fromv$recover_file;
@执行recoverdatabaseuntiltime
sql》recoverdatabaseuntiltime“2006-09-2616:40:33‘
@以resetlogs方式打开数据库,并检查恢复结果
sql》alterdatabaseopenresetlogs;
@备份数据库所有数据文件和控制文件,因为当以resetlogs方式打开数据库后会重新建立重做日志,清空原有重做日志的所有内容,并将日志序列号复位为1
sql》selectnamefromv$datafile;
sql》alterdatabasebeginbackup;
拷贝数据文件
sql》alterdatabaseendbackup;
sql》alterdatabasebackupcontrolfile
to‘d:\backup\demo.ctl’reuse;
sql》altersystemarchivelogcuurent;
*基于SCN恢复
@关闭数据库
@装载数据库mount
@复制所有备份数据文件,确定备份文件SCN值
sql》selectfile#,change#,fromv$recover_file;
@执行recoverdatabaseuntilchange
sql》recoverdatabaseuntilchange675978;
@以resetlogs方式打开数据库
@备份数据库所有数据文件和控制文件
*基于取消恢复
@关闭数据库
@装载数据库
@复制所有备份的数据文件,确定备份文件的SCN值
sql》selectfile#,change#fromv$recover_file;
@执行recoverdatabaseuntilcancle
sql》recoverdatabaseuntilcancel
@以resetlogs方式打开数据库
@备份所有数据文件和控制文件
*基于备份控制文件的恢复
@通过查看alert文件,确定误操作时间
@关闭数据库
@复制所有备份的数据文件,控制文件
@装载数据库
@执行recoverdatabase……usingbackupcontrolfile
sql》recoverdatabaseuntiltime‘2004-09-2619:51:06’
usingbackupcontrolfile
@以resetlogs方式打开数据库
@备份所有数据文件和控制文件
免责声明:
① 凡本站注明“稿件来源:中国教育在线”的所有文字、图片和音视频稿件,版权均属本网所有,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发表。已经本站协议授权的媒体、网站,在下载使用时必须注明“稿件来源:中国教育在线”,违者本站将依法追究责任。
② 本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。