规划ASM DISK GROUP、查看asm 磁盘当前状态、mount or dismount 磁盘组、检查磁盘组 metadata 的内部一致性

时间:2022-07-08 18:43:51

规划ASM DISK GROUP:

1. 每个磁盘组里的磁盘应该大小、性能、新旧等一致,不能有太大差距

2. 对database files 和 fast recovery area 分别创建不同的diskgroup。 一般来说我们也可以把备份文件存放到FRA里。 
所以Oracle 建议我们不要创建太多的diskgroup,2组就够了,一组DATA,一组FRA.

ORACLE ASM 在磁盘组,磁盘和文件的个数限制如下:
(1)最多63个disk groups
(2)最多10000个ASM disks
(3)每个disk group里最多1百万个文件。

非Exadata 存储的情况下,ASM 存储大小限制: (若是exadata,则容量*2倍)
(1)支持的每个ASM disk 最大容量是2 TB。
(2)整个ASM存储系统最大支持的空间是20 PB。

查看当前asm磁盘状态信息 (grid用户执行)

1. --查看有多少asm磁盘
node1-> kfod disk=all 
2. --查看asm磁盘组
node1-> kfod op=groups

3. 查看磁盘与磁盘组的对应关系
node1-> kfod ds=true di=all

mount or dismount 磁盘组

注意:
当我们dismount 一个disk group的时候,该group上有文件正在打开,我们的的diskgroup 操作就会失败,除非我们指定FORCE选项,强制dismount。

手工的进行这些操作,语法如下:

ALTER DISKGROUP...MOUNT 
ALTER DISKGROUP...DISMOUNT

若部分磁盘不可用,怎么办?

当disk 出现故障时,会被标记为offline,对于offline 的disk,是不能被ASM 访问的。当disk 变成offline 的时候,ASM会计算这个时间,当disk 在diskgroup的DISK_REPAIR_TIME参数指定的时间内没有被修复,那么该disk 就会永久的从diskgroup中drop掉。

若disk group的冗余级别是Normal 或者是high 的时候,如果diskgroup 在我们挂载这个diskgroup的时候,如果有部分disk 不可用,那么就必须使用MOUNT FORCE 来挂载。因此,当我们的disk 出现问题,我们还没有修复,这时候我们想以reduced redundancy 的方式临时的挂载diskgroup,那么就可以使用mount force。

SQL> alter diskgroup XXXX dismount force;

注意:
要想MOUNT FORCE 能挂载成功,也必须保证disk group中所有的文件至少有一份extents。

检查磁盘组 metadata 的内部一致性

背景:
每个diskgroup、disk都有自己的metadata。
在diskgroup处于mount状态下,可以检查diskgroup 中某个特定的文件,特定的disk 或者所有disk,或者指定的failure。

Check 子句会执行如下操作:
(1)验证disk的一致性。
(2)交叉效验所有文件的extent maps 和allocation tables 是否一致。
(3)检查alias metadata directory和file directory 关联是否正确。
(4) 验证alias directory tree 是否正确link。
(5)检查Oracle ASM metadata directories是否有不能读取的allocated blocks

命令:
SQL> ALTER DISKGROUP FRA CHECK ALL ( REPAIR -- 可以指定是否修复,默认不修复 );