最近在看《RMAN Recipes for Oracle Database 11g》,老外讲得啰里吧嗦,我把其中有一些比较重要的操作记下,以便以后查阅,如果顺利,以后看完每章都做一次总结,希望对初学Oracle备份与恢复的朋友有所帮助。笔记中若有不正确的地方欢迎大家留言拍砖。
其中,第一章《Backup and Recovery》针对备份和恢复的基本概念作了详细阐述,包括数据库故障的类型、Oracle中备份与恢复的几个概念、备份类型、恢复类型、RMAN体系结构、备份与恢复的几个最佳实践。第二章《Jump-Starting RMAN》是针对初识RMAN的朋友准备的,作者用最简单的例子让初学者几下子就能作一个备份和恢复,这一章包括连接数据库、打开和关闭数据库、使用归档模式、连接RMAN、备份数据库、Restoring and Recovering 数据库。这两章主要是从概念上讲备份与恢复,也举了几个例子,大家一看就懂,我也不一一罗列了,下面进入正题。
第三章《Using the Flash Recovery Area》是对闪回恢复区作了些论述,我用例子来说明一些概念。 3-1.Creating the Flash Recovery Area(创建闪回恢复区) 这个闪回恢复区我们可以自定义创建,在创建前我们思考两个问题,第一:这个闪回恢复区我创建在哪儿?第二:我要创建多大的闪回恢复区? 如果大家已经确定了答案,我们就可以创建了。 3.1.1确保log_archive_dest和log_archive_duplex_dest为空 大家可以show parameter log_archive_dest看一下这两个初始化参数是否为空,若不为空,则: Alter system set log_archive_duplex_dest = ‘ ’; Alter system set log_archive_dest = ‘ ‘; 如果大家想要把归档文件放入自定义的路径,则可以使用log_archive_dest_1, Alter system set log_archive_dest_1=’location=/dbarch’; 并保证log_archive_dest为空,具体参数说明见Oracle联机文档《Reference》。 3.1.2以sysdba角色登录数据库 Sqlplus / as sysdba 或者 Sqlplus sys/<PasswordOfUserSys> as sysdba 3.1.3创建闪回恢复区并指定相应大小 Alter system set db_recovery_file_dest_size=4G;(原作有误,少了file_dest) Alter system set db_recovery_file_dest=’/home/oracle/flasharea’; 好了,这样就指定了一个闪回恢复区,记住,这个/home/oracle/flasharea必须存在,若操作系统层面没有这个目录,必须创建一个目录。 这个闪回恢复区将来是用来存放备份文件的,所以大家最好不要把闪回恢复区和数据库文件放在同一块磁盘上,万一磁盘块了,那闪回恢复区也一起悲剧。 3-2Writing Regular RMAN Backups to the FRA(在闪回恢复区有规律地备份) 3.2.1启动RMAN $rman Recovery Manager:...... RMAN> 3.2.2连接到目标数据库 RMAN>connect target / Connected to target database:PRODB2(DBID=524826567) 3.2.3开始不指定路径地备份数据库 RMAN>backup database; ...... 从屏幕产生的信息我们发现,数据库分配了一个channel,把数据文件备份到闪回恢复区,同时控制文件和spfile也一起备份。 3-3Free FRA Space in an Emergency(紧急情况下释放闪回恢复区) 我们有时在备份时会出现FRA空间不够,那怎么办呢?有三种办法。 3.3.1增大闪回恢复区空间 Alter system set db_recovery_file_size_size=10G; 3.3.2删除没用的Restore Points Select name,storage_size from v$restore_point; 找到没用的Restore Points,然后 Drop restore point rp0; 3.3.3禁用闪回恢复区 我索性不用闪回恢复区,将它Disable。 Shutdown immediate Startup mount Alter database flashback off; 现在我可以用rman安心删除东西了,把archivelog删除: Rman>delete noprompt archivelog all; 然后打开数据库, Alter database open; 注意,这次的数据库是没有闪回恢复区的。
3-4.Checking Space Usage in the FRA(检查FRA使用空间) 有几个动态性能视图对这一问题有很好的帮助,下面看下怎么查询。 SQL>select * from v$flash_recovery_area_useage;通过列名我们可以清晰地得到各种文件占用了多少空间,注意是百分比。那我们怎么看具体用了多少空间?大家可以查看v$recovery_file_dest这个动态性能视图,我们还能通过FILE_TYPE将这两个视图连接查询自己想要的信息。
3-5.Expanding or Shrinking the FRA(扩大或收缩FRA) 其实这块前面在创建时就提过了, SQL>alter system set db_recovery_file_dest_size=2G; 这个值看实际情况调整。 3-6.Configureing Archived Redo Logs to Go to FRA(给FRA配置归档日志) 我们原来可以把归档日志放其它的路径下,这节阐述了怎么向FRA里配置。书上有几步前面我们已经做过,下面我会把那些操作略去。 3.6.1用FRA做为归档路径 Alter system set log_archive_dest_1=’LOCATION=USE_DB_RECOVERY_FILE_DEST’; 3.6.2确保上面的路径可用 SQL>show parameter log_archive_dest_state_1 那个值必须是ENABLE,不然没法用这个路径,如果不是ENABLE,则 Alter system set log_archive_dest_state_1=enable; 3.6.3检查你的设置 SQL>archive log list 3.6.4切换日志看是不是真的归档到新目录 Alter system switch logfile; 以上就是基本操作,设置完了后大家可以查询v$archive_log看下归档路径。 3-7.Using the Same FRA for Two Database with the Same Name(略,以后用到再写) 3-8.Placing a Control File in the FRA(将控制文件放入FRA) 控制文件一般是怎么产生的?首先,在创建数据库时,会产生;还可以用SQL脚本在恢复时产生;也可以从备份文件中找到。在pfile里我们一般会看到一个参数是指定控制文件的路径的。讲到这想必大家知道怎么设置了吧,改一下pfile里的路径就行了。 3-9.Placing Online Redo Log Files in FRA(在FRA中设置联机重做日志)(待续。。。)