分类: Oracle
2008-11-28 13:00:18
由于ASM磁盘组里的文件不能通过普通的操作系统命令访问,因此如果要将数据库从文件系统迁移到ASM磁盘组里,则必须通过RMAN。注意,迁移之前,如果启用了闪回数据库功能,则需要先关闭闪回数据库功能。
将数据库整体迁移到ASM的过程如下所示(本数据库启用了归档):
修改初始化参数control_files和Flash Recovery Area:
SQL> alter database backup controlfile to '/u01/control.ctl';
SQL> alter system set control_files='+DgroupA' scope=spfile;
SQL> alter system set db_recovery_file_dest='+DgroupB';
正常关闭数据库。
SQL> shutdown immediate;
启动RMAN,并将数据库启动到nomount阶段。
$ rman target /
RMAN> startup nomount;
恢复刚才备份的控制文件,由于我们设置了初始化参数control_files,将其指向了磁盘组DgroupA,因此恢复出来的控制文件会存放在DgroupA里。
RMAN> restore controlfile from '/u01/control.ctl';
5) 将数据库mount起来。
RMAN> alter database mount;
通过拷贝的方式,将所有的数据文件全都迁移到ASM磁盘组(DgroupA)里。
RMAN> backup as copy database format '+DgroupA';
开始恢复数据库。
RMAN> recover database;
将临时表空间所包含的临时文件迁移到磁盘组DgroupA里。
RMAN> run{
2> switch tempfile 1 to '+DgroupA';
3> }
renamed temporary file 1 to +DgroupA in control file
通过SQL*Plus连入数据库实例,将控制文件里记录的联机日志文件的路径修改为磁盘组DgroupA。
SQL> alter database rename file '/u01/app/oracle/oradata/ora10g/redo01.log' to '+DgroupA';
SQL> alter database rename file '/u01/app/oracle/oradata/ora10g/redo02.log' to '+DgroupA';
SQL> alter database rename file '/u01/app/oracle/oradata/ora10g/redo03.log' to '+DgroupA';
在RMAN中以resetlogs选项打开数据库,从而根据控制文件里记录的联机日志文件的路径(这里也就是DgroupA),自动在DgroupA里创建联机日志文件。
RMAN> alter database open resetlogs