1. 检查数据库模式: sqlplus /nolog conn /as sysdba archive log list (查看数据库是否处于归档模式中)
若为非归档,则修改数据库归档模式。 startup mount alter database archivelog alter database open
2.连接到target数据库
命令: connect target / (connect target system/oracle@ora10g,如果数据库没有起来,也可要直接在rman命令下用startup进行启动数据库) 可以连接到target database.(rman 一边连接到target数据库,另外一边连接到control file(nocatalog mode),control file 中存储rman 的备份信息)
3.用list backupset 命令查看有没有备份的东西
4. 常用备份命令: 备份全库:RMAN> backup database plus archivelog delete input; (备份全库及控制文件、服务器参数文件与所有归档的重做日志,并删除旧的归档日志)备份表空间:RMAN> backup tablespace system plus archivelog delete input; (备份指定表空间及归档的重做日志,并删除旧的归档日志)_备份归档日志:RMAN> backup archivelog all delete input;
======================对整个数据库进行备份==================
1.对整个数据库进行全备份(full backup)。
只要输入命令: backup database;
2.list backupset 查看备份的具体信息
List of Backup Sets===================
BS Key Type LV Size Device Type Elapsed Time Completion Time------- ---- -- ---------- ----------- ------------ ---------------1 Full 6.80M DISK 00:00:02 06-DEC-08 BP Key: 1 Status: AVAILABLE Compressed: NO Tag: TAG20081206T201041 Piece Name: /home/oracle/flash_recovery_area/ORA10G/backupset/2008_12_06/o1_mf_ncsnf_TAG20081206T201041_4mntz78s_.bkp Control File Included: Ckp SCN: 782019 Ckp time: 06-DEC-08 SPFILE Included: Modification time: 06-DEC-08
BS(backupset), piece是一个文件,一个BS包含多个piece.
3.rman中缺省的参数,可以通过 show all ;来进行查看(RMAN configuration parameters),我们在使用backup database命令中,可以把这些default value 用固定的值来进行替代.
4.我们可以把备份的文件才备份的目录中拷贝到磁带上,然后删除备份目录下面的备份文件,如果下次需要恢复的话,只要把文件重新拷回到用来的备份目录就可以了5.查看control file 文件中的备份信息(因为我们做的备份是在nocatalog模式下),control file 在/u01/oracle/oradata/ora10g目录下,由于control file 是个二进制文件,要查看control file 文件中的内容,用strings control03.ctl,发现control03.ctl中有rman备份的信息了
====================0级增量备份===============
概念:全备份和0级增量备份。全备份和0级增量备份几乎是一样的。唯一的区别,0级增量备份能作为增量备份的基础,而全备份不能作为增量备份的基础。其它方面完全一致
1.backup incremental level=0(leve 0) database;(增量为0的备份)2.backup incremental level 1(level=1) database;(增量为1的备份) 在上面的备份中,我们备份了datafile,controlfile和parameter file.没有备份的文件有归档日志,重做日志和口令文件没有备份.口令文件不需要备份,我们用orapw来创建一个
新的口令文件.rman 在nocatalog模式下,不能够对redo log file 进行备份
===================备份archivelog 在nocatalog模式下=================
命令:backup database plus archivelog delete input(delete input的意思在备份完成后,删除 archivelog文件,这个选项可要可不要,这个命令也可以用 backup incremental level=0(1,2...)来进行备份)
=======================备份表空间====================
backup tablespace tablespacename
如果我们不知道tablespace的名字,在rman中,可要通过report schema命令,来查看表空间的名字
MAN> report schema;Report of database schema
List of Permanent Datafiles===========================File Size(MB) Tablespace RB segs Datafile Name---- -------- -------------------- ------- ------------------------1 480 SYSTEM *** /home/oracle/oradata/ora10g/system01.dbf2 25 UNDOTBS1 *** /home/oracle/oradata/ora10g/undotbs01.dbf3 250 SYSAUX *** /home/oracle/oradata/ora10g/sysaux01.dbf4 5 USERS *** /home/oracle/oradata/ora10g/users01.dbf5 200 PERFSTAT *** /home/oracle/oradata/ora10g/perfstat.dbf
List of Temporary Files=======================File Size(MB) Tablespace Maxsize(MB) Tempfile Name---- -------- -------------------- ----------- --------------------1 20 TEMP 32767 /home/oracle/oradata/ora10g/temp01.dbf
========================备份控制文件====================
backup current controlfile
backup database include current controlfile
========================备份镜像========================
在rman的备份中有两种方式:备份集(backupset)和备份镜像(image copies).镜像备份主要是文件的拷贝:copy datafile ... to ...
我们在rman>report schema;
Report of database schema
List of Permanent Datafiles===========================File Size(MB) Tablespace RB segs Datafile Name---- -------- -------------------- ------- ------------------------1 480 SYSTEM *** /home/oracle/oradata/ora10g/system01.dbf2 25 UNDOTBS1 *** /home/oracle/oradata/ora10g/undotbs01.dbf3 250 SYSAUX *** /home/oracle/oradata/ora10g/sysaux01.dbf4 5 USERS *** /home/oracle/oradata/ora10g/users01.dbf5 200 PERFSTAT *** /home/oracle/oradata/ora10g/perfstat.dbf
List of Temporary Files=======================File Size(MB) Tablespace Maxsize(MB) Tempfile Name---- -------- -------------------- ----------- --------------------1 20 TEMP 32767 /home/oracle/oradata/ora10g/temp01.dbf
rman>copy datafile 5 to '/u01/rmanbak/tbso1bak.dbf';(copy 5 对应的schme:perfstat.dbf)
它会把tbs作为一个拷贝。我们用list backupset来看,不能够查看我们刚备份的 tbs01bak.dbf',因为它不是backupset. 我们用list copy 就能够查看我们刚才刚刚备份的文件
=======================单命令与批命令=================
单命令: backup database;
批命令:
rman> run{ 2> allocate channel cha1 type disk; 3> backup 4> format '/u01/rmanbak/full_%t' 5> tag full-backup //标签可以顺便起,没关系 6> database; 7> release channel cha1; 8>}
这个run中有3条命令,分别用分号来进行分割.
format:%c:备份片的拷贝数(从1开始编号);%d:数据库名称;%D:位于该月中的天数(DD);%M:位于该年中的月份(MM);%F:一个基于DBID唯一的名称,这个格式的形式为c-xxx-YYYYMMDD-QQ,其中xxx位该数据库的DBID,YYYYMMDD为日期,QQ是一个1-256的序列;%n:数据库名称,并且会在右侧用x字符进行填充,使其保持长度为8;%u:是一个由备份集编号和建立时间压缩后组成的8字符名称。利用%u可以为每个备份集产生一个唯一的名称;%p:表示备份集中的备份片的编号,从1开始编号;%U:是%u_%p_%c的简写形式,利用它可以为每一个备份片段(既磁盘文件)生成一个唯一的名称,这是最常用的命名方式;%t:备份集时间戳;%T:年月日格式(YYYYMMDD);
channel的概念:一个channel是rman于目标数据库之间的一个连接,"allocate channel"命令在目标数据库启动一个服务器进程,同时必须定义服务器进程执行备份和恢复操作使
用的I/O类型
通道控制命令可以用来: 控制rman使用的OS资源 影响并行度 指定I/O带宽的限制值(设置 limit read rate 参数) 指定备份片大小的限制(设置 limit kbytes) 指定当前打开文件的限制值(设置 limit maxopenfiles)
=================================RMAN一周典型备份方案============================
1.星期天晚上 -level 0 backup performed(全备份)2.星期一晚上 -level 2 backup performed3.星期二晚上 -level 2 backup performed4.星期三晚上 -level 1 backup performed5.星期四晚上 -level 2 backup performed6.星期五晚上 -level 2 backup performed7.星期六晚上 -level 2 backup performed
如果星期二需要恢复的话,只需要1+2,如果星期四需要恢复的话,只需要1+4,如果星期五需要恢复的话,只需要1+4+5,如果星期六需要恢复的话,只需要1+4+5+6.
自动备份:备份脚本+crontab bakl0 bakl1 bakl2
执行脚本:rman target / msglog=bakl0.log cmdfile=bakl0 (/表示需要连接的目标数据库,msglog表示日志文件,cmdfile表示的是脚本文件)rman target / msglog=bakl1.log cmdfile=bakl1rman target / msglog=bakl2.log cmdfile=bakl2
实例:rman target system/oracle@ora10g(/) msglog=/u01/rmanbak/bakl1.log cmdfile=/u01/rmanbak/bakl0
完整的命令:/u01/oracle/product/10.2.0/bin/rman target system/oracle@ora10g(/) msglog=/u01/rmanbak/bakl1.log cmdfile=/u01/rmanbak/bakl0
把备份脚本放到/u01/rmanbak/script目录下面,vi bakl0,bakl0的内容为:
run{ allocate channel cha1 type disk; backup incremental level 0 format '/u01/rmanbak/inc0_%u_%T'(u表示唯一的ID,大T是日期,小t是时间) tag monday_inc0 //标签可以顺便起,没关系 database; release channel cha1; },类似就可以写出bakl1,bakl2相应的脚本.
自动备份crontabcrontab -e -u oracle(改命令的意思是编辑oracle用户的定时执行(-e,edit -u oracle,oracle用户))
分 时 日 月 星期(0代表星期天)45 23 * * 0 rman target / msglog=bakl0.log cmdfile=bakl0(星期天的23:45会以oracle用户的身份来执行命令)45 23 * * 1 rman target / msglog=bakl2.log cmdfile=bakl245 23 * * 2 rman target / msglog=bakl2.log cmdfile=bakl245 23 * * 3 rman target / msglog=bakl1.log cmdfile=bakl145 23 * * 4 rman target / msglog=bakl2.log cmdfile=bakl245 23 * * 5 rman target / msglog=bakl2.log cmdfile=bakl245 23 * * 6 rman target / msglog=bakl2.log cmdfile=bakl2
然后启动crontab ,启动crontab的命令:root> service crond restart =======================RMAN恢复================
在非catalog模式下,备份的信息存储在controlfile文件中,如果controlfile文件发生毁坏,那么就不能能够进行恢复,使用在备份的时候需要把controlfile也进行自动备份 RMAN>show all;using target database control file instead of recovery catalogRMAN configuration parameters are:CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # defaultCONFIGURE BACKUP OPTIMIZATION OFF; # defaultCONFIGURE DEFAULT DEVICE TYPE TO DISK; # defaultCONFIGURE CONTROLFILE AUTOBACKUP OFF; # defaultCONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # defaultCONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # defaultCONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # defaultCONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # defaultCONFIGURE MAXSETSIZE TO UNLIMITED; # defaultCONFIGURE ENCRYPTION FOR DATABASE OFF; # defaultCONFIGURE ENCRYPTION ALGORITHM 'AES128'; # defaultCONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # defaultCONFIGURE SNAPSHOT CONTROLFILE NAME TO '/home/oracle/product/10.20/dbs/snapcf_ora10g.f'; # default
其中CONFIGURE CONTROLFILE AUTOBACKUP OFF; 没有对controlfile进行 autobackup,使用我们需要运行下面命令来对controlfile进行自动备份RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> show all;
手动备份控制文件:backup current controlfile
Dbid表示database的一个ID,将来用于恢复spfile和controlfile时候要用到.RMAN> connect target /connected to target database: ORA10G (DBID=3988862108)这个Dbid=3988862108
RMAN> list backup;查看以前备份的信息RMAN>delete backupset 24;//24代表backupset 的编号RMAN>backup format '/u01/rmanbak/full_%T_%U.bak' database plus archivelog;(进行一次全备份)
验证备份:RMAN> validate backupset 3; //3代表backupset的编号
口令文件丢失(不属于rman备份的范畴),我们只需要用一个命令来重建这个文件就可以了:orapw file=orapwsid password=pass entries=5; //口令文件的路径:/u01/oracle/product/10.20/db_1/dbs目录下oracle> cd /u01/oracle/product/10.20/db_1/dbsoracle> rm orapwora10g;(文件删除,模拟丢失)oracle> orapwd file=orapwora10g password=oracle entries=5;(重新建立一个文件),entries的意思(DBA的用户最多有5个)
SPFILE丢失:startup nomount;set dbid 3988862108;restore spfile from
本文来自博客,转载请标明出处:http://blog.csdn.net/tianlesoftware/archive/2009/10/20/4699320.aspx
转载于:https://www.cnblogs.com/myitworld/archive/2011/06/15/2214786.html
相关资源:Oracle 11g RMAN备份与恢复 中文版