客户的一客服数据库系统的控制文件全部存放在小机本地的文件系统上,正常应该存放在外部存储上,因此,写了一个方案,在停机上进行整改。
关于迁移文件从文件系统至裸设备或反方向,可以使用OS dd命令,由于末学对不是很数量,并且深切相信Oralce的能力,因此采用了rman copy方式,供大家参考:
l 查询当前数据库的控制文件
SQL> run
1* select * from v$controlfile
STATUS NAME
------- ------------------------------------------------------------
/arrayubi/oracle/product/9.2.0/dbs/cntrlhiubi.dbf
/arrayubi/oracle/product/9.2.0/dbs/cntrlhiubi02.dbf
/arrayubi/oracle/product/9.2.0/dbs/cntrlhiubi03.dbf
再查询存储设备lv,可发现有为控制文件预留的lv(大小为128MB):
v01_crtfile01 raw 8 8 4 closed/syncd N/A
v01_crtfile02 raw 8 8 4 closed/syncd N/A
v01_crtfile03 raw 8 8 4 closed/syncd N/A
?
迁移控制文件至裸设备
1、备份spfile文件并正常关闭数据库
SQL>create pfile= '/arrayubi/oracle/util/initHIUBI.ora' from spfile;
SQL>shutdown immediate;
2、启动数据库至mount状态
SQL>startup mount
3、启动rman迁移控制文件
$ rman target /
RMAN>copy current controlfile to '/dev/rv01_crtfile01';
RMAN>copy controlfilecopy '/dev/rv01_crtfile01' to '/dev/rv01_crtfile02';
RMAN>copy controlfilecopy '/dev/rv01_crtfile01' to '/dev/rv01_crtfile03';
4、修改参数文件并关闭数据库
SQL>alter system set control_files='/dev/rv01_crtfile01', '/dev/rv01_crtfile02', '/dev/rv01_crtfile03' scope=spfile
SQL>shutdown immediate
5、挂载数据库并以resetlogs方式打开数据库
SQL>startup mount
SQL>alter database open resetlogs
注意:一定要以resetlogs方式打开数据库,意味着数据库开始了一个新的生命周期。
[@more@]
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23219371/viewspace-1041158/
,如需转载,请注明出处,否则将追究法律责任。