通过rman的方式无论是备份还是恢复,小生建议,大伙还是先预备两个东东:
1)到mount阶段,因为,缺省下rman的元数据被存在目标数据库控制文件中
2)如果数据库处于open read write状态,那么必须置于归档模式,否则会报ora-19602:错误无法按NOARCHIVELOG模式备份或复制活动文件。如何开启归档,请见:点击打开链接http://blog.csdn.net/linwaterbin/article/details/7735277
连接数据库,可分本地和远程:
本地:rman target /
远程:rman target sys/[email protected]
另外,在rman里面,启动和关闭数据库的命令跟SQL*PLUS环境下相比,完全一模一样
可以通过,host+exit的黄金组合来执行os命令;通过sql '....'来执行sql语句,这种方式不能得到select的查询输出。但小生建议host+sqlplus /nolog+exit+exit,这种模式可以最大化sql的功能。
我们也可以把rman的所有输出,全部指定到一个地方:
[oracle@localhost ~]$ rman target / log /home/oracle/rman_log.txt RMAN> backup tablespace users; RMAN>
rman备份类型有二:
1)镜像复制:这种类型out了
2)备份集:备份集在逻辑上由一个或多个备份片组成,备份片物理上由一个或多个数据文件、控制文件、归档日志等组成。通过rman备份的优势在于,只读取数据库中已经使用的(注意:不是修改)的数据块。
rman命令执行方式有三:单个执行、run块和脚本
rman中所有的备份操作,都是通过backup命令(指创建备份集的备份)进行的。
下面看几个例子:
1)全库备份
backup database;
备份片在缺省下会被存储到flash_recovery_area中,但是我们可以通过format '/u01/app/.....'来指定备份片的名字。如:
backup database format 'u01/app/oracle/think/bak_%U';
如果想查看创建的全库备份:
list backup of database;
2)表空间的备份
backup tablespace users
查看表空间的备份:
list backup of tablespace users;
删除表空间的备份:
delete backupset n;
3)数据文件的备份
先看一下数据文件的情况:
sys@ORCL> col file_name for a72 wrapped sys@ORCL> select file_id,file_name from dba_data_files; FILE_ID FILE_NAME ---------- ------------------------------------------------------------------------ 4 /u01/app/oracle/oradata/ORCL/datafile/o1_mf_users_8050fkdh_.dbf 3 /u01/app/oracle/oradata/ORCL/datafile/o1_mf_sysaux_8050fk3w_.dbf 2 /u01/app/oracle/oradata/ORCL/datafile/o1_mf_undotbs1_8050fkc6_.dbf 1 /u01/app/oracle/oradata/ORCL/datafile/o1_mf_system_8050fk2z_.dbf 5 /u01/app/oracle/oradata/ORCL/datafile/o1_mf_example_8050jhm7_.dbf 6 /u01/app/oracle/oradata/ORCL/datafile/undotbsthi.dbf 6 rows selected.
backup datafile 2,3,4;
查看数据文件的备份:
list backup of datafile 2,3,4;
4)控制文件的备份
backup current controlfile;
我们在执行backup语句时,也可以顺带指定include current controlfile子句,来备份控制文件。如果我们执行configure autobackup controlfile on;那么rman做任何备份操作,都会自动对控制文件做备份。当然,如果我们队数据文件1或者对system表空间备份时,也会触发controlfile的备份。
查看控制文件的备份
list backup of controlfile;
5)归档文件的备份
backup archivelog all;
归档日志对于数据库的media recovery相当关键。all指备份当前所有可访问的归档文件,你还可以通过until、scn、time、sequence等参数指定要备份的归档区间。在完成归档日志文件的备份后,我们需要删除已备份的归档文件:delete all input,加在backup命令后,如:backup archivelog all delete all input,则会在完成备份后自动删除归档目录中已经备份的归档日志。
也可以通过plus archivelog方式对控制文件进行备份,这种情况下,rman会对当前的归档日志自动进行归档。
查看归档日志的备份
list backup of archivelog all;
6)对备份集的备份
backup backupset all;
backup backupset n;
缺省情况都是从磁盘创建备份到磁盘,最佳应用备份集是创建备份集到磁带机。
下面看一下常见的rman命令:
show 命令:显示rman默认配置
配置项后面加了#default的表示该项为初始配置,未被修改过。
如:show all;
list 命令:列出备份信息
list backup:列出所有备份信息
list backup of controlfile:列出控制文件的备份信息
delete 命令:删除备份
删除rman在控制文件里面的记录和相应的物理文件
delete obsolete:删除过期备份
delete expired:删除无效备份
[注意:rman对于obsolete和expired的定义:
物理上不存在的,即,磁盘上已经被删除的,执行crosscheck后,标志为expired;
超出了备份保留策略的备份片段,则标志为obsolete
]
delete backupset n:删除特定备份集
delete backup:删除所有备份
report 命令:分析备份信息
用于对当前备份信息的分析,如哪些备份已经过期,哪些文件要备份,哪些备份不可用,哪些备份可以删除等。
report need backup:查看所有需要备份的文件
report need backup tablespace system:查看指定表空间是否需要备份
report obsolete:查看过期备份
crosscheck 命令:执行检查
如果物理文件存在,并且,控制文件中有匹配记录,则该记录的状态为available(有效);如果文件已经不在了,则标志该对象的状态为expired
检查所有归档文件
crosscheck archivelog all;
检查所有备份集
crosscheck backup;
如果上面的命令我们忘记了,可以逐渐打出匹配符来满足,list backup of tablespace忘了,可以先打list,让rman列出错误,然后再打list backup ....一步步接近命令的真相!