单实例数据库迁移到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;