1.1 磁盘组管理
1.1.1 创建磁盘组
如存在磁盘LUNs:
/dev/rhdisk11
/dev/rhdisk12
/dev/rhdisk13
/dev/rhdisk14
创建一个EXTERNAL REDUNDANCY的磁盘组DGDATA:
SQL>CREATE DISKGROUP DATA EXTERNAL REDUNDANCY
DISK '/dev/rhdisk11',
'/dev/rhdisk12',
'/dev/rhdisk13',
'/dev/rhdisk14'
ATTRIBUTE 'au_size'='4M', <-仅11gR2有效
'compatible.asm' = '11.2',
'compatible.rdbms' = '11.2',
'compatible.advm' = '11.2'; <-仅11gR2有效
在创建磁盘组中的示例时,显式设置下列磁盘组属性的值:
l AU_SIZE
指定磁盘组的分配单元的大小。 您可以在视图V$ASM_DISKGROUP的ALLOCATION_UNIT_SIZE列查看磁盘组属性的AU_SIZE值。仅11gR2版本有效,在分配大的存储空间时指占大的分配单元大小。
l COMPATIBLE.ASM
指定使用磁盘组的Oracle ASM实例软件的最低版本。
l COMPATIBLE.RDBMS
指定使用磁盘组数据库实例RDBMS软件的最低版本
l COMPATIBLE.ADVM
磁盘组COMPATIBLE.ADVM属性确定磁盘组可以包含Oracle ASM卷的版本。 该值必须设置为11.2或更高。 设置该属性之前,COMPATIBLE.ASM值必须为11.2或更高。
1.1.2 向磁盘组添加新的磁盘
假定/dev目录中发现以下磁盘的磁盘标识:
/dev/rhdisk13 -- member of DISKGROUP DATA
/dev/rhdisk14 -- member of DISKGROUP DATA
/dev/rhdisk3 -- member of DISKGROUP DATA
/dev/rhdisk4 -- member of DISKGROUP DATA
/dev/rhdisk5 -- candidate disk
/dev/rhdisk6 -- candidate disk
/dev/rhdisk7 -- candidate disk
/dev/rhdisk8 -- candidate disk
/dev/rhdisk9 -- member of DISKGROUP DATA
/dev/rhdisk10 -- member of DISKGROUP DATA
/dev/rhdisk11 -- member of DISKGROUP DATA
/dev/rhdisk12 -- member of DISKGROUP DATA
用下列命令将rhdisk5~8添加到磁盘组DISKGROUP DATA:
SQL>ALTER DISKGROUP DATA ADD DISK
'/dev/rhdisk5',
'/dev/rhdisk6',
'/dev/rhdisk7',
'/dev/rhdisk8'
REBALANCE POWER 5 WAIT;
1.1.3 从磁盘组删除磁盘
从磁盘组DISKGROUP DATA中删除/dev/rdisk5:
Select name from v$asm_disk_stat where path=’ /dev/rdisk5’;
Name
------------------
disk5
SQL> ALTER DISKGROUP DATA DROP DISK disk5;
ALTER DISKGROUP..DROP DISK命令在drop和rebalance操作完成之前返回SQL提示符。 在已删除的磁盘在V$ASM_DISK/ v$asm_disk_stat的HEADER_STATUS列状态为FORMER前不能重复使用、再删除或从操作系统删除此磁盘。 你可以查询V$ASM_OPERATION视图确定drop rebalance操作完成剩余时间量。
1.1.4 删除磁盘组
默认只能删除没有存放任何文件的磁盘组,如果磁盘组包今任何文件,会报如下错:
SQL> drop diskgroup data;
drop diskgroup data
*
ERROR at line 1:
ORA-15039: diskgroup not dropped
ORA-15053: diskgroup "DATA" containsexisting files
1.1.5 Resize磁盘大小
ALTER DISKGROUP RESIZE语句允许执行以下操作:
l Resize all disks in the disk group
l Resize specific disks
l Resize all of the disks in a specified failure group
如果您没有在SIZE子句中指定一个新的大小,那么Oracle ASM使用操作系统返回的大小作为磁盘的大小。 如果磁盘的大小增加,新增的大小信息写入到Oracle ASM磁盘头后,新的空间则立即可供分配。 如果大小减少,必须重新定位文件rebalance区的新大小以外的可用空间。 如果rebalance操作可以成功地重新定位所有的区,然后新的大小更改是生效的,否则调整将失败。
下面的示例中的调整磁盘组DATA磁盘data002。 如果新的大小大于磁盘容量,该语句将失败。
SQL>ALTER DISKGROUP DATA RESIZE DISKS data002 SIZE 100G REBALANCE POWER 8;
1.1.6 Undropping Disks in Disk Groups
ALTER DISKGROUP UNDROP DISKS语句允许取消磁盘组的未决删除磁盘操作(磁盘状态在droping)。如果一个磁盘删除操作已完成,则此语句不能用于还原它。 此语句不能用于恢复被Drop DISKGROUP语句删除的磁盘,或被删除的磁盘使用了force子句。但可以对force删除的磁盘,其名称显示为类似_DROPPED_000_SYS,磁盘头具体信息已经清除的磁盘,其对应记录已经能够正常显示(即有两条记录,一条为_DROPPED_000_SYS,一条正常),使用下面命令可以清除其错误显示。 下面的示例取消DISKGROUP DATA从磁盘组中删除的磁盘:
ALTER DISKGROUP DISKGROUP DATA UNDROP DISKS;
1.1.7 挂载和卸载磁盘组
ASM_DISKGROUPS初始化参数中指定的磁盘组在Oracle ASM实例启动时自动装载。 这使它们可用于在同一节点上运行Oracle ASM的所有数据库实例在。 在Oracle ASM实例关闭磁盘组被卸载。 Oracle ASM也在创建时自动挂载新创建的磁盘组;如果你删除磁盘组,Oracle ASM实例自动卸载磁盘组。
你还可以通过ALTERDISKGROUP MOUNT或ALTER DISKGROUPDISMOUNT手工挂载或卸载磁盘组,你可以指定磁盘组的名字或用ALL指定所有磁盘组。
将当前所有的磁盘组DISMOUNT:
ALTER DISKGROUP ALL DISMOUNT;
MOUNT磁盘组DISKGROUP DATA:
ALTER DISKGROUP DISKGROUP DATA MOUNT;
1.1.8 在磁盘组rebalance开始之后更改rebalancing power
ASM rebalance power初始化参数ASM_POWER_LIMIT缺省值为1。设置为较高的值可以更快地完成磁盘组的rebalance,但为占用更多的I/O和CPU资源;设置为较低的值需要更长时间来完成rebalance操作,但是可以占用较少的I/O和CPU资源。
你可以动态地修改这个参数,但是他只影响修改参数值以后的rebalance操作,而不能影响正在进行的rebalance操作。已经开始的rebalance操作要修改rebalance power进程数量,可以能过以下命令:
SQL> ALTER DISKGROUP <disk group name> REBALANCE[POWER n];
例如:
SQL> ALTER DISKGROUP DATA ADD DISK
'/dev/rhdisk10',
'/dev/rhdisk11',
'/dev/rhdisk12';
Diskgroup altered.
查看v$asm_operation视图:
SQL> select * from v$asm_operation;
查看ASM alert.log日志:
Fri Dec 12 16:55:08 2012
NOTE: starting rebalance of group 1/0x8c6014a7(DATA) at power 1
Starting background process ARB0
ARB0 started with pid=14, OS id=316
Fri Dec 12 16:55:08 2012
NOTE: assigning ARB0 to group 1/0x8c6014a7(DATA)
接着执行:
SQL> ALTER DISKGROUP DATA REBALANCE POWER 8;
Diskgroup altered.
运行上行命令后,正在执行的rebalance进程将停止,接着会根据power子句指定的进程数创建新的rebalance进程。
查看v$asm_operation
可以查看到在做rebalance时变成了power 8。
在ASM alert.log也有新的提示:
NOTE: stopping process ARB0
Fri Dec 12 16:55:11 2012
NOTE: rebalance interrupted for group 1/0x8c6014a7(DATA)
Fri Dec 12 16:55:11 2012
NOTE: PST update: grp = 1
NOTE: requesting all-instance PST refresh for group=1
Fri Dec 12 16:55:11 2012
NOTE: PST refresh pending for group 1/0x8c6014a7(DATA)
SUCCESS: refreshed PST for 1/0x8c6014a7(DATA)
Fri Dec 12 16:55:14 2012
NOTE: starting rebalance of group 1/0x8c6014a7(DATA) at power 8
Starting background process ARB0
Starting background process ARB1
ARB0 started with pid=14, OS id=1628
Fri Dec 12 16:55:15 2012
Starting background process ARB2
ARB1 started with pid=15, OS id=1920
Fri Dec 12 16:55:15 2012
Starting background process ARB3
ARB2 started with pid=16, OS id=1964
Fri Dec 12 16:55:15 2012
Starting background process ARB4
ARB3 started with pid=17, OS id=1664
Fri Dec 12 16:55:15 2012
Starting background process ARB5
ARB4 started with pid=18, OS id=1836
Fri Dec 12 16:55:15 2012
Starting background process ARB6
ARB5 started with pid=19, OS id=1972
Fri Dec 12 16:55:15 2012
Starting background process ARB7
ARB6 started with pid=20, OS id=1800