这里有个数据库db03的数据文件是存储在文件系统上的,现在把它迁移到ASM上,磁盘组是+DATA,可以使用em进行操作,也可以使用SQL语句来完成。
这里用的数据库版本是oracle 10g r2,已经更新至10.2.0.5。使用SQL迁移具体操作过程分为两大步:
一、准备工作:
备份数据库,spfile以及禁用Flashback Database。
1、确定数据库的compatible版本信息,这个可以查看pfile,位置位于$ORACLE_BASE/admin/db03/pfile/init.ora.*。这里的版本是10.2.0.5.0。
如果compatible的值小于11.0.0,要确保所有的表空间是可读可写的。如果存在只读表空间则其不能被迁移,因为rman不能备份只读表空间的。
首先创建一个test表空间以及一个测试用户:
接着使用测试用户,创建个简单的表,用来测试迁移过程是否会发生数据丢失:
查看表空间是否处于可读可写:
所有表空间都是可读可写的。
2、备份pfile或者spfile。
3、确认flashback未启用:
如果返回的值yes,则使用以下命令关闭:
启用flashback之前,数据库要处于mount状态下,打开archivelog模式;
4、为防止意外先备份数据库:
5、迁移数据文件至ASM:
迁移过程:
6、如果在备份过程,数据库还在写数据,则再进行一次1级备份:
7、如果数据库处于archive模式以及打开状态,则进行归档日志操作:
8、如果数据库实例使用的是spfile,则备份spfile:
9,如果block change tracking已经启用,则禁用它:
Block chage tracking是Oracle10g 的一个新特性,Block change tracking进程记录自从上一次0级备份以来数据块的变化,并把这些信息记录在跟踪文件中。RMAN使用这个文件判断增量备份中需要备份的变更数据。这极大的提高了备份性能和速度,RMAN可以不再扫描整个文件以查找变更数据。
查看block change tracking状态:
使用以下命令禁用:
10、关闭数据库实例:
二、迁移过程:
使用rman将数据库迁移至ASM:
1、恢复或者创建spfile至ASM中:
如果没有spfile,则使用以下语句创建一个:
完成之后,删除$ORACLE_HOME/dbs/spfiledb03.ora和initdb03.ora文件,接着创建一个新的initdb03.ora文件,加入以下内容:
SPFILE=’+DATA/DB03/spfiledb03.ora’
2、在OMF参数中设置ASM的位置:
如果没有使用fast recovery area,则不需要更改DB_RECOVERY_FILE_DEST和DB_RECOVERY_FILE_DEST_SIZE初始化参数。
3、设置控制文件初始化参数:
重启数据库至nomount状态:
如果不升级fast recovery area,则运行以下命令:
4、迁移控制文件至ASM并挂载控制文件:
5、迁移数据文件至ASM:
在rman提示符下,首先运行switch database to copy命令。这个命令会重新命名ASM磁盘组中的文件以及修改控制文件内数据文件的指针,使其指向新位置,完成之后recover数据库。
6、如果数据库使用block change tracking和Flashback Database,则启用之:
7、切换数据库至open状态:
8、删除和重建tempfiles:
数据库现在还使用的是原来的temp文件,将其删掉,重新创建:
查看新创建的temp文件位置:
9、迁移online redo log文件:
这个可以使用oracle提供的语句进行迁移:
完成后,查看redo日志文件的位置,是否已成功迁移至ASM:
数据文件位置:
控制文件位置:
整个迁移过程至此完毕!
参考文献:Oracle? Automatic Storage Management Administrator's Guide 11g Release 2 (11.2)
本文出自 “candon123” 博客,谢绝转载!