今天试验了怎样将数据库文件从文件系统移植到ASM
测试环境:
Windows 2003 Server
Oracle 10.2.0.1
参考ORACLE文档:
Oracle Database 10g Migration to Automatic Storage Management
整个过程主要分为两部分:(1) ASM实例的创建 (2) 文件移植
(1)ASM实例的创建详见
http://shadowfalao.itpub.net/post/2483/303507
(2)文件移植
1)目前数据库运行环境
运行于archivelog模式的单节点数据库,而且还起用了flashback功能。
2)ASM磁盘组规划
需要将数据文件,redo日志文件,控制文件,以及将来的归档日志,
FLASHBACK日志都用ASM来管理,最少需要两个ASM磁盘组。
前面ASM测试中已经创建了一个DATA磁盘组。用来存放数据文件、
日志文件、控制文件等。再创建一个FLASHAREA磁盘组存放FLASHBACK日志和归档日志:
CREATE DISKGROUP FLASHAREA EXTERNAL REDUNDANCY DISK
'D:asmdisks_file_disk5',
'D:asmdisks_file_disk6',
'D:asmdisks_file_disk7',
'D:asmdisks_file_disk8';
在产品环境中,要进行更加详细的规划,这里这是以测试为目的。
3)修改相关的参数
采用ASM,可以采用OMF来管理文件。对以下参数必须修改
ALTER SYSTEM SET DB_CREATE_FILE_DEST='+DATA' SCOPE=BOTH;
ALTER SYSTEM SET DB_CREATE_ONLINE_LOG_DEST_1='+DATA' SCOPE=BOTH;
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='+FLASHAREA' SCOPE=BOTH;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=+FLASHAREA' scope=BOTH;
4)备份数据库
生成数据库的副本到磁盘组+DATA,如果没有足够的磁盘空间,
可以将将数据库备份到磁带机上。
SET ORACLE_SID=ypma
RMAN TARGET /
BACKUP DEVICE TYPE DISK AS COPY DATABASE FORMAT '+DATA';
BACKUP DEVICE TYPE DISK ARCHIVELOG ALL FORMAT '+DATA';
5)移植redo日志
首先查看日志组的使用情况
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 CURRENT
2 INACTIVE
3 ACTIVE
在LOG日志的移植过程中,需要观察判断移植的日志不能是当前日志
ALTER DATABASE ADD LOGFILE MEMBER '+DATA' TO GROUP 3;
ALTER DATABASE ADD LOGFILE MEMBER '+DATA' TO GROUP 1;
ALTER DATABASE ADD LOGFILE MEMBER '+DATA' TO GROUP 2;
ALTER DATABASE DROP LOGFILE MEMBER 'E:ORACLEPRODUCT10.2.0ORADATAYPMAREDO01.LOG';
ALTER DATABASE DROP LOGFILE MEMBER 'E:ORACLEPRODUCT10.2.0ORADATAYPMAREDO02.LOG';
ALTER DATABASE DROP LOGFILE MEMBER 'E:ORACLEPRODUCT10.2.0ORADATAYPMAREDO03.LOG';
6) 移植temp文件
ALTER TABLESPACE TEMP ADD TEMPFILE '+DATA' size 100M;
ALTER DATABASE TEMPFILE 'E:oracleproduct10.2.0oradataypmaTEMP01.DBF' DROP;
7)移植控制文件
ALTER DATABASE BACKUP CONTROLFILE TO '+DATA';
ALTER DATABASE BACKUP CONTROLFILE TO '+FLASHAREA';
ALTER SYSTEM SET CONTROL_FILES=
'+DATA/YPMA/CONTROLFILE/mycontrol.ctl',
'+FLASHAREA/YPMA/CONTROLFILE/mycontrol.ctl' SCOPE=SPFILE;
7)恢复控制文件到新的位置
set ORACLE_SID=ypma
rman taret /
SHUTDOWN IMMEDIATE;
STARTUP NOMOUNT;
RESTORE CONTROLFILE FROM 'E:oracleproduct10.2.0oradataypmaCONTROL01.CTL';
ALTER DATABASE MOUNT;
8)switch 数据文件
SWITCH DATABASE TO COPY;
RECOVER DATABASE;
9)重新启动数据库
SHUTDOWN IMMEDIATE
STARTU
10)验证数据文件是否都全部移植
select name from v$datafile;
select name from v$tempfile;
select name from controlfile;
select filename from v$flashback_database_logfile;
总结:如果要在产品环境中移植的话,需要考虑磁盘空间,系统停机时间,
归档日志是否存储到ASM磁盘组等问题,根据实际情况规划。
转:http://blog.itpub.net/post/2483/303913