完整版ORACLE RMAN文档Word文件下载.docx
《完整版ORACLE RMAN文档Word文件下载.docx》由会员分享,可在线阅读,更多相关《完整版ORACLE RMAN文档Word文件下载.docx(40页珍藏版)》请在冰点文库上搜索。
已连接到目标数据库
当然,也可以把“/”换为SYS/密码。
但是不能像SQL*Plus那样,把CONNECT省略为CONN。
其实在RMAN中,无论用什么用户连接,RMAN都将自动的加上去ASSYSDBA。
所有,我们就不必再加ASSYSDBA了。
我们可以在RMAN中执行一些与备份恢复密切相关的数据库操作。
如关闭数据库或打开数据库:
shutdownimmediate;
使用目标数据库控制文件替代恢复目录
数据库已关闭
数据库已卸载
Oracle实例已关闭
这也证明了虽然没有加上ASSYSDBA,但是仍然以管理用户连接到了RMAN。
因为只有管理用户,才能执行关闭、打开数据库的操作。
但是,与备份恢复没有任何关系的操作,是不能在RMAN中执行的。
比如说,创建一个表:
createtableaaa(idnumber);
RMAN-00569:
===============ERRORMESSAGESTACKFOLLOWS===============
RMAN-00571:
===========================================================
RMAN-00558:
分析输入命令时出错
RMAN-01009:
语法错误:
找到"
identifier"
:
应为:
"
catalog,global,script"
中的一个
RMAN-01008:
错误标识符:
table
RMAN-01007:
在第1行第8列,文件:
standardinput
如果你想创建表,最好还是到SQL*Plus中吧。
哪里才是执行数据库操作的地方,RMAN是用来备份恢复的。
如果没有设置ORACLE_SID环境变量,我们也可以在RMAN中通过监听器连接:
RMANTARGET用户名/密码@连接描述符
或在RMAN中:
CONNECTTARGET用户名/密码@连接描述符
无论通过不通过监听器连接,RMAN都会自动的为用户加上ASSYSDBA。
也就是说,只要用RMAN成功的连接,都具有管理权限。
三、目标数据库控制文件与恢复目录
目标数据库,我们使用RMAN要对哪个数据库进行备份,哪个数据库就是目标数据库。
RMAN有一项重要功能,就是记录各种文件的备份信息,以便用户随时了解各个文件的备份情况。
备份信息会被RMAN自动的记入目标数据库的控制文件中。
控制文件中存储RMAN备份信息的区域是循环使用的,以初始化参数control_file_record_keep_time的值为准。
这个参数的值默认是7天,也就是说控制文件中的RMAN信息,最多保留7天就会被新的信息覆盖。
这个参数的设置,也是影响控制文件大小的重要因素之一。
但是,将RMAN的备份信息保留在目标数据库中,是非常不安全的。
如果目标数据库的控制文件损坏了,RMAN将因为读不出来备份信息,而无法进行恢复。
通常建议将信息再存储到另外一个数据库中,这个数据库一般被称为恢复目录。
作为恢复目录的数据库,其实恢复目录在它里面只建一个表空间,这个数据库还可以像正常数据库一样另外存放其他信息。
并不是只能用来存放另一个数据库RMAN的备份信息。
好了,我们讲了两个概念,目标数据库和恢复目录。
目标数据库就是我们要备份的数据库,而恢复目录是存放目标数据库备份信息的数据库。
下面,我们说一下恢复目录的配置。
四、配置恢复目录
第一步当然先要有一个数据库了,我额外创建了一个RCAT数据库,下面我们用它来作恢复目录。
在实际的情况下,恢复目录数据库最好是和目标数据库分别存在在不同的存储设备中。
下面,启动RCAT数据库。
步1:
创建存储目标数据库备份信息的表空间
sid=25pid=20>
createtablespacecattbsdatafile'
f:
\oracle\oradata\rcat\cattbs_1.dbf'
size20m;
Tablespacecreated.
这个表空间并不是专用的,它的名字你可随便定。
它也可以存储其他信息。
但是建议只用它存储目标数据库的备份信息。
步2:
创建RCAT1用户
sid=22pid=15>
createuserrcat1identifiedbyabcdedefaulttablespacecattbsquotaunlimitedoncattbs;
用户已创建。
用户名当然也是随变定的。
它的缺省表空间一定要是刚才创建的CATTBS。
步3:
授予权限:
grantconnect,recovery_catalog_ownertorcat1;
授权成功。
恢复目录用户,一定要有recovery_catalog_owner角色。
此角色是专门针对恢复目录的,它向用户授予了很多特权。
步4:
在RMAN中创建恢复目录
在RMAN中,连接到恢复目录数据库:
connectcatalogrcat1/abcde@rcat;
连接到恢复目录数据库
注意,刚才我们讲的连接,都是CONNECTTARGET,Target是目标的意思,就是连接目标数据库。
如果要连接恢复目录数据库,将Target换成Catalog即可。
在RMAN中,创建恢复目录:
createcatalogtablespacecattbs;
恢复目录已创建
注意这里的表空间名必须和在恢复目录数据库中创建的,用于存放备份信息的表空间一样。
其实这一步就是通知RMAN,将备份信息除了存到目标数据库控制文件外,还要送往恢复目录数据库的CATTBS表空间。
步5:
向恢复目录中注册目标数据库
在注册前,注意用RMAN同时连接两个数据库:
connecttargetsys/ifclwx
connectcatalogrcat1/abcde@rcat;
注册命令很简单:
registerdatabase;
注册在恢复目录中的数据库
正在启动全部恢复目录的resync
完成全部resync
到此为止,恢复目录的配置就算完成了。
以后,每次进入RMAN时,在登录到目标数据库后,再登录到恢复目录数据库,RMAN就会将备份信息写恢复目录中,也就是写进RCAT数据库RCAT1用户的缺省表空间CATTBS中。
五、incarnation
这个单词的中文的意思是化身,它是针对恢复目录而言的。
一个恢复目录数据库,可以注册进多个目标数据库。
每一个目标数据库都是一个incarnation,也就是化身。
另外,同一目标库在恢复目录中也可以多个化身。
只要目标库进行了不完全恢复,并以Resetlogs打开了数据库,哪么在恢复目录中,就必须重新注册目标库。
重新注册后,目标库就又有了一个incarnation。
一个incarnation,就是一个目标数据库在恢复目录中的代表。
Resetlogs后,日志序列号从1开始重新计算,日志流被打断、重置。
对于备份恢复体系来说,Reseglogs后的数据库,相当于一个全新的数据库。
因此,在恢复目录中,要重新注册一次这个对于备份恢复来说全新的数据库。
使用listincarnation命令,可以查看恢复目录中的化身:
listincarnation;
数据库原型列表
DB关键字Inc关键字DB名DBIDSTATUS重置SCN重置时间
-------------------------------------------------------------
12FOUR10G2924364082CURRENT128-5月-08
关键字列,就是目标数据库的化身号。
而DBID列,则是它的数据库ID。
我们可以在SQL*Plus中,查询V$DATABASE的DBID列,也可以得到数据库的ID编号。
这个编号是在创建数据库时由ORACLE指定的。
selectdbid,namefromv$database;
DBIDNAME
----------------------------
2924364082FOUR10G
六、同步
在RMAN中的备份信息,会被默认送往目标数据库的控制文件中。
尽管RMAN也会把信息自动的写入恢复目录中,但我们还要应该每隔N天,将目标数据库控制文件中的信息,手动的同步到恢复目录中。
同步的命令非常简单,只需要在RMAN中,同时连接目标库和恢复目录库,再使用resynccatalog命令即可:
resynccatalog;
每隔N天同步,这个N天通常应该设置为control_file_record_keep_time参数的值。
如果此参数设为7,也就是我们应该至少每7天同步一次目标库控制文件和恢复目录中的信息。
因为控制文件中的信息在7天后有可能被覆盖,因此,我们应该至少每7天同步一次。
否则恢复目录中的信息将有可能不完整。
七、恢复目录库中的视图
其实ORACLE是把备份信息写进了目录库中的一些表内,我们可以通过“RC_”系列视图来查询这些表例如,我们连接到目录库RCAT1:
idle>
connrcat1/abcde@rcat
已连接。
select*fromrc_database;
DB_KEYDBINC_KEYDBIDNAMERESETLOGS_CHANGE#RESETLOGS_TIME
--------------------------------------------------------------------------
122924364082FOUR10G12008-05-2809:
59:
14
RC_DATABASE显示了注册到恢复目录中的目标库。
这个视图显示的信息和listincarnation几乎一样。
其实listincarnation命令就是读取的RC_DATABASE视图。
第二节RMAN备份
一、
RMAN的备份及备份管理,是有点复杂的。
这也是我们的重点内容。
而RMAN的恢复,就极简单了。
其实只要备份做的好,恢复本就是一件非常简单的事。
只有那些处处漏洞、满目苍夷的数据库,一旦出现问题,才需要高深的恢复技巧。
比如,绕过ORACLE读已经无法正常打开数据库的数据文件。
而对于有着良好的备份策略的数据库,恢复操作,从来都是很简单的事。
二、RMAN相关的名词
1.通道:
它是目标库到存储存设备的连接途径。
RMAN的备份恢复都是由服务器进程完成的,通道就是服务器进程和存储设备间建立的连接。
2.备份片:
RMAN备份时所产生的备份文件。
每一个备份文件,就叫一个备份片。
备份片中的数据,可以来自数据文件、控制文件、归档日志文件。
一个备份片有可能是多个文件备份数据的组合,或者一个数据文件可以跨越多个备份片,也就是一个数据文件可以被分割成多个备份片。
3.备份集:
一个通道将对应一个备份集,一个备集中,包含多个备份片。
备份集是一个逻辑概念,在操作系统中,你是找不到备份集相关的信息的。
在操作系统中,你可以找到备份片,一个备份片就是一个操作系统文件。
在ORACLE中,又把多个备份片对应的文件组合起来,比如说1、3、5号文件组合起来,构成备份集1,等等。
备份集只存在在概念上。
因此,它是备份片的逻辑组合。
上图的备份过程中,建立了两个通道,因此在存储设备中,就有两个备份集。
备份集1包含了数据文件1、4、5的备份。
它里面有两个备份片,分别是片1和片2,其中片1包含数据文件1的备份,和数据文件4的一部分备份。
而片2包含数据文件4的另一半备份,和数据文件5的备份。
备份集2只有一个备份片,其中包含了三个数据文件的备份。
4.备份类型:
RMAN共有两大类备份类型,一类被称为映像拷贝,另一类是增量备份。
下面,我们先从映像拷贝开始。
三、映像拷贝
1.映像拷贝
也叫映像副本。
它其实和直接的用操作系统拷贝命令复制文件差不多。
使用它可以备份数据文件、控制文件和归档日志文件。
不能备份重做日志文件。
下面我们来看一下映像拷贝的使用。
一个标准的映像拷贝应该如下完成:
(放PPT)
上面这段脚本包含两个命令,第2行的命令是分配通道,通道名是D1,这个通道名是随变起的。
类型是DISK,磁盘。
类型还可以是磁带:
。
这是第一条命令,结束处以“;
”分号标记。
接着,从第3行到第8行是一条命令,这就是我们的映像拷贝命令。
也就是说,RMAN的命令都以分号结束。
一个分号就是一条命令。
在映像拷贝命令中,我们以第4行为例,它的意思是将1号文件映像拷贝到E:
\ORACLE\BACKUP处,映像备份的文件名是SYSTEM01.DBF。
1号文件本来就是SYSTEM01.DBF,这个我们在DBA_DATA_FILES中的FILE_ID列,或V$DATAFILE的FILE#列都有记录。
映像拷贝后,备份文件的名字并不一定要和原文件一样。
这个名字也是随变起的。
我在这里是为了方便记忆,才和原文件名相同的。
另外,DATAFILE后的文件号也可以换成文件名:
Datafile‘F:
\oracle\oradata\four10g\system01.dbf’toto'
e:
\oracle\backup\SYSTEM01.DBF'
,
在RMAN中,有一条简单的命令可以列出目标库中的所有数据文件和它的文件编号:
reportschema;
数据库方案报表
永久数据文件列表
===========================
文件大小(MB)表空间回退段数据文件名称
---------------------------------------------------------------
1240SYSTEMYESF:
\ORACLE\ORADATA\FOUR10G\SYSTEM01.DBF
280UNDOTBS1YESF:
\ORACLE\ORADATA\FOUR10G\UNDOTBS01.DBF
360SYSAUXNOF:
\ORACLE\ORADATA\FOUR10G\SYSAUX01.DBF
410USERSNOF:
\ORACLE\ORADATA\FOUR10G\USERS01.DBF
临时文件列表
=======================
文件大小(MB)表空间最大大小(MB)临时文件名称
---------------------------------------------------------------
116TEMP32767F:
\ORACLE\ORADATA\FOUR10G\TEMP01.DBF
第一列就是文件编号。
注意,我们只用备份永久数据文件就行,不用备份临时文件。
脚本中的第8行是备份控制文件。
因为这个脚本包含了两条命令,所有这两条命令要用“RUN{}”括起来。
如果只有一条命令,是不秘加“RUN{}”的
上面这段脚本可以在目标库打开、或关闭时执行。
如果备份时,目标库未打开,这就相当于冷备。
而如果是在数据库打开时进行的备份,就相当于热备了。
用RMAN热备不再需要将表空间设为热备状态。
这比手动管理中的热备,将表空间置为热备状态,在总体性能上要好一些。
如果要备份归档日志,将上面的DATAFILE换成ARCHIVELOG:
Copyarchivelog归档日志文件名to备份归档日志文件名
下面我们执行一下上面的脚本:
run{
2>
allocatechanneld1typedisk;
3>
copy
4>
datafile1to'
5>
datafile2to'
\oracle\backup\UNDOTBS01.DBF'
6>
datafile3to'
\oracle\backup\SYSAUX01.DBF'
7>
datafile4to'
\oracle\backup\USERS01.DBF'
8>
currentcontrolfileto'
\oracle\backup\controlbak.ctl'
;
9>
}
分配的通道:
d1
通道d1:
sid=31devtype=DISK
启动backup于28-5月-08
启动数据文件副本
输入数据文件fno=00001name=F:
输出文件名=E:
\ORACLE\BACKUP\SYSTEM01.DBF标记=TAG20080528T211003recid=1时间戳=655938622
数据文件复制完毕,经过时间:
00:
00:
25
输入数据文件fno=00002name=F:
\ORACLE\BACKUP\UNDOTBS01.DBF标记=TAG20080528T211003recid=2时间戳=655938637
07
输入数据文件fno=00003name=F:
\ORACLE\BACKUP\SYSAUX01.DBF标记=TAG20080528T211003recid=3时间戳=655938643
输入数据文件fno=00004name=F:
\ORACLE\BACKUP\USERS01.DBF标记=TAG20080528T211003recid=4时间戳=655938648
03
复制当前控制文件
\ORACLE\BACKUP\CONTROLBAK.CTL标记=TAG20080528T211003recid=5时间戳=655938651
04
完成backup于28-5月-08
释放的通道:
备份完毕后,检查E:
\ORACLE\BACKUP目录,多了5个文件。
映像拷贝不创建备份集,每一个文件的备份都是一个备份片。
其实这和用操作系统拷贝命令差不多。
不过在热备时,不需要将表空间置于热备状态。
可以使用LISTCOPY命令查看备份结果:
listcopy;
数据文件副本列表
关键字文件S完成时间CkpSCNCkp时间名称
----------------------------------------------
1111A28-5月-0816218628-5月-08E:
\ORACLE\BACKUP\SYSTEM01.DBF
1122A28-5月-0816219528-5月-08E:
\ORACLE\BACKUP\UNDOTBS01.DBF
1133A28-5月-0816219928-5月-08E:
\ORACLE\BACKUP\SYSAUX01.DBF
1144A28-5月-0816220228-5月-08E:
\ORACLE\BACKUP\USERS01.DBF
控制文件副本列表
关键字S完成时间CkpSCNCkp时间名称
------------------------------------------
115A28-5月-0816220428-5月-08E:
\ORACLE\BACKUP\CONTROLBAK.CTL
每个备份文件都有一个唯一的标识,就是最前面的关键字列。
这一列对于RMAN很重要,但对于我们没有什么意义。
我们说一下重要的列。
第三列有一个S列,它是