额。。。今天弄了一天的RMAN,总算是有那么一点点的成果了。期间可是惊现万分啊。。。尤其是我没有备份spfile,
对于我这样的新手来说,操作是一方面,理解原理才是最重要的。下面是具体的步骤。
1、 创建备份脚本(backup.sh),内容如下:
$ORACLE_HOME/bin/rman target sys/oracle <<!
run{
crosscheck archivelog all;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/10_07_18_full/control_%F';
backup full database format '/backup/10_07_18_full/data_%d_%U'
plus
archivelog format '/backup/10_07_18_full/arch_%d_%U' delete all input;
}
!
注意:(1)要创建相应的“/backup/10_07_18_full”文件夹
(2)crosscheck archivelog all;的作用就是检查控制文件和实际物理文件的差别
2、删除所有的控制文件,数据文件,日志文件等(不要手软,放心的删把)。
3、准备数据库的密码文件
[oracle@GG ~]$ orapwd file=orapwdDB password=123456yahu entries=5
4、创建spfile文件
[oracle@GG ~]$ sqlplus / as sysdba;
SQL> create spfile from pfile='/opt/ora10g/admin/jssbook/pfile/init.ora.419201011220';
注:这里还要说一下,我开始没有备份dbs目录下的Init+例程名.ora的pfile文件,导致不能创建spfile,
网上搜了半天没有办法。最后来我搜索了一下安装目录,发现了pfile文件。就是上面的路径下。
结果居然能用,哈哈。。。难道这就是缘分。
5、启动到nomount模式
SQL> startup nomount;
SQL> exit;
6、启动RMAN
[oracle@GG ~]$ rman target /
7、设置DBID,让RMAN知道他要恢复的顾客是谁。
(这个DBID值看你备份的文件里的 /backup/10_07_18_full/control_c-1454185184-20100718-05,看的了吧)
RMAN> set DBID 1454185184
8、用RMAN从备份中还原控制文件
RMAN> restore controlfile from '/backup/10_07_18_full/control_c-1454185184-20100718-05';
9、把数据库修改到mount模式
RMAN> sql 'alter database mount';
10、还原数据文件
RMAN> restore database;
11、恢复数据库(根据归档日志和控制文件微调一些那些没有恢复的数据)
RMAN> recover database;
12、可以Open数据库了。哈哈。。。。
RMAN> sql 'alter database open resetlogs';
注:resetlogs命令表示一个数据库逻辑生存期的结束和另一个数据库逻辑生存期的开始,
每次使用resetlogs命令的时候,SCN不会被重置,不过oracle会重置日志序列号,而且会
重置联机重做日志内容.这样做是为了防止不完全恢复后日志序列会发生冲突(因为现有日志和数据文件间有了时间差)
最后在作一次完全备份,安全阿。。。。
总算写完了,本文只是我的一个小小的读书总结,虽然没有技术含量,不过把我的逻辑关系总结了一下。
写出来就是有成就感啊!哈哈哈。。。。