单实例数据库迁移到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 logfileASM
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打开数据库
如果是没有备份的情况下可参见:
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;