文件系统移植数据库到ASM
SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 4月 29 09:46:36 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn /as sysdba
已连接。
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
二、修改控制文件路径到ASM磁盘组
SQL> alter system set control_files='+DG1/dw/control01.ctl' scope=spfile;
系统已更改。
三、关闭数据库
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
四、利用rman移植控制文件到ASM
RMAN> startup nomount;
Oracle 实例已启动
系统全局区域总计 209715200 字节
Fixed Size 1248164 字节
Variable Size 130024540 字节
Database Buffers 75497472 字节
Redo Buffers 2945024 字节
RMAN> restore controlfile from 'D:\oracle\product\10.2.0\oradata\dw\control01.ctl';
启动 restore 于 29-4月 -07
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=157 devtype=DISK
通道 ORA_DISK_1: 已复制控制文件副本
输出文件名=+DG1/dw/control01.ctl
完成 restore 于 29-4月 -07
RMAN>
五、利用rman copy命令移植数据文件到ASM
RMAN> backup as copy database format '+DG1';
启动 backup 于 29-4月 -07
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00001 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\DW\SYSTEM01.DBF
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: backup 命令 (ORA_DISK_1 通道上, 在 04/29/2007 15:07:58 上) 失败
ORA-19504: 无法创建文件"+DG1"
ORA-17502: ksfdcre: 4 未能创建文件 +DG1
ORA-15041: diskgroup space exhausted
磁盘组的空间不够用。
SQL> alter diskgroup DG1 resize disk 'DG1_0000' SIZE 1024M;
alter diskgroup DG1 resize disk 'DG1_0000' SIZE 1024M
*
第 1 行出现错误:
ORA-15032: ?????????
ORA-15057: ???? 1024 MB ?????? 99 MB
ORA-15057: specified size of string MB is larger than actual size of string MB
Cause: A disk size expression exceeded the amount of storage actually availalable, as reported by the operating system.
Action: Specify a valid size.
SQL>
C:\Documents and Settings\Administrator.XY>set oracle_home=D:\oracle\product\10.2.0\db_1
C:\Documents and Settings\Administrator.XY>set oracle_sid=+ASM
C:\Documents and Settings\Administrator.XY>asmcmd
ASMCMD> lsdg
State Type Rebal Unbal Sector Block AU Total_MB Free_MB Req_mi
r_free_MB Usable_file_MB Offline_disks Name
MOUNTED NORMAL N N 512 4096 1048576 396 272
99 86 0 DG1/
ASMCMD>
RMAN> backup as copy database format '+DG1';
启动 backup 于 29-4月 -07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00001 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\DW\SYSTEM01.DBF
输出文件名 = +DG1/dw/datafile/system.257.621189505 标记 = TAG20070429T163823 rec
id = 1 时间戳 = 621189614
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:01:55
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00003 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\DW\SYSAUX01.DBF
输出文件名 = +DG1/dw/datafile/sysaux.258.621189619 标记 = TAG20070429T163823 rec
id = 2 时间戳 = 621189647
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:35
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00005 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\DW\TEST01.DBF
输出文件名 = +DG1/dw/datafile/test.259.621189655 标记 = TAG20070429T163823 recid
= 3 时间戳 = 621189665
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:16
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00006 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\DW\SNPM01.DBF
输出文件名 = +DG1/dw/datafile/snpm.260.621189671 标记 = TAG20070429T163823 recid
= 4 时间戳 = 621189680
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:15
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00007 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\DW\OLIVE01.DBF
输出文件名 = +DG1/dw/datafile/olive.261.621189685 标记 = TAG20070429T163823 reci
d = 5 时间戳 = 621189695
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:15
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00002 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\DW\UNDOTBS01.DBF
输出文件名 = +DG1/dw/datafile/undotbs1.262.621189701 标记 = TAG20070429T163823 r
ecid = 6 时间戳 = 621189708
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:03:38
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00004 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\DW\USERS01.DBF
输出文件名 = +DG1/dw/datafile/users.263.621189919 标记 = TAG20070429T163823 reci
d = 7 时间戳 = 621189920
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:03
通道 ORA_DISK_1: 启动数据文件副本
复制当前控制文件
输出文件名 = +DG1/dw/controlfile/backup.264.621189923 标记 = TAG20070429T163823
recid = 8 时间戳 = 621189924
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:03
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 29-4月 -07
通道 ORA_DISK_1: 已完成段 1 于 29-4月 -07
段句柄=+DG1/dw/backupset/2007_04_29/nnsnf0_tag20070429t163823_0.265.621189927 标
记=TAG20070429T163823 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02
完成 backup 于 29-4月 -07
六、利用rman的switch database命令切换数据文件的位置到ASM
这个命令其实相当于一系列的alter database rename file
RMAN> switch database to copy;
数据文件 1 已切换成数据文件副本 "+DG1/dw/datafile/system.257.621189505"
数据文件 2 已切换成数据文件副本 "+DG1/dw/datafile/undotbs1.262.621189701"
数据文件 3 已切换成数据文件副本 "+DG1/dw/datafile/sysaux.258.621189619"
数据文件 4 已切换成数据文件副本 "+DG1/dw/datafile/users.263.621189919"
数据文件 5 已切换成数据文件副本 "+DG1/dw/datafile/test.259.621189655"
数据文件 6 已切换成数据文件副本 "+DG1/dw/datafile/snpm.260.621189671"
数据文件 7 已切换成数据文件副本 "+DG1/dw/datafile/olive.261.621189685"
RMAN>
七、在ASM上创建新的online redo logfile,然后删除现有文件系统上的online redo logfile
C:\Documents and Settings\Administrator.XY>sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 4月 29 16:47:40 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn /as sysdba
已连接。
SQL> alter database open;
数据库已更改。
SQL> alter database add logfile group 4 '+dg1/dw/redo04.log' size 5m;
数据库已更改。
SQL> alter database add logfile group 5 '+dg1/dw/redo05.log' size 5m;
数据库已更改。
SQL> alter database add logfile group 6 '+dg1/dw/redo06.log' size 5m;
数据库已更改。
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 CURRENT
2 UNUSED
3 INACTIVE
4 UNUSED
5 UNUSED
6 UNUSED
已选择6行。
SQL> alter system switch logfile;
系统已更改。
SQL> alter system switch logfile;
系统已更改。
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 ACTIVE
2 ACTIVE
3 INACTIVE
4 CURRENT
5 UNUSED
6 UNUSED
已选择6行。
SQL>
八、移植临时表空间到ASM
SQL> alter tablespace temp add tempfile '+DG1/dw/TEMP01.DBF' size 100m;
表空间已更改。
SQL> col file_name for a50
SQL> col tablespace_name for a10
SQL> select file_name,tablespace_name from dba_temp_files;
FILE_NAME TABLESPACE
-------------------------------------------------- ----------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\DW\TEMP01.DBF TEMP
+DG1/dw/temp01.dbf TEMP
SQL> alter tablespace temp drop tempfile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DW\TE
MP01.DBF';
表空间已更改。
SQL> select file_name,tablespace_name from dba_temp_files;
FILE_NAME TABLESPACE
-------------------------------------------------- ----------
+DG1/dw/temp01.dbf TEMP
SQL>
九、创建更多的控制文件
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 209715200 bytes
Fixed Size 1248164 bytes
Variable Size 130024540 bytes
Database Buffers 75497472 bytes
Redo Buffers 2945024 bytes
数据库装载完毕。
SQL> alter database backup controlfile to '+DG1/dw/control02.ctl';
数据库已更改。
SQL> alter database backup controlfile to '+DG1/dw/control03.ctl';
数据库已更改。
SQL> alter system set control_files='+DG1/dw/control01.ctl','+DG1/dw/control02.ctl','+DG1/dw/control03.ctl' scope=spfile;
系统已更改。
SQL>
SQL> alter database backup controlfile to '+DG1/dw/control03.ctl';
alter database backup controlfile to '+DG1/dw/control03.ctl'
*
第 1 行出现错误:
ORA-01580: 创建控制备份文件 +DG1/dw/control03.ctl 时出错
ORA-17502: ksfdcre: 4 未能创建文件 +DG1/dw/control03.ctl
ORA-15005: name "dw/control03.ctl" is already used by an existing alias
SQL> alter database backup controlfile to '+DG1/dw/control03.ctl' reuse;
数据库已更改。
SQL> alter database backup controlfile to '+DG1/dw/control02.ctl' reuse;
数据库已更改。
SQL> shutdown immediate
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 209715200 bytes
Fixed Size 1248164 bytes
Variable Size 130024540 bytes
Database Buffers 75497472 bytes
Redo Buffers 2945024 bytes
数据库装载完毕。
数据库已经打开。
SQL>
十、移植完成,检查一下
SQL> select name from v$controlfile;
NAME
-----------------------------------------
+DG1/dw/control01.ctl
+DG1/dw/control02.ctl
+DG1/dw/control03.ctl
SQL> select file_name from dba_data_files
FILE_NAME
-----------------------------------------
+DG1/dw/datafile/users.263.621189919
+DG1/dw/datafile/sysaux.258.621189619
+DG1/dw/datafile/undotbs1.262.621189701
+DG1/dw/datafile/system.257.621189505
+DG1/dw/datafile/test.259.621189655
+DG1/dw/datafile/snpm.260.621189671
+DG1/dw/datafile/olive.261.621189685
已选择7行。
SQL> col member for a60
SQL> select group#,member from v$logfile;
GROUP# MEMBER
---------- ------------------------------------------------------------
3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\DW\REDO03.LOG
2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\DW\REDO02.LOG
1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\DW\REDO01.LOG
4 +DG1/dw/redo04.log
5 +DG1/dw/redo05.log
6 +DG1/dw/redo06.log
已选择6行。