最近这两天终于在linux上装好了oracle 10g,折腾了好多次,有点像自己第一次用pl/sql连接数据库的时候,囧得很啊!不过其中的过程自己倒是对linux的文件目录和vi更加熟悉了。接下来还要配置一下rac和dg的环境,估计又得花一番功夫了!
今天又看了eygle的循序渐进,重新翻看了rman的copy备份恢复,试试手了!
首先修改一下system01.dbf的位置,方面后面测试
Shutdown immediate
Startup mount;
Alter database rename file to ‘d:system01.dbf’;
然后再os上复制数据文件1到的d:、是system.dbf位置
Host rman target /
Rman>backup as copy datafile 1 format ‘d:system01.dbf’
对数据文件1进行一次copy镜像的备份
当然copy datafile 1 to ‘d:system01.dbf’也是可以的,不过对于在oracle 10G中对于全库镜像数据库则Rman>backup as copy database此时copy database语法上存在错误的,个人一般都是backup as copy写法。
数据文件1备份完全成后
Rman> shutdown abort;
Rman>startup
由于删除数据文件1导致数据库无法open。
Nocatalog模式下数据库的全部备份记录存储在controlfile中,利用copy的备份集来恢复吧
Rman>run{
set newname for datafile 1 to ‘d:oracleproduct10.2.0oradatasystem01.dbf’;
restore datafile 1;
switch datafile all;
recover datafile 1;
}
其中的set newname for datafile to ‘’然后switch datafile all对datafile 1进行了控制文件的更新,把数据文件rename到了一个新的位置。
由于之前个人把system01.dbf转移到了d:system01.dbf,此时恢复完毕后查看system01.dbf存储在‘d:oracleproduct10.2.0oradatasystem01.dbf’。oracle会自动选择最新的备份来restore。(可以查看alertsid.log查看具体的详细信息,oracle会选择具体用的备份集来恢复)
前段时间在windows上创建了asm实例的数据库。本机数据库test是建立在asm磁盘组实例的数据库。试着模拟一次asm磁盘组的故障来实行恢复。
首先在asm实例的数据库orcl做一个数据文件system的备份,然后强制关闭数据库
set oracle_sid=test
rman target /
backup as copy datafile 1;
shutdown abort;
进入asm磁盘实例
Set oracle_sid=+ASM
Sqlplus / as sysdba
Alter diskgroup dggroup1 drop file ‘+DGGROUP1/test/datafile/system.256.764084429’
好了在磁盘组已经把datafile 1 drop掉了。
回到orcl库来恢复吧
Set oracle_sid=test
Rman target /
Run{
Startup mount;
Restore datafile 1;
Recover datafile 1;
}
Alter database open
到此asm磁盘组的数据库恢复完毕。
参照上面的恢复过程asm磁盘组数据库和普通的数据库没有多大区别。
接触rman也有一段时间了,有些list backup copy的命令顺便在这里写一下。
List 命令:
List backup of database
List backup of datafile 1
List backup of controlfile
列出关于数据文件的全部备份信息,此时列出的都是是备份集
List copy of database
List copy of datafile 1
。。。
列出关于数据文件的全部镜像信息,此时列出的是镜像
Copy镜像备份
Backup as copy database
Backup as copy datafile 1 ||format ‘’
Backup as copy current controlfile ||format ‘’
Backup as copy archivelog all;
。。。
此时copy的镜像备份在restore时是优先与backup产生的备份机的,利用备份集会有额外的开销,而且结合rman的switch datafile all可以实现alter database rename file实现数据文件重新定位。
Backup备份
Backup database;
Backup datafile 1 to ‘’
Backup current controlfile to ‘’
。。。
Crosscheck 命令
Crosscheck backup;
Crosscheck backup of database
Crosscheck backup of controlfile
Crosscheck copy of database
Crosscheck copy
。。。。
列出在os上已经删除的备份集并置为expired,因为有些备份集在os上已经删除,但是在rman的备份目录中还是存在,此时需要crosscheck backup置为expired过期的然后delete expired backup
全备份的一个脚本
Run{
Allocate channel d1 device type disk;
Backup database
include current controlfile
Plus archivelog all format ‘ /oracle_data/oraback/full_%d_%T_%S‘delete all input;
Release channel d1;
}
此时上述的过程1 归档current log 2 备份归档然后全备份库和控制文件 3 再次归档当前日志备份没有备份archivelog
(生产库中的archivelog和备份集应该存储和数据文件的不同磁盘,而且也应该做多份冗余备份)
Archivelog的命令
列出大于等于序号40的archivelog
List backup of archivelog from sequence 40
List backup of archivelog low sequence 40
List archivelog from sequence 40
列出小于等于序号40的日志
List backup of archivelog until sequence 40
List backup of archivelog high sequence40
列出等于40的日志
List archivelog sequence sequence 40
删除7天前的archivelog
Delete archivelog from time ‘sysdate-7’
Show all
其中的configure retention policy to redendancy 1默认冗余度为1,rman备份策略认为最后最新一个是rman应该使用和保留的备份集,其余的都认为是oblosote的,实际rman恢复过程中也会使用最新的一次备份来做恢复。
Report obsolete
Report rman备份策略中认为的过期备份集
Delete obsolete;
删除rman备份策略中认为的过期备份集
罗嗦了半天了,就自己是初学者来说,oracle确实有太多的未知,不过又很多点东西真的还是要自己多多去尝试,由于是个人本本无法实验安装asm和linux上安装rac和布置dg环境,环境只是客观的,要想测试自己装个虚拟机两个instance设置一下网络rac不就可以弄了吧,
Dg不也一样,asm在windows上单机都可以设置,所以经常说:别为自己找借口,只要你想学爱学就去实验吧!不能说成功就实际的来说薪水待遇只是迟早的事,用自己所学到的东西,而且又是兴趣所在还能取得一份不错的薪水。可能几个月后再看这篇blog会觉得里面还有很多知识点可以写,量变形成质变,加油吧!飞鱼!
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25362835/viewspace-1055803/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25362835/viewspace-1055803/