Redhat 5.5 Orcle 10G 文件系统单实例迁移至ASM实战
1.安装ASMlib RPM包:
rpm -ivhoracleasm-support-2.1.7-1.el5.i386.rpm
rpm -ivh oracleasm-2.6.18-194.el5-2.0.5-1.el5.i686.rpm
rpm -ivhoracleasmlib-2.0.4-1.el5.i386.rpm
2.建立分区:
[root@source ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 730 5863693+ 83 Linux
/dev/sdb2 731 1305 4618687+ 83 Linux
fdisk /dev/sdb(详细步骤省略,两个分区各5G)
partprobe /dev/sdb
[root@source ~]# fdisk -l
Disk /dev/sda: 16.1 GB, 16106127360 bytes
255 heads, 63 sectors/track, 1958 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 25 200781 83 Linux
/dev/sda2 26 1894 15012742+ 83 Linux
/dev/sda3 1895 1958 514080 82 Linux swap / Solaris
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 730 5863693+ 83 Linux
/dev/sdb2 731 1305 4618687+ 83 Linux
3.配置ASM:
[root@source ~]#/etc/init.d/oracleasm configure
Configuring the Oracle ASMlibrary driver.
This will configure theon-boot properties of the Oracle ASM library
driver. The following questions will determinewhether the driver is
loaded on boot and whatpermissions it will have. The currentvalues
will be shown in brackets('[]'). Hitting <ENTER> withouttyping an
answer will keep that currentvalue. Ctrl-C will abort.
Default user to own thedriver interface []: oracle
Default group to own thedriver interface []: oinstall
Start Oracle ASM library driveron boot (y/n) [y]: y
Scan for Oracle ASM disks onboot (y/n) [y]: y
Writing Oracle ASM librarydriver configuration: done
Initializing the OracleASMLib driver: [ OK ]
Scanning the system forOracle ASMLib disks: [ OK ]
/etc/init.d/oracleasmconfigure
/etc/init.d/oracleasm createdisk V0L1/dev/sdb1
/etc/init.d/oracleasm createdisk V0L2/dev/sdb2
[root@source ~]#/etc/init.d/oracleasm listdisks
V0L1
V0L2
4.配置css进程(配置好后,进程开机启动):
[root@source bin]# /u01/oracle/product/10.2.0/bin/localconfigadd
/etc/oracle does not exist. Creating it now.
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
Configuration for local CSS has been initialized
Adding to inittab
Startup will be queued to init within 90 seconds.
Checking the status of new Oracle init process...
Expecting the CRS daemons to be up within 600 seconds.
CSS is active on these nodes.
source
CSS is active on all nodes.
Oracle CSS service is installed and running underinit(1M)
[oracle@source ~]$ ps -ef|grep oracle
root 4751 1 0 10:18 ? 00:00:00 /bin/su -l oracle -c sh -c 'cd/u01/oracle/product/10.2.0/log/source/cssd; ulimit -c unlimited; exec /u01/oracle/product/10.2.0/bin/ocssd '
oracle 4843 4751 0 10:19 ? 00:00:00/u01/oracle/product/10.2.0/bin/ocssd.bin
5.配置ASM实例:
创建ASM实例参数文件,添加相关参数:
[oracle@source ~]$ cd /u01/oracle/product/10.2.0/dbs/
[oracle@source dbs]$ touch init+ASM.ora
[oracle@source dbs]$ vim init+ASM.ora
instance_type=asm
large_pool_size=12m
remote_login_passwordfile=exclusive
asm_diskstring=
background_dump_dest=/u01/oracle/admin/+ASM/bdump
core_dump_dest=/u01/oracle/admin/+ASM/cdump
user_dump_dest=/u01/oracle/admin/+ASM/udump
创建ASM密码文件:
orapwd file=orapw+ASM entries=5 password=oracle
6.启动ASM实例:
[oracle@source dbs]$ export ORACLE_SID=+ASM
[oracle@source dbs]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Fri Dec28 10:43:21 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup
ASM instance started
Total System Global Area 83886080 bytes
Fixed Size 1217836 bytes
Variable Size 57502420 bytes
ASM Cache 25165824 bytes
ORA-15110: no diskgroups mounted
报错是因为还没有建立磁盘组,忽略此报错,接下来建立ASM磁盘.
SQL> select name,state,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup;
no rows selected
修改asm_diskstring参数,参数的含义官方文档解释如下:
A comma-separated list of strings that limits the setof disks that ASM discovers. May include wildcard characters. Only disks thatmatch one of the strings are discovered. String format depends on the ASMlibrary in use and on the operating system. The standard system library for ASMsupports glob pattern matching.
SQL> alter system set asm_diskstring='/dev/oracleasm/disks/V0L*';
System altered.
SQL> create diskgroupdg1 external redundancy disk'/dev/oracleasm/disks/V0L1';
Diskgroup created.
SQL> create diskgrouprecovery external redundancy disk '/dev/oracleasm/disks/V0L2';
Diskgroup created.
SQL> select name,state,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup;
NAME STATE FREE_MB REQUIRED_MIRROR_FREE_MBUSABLE_FILE_MB
------------------------------ ----------- --------------------------------- --------------
DG1 MOUNTED 5676 0 5676
RECOVERY MOUNTED 4460 0 4460
7.备份原库:
RMAN>
run {
allocate channel c1 device type disk;
allocate channel c2 device type disk;
backup database format '/home/oracle/full_databse%U'include current controlfile plus archivelog ;
release channel c1;
release channel c2;
}
8.修改原库参数:
alter system set db_create_file_dest='+DG1';
alter SYSTEM SET db_recovery_file_dest='+RECOVERY';
alter SYSTEM SET db_recovery_file_dest_size=5G;
alter system set db_create_online_log_dest_1='+DG1';
9.迁移联机日志文件到ASM
select group#,member from v$logfile;
GROUP#MEMBER
------------------------------------------------------------
3 /u01/oracle/oradata/sourcedb/redo03.log
2/u01/oracle/oradata/sourcedb/redo02.log
1 /u01/oracle/oradata/sourcedb/redo01.log
SQL> alter database add logfile member '+DG1' togroup 1;
Database altered.
SQL> alter database add logfile member '+DG1' togroup 2;
Database altered.
SQL> alter database add logfile member '+DG1' togroup 3;
Database altered.
SQL> select group#,member from v$logfile;
GROUP#MEMBER
------------------------------------------------------------
3/u01/oracle/oradata/sourcedb/redo03.log
2/u01/oracle/oradata/sourcedb/redo02.log
1/u01/oracle/oradata/sourcedb/redo01.log
1+DG1/sourcedb/onlinelog/group_1.256.803217799
2+DG1/sourcedb/onlinelog/group_2.257.803217809
3+DG1/sourcedb/onlinelog/group_3.258.803217813
删除文件系统上的联机日志成员
SQL>alter database droplogfile member '/u01/oracle/oradata/sourcedb/redo02.log';
SQL> alter system switchlogfile;
SQL> alter database droplogfile member '/u01/oracle/oradata/sourcedb/redo01.log';
SQL> alter system switchlogfile;
SQL> alter database droplogfile member '/u01/oracle/oradata/sourcedb/redo03.log';
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------
+DG1/sourcedb/onlinelog/group_1.256.803217799
+DG1/sourcedb/onlinelog/group_2.257.803217809
+DG1/sourcedb/onlinelog/group_3.258.803217813
10.迁移临时表空间文件到ASM:
SQL> select name from v$tempfile;
NAME
---------------------------------------------------------------------------
/u02/temp02.dbf
SQL> alter tablespace temp add tempfile;
Tablespace altered.
SQL> select file_name,tablespace_name fromdba_temp_files;
FILE_NAME
---------------------------------------------------------------------------
TABLESPACE_NAME
------------------------------
+DG1/sourcedb/tempfile/temp.259.803218283
TEMP
/u02/temp02.dbf
TEMP
SQL> alter tablespace temp drop tempfile'/u02/temp02.dbf';
Tablespace altered.
SQL> select file_name,tablespace_name fromdba_temp_files;
FILE_NAME
---------------------------------------------------------------------------
TABLESPACE_NAME
------------------------------
+DG1/sourcedb/tempfile/temp.259.803218283
TEMP
11.迁移控制文件和数据文件到ASM
首先修改参数文件:
SQL> alter system setcontrol_files='+DG1/sourcedb/CONTROLFILE/control01.ctl','+DG1/sourcedb/CONTROLFILE/control02.ctl'scope=spfile;
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 88082676 bytes
Database Buffers 75497472 bytes
Redo Buffers 2973696 bytes
[oracle@source ~]$ rman target /
RMAN> restore controlfile from'/u01/oracle/oradata/sourcedb/control01.ctl';
Starting restore at 28-DEC-12
using channel ORA_DISK_1
channel ORA_DISK_1: copied control file copy
output filename=+DG1/sourcedb/control01.ctl
output filename=+DG1/sourcedb/control02.ctl
Finished restore at 28-DEC-12
RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1
12.开始恢复数据文件到ASM:
run{
set newname for datafile'/u01/oracle/oradata/sourcedb/system01.dbf' to '+DG1/sourcedb/DATAFILE/system01.dbf';
set newname for datafile'/u01/oracle/oradata/sourcedb/undotbs301.dbf' to'+DG1/sourcedb/DATAFILE/undotbs301.dbf';
set newname for datafile'/u01/oracle/oradata/sourcedb/sysaux01.dbf' to '+DG1/sourcedb/DATAFILE/sysaux01.dbf';
set newname for datafile'/u01/oracle/oradata/sourcedb/users01.dbf' to'+DG1/sourcedb/DATAFILE/users01.dbf';
set newname for datafile'/u01/oracle/oradata/sourcedb/example01.dbf' to'+DG1/sourcedb/DATAFILE/example01.dbf';
set newname for datafile '/u01/oracle/oradata/sourcedb/gguser.dbf'to '+DG1/sourcedb/DATAFILE/gguser.dbf';
restore database;
switch datafile all;
recover database;
}
13.迁移结束,验证一下:
SQL> select name fromv$controlfile;
NAME
---------------------------------------------------------------------------
+DG1/sourcedb/controlfile/control01.ctl
+DG1/sourcedb/controlfile/control02.ctl
SQL> select name fromv$datafile;
NAME
---------------------------------------------------------------------------+DG1/sourcedb/datafile/system01.dbf
+DG1/sourcedb/datafile/undotbs301.dbf
+DG1/sourcedb/datafile/sysaux01.dbf
+DG1/sourcedb/datafile/users01.dbf
+DG1/sourcedb/datafile/example01.dbf
+DG1/sourcedb/datafile/gguser.dbf
SQL> select member fromv$logfile;
MEMBER
---------------------------------------------------------------------------
1+DG1/sourcedb/onlinelog/group_1.256.803217799
2+DG1/sourcedb/onlinelog/group_2.257.803217809
3+DG1/sourcedb/onlinelog/group_3.258.803217813
SQL> select name fromv$tempfile;
NAME
---------------------------------------------------------------------------
+DG1/sourcedb/tempfile/temp.259.803218283