如何将数据库从文件系统迁移到ASM存储里

来源:互联网 发布:最后的武士 长城 知乎 编辑:程序博客网 时间:2024/05/20 07:18

如何将数据库从文件系统迁移到ASM存储里

 

 

上一篇 /下一篇  2008-11-20 16:06:47 / 个人分类:工作技术

查看( 1032 ) /评论( 4 ) / 评分( 8 / 1 )

由于ASM磁盘组里的文件不能通过普通的操作系统命令访问,因此如果要将数据库从文件系统迁移到ASM磁盘组里,则必须通过RMAN。注意,迁移之前,如果启用了闪回数据库功能,则需要先关闭闪回数据库功能。

将数据库整体迁移到ASM的过程如下所示(本数据库启用了归档):

1)       修改初始化参数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';

2)       正常关闭数据库。

SQL> shutdown immediate;

3)       启动RMAN,并将数据库启动到nomount阶段。

[oracle@book ora10g]$ rman target /

RMAN> startup nomount;                                                  

4)       恢复刚才备份的控制文件,由于我们设置了初始化参数control_files,将其指向了磁盘组DgroupA,因此恢复出来的控制文件会存放在DgroupA里。

RMAN> restore controlfile from '/u01/control.ctl';             

Starting restore at 18-OCT-07

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

……                                                                 

output filename=+DGROUPA/ora10g/controlfile/current.256.636273263

Finished restore at 18-OCT-07

5)       将数据库mount起来。

RMAN> alter database mount;                                            

6)       通过拷贝的方式,将所有的数据文件全都迁移到ASM磁盘组(DgroupA)里。

RMAN> backup as copy database format '+DgroupA';

Starting backup at 18-OCT-07

Starting implicit crosscheck backup at 18-OCT-07

……

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile copy

input datafile fno=00001 name=/u01/app/oracle/oradata/ora10g/system01.dbf

output filename=+DGROUPA/ora10g/datafile/system.257.636273329 tag=TAG20071018T063528 recid=2 stamp=636273411

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:01:25

……

Finished backup at 18-OCT-07

RMAN-06497: WARNING: control file is not current, control file autobackup skipped

7)       开始恢复数据库。

RMAN> recover database;

……

archi.ve log thread 1 sequence 9 is already on disk as file /u01/app/oracle/oradata/ora10g/redo02.log

……

media recovery complete, elapsed time: 00:00:04

Finished recover at 19-OCT-07

8)       将临时表空间所包含的临时文件迁移到磁盘组DgroupA里。

RMAN> run{

2> switch tempfile 1 to '+DgroupA';

3> }

renamed temporary file 1 to +DgroupA in control file

9)       通过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';

10)    在RMAN中以resetlogs选项打开数据库,从而根据控制文件里记录的联机日志文件的路径(这里也就是DgroupA),自动在DgroupA里创建联机日志文件。

RMAN> alter database open resetlogs;