windows下的oracle数据库rman自动备份和恢复文档docx.docx
《windows下的oracle数据库rman自动备份和恢复文档docx.docx》由会员分享,可在线阅读,更多相关《windows下的oracle数据库rman自动备份和恢复文档docx.docx(34页珍藏版)》请在冰豆网上搜索。
windows下的oracle数据库rman自动备份和恢复文档docx
数据库rman备份恢复文档
一.Rman简介
RMAN是ORACLE提供的恢复和备份工具,是随Oracle服务器软件一同安装的工具软件,它可以用来备份和恢复数据库文件、归档日志和控制文件,用来执行完全或不完全的数据库恢复。
与传统工具相比,RMAN具有独特的优势:
跳过未使用的数据块。
当备份一个RMAN备份集时,RMAN不会备份从未被写入的数据块,而传统的方式无法获知那些是未被使用的数据块。
RMAN使用Oracle特有的二进制压缩模式,与传统备份的压缩方式相比,能够最大程度地压缩数据块中的一些典型数据。
二.系统规划
数据库备份文件不建议与系统盘(C盘)、oracle数据文件存放盘(D盘)存放在一起,本文单独存放于E盘。
注:
在进行以下操作前要根据自己的环境建立如下目录“E:
\orabackup\”,“’E:
\archivelog_backup”,“E:
/orabackup_script/”。
本文用到的命令中的标点均为英文字符下的标点。
三.设置oracle数据库为归档模式(ARCHIVELOG)
按以下步骤操作,检查oracle数据库是否为归档模式。
1.选择“开始”“系统”“运行”,输入cmd,按回车。
2.输入“sqlplus”,按回车。
3.输入“system/assysdba”,按回车。
4.输入数据库system账号的密码,按回车。
5.查看数据库归档模式,输入“archiveloglist;”,按回车。
如下图所示。
如果“数据库日志模式”为“非存档模式”,则需按照如下步骤开启归档模式:
1.设置数据库日志归档路径。
输入“altersystemsetlog_archive_dest=’E:
\archivelog_backup’scope=spfile;”,按回车。
2.关闭数据库。
输入“shutdownimmediate;”,按回车。
3.启动数据库到mount状态。
输入“startupmount;”,按回车。
4.更改数据库的归档模式。
输入“alterdatabasearchivelog;”,按回车。
5.打开数据库。
输入“alterdatabaseopen;”,按回车。
6.验证数据库是否已归档。
输入“alterdatabasearchivelog;”,按回车。
如上图所示,若“自动存档”为“启用”模式,则数据库已经启用自动归档模式。
四.Oracle数据备份策略
通过OracleRMAN实现数据的增量备份,每周进行两次Level0的数据确全备份,其余时间进行Level1的增量备份,;同时每天对Oraclearchivelog进行两次备份(备份次数及备份时间点应根据实际运行情况加以调整),。
这样的备份策略的目的时一旦发生故障需要进行数据库恢复时,只需要恢复一个全备份和至多两个增量备份,大大加快了数据库的备份速度。
在进行数据库recover时,实际上只需要最后一天的archivelog。
LEVEL01101110
DAYSunMonTueWedThuFriStatSun
Rman备份策略示意图
五.备份脚本的编写
1.编写脚本前要更改rman的默认配置选项
(1)选择“开始”“系统”“运行”,输入cmd,按回车。
(2)输入“rmantarget/”,按回车。
(3)开启控制文件自动备份。
输入“configurecontrolfileautobackupon;”,按回车。
(4)更改控制文件备份路径。
输入“CONFIGURECONTROLFILEAUTOBACKUPFORMATFORDEVICETYPEDISKTO‘E:
\orabackup\%F’;”,按回车。
(5)备份保留策略。
输入“CONFIGURERETENTIONPOLICYTORECOVERYWINDOWOF7DAYS;”。
基于时间的备份保留策略,保留最近7天的备份文件,可以将数据库系统恢复到最近七天内的任意时刻。
任何超过最近七天的数据库备份将被标记为obsolete。
2.按照制定的备份策略编写备份脚本
(1)设置显示已知文件的扩展名
选择“开始”“设置”“控制面板”“文件夹选项”,
打开文件夹选项设置页面后,点击上方标签栏的中间,即查看标签栏。
在查看标签中,向下拖动右边进度条,找到隐藏已知文件扩展名这个选项,将前面小方框中取消选定。
设置完成,点击确定退出。
(2)做一个文件后缀为.bat的0级备份批处理文件E:
/orabackup_script/auto_level_0_rman.bat。
内容如下:
remrunrman
rmancmdfile=level_0_rman.txtmsglog=e:
/orabackup/level_0_rmanlog%date:
~0,10%.log
然后新建一个“E:
/orabackup_script/level_0_rman.txt”文本文件。
内容如下:
connecttarget/
listbackup;
reportobsolete;
deleteobsolete;
run{
allocatechannelch1devicetypedisk;
allocatechannelch2devicetypedisk;
backupascompressedbackupsetincrementallevel0database
format'e:
/orabackup/full_%d_%T_%s'
plusarchivelog
format'e:
/orabackup/arch_%d_%T_%s'
deleteallinput;
releasechannelch1;
releasechannelch2;}
(2)做一个文件后缀为.bat的1级备份批处理文件E:
/orabackup_script/auto_level_1_rman.bat。
内容如下:
remrunrman
rmancmdfile=level_1_rman.txtmsglog=e:
/orabackup/level_1_rmanlog%date:
~0,10%.log
然后新建一个“E:
/orabackup_script/level_1_rman.txt”文本文件。
内容如下:
connecttarget/
listbackup;
reportobsolete;
deleteobsolete;
run{
allocatechannelch1devicetypedisk;
allocatechannelch2devicetypedisk;
backupascompressedbackupsetincrementallevel1database
format'e:
/orabackup/level_%d_%T_%s'
plusarchivelog
format'e:
/orabackup/arch_%d_%T_%s'
deleteallinput;
releasechannelch1;
releasechannelch2;}
3.归档备份脚本
(1)新建一个文件类型扩展名为.bat的批处理文件,文件名称为“E:
/orabackup_script/auto_arch_rman.bat”
remrunrman
rmancmdfile=arch_rman.txtmsglog=e:
/orabackup/arch_rmanlog%date:
~0,10%.log
(2)新建一个E:
/orabackup_script/arch_rman.txt文本文件
connecttarget/
run{
backuparchivelogalldeleteinputformat'e:
/orabackup/arch_%d_%T_%s';
}
※注意:
备份脚本存放在E:
/orabackup_script目录
六.设置windows定时任务(以windowsserver2003为例)
数据库备份策略:
全库每周三、日备份1次,其余时间做一级备份,归档1天1次
1.设置定时任务每周做一次全库备份
(1)开始—>设置--控制面板-任务计划-添加任务计划。
操作步骤如图所示:
(2)找到你所写的0级备份脚本,然后点击打开
(3)设置1级备份的定时任务,重复步骤一。
然后找到1级备份任务脚本然后打开。
2.设置定时任务每天做一次联机日志归档备份
开始—>设置--控制面板-任务计划-添加任务计划。
操作步骤如图所示:
六.利用rsync实现rman备份数据的异地备份
1.系统环境
windows2003
rsync服务端:
172.16.1.246(远端备份机器)
rsync客户端:
172.16.1.151(oracle数据库安装端)
服务端:
cwRsyncServer_4.1.0_Installer
客户端:
cwRsync_4.1.0_Installer
2.rsync服务端安装配置
(1)双击cwRsyncServer_4.1.0_Installer.exe然后就一路下一步,安装cwRsync服务端默认有一个管理员账户SvcCWRSYNC,这里修改为administrator,密码为其对应的密码
安装完成后,在“开始”“管理工具”“服务”里面就可以看到cwRsync对应的服务了,安装完成后将手动启动改为自动启动服务。
(2)修改rsyncd.conf配置文件(一般在C:
\ProgramFiles\ICW\rsyncd.conf)
usechroot=false#不使用chroot
strictmodes=false#静态模式
hostsallow=*#所有IP均可
logfile=rsyncd.log#log文件名,可以指定路径
uid=0#不指定uid,不加这一行将无法使用任何账户
gid=0#不指定gid
#Moduledefinitions
#Remembercygwinnamingconventions:
c:
\workbecomes/cygwin/c/work
#
[test]
path=/cygdrive/d/oracle_backup
readonly=false#关闭只读
transferlogging=yes#记录传输日志
authusers=root#用户名
hostsallow=*#所有IP均可
secretsfile=/cygdrive/c/rsyncd.secrets#密码文件位置
(3)创建密码文件C:
\rsyncd.secrets内容为root:
123qwe
(4)配置文件修改完成后,就手动启动RsyncServer服务,netstat-an,看873端口监听没。
3.rsync客户端安装配置
(1)双击cwRsync_4.1.0_Installer.exe,然后一路下一步。
(2)编写批处理文件定时同步更新
分别在编写的rman备份脚本auto_level_0_rman.bat、auto_level_1_rman.bat和auto_arch_rman.bat后面加入
"C:
\ProgramFiles\cwRsync\bin\rsync"-avzP–progress/cygdrive/E/orabackup/root@172.16.1.246:
:
test\passwd.txt>>d:
\rsync_%date:
~0,10%.log
(3)创建密码文件C:
\passwd.txt内容为123qwe
(4)参数说明
-a参数,相当于-rlptgoD,
-r是递归
-l是链接文件,意思是拷贝链接文件;
-p表示保持文件原有权限;
-t保持文件原有时间;
-g保持文件原有用户组;
-o保持文件原有属主;
-D相当于块设备文件;
-z传输时压缩;
-P传输进度;
-vverbose,详细模式输出;
-u是只同步已经更新的文件,避免没有更新的文件被重复更新一次,不过要注意两者机器时钟的同步;
--progress显示备份过程;
--delete删除那些DST中SRC没有的文件,用作同步文件用;
七、使用rman备份文件恢复oracle数据库
1.参数文件spfile损坏恢复
(1)选择“开始”“系统”“运行”,输入cmd,按回车。
(2)输入“setoracle_sid=orcl”,按回车。
(oracle_sid根据自己库的设置填写)
(3)输入“rmantarget/”,按回车
(4)输入“setdbid=1335848290”,按回车。
Dbid具体值,请从rman日志文件e:
/orabackup/full_rmanlog%date:
~0,10%.log中查找
(5)关闭数据库。
输入“shutdownimmediate;”,按回车。
(6)将数据库启动到nomount状态。
输入“startupnomount;”按回车
(7)恢复spfile参数文件。
输入“restorespfileto“D:
\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ORA”from“D:
\ORABACKUP\C-1335848290-20140218-04”;”,按回车。
“D:
\ORABACKUP\C-1335848290-20140218-04”从距离磁盘崩溃时间最近生成的备份日志文件中获得。
(8)关闭数据库。
输入“shutdownimmediate;”,按回车。
(9)启动数据库。
输入“startup”,按回车。
2.控制文件丢失恢复
数据库启动报错ORA-00205
检查oracle的报警日志包含如下报错:
说明oracle数据库控制文件有损坏,需要对其进行恢复。
步骤如下所示。
(1)选择“开始”“系统”“运行”,输入cmd,按回车。
(2)输入“rmantarget/”,按回车
(3)输入“setdbid=1335848290”,按回车。
dbid具体值,请从rman日志文件e:
/orabackup/full_rmanlog%date:
~0,10%.log中查找
(4)关闭数据库。
输入“shutdownimmediate;”,按回车。
(5)将数据库启动到mount状态。
输入“startupnomount;”按回车
(6)恢复控制文件。
输入“restorecontrolfilefrom“D:
\ORABACKUP\C-1335848290-20140218-04”;”,按回车
(8)启动数据库到mount。
输入“alterdatabasemount;”,按回车。
(9)恢复数据库。
输入“recoverdatabase;”,按回车。
(10)启动数据库。
输入“alterdatabaseopenresetlogs;”,按回车。
3.数据库指定数据文件恢复
启动数据库的时候报错
或者查看oracle数据库的报警日志出现错误
如果出现以上报错说明数据库中file_id为7的文件出现错误。
需要恢复。
步骤如下所示。
(1)选择“开始”“系统”“运行”,输入cmd,按回车。
(2)输入“setoracle_sid=orcl”,按回车。
(oracle_sid根据自己库的设置填写)
(3)输入“rmantarget/”,按回车
(4)查看数据库的启动级别。
输入“selectstatusfromv$instance;”,按回车。
如果返回status对应的值为非mount和非open。
关闭数据库。
输入“shutdownimmediate;”,按回车。
将数据库启动到mount状态。
输入“startupmount;”按回车
(5)数据库启动状态为mount,按如下所示输入,输入完成后,按回车。
run{
restoredatafile7;
recoverdatafile7;}
之后启动数据库,输入“alterdatabaseopen;”,输入回车。
(6)如果数据库启动状态为open,按如下输入,输入完成之后,输入回车。
run{
sql'alterdatabasedatafile7offlineimmediate';
restoredatafile7;
recoverdatafile7;
sql'alterdatabaesdatafile7online';}
4.数据文件丢失全库恢复
(1)选择“开始”“系统”“运行”,输入cmd,按回车。
(2)输入“setoracle_sid=orcl”,按回车。
(oracle_sid根据自己库的设置填写)
(3)输入“rmantarget/”,按回车
(5)关闭数据库。
输入“shutdownimmediate;”,按回车。
(6)将数据库启动到mount状态。
输入“startupmount;”按回车
(7)还原数据库数据文件。
输入“restoredatabase;”,按回车。
(8)恢复数据库增量备份及归档日志文件。
输入“recoverdatabase;”,按回车。
(9)打开数据库。
输入“alterdatabaseopenresetlogs;”,按回车。
5.数据主机磁盘损坏恢复
(1)重建oracle数据库,是使数据库的目录结构与源数据库目录结构相同。
(2)将远程备份的备份文件拷贝至“E:
\orabackup\”目录下。
(3)选择“开始”“系统”“运行”,输入cmd,按回车。
(4)输入“rmantarget/”,按回车。
(5)关闭数据库。
输入“shutdownimmediate;”,按回车。
(6)D:
\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ORA(oracle
的spfile参数文件)文件删除。
(7)将D:
\oracle\product\10.2.0\oradata\orcl下(oracle数据文件存储目录)除TEMP01.DBF外的文件删除
(8)将数据库启动到nomount状态。
输入“startupnomount;”按回车
(9)输入“setdbid=1335848290”,按回车。
dbid具体值,请从rman日志文件e:
/orabackup/full_rmanlog%date:
~0,10%.log中查找
(10)恢复spfile参数文件。
输入“restorespfileto“D:
\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ORA”from“D:
\ORABACKUP\C-1335848290-20140218-04”;”,按回车。
“D:
\ORABACKUP\C-1335848290-20140218-04”从距离磁盘崩溃时间最近生成的备份日志文件中获得。
(11)关闭数据库。
输入“shutdownimmediate;”,按回车。
(12)将数据库启动到mount状态。
输入“startupnomount;”按回车.
(10)恢复控制文件。
输入“restorecontrolfilefrom“D:
\ORABACKUP\C-1335848290-20140218-04”;”,
按回车。
(“D:
\ORABACKUP\C-1335848290-20140218-04”获得方法同(10))
(11)启动数据库到mount状态。
输入“startupmount;”按回车。
(12)恢复数据文件。
输入“restoredatabase;”,按回车。
(13)恢复归档日志文件。
输入“recoverdatabase;”,按回车。
(14)启动数据库。
输入”alterdatabaseopenresetlogs;”。
6.误操作恢复—误删除表或者数据
(1)重建oracle数据库,是使数据库的目录结构与源数据库目录结构相同。
(2)将远程备份的备份文件拷贝至“E:
\orabackup\”目录下。
(3)选择“开始”“系统”“运行”,输入cmd,按回车。
(4)输入“rmantarget/”,按回车。
(5)关闭数据库。
输入“shutdownimmediate;”,按回车。
(6)D:
\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ORA(oracle
的spfile参数文件)文件删除。
(7)将D:
\oracle\product\10.2.0\oradata\orcl下(oracle数据文件存储目录)文件全部删除
(8)输入以下内容,并按回车。
run{
startupnomount;
restorespfileto"D:
\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ORA"from"D:
\ORABACKUP\C-1335848290-20140219-05";
shutdownimmediate;
startupnomount;
restorecontrolfilefrom"D:
\ORABACKUP\C-1335848290-20140219-05";
alterdatabasemount;
setuntiltime"to_date('2014-02-1909:
08:
30','yyyy-mm-ddhh24:
mi:
ss')";
restoredatabase;
recoverdatabase;
}
注:
“D:
\ORABACKUP\C-1335848290-20140219-05”从最后一次生成的备份日志文件中获得。
“2014-02-1909:
08:
30”发生误操作之前的时间点。
(9)启动数据库,输入”alterdatabaseopenresetlogs;”,按回车。
(10)登陆数据库检查自己删除的表,或者数据是否存在且完整。
如果完整继续第十步。
(11)恢复误删除的数据,在克隆库执行如下操作导出数据。
expscott/tigerfile=c:
\1.dmptables=tquery='wheredeptno=10'log=c:
\1.log
注:
命令中scott/tiger为用户名/密码,t为要恢复数据所在表的名称。
用query选出部分符合条件的行。
将克隆库系统中c:
\1.dmp拷贝到源数据库系统c:
\目录下,并在元数据库系统执行imp