共计 2972 个字符,预计需要花费 8 分钟才能阅读完成。
ASM 11R2 基本知识点有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
1 基本概念
ASM 实例一直处于 started 或 mounted 状态,11R2 其在监听器中注册状态为 ready,即支持远程访问;
启动时将连接字符串注册到 CSS,数据库实例启动时由 ASMB 读取以此建立同 ASM 的联系,ASM 使用前台进程 UFG 同数据库实例联系;
磁盘以 AU 为分配单位,在创建磁盘组时指定,范围为 1 -64M;
ASM 文件以 extent 为单位,一个 extent 可对应若干 AU,为避免管理大文件占用过量 SGA,oracle 采用可变大小的 Extent
0-20000 区间,extent = AU
20000-40000 区间,extent = 4* AU
40000,extent=16* AU
通常建议 ASM extent 等于或是 DB extent 的整数倍;
同一磁盘在不同 RAC 节点的路径可以不一致,依靠其磁盘头判断是否同一磁盘;
2 镜像与条带
镜像
ASM 采用 extent 镜像而非磁盘镜像,若某个磁盘失败,则区间指针可借助磁盘伙伴被重定向到区间镜像;
在 normal 和 high 冗余策略下,ASM 将主区间和区间镜像保存于不同的故障组;
ASM 的磁盘伙伴维护 extent 镜像拷贝,其存于 PST 伙伴状态表中;ASM 基于故障组定义自动选择磁盘伙伴,而故障组在创建磁盘组时指定;
磁盘最多可有 10 个 active 伙伴关系,drop disk 会引发重置形成新的伙伴关系,PST 跟踪此操作直至 rebalance 完成;
过多的磁盘组嵌套可能会耗尽空间,引发 ORA-15074 diskgroup requires rebalance completion;
在 normal 和 high 磁盘组中,可以为文件单独指定冗余级别;
条带化
将 AU 存于同一故障组的不同磁盘上,分为粗粒度和细粒度;
粗粒度:条带 =AU,当区间 20000 时,一个 extent 的 AU 可位于不同磁盘上,提高 IO 吞吐量;
细粒度:条带 =128K,减少 IO 延迟,适用于 online logfile(可单独建立细粒度磁盘组);
文件模板决定了条带化类型,如果创建文件时不显示指定则选择默认模板;
3 数据结构
分为物理元数据和虚拟元数据,
3.1 物理元数据
存于磁盘前 2 个 AU,用于必要的 ASM 引导;
3.1.1 磁盘头第 1 个 AU 的首块,大小为 4K;
磁盘名 / 磁盘号
磁盘组 / 故障组名
磁盘 /AU 大小
创建 / 加载时间
ASM/DBMS 兼容性
文件目录指针
3.1.2 AT 分配表
记录磁盘的 AU 使用情况,每个 AU 对应一个分配条目 ATE(entry),多个 ATE 组成一个 ATB(block);
当 AU 被某文件使用时,其 ATE 记录下 file no + extent no;
为分配的 AU 标示为 free,而 free extent 保存于 1 个链表中以便分配,
其与虚拟元数据 file directory 互补,可通过 alter diskgroup … check 验证其一致性;
3.1.3 FST 空闲空间表
每个 ATB 包含一个 FST 条目,描述其下 free extent;
请求空间分配时,ASM 通过 FST 跳过 full ATB;
3.1.4 PST 伙伴关系表
占用第 2 个 AU,跟踪磁盘组成员和磁盘伙伴,ASM 通过其判断磁盘组是否有足够磁盘在线;
针对每个磁盘,PST 记录 磁盘状态 + 伙伴个数 + 伙伴列表;
任意时间一个磁盘组只能有一个 active PST,默认一个故障组包含 1 个 PST;
PST 副本:PST shadow 为 active PST 的副本(两者位于不同磁盘),其副本随着 active PST 更新,完毕后两者角色互换;
PST 最后 1 个块用于磁盘心跳,1 避免磁盘组在不同集群中同时加载,类似控制文件
3.2 虚拟元数据
位于 ASM 文件中,分为 directories 和 registers,前者为 ASM 独立访问的元数据文件,文件号从 1 开始;后者文件号从 255 倒计数,为保留的 ASM 文件;
3.2.1 File directory
包含所有 ASM 文件的 metadata,与物理元数据的 AT 对应;文件号为 1;
Incarnation number + file size + file type + redundancy level + strip level + created/modified time + file layout
ASM 文件被删除后文件号可重用,incarnation number 却不可能相同,由此保证文件的唯一性;
File layout:由区间指针组成,包括区间对应的磁盘号和 AU 号,1 个 file directory 包含 60 个直接区间指针 和最多 300 个间接区间
3.2.2 Disk directory
包含磁盘组所有信息,与 PST 对应但比之更详尽,文件号为 2;
3.2.3 ACD
类似 redo 日志,文件号 3;
每个 ASM 实例拥有 1 个 42M 的 ACD chunk,第一个块包含打开 / 关闭状态和检查点(3 秒更新 1 次),其余循环利用;
3.2.4 COD
类似 undo,跟踪耗时较长操作如 rebalance/ 文件创建,文件号 4;
若当前实例执行 rebalance 失败,集群其他节点可重启该操作;
其余还有 template directory, alias directory 以及 attribute directory;
3.2.5 Staleness registry
当 compatible.rdbms =11.1 且冗余类似为 normal 或 high 时才可用,文件号 254;
当磁盘 offline 时在 SR 中获取 1 个 slot,为该磁盘每个 AU 分配 1 个 bit,若 offline 期间发生写操作则设置 AU 的 bit 位;
当磁盘再次 online 时,ASM 根据 slot 中被更新的 bit 位从镜像区间同步数据,以此完成 11R2 的 fast mirror resync;
4 与数据库交互
创建文件
RDBMS 向 ASM 发送创建文件请求,ASM 分配空间并将 extent map 返回给 RDBMS,文件名格式为 + 磁盘组 / 数据库名 / 文件类型 / file tag.file #.incarnation#;
RDBMS 初始化文件,由 COD 跟踪尚未完成的文件创建;
RDBMS 提交完成请求,则 ASM 的 LGWR 清除 ACD,DBWR 更新 AT 以及 file directory 和 alias directory;若 RDBMS 撤销创建请求,则 ASM 使用 COD 回滚;
删除文件也由 COD 全程跟踪并在失败时回滚;
打开文件
RDBMS 发送请求给 ASM,后者将文件的 extent map 返回给 RDBMS;11G 会先发送 60 个直接区间,根据 RDBMS 请求再传送间接区间;
读错误
读主区间遭遇错误时自动选择镜像区间,11g 还可自动对主区间的坏块进行修复;
若 ASM 实例不能读取虚拟元数据则强制卸载磁盘组,若不能读取磁盘的物理元数据则将其 offline;
写错误
若 ASM 实例收到写错误则尝试该磁盘 offline,并通过 PST 查看伙伴磁盘状态,若很多伙伴磁盘也 offline 则强制卸载磁盘组;
将消息传给其他 ASM 实例,由其更新 RDBMS 实例;
Compatible.rdbms =11.1 时 disk_repair_time 指定磁盘可 offline 最长时间;
关于 ASM 11R2 基本知识点有哪些问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注丸趣 TV 行业资讯频道了解更多相关知识。