ASM存储方式随着ORACLE 10g的推出,作为oracle一直力推的一个存储新特性。尽管在稳定性和和操作性还有有待改进,但许多企业已经把ASM存储方式部署在核心业务系统中 了。
1.原来的磁盘设备以及刚接上去的磁盘设备
[root@rac2 etc]# fdisk -l
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
/dev/sda1
/dev/sda2
Disk /dev/sdb: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
/dev/sdb1
Disk /dev/sdc: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
/dev/sdc1
Disk /dev/sdd: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
/dev/sdd1
Disk /dev/sde: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
/dev/sde1
Disk /dev/sdf: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdf doesn't contain a valid partition table
Disk /dev/sdg: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdg doesn't contain a valid partition table
Disk /dev/sdh: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdh doesn't contain a valid partition table
Disk /dev/sdi: 107 MB, 107374080 bytes
64 heads, 32 sectors/track, 102 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk /dev/sdi doesn't contain a valid partition table
Disk /dev/sdj: 118 MB, 107374080 bytes
64 heads, 32 sectors/track, 102 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk /dev/sdi doesn't contain a valid partition table
2.对新磁盘进行分区
[root@rac2 dev]# ll sd*
[root@rac1 ~]# cd /dev
[root@rac1 dev]# ll sd*
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
root@rac2 dev]# fdisk /dev/sdf
Command (m for help): n
Command action
p
Partition number (1-4): 1
First cylinder (1-15000, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-15000, default 15000):
Using default value 15000
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
从sdf--sdi
[root@rac1 dev]# ll sd*
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
brw-rw----
sdf1、sdg1、sdh1
为ASM新磁盘组所用
sdh1
sdj1
3.查看原来的磁盘绑定的ASM卷
[root@rac1 etc]# /etc/init.d/oracleasm listdisks
VOL1
VOL2
VOL3
原始设备与块设备绑定,两个节点都要执行
编辑、添加vi /etc/sysconfig/rawdevices
/dev/raw/raw4 /dev/sdf1
/dev/raw/raw5 /dev/sdg1
/dev/raw/raw6 /dev/sdh1
/dev/raw/raw7 /dev/sdj1
想要映射成功,可以重启裸设备服务
[root@rac1 ~]# service rawdevices restart
Assigning devices:
Error setting raw device (Device or resource busy)
Error setting raw device (Device or resource busy)
Error setting raw device (Device or resource busy)
/dev/raw/raw4:
/dev/raw/raw5:
/dev/raw/raw6:
/dev/raw/raw7:
注:修改 /etc/udev/permissions.d/50-udev.permissions。原始设备在引导时会重新映射。默认情况下,在引导时原始设备 的拥有者将更改为 root 用户。如果拥有者不是 oracle 用户,则 ASM 在访问共享分区时会出现问题。在 /etc/udev/permissions.d/50-udev.permissions 中为原始行“raw/*:root:disk:0660”添加注释,然后添加一个新行“raw/*:oracle:dba:0660”。
/etc/udev/permissions.d/50-udev.permissions
# raw devices
ram*:root:disk:0660
#raw/*:root:disk:0660
raw/*:oracle:dba:0660
4.权限设置,两个节点均要设置
[root@rac1 raw]# chown oracle:dba raw4 raw5 raw6
[root@rac1 raw]# ll
total 0
crw-rw----
crw-rw----
crw-rw----
crw-rw----
crw-rw----
crw-rw----
5.在两个节点分别以ORACLE身份执行
rac1-> ln -sf /dev/raw/raw4 /u01/oracle/oradata/devdb/asmdisk4
rac1-> ln -sf /dev/raw/raw5 /u01/oracle/oradata/devdb/asmdisk5
rac1-> ln -sf /dev/raw/raw6 /u01/oracle/oradata/devdb/asmdisk6
6.节点1绑定ASM卷
[root@rac1 raw]# /etc/init.d/oracleasm createdisk VOL4 /dev/sdf1
Marking disk "/dev/sdf1" as an ASM disk: [
[root@rac1 raw]# /etc/init.d/oracleasm createdisk VOL5 /dev/sdg1
Marking disk "/dev/sdg1" as an ASM disk: [
[root@rac1 raw]# /etc/init.d/oracleasm createdisk VOL6 /dev/sdh1
Marking disk "/dev/sdh1" as an ASM disk: [
[root@rac1 raw]# /etc/init.d/oracleasm listdisks
VOL1
VOL2
VOL3
VOL4
VOL5
VOL6
[root@rac2 dev]# /etc/init.d/oracleasm listdisks
VOL1
VOL2
VOL3
[root@rac2 dev]# /etc/init.d/oracleasm scandisks
Scanning system for ASM disks: [
[root@rac2 dev]# /etc/init.d/oracleasm listdisks
VOL1
VOL2
VOL3
VOL4
VOL5
VOL6
7.创建OCFS
登录rac1桌面
ocfs2console
tasks -->format
选择/dev/sdi1
两节点root创建文件夹
[root@rac1 ~]# mkdir /ocfs2
[root@rac1 /]# chown -R oracle:dba
挂载文件系统。要挂载文件系统,在两个节点上root执行以下命令。
# mount -t ocfs2 -o datavolume,nointr /dev/sdi1 /ocfs2
要在引导时挂载文件系统,在两个节点的 /etc/fstab 中添加以下行。
/etc/fstab
/dev/sdi1 /ocfs2 ocfs2 _netdev,datavolume,nointr 0 0
8.
创建ASM磁盘
以oracle身份登录rac1 桌面
输入:dbca
创建完毕
9.数据转移
在节点1执行RMAN
RMAN> backup as copy database format '+NDG1';
Starting backup at 04-OCT-11
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=147 instance=devdb1 devtype=DISK
channel ORA_DISK_1: starting datafile copy
input datafile fno=00001 name=+DG1/devdb_rac/datafile/system.256.761942223
output filename=+NDG1/devdb_rac/datafile/system.256.763645653 tag=TAG20111004T114731 recid=5 stamp=763645666
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile copy
input datafile fno=00003 name=+DG1/devdb_rac/datafile/sysaux.257.761942225
output filename=+NDG1/devdb_rac/datafile/sysaux.257.763645667 tag=TAG20111004T114731 recid=6 stamp=763645676
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile copy
input datafile fno=00005 name=+DG1/devdb_rac/datafile/example.264.761942429
output filename=+NDG1/devdb_rac/datafile/example.258.763645683 tag=TAG20111004T114731 recid=7 stamp=763645688
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting datafile copy
input datafile fno=00009 name=+DG1/devdb_rac/datafile/streams_ts.271.762135319
output filename=+NDG1/devdb_rac/datafile/streams_ts.259.763645691 tag=TAG20111004T114731 recid=8 stamp=763645693
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting datafile copy
input datafile fno=00010 name=+DG1/devdb_rac/datafile/orabmtest.272.762138449
output filename=+NDG1/devdb_rac/datafile/orabmtest.260.763645697 tag=TAG20111004T114731 recid=9 stamp=763645700
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting datafile copy
input datafile fno=00002 name=+DG1/devdb_rac/datafile/undotbs1.258.761942225
output filename=+NDG1/devdb_rac/datafile/undotbs1.261.763645705 tag=TAG20111004T114731 recid=10 stamp=763645706
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting datafile copy
input datafile fno=00006 name=+DG1/devdb_rac/datafile/undotbs2.265.761942785
output filename=+NDG1/devdb_rac/datafile/undotbs2.262.763645707 tag=TAG20111004T114731 recid=11 stamp=763645708
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting datafile copy
input datafile fno=00007 name=+DG1/devdb_rac/datafile/sttest.269.762038641
output filename=+NDG1/devdb_rac/datafile/sttest.263.763645711 tag=TAG20111004T114731 recid=12 stamp=763645711
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting datafile copy
copying current control file
output filename=+NDG1/devdb_rac/controlfile/backup.264.763645711 tag=TAG20111004T114731 recid=13 stamp=763645713
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting datafile copy
input datafile fno=00004 name=+DG1/devdb_rac/datafile/users.259.761942225
output filename=+NDG1/devdb_rac/datafile/users.265.763645715 tag=TAG20111004T114731 recid=14 stamp=763645715
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting datafile copy
input datafile fno=00008 name=+DG1/devdb_rac/datafile/sttest0.270.762038681
output filename=+NDG1/devdb_rac/datafile/sttest0.266.763645717 tag=TAG20111004T114731 recid=15 stamp=763645716
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
including current SPFILE in backupset
channel ORA_DISK_1: starting piece 1 at 04-OCT-11
channel ORA_DISK_1: finished piece 1 at 04-OCT-11
piece handle=+NDG1/devdb_rac/backupset/2011_10_04/nnsnf0_tag20111004t114731_0.267.763645719 tag=TAG20111004T114731 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
Finished backup at 04-OCT-11
alter system set control_files='+NDG1/devdb_rac/controlfile/controldevdb' scope=spfile sid='*';
转移spfile到新的ASM组地址
rac1-> cd /u01/oracle/product/10.2.0/db_1/dbs/
rac1-> ll
total 15296
-rw-rw----
-rw-r-----
-rw-r-----
lrwxrwxrwx
-rw-r-----
-rw-r-----
-rw-r-----
-rw-r-----
-rw-r-----
-rw-r-----
rac1-> more initdevdb1.ora
SPFILE='+DG1/devdb_rac/spfiledevdb.ora'
rac1-> vi initdevdb1.ora
SPFILE='+NDG1/devdb_rac/spfiledevdb.ora'
RMAN> restore controlfile from '+DG1/DEVDB_RAC/CONTROLFILE/Current.260.761942341';
Starting restore at 04-OCT-11
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=146 instance=devdb2 devtype=DISK
channel ORA_DISK_1: copied control file copy
output filename=+DG1/devdb_rac/controlfile/current.260.761942341
output filename=+RECOVERYDEST/devdb_rac/controlfile/current.256.761942341
Finished restore at 04-OCT-11
Database altered.
进行恢复
RMAN> switch database to copy;
released channel: ORA_DISK_1
datafile 1 switched to datafile copy "+NDG1/devdb_rac/datafile/system.257.763648965"
datafile 2 switched to datafile copy "+NDG1/devdb_rac/datafile/undotbs1.262.763649013"
datafile 3 switched to datafile copy "+NDG1/devdb_rac/datafile/sysaux.258.763648979"
datafile 4 switched to datafile copy "+NDG1/devdb_rac/datafile/users.264.763649031"
datafile 5 switched to datafile copy "+NDG1/devdb_rac/datafile/example.259.763648995"
datafile 6 switched to datafile copy "+NDG1/devdb_rac/datafile/undotbs2.263.763649019"
datafile 7 switched to datafile copy "+NDG1/devdb_rac/datafile/sttest.265.763649023"
datafile 8 switched to datafile copy "+NDG1/devdb_rac/datafile/sttest0.256.763649035"
datafile 9 switched to datafile copy "+NDG1/devdb_rac/datafile/streams_ts.260.763648999"
datafile 10 switched to datafile copy "+NDG1/devdb_rac/datafile/orabmtest.261.763649005"
执行恢复
RMAN>RECOVER DATABASE
尝试打开数据库
RMAN> alter database open;
database opened
数据文件及控制文件转移成功!
10.转移临时表空间和联机日志文件
重新创建临时表空间
create temporary tablespace
改变缺省临时表空间
alter database default temporary tablespace temp2;
创建日志文件(新设计日志,每个节点3组日志,每个日志组有两个成员,50M,两个成员在不同的ASM磁盘组)
注:一日子组里,不同成员建议在不同的磁盘中。
alter database add logfile
alter database add logfile
alter database add logfile
alter database add logfile
alter database add logfile
alter database add logfile
NRECOVERY/ 磁盘组下
alter database add logfile member '+NRECOVERY/onlinelog/log1' to group 5 ;
alter database add logfile member '+NRECOVERY/onlinelog/log2' to group 6 ;
alter database add logfile member '+NRECOVERY/onlinelog/log3' to group 7 ;
alter database add logfile member '+NRECOVERY/onlinelog/log4' to group 8 ;
alter database add logfile member '+NRECOVERY/onlinelog/log5' to group 9 ;
alter database add logfile member '+NRECOVERY/onlinelog/log6' to group 10 ;
切换日志
SQL> alter system switch logfile;
删除
SQL>
如果发生错误 可以先清空联机日志
alter database clear unarchived logfile group 1
11.善后
修改OMF参数,其他参数原本为空,所以我没理它。
alter system set db_create_file_dest='+NDG1' scope=spfile sid='*';
Stopping resources.
Successfully stopped CRS resources
Stopping CSSD.
Shutting down CSS daemon.
Shutdown request successfully issued.
Now formatting voting disk: /ocfs2/votingdisk
successful addition of votedisk /ocfs2/votingdisk.
successful deletion of votedisk /ocfs/clusterware/votingdisk.
total 10001
-rw-r--r--
drwxr-xr-x
-rw-r--r--
[root@rac1 ocfs2]# chown oracle:dba votingdisk
rac2-> ocrcheck
Status of Oracle Cluster Registry is as follows :
rac1-> /u01/oracle/product/10.2.0/crs_1/bin/ocrconfig -replace ocrmirror /dev/raw/raw8
PROT-20: Insufficient permission to proceed. Require privileged user
rac1-> ocrcheck
Status of Oracle Cluster Registry is as follows :
[root@rac1 ocfs2]# /u01/oracle/product/10.2.0/crs_1/bin/ocrcheck
Status of Oracle Cluster Registry is as follows :