单实例数据库迁移到ASM实例中
1.
使用
dbca
配置
asm
实例,PS:注意使用/u01/oracle/product/10g/bin/localconfig add命令安装
ocssd
。
(图略)
2.
在
RDBMS
上备份一份数据库(全备)
使用命令:
run{
backup as copy database format '+DG1';
}(将数据库备份到ASM的+DG1磁盘组上;
3.修改RDBMS参数
Alter system set db_create_file_dest=’+DG1’ scope=spfile;
alter system set db_create_online_log_dest_1=’+DG1’ scope=spfile;
alter system set db_create_online_log_dest_2=’+DG2’ scope=spfile; PS:注意redo log的路径需要做镜像。
Alter system set db_recovery_file_dest_size=xxG scope= both;
Alter system set db_recovery_file_dest=’+DG2’ scope=both;
4.创建redo logfile到ASM中
ALTER DATABASE ADD LOGFILE GROUP 4
('+DG1','+DG2') SIZE 50M;
ALTER DATABASE ADD LOGFILE GROUP 5
('+DG1','+DG2') SIZE 50M;
ALTER DATABASE ADD LOGFILE GROUP 6
('+DG1','+DG2') SIZE 50M;
并删除原来的redolog:alter database drop logfile group 1;
验证:select member from v$logfile;
PS:我在实验过程中因为错误删除了以前的日志,导致以前的日志没办法删除,但恰恰这个被删除的是当前使用的日志。删除步骤如下:
用
CLEAR
命令重建该日志文件
SQL>alter database clear logfile group 1;
如果是该日志组还没有归档,则需要用
SQL>alter database clear unarchived logfile group 1;
如果还不成功使用
recover database until cancel
接着使用
alter database open resetlogs
打开数据库
如果是没有备份的情况下可参见:
http://www.itpub.net/forum.php?mod=viewthread&tid=137366
5.
把临时表空间迁移到
ASM
中
Select bytes/1024/1024,name from v$tempfile;
只要往表空间中增加tempfile就可以了
alter tablespace temp add tempfile size 300m;
删除旧的临时文件
alter database tempfile ‘/xxxx/xxxx/xxxx.dbf’ drop;
6.
创建控制文件
show parameter control
alter system set control_files='+DG1/fjiang/controlfile/control01','+DG2/fjiang/controlfile/control02' scope=spfile;
7.
关闭数据库实例,启动到
nomount
状态,恢复
control file
。
(
重启生效
)
Shutdown immediate
Startup nomount
restore controlfile from '/u01/oracle/oradata/fjiang/control01.ctl';
8.
启动数据库到
mount
alter database mount;
9.
使用
RMAN
切换数据文件,并恢复
switch database to copy;
recover database
;;
10.
启动数据库
Alter database open;