oracle备份恢复 之三思笔记一步一步学RMAN完整版文档格式.docx
《oracle备份恢复 之三思笔记一步一步学RMAN完整版文档格式.docx》由会员分享,可在线阅读,更多相关《oracle备份恢复 之三思笔记一步一步学RMAN完整版文档格式.docx(51页珍藏版)》请在冰豆网上搜索。
天苍苍野茫茫,三思终于又出场。
要问三思来干啥,来把RMAN讲一讲。
吃喝玩乐间学习,心得体会一箩筐。
不管结论对与错,先把过程来分享。
如有异议务必提,共同学习共提高。
en,写的还挺顺口,俺自满啊~~~~~以后俺要是找不着干dba的工作,俺就到说不得大师的玄幻世界里当吟唱诗人去。
书归正传,在开始之前俺先强调一点,通过RMAN的方式不论要备份还是要恢复,都必须先启动实例并加载数据库。
(有人在抗议,说这太初级了。
俺说明一下,这是一个超级菜鸟摸爬滚打的心路历程,别说初级,连弱智的内容都有,所以俺友情提醒大虾们务必开启初级内容过滤功能,以妨过多占用您宝贵时间,什么?
你不会这一招,哎,我这里有秘制一目十行术,看你是大虾给你打8折,pm我吧)
RMAN有两种操作方式,一种是类似dos,通过键盘操作的命令方式,第二种是类似windows通过鼠标操作的图形化界面方式。
图形化方式操作简单但也因此省略了一些具体过程,你可能成功操作但却不知道oracle究竟做了什么,怎么做的。
俺立志也是要做名oracle大虾地,所以第二种方式完全不在考虑之列,最多只是参考。
本篇后续内容所做的各项操作也都将以命令方式进行。
1、连接本地数据库
通过rman连接本地数据库非常简单,以windows平台为例,进入到命令提示符界面:
C:
\DocumentsandSettings\Administrator>
setoracle_sid=jssweb
rmantarget/
恢复管理器:
版本9.2.0.1.0-Production
Copyright(c)1995,2002,OracleCorporation.Allrightsreserved.
连接到目标数据库:
JSSWEB(DBID=3391142503)
RMAN>
注:
如果本地库只有一个实例,则不需要指定oracle_sid。
Rman会自动连接到默认实例。
当然,你也可以先启动rman,然后再通过connect来连接目标数据库,如下:
rman
connecttarget/
2、连接远程数据库
如果要连接的目标数据库是一个远程数据库,那么必须在建立连接时指定一个有效的网络服务名,同时你本地的tnsname.ora文件中也必须已经建立了该网络服务名的正确配置。
示例如下:
rmantargetsys/change_on_install@testdb
TESTDB(DBID=2220262593)
当然,在这里你也可以同样先启动rman,再通过connect创建连接。
具体示例与上类似,如果再做演示那这个环节不仅是弱,而是超弱,即使坚定如我也承受不了如此强烈的呕吐加鄙视的欲望,所以还是做罢吧。
3、退出RMAN
哈哈,退出就太简单啦,敲个EXIT试试~~~~~~
还有一点各位新友也了解一下,对于以后写rman批处理会有帮助。
在启动rman时可以指定日志输出,之前的示例中均没有指定,rman就将执行结果直接打印到屏幕了,如果我们以后写了一堆超长的rman批处理放在后台执行,可能会希望能够把执行日志记录下来备查,这个时候日志输出功能就用上了。
这个功能也非常简单,如下:
rmantarget/logd:
\logs\rman_log.txt
rman会将执行的结果直接输出到指定的d:
\logs\rman_log.txt文件,一旦脚本放入后台执行出现问题,我们可以根据rman_log文件来辅助分析。
第二篇RMAN命令知多少2007.6.18
菩萨蛮·
命令知多少
上一节讲了怎么进,这节开讲知多少
内容虽不多,排列费思量。
RMAN贵灵活,应用是根本。
无须死硬记,策略定规则。
RMAN非常有意思,做为一个专业的备份工具,它几乎考虑到了备份及恢复过程中可能遇到的各种操作,由此它也提供了各种各样的命令来为这些操作提供便利。
一、启动、关闭数据库
在RMAN中执行关闭和启动数据库的命令与SQL环境下一模一样。
当然,在执行之前,你需要先连接到目标数据库,如例:
shutdownimmediate
正在使用目标数据库控制文件替代恢复目录
数据库已关闭
数据库已卸载
Oracle例程已关闭
startup
已连接到目标数据库(未启动)
Oracle例程已启动
数据库已加载
数据库已打开
系统全局区域总计143727516字节
FixedSize453532字节
VariableSize109051904字节
DatabaseBuffers33554432字节
RedoBuffers667648字节
当然,你也可以执行startupmount,然后再利用alterdatabaseopen命令打开数据库以及shutdownnormal,shutdownabort等。
总之启动和关闭的命令跟SQL环境下相比就仨字儿:
完全一模一样。
二、执行操作系统命令
Rman支持通过执行host命令暂时退出rman的命令提示符而进入到操作系统的命令环境,如下例:
host;
MicrosoftWindows[版本5.2.3790]
(C)版权所有1985-2003MicrosoftCorp.
cd\
\>
exit
主机命令完成
执行完系统命令后可以再通过执行exit退出到rman命令提示符下。
三、执行SQL语句
在rman中执行sql语句稍嫌复杂。
在RMAN的命令提示符后输入SQL命令,然后在一对单引号(双引号亦可)中输入要执行的SQL语句,例如:
SQL'
ALTERSYSTEMARCHIVELOGALL'
;
需要注意的一点是,rman中的sql环境不能执行SELECT语句,或者说执行不报错,但你也看不到结果。
其实我们完全可以通过更取巧的方式来实现更强大的SQL操作,比如利用第二项介绍的内容,如下:
sqlplus/nolog
SQL*Plus:
Release9.2.0.1.0-Productionon星期四6月2817:
40:
242007
Copyright(c)1982,2002,OracleCorporation.Allrightsreserved.
SQL>
conn/assysdba
已连接。
selectsysdatefromdual;
SYSDATE
----------
28-6月-07
exit
从Oracle9iEnterpriseEditionRelease9.2.0.1.0-Production
WiththePartitioning,OLAPandOracleDataMiningoptions
JServerRelease9.2.0.1.0-Production中断开
萝卜青菜各有所爱,大家是爱萝卜还是爱青菜啊,爱萝卜的请选第一种,爱青菜的请选第二种。
我爱吃肉,我要找第三种出来~~~~~
四、定义RMAN配置
RMAN中具有一系列的默认配置,这些配置决定了备份和恢复时的一些选项(此节内容枯燥,眼神不好的同学请自觉跳过),比如:
4、自动分配通道的配置;
5、备份保留时间的配置;
6、备份集大小的限制;
7、启用或禁用备份优化功能;
8、镜像复制的备份数量;
9、是否将某个表空间排队在备份之外。
修改配置是通过CONFIGURE命令,具体用法非常简单,但由于可供configure的配置非常之多,这里不做详细介绍,在后续实际演练章节中会有体现。
当然,有心的朋友也可以通过google搜索一下,更有耐心的新友就等着看俺写的外传。
五、显示RMAN默认配置
Rman中可以利用show命令来显示当前的配置参数。
例如,通过SHOW ALL显示当前所有的配置。
showall;
RMAN配置参数为:
CONFIGURERETENTIONPOLICYTORECOVERYWINDOWOF3DAYS;
CONFIGUREBACKUPOPTIMIZATIONOFF;
#default
CONFIGUREDEFAULTDEVICETYPETODISK;
CONFIGURECONTROLFILEAUTOBACKUPON;
CONFIGURECONTROLFILEAUTOBACKUPFORMATFORDEVICETYPEDISKTO'
d:
/backup/%F'
CONFIGUREDEVICETYPEDISKPARALLELISM1;
CONFIGUREDATAFILEBACKUPCOPIESFORDEVICETYPEDISKTO1;
CONFIGUREARCHIVELOGBACKUPCOPIESFORDEVICETYPEDISKTO1;
CONFIGUREMAXSETSIZETOUNLIMITED;
CONFIGURESNAPSHOTCONTROLFILENAMETO'
F:
\ORAHOME1\DATABASE\SNCFJSSWEB.ORA'
#
default
配置项后面跟了#default的表示该项仍是初始配置,未被修改过。
该命令使用也相当灵活,其后跟上不同的类型的配置参数,即可以显示不同类型的配置,如:
SHOWCHANNEL;
SHOWDEVICETYPE;
SHOWDEFAULTDEVICETYPE;
六、列出备份信息
LIST命令用来查看通过RMAN生成的备份信息,照我看来,这个应用应该会非常少,大家了解即可(引申一下,不仅是list,俺基本认为备份这种操作,脚本一次定型,100年不许变,哪有DBA天天干备份恢复的,如果真是这样,那您这库。
。
)。
例如:
列出数据库中所有文件的备份信息:
LISTBACKUPOFDATABASE;
列出指定表空间的备份信息:
LISTCOPYOFTABLESPACE'
SYSTEM'
列出指定数据文件的备份信息:
LISTBACKUPOFDATAFILE'
\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA'
七、删除备份
用于删除RMAN备份记录及相应的物理文件。
当使用RMAN执行备份操作时,会在RMAN资料库中生成RMAN备份记录,并且RMAN备份记录被存放在目标数据库的控制文件中,如果配置了恢复目录,那么该备份记录也会被存放到恢复目录中。
1、删除陈旧备份
当使用RMAN执行备份操作时,RMAN会根据备份冗余策略确定陈旧备份。
deleteobsolete;
2、删除EXPIRED备份
执行crosscheck命令核对备份集,那么会将该备份集标记为EXPIRED状态。
为了删除相应的备份记录,可以执行deleteexpiredbackup命令。
deleteexpiredbackup;
3、删除EXPIRED副本
deleteexpiredcopy;
4、删除特定备份集
deletebackupset19;
5、删除特定备份片
deletebackuppiece'
\backup\DEMO_19.bak'
6、删除所有备份集
deletebackup;
7、删除特定映像副本
deletedatafilecopy'
8、删除所有映像副本
deletecopy;
9、在备份后删除输入对象
deletearchivelogalldeleteinput;
deletebackupset22format='
'
\backup\%u.bak'
deleteinput;
八、批处理命令RUN
重头戏来了,大家鼓掌。
谢谢大家的掌声,RUN的用法虽然很简单,但run太重要了,是我们后面几乎经常都要遇到的,也正因此我不敢贸然下笔,于是我准备。
跳票,下章见~~
第三篇RMAN备份演练初级篇2007.6.21
前面我们已经知道了如何进入rman,以及rman的一些基本命令,相信大家定会觉着rman操作的简单,事实也确实如此,但万不要因此小视rman的强大,简单往往意味着灵活,灵活对于那些有心人则意味着主动权尽在掌握。
一、RMAN备份形式
1、镜像复制(ImageCopies)
镜像复制实际上就是数据文件、控制文件或归档文件的复制,与用户通过操作系统命令建立的文件复制实质一样,只不过RMAN是利用目标数据库中的服务进程来完成文件复制,而用户则是用操作系统命令。
所以镜像复制的方式体现不出RMAN的优势,也并非我们讨论的重点,大家了解一下即可(啥?
想知道镜像复制咋用?
卡,问村长去~~~~~)。
2、备份集(BackupSets)
备份集是通过RMAN创建的逻辑备份对象。
一个备份集中可以包含多个数据文件、控制文件或归档文件。
备份集在物理上是由多个备份片段组成,每个备份片段是一个操作系统文件。
二、RMAN命令执行方式
在进入演练之前,大家还有必要了解运行rman命令的方式,就目前已知的情况,共有4种运行方式。
1、单个执行(没啥说的,之前的示例都是这种方式)
backupdatabase;
2、批处理(呵呵,跳票的补上)
RUN{
.......................
}
批处理方式实质是将原来单个执行的命令组合到一起,并放在run{}之间,这种方式最大的好处是所有在run中的命令被视为一个作业,如果作业中任何一条命令执行失败,则整个命令停止执行,即失败命令后的其它命令都不会再被执行。
这种方式是最常使用的方式,特别对于后台执行。
3、运行脚本(又能细分为几种方式如下:
)
rmanTARGET/@backup_db.rman
@backup_db.rman
RUN{@backup_db.rman}
运行存储在恢复目录中的脚本(需要首先为rman创建恢复目录)
RUN{EXECUTESCRIPTbackup_whole_db};
看看,够灵活吧。
4、操作系统脚本(linux,windows环境下小有差异,但只是操作系统命令的不同)
rmancmdfile=backup_db.rman
明眼人看的出来,后两种其实是前面两种加上操作系统命令的综合应用。
三、对数据库进行全备
1、使用backupdatabase命令执行备份
BACKUPDATABASE;
执行上述命令后将对目标数据库中的所有数据文件进行备份,由于没有显式指定FORMAT参数,rman会自动为每个备份片段命名,并保存在ORACLE_HOME/database目录下。
当然,也可以通过显式指定format参数来自定义备份片段的命令规则,比如:
BACKUPDATABASEFORMAT'
D:
\BACKUP\%U'
(关于%U的格式说明,请参考本篇外传。
Ooo,外传好像还没写,没关系没关系,大家表着急,我保证大家在有生之年一定等的到的。
2、通过list命令查看刚刚创建的备份信息:
listbackupofdatabase;
备份集列表
===================
BS关键字类型LV大小设备类型经过时间完成时间
--------------------------------------------------------
11Incr0827MDISK00:
01:
3026-6月-07
BP关键字:
11状态:
AVAILABLE标记:
TAG20070629T150701
段名:
\BACKUP\0CILGG8L_1_1
备份集11中的数据文件列表
文件LV类型CkpSCNCkp时间名称
----------------------------------
10Incr523357789626-6月-07F:
\ORAHOME1\ORADATA\JSSWEB\SYSTEM01.DBF
20Incr523357789626-6月-07F:
\ORAHOME1\ORADATA\JSSWEB\UNDOTBS01.DBF
30Incr523357789626-6月-07F:
\ORAHOME1\ORADATA\JSSWEB\DRSYS01.DBF
40Incr523357789626-6月-07F:
\ORAHOME1\ORADATA\JSSWEB\EXAMPLE01.DBF
50Incr523357789626-6月-07F:
\ORAHOME1\ORADATA\JSSWEB\INDX01.DBF
60Incr523357789626-6月-07F:
\ORAHOME1\ORADATA\JSSWEB\ODM01.DBF
70Incr523357789626-6月-07F:
\ORAHOME1\ORADATA\JSSWEB\TOOLS01.DBF
80Incr523357789626-6月-07F:
\ORAHOME1\ORADATA\JSSWEB\USERS01.DBF
90Incr523357789626-6月-07F:
\ORAHOME1\ORADATA\JSSWEB\XDB01.DBF
100Incr523357789626-6月-07F:
\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA;
四、备份表空间
只要实例启动并处于加载状态,不论数据库是否打开,都可以在rman中对表空间进行备份,而且不需要像手动备份那样先'
ALTERTABLESPACE...BEGINBACKUP'
backuptablespacejweb;
启动backup于26-6月-07
使用通道ORA_DISK_1
通道ORA_DISK_1:
正在启动full数据文件备份集
正在指定备份集中的数据文件
输入数据文件fno=00010name=F:
\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA
正在启动段1于26-6月-07
已完成段1于26-6月-07
段handle=F:
\ORAHOME1\DATABASE\0JIM0BBV_1_1comment=NONE
备份集已完成,经过时间:
00:
15
完成backup于26-6月-07
启动ControlFileandSPFILEAutobackup于26-6月-07
段handle=D:
\BACKUP\C-3391142503-20070704-00comment=NONE
完成ControlFilean