一、数据库针对ASM文件操作原理
1、ASM文件创建步骤:
a)10g版本,数据库启动前台进程连接ASM实例中的NFG进程,11g版本,数据库进程池(o0nn进程)连接NFG进程,然后发送文件创建请求,请求中包含以下信息:diskgroup name,文件类型,文件块大小,文件大小,文件标签,还可包含templates名,别名。
b)ASM发送extent map给数据库实例,ASM创建COD(Continuing Operation Directory)记录来跟踪文件的创建。
c)数据库实例初始化文件,选择适宜的I/O,初始化完成,发送并提交创建完成信息给ASM。
d)ASM收到信息后,其进程LGWR将更新ACD(Active Change Directory)记录,DBWR进程将相关的分配表,文件目录,别名目录记录异步写到磁盘
e)如果创建过程中异常中断,ASM实例利用COD回滚文件的创建,回滚中相应删除ACD中相关记录。
2、ASM文件open
a)数据库通过进程(o0nn)发送请求打开的文件名.
b)ASM提取文件目录得到该文件的extent map信息回复给数据库实例。10g版本,ASM回复整个数据文件中的extent map,11g,初始化仅发送60个direct extents,其余的extents,存放在indirect extents,根据数据库实例具体请求而发送相应的extents。
c)打开spfile文件,是采用不同的打开方式,在数据库启动过程中,通过ASMB进程来处理。
d)ASM跟踪所有数据库实例打开的文件,阻止打开文件的删除,协同extent的分配
3、文件I/O
数据库实例通过文件打开过程中获取的extent map,直接对ASM disk进行读写操作
4、文件关闭
a)数据库实例发送信息给ASM实例
b)ASM清除文件内部状态,关闭文件不需要反馈信息给ASM实例
5、文件删除
a)发送请求给ASM实例。
b)ASM实例创建COD记录文件删除过程
c)将分配表记录标记为空闲,释放文件目录记录,删除相关别名目录信息。如果删除过程中失败,COD负责回滚删除动作。
二、ASM文件分配
1、extents大小分配原则
a)如果diskgroup中的compatible.rdbms版本在11.1以下,所有的extents分配1AU。
b)如果是11.1版本及以上,文件中头20000 extents分配1AU,下一个20000 extents是8AU,40000以上的extents分配8AU。
2、ASM条带化(略)
3、ASM Redundancy
a)ASM是以extent进行镜像
b)将不同的电源、HBA或控制卡组成不同的failure group,保证磁盘的丢失,至少还有一个extent 备份。
4、disk partners
a)extents备份存放在disk partners,disk partnership是相同diskgroup,不同failure groups的两个磁盘
b)parnership信息存放在PST(Parnership Status Table)中,用户不能指定使用哪个partner,而是ASM基于failure group定义自动选择
c)diskgroup配置的改变,disk partnership也可能发生改变,PST跟踪先前的parnership直至rebanlance 完成。
d)因为PST空间限制,为更有效对diskgroup重配置,最好是批量进行,以避免频繁diskgroup 重配置导致PST空间不足,导致ORA-15074 错误。
5、ASM镜像文件I/O读写
ASM并行写所有镜像的extents,从primary extent读。
a)读错误:
1、ASM文件创建步骤:
a)10g版本,数据库启动前台进程连接ASM实例中的NFG进程,11g版本,数据库进程池(o0nn进程)连接NFG进程,然后发送文件创建请求,请求中包含以下信息:diskgroup name,文件类型,文件块大小,文件大小,文件标签,还可包含templates名,别名。
b)ASM发送extent map给数据库实例,ASM创建COD(Continuing Operation Directory)记录来跟踪文件的创建。
c)数据库实例初始化文件,选择适宜的I/O,初始化完成,发送并提交创建完成信息给ASM。
d)ASM收到信息后,其进程LGWR将更新ACD(Active Change Directory)记录,DBWR进程将相关的分配表,文件目录,别名目录记录异步写到磁盘
e)如果创建过程中异常中断,ASM实例利用COD回滚文件的创建,回滚中相应删除ACD中相关记录。
2、ASM文件open
a)数据库通过进程(o0nn)发送请求打开的文件名.
b)ASM提取文件目录得到该文件的extent map信息回复给数据库实例。10g版本,ASM回复整个数据文件中的extent map,11g,初始化仅发送60个direct extents,其余的extents,存放在indirect extents,根据数据库实例具体请求而发送相应的extents。
c)打开spfile文件,是采用不同的打开方式,在数据库启动过程中,通过ASMB进程来处理。
d)ASM跟踪所有数据库实例打开的文件,阻止打开文件的删除,协同extent的分配
3、文件I/O
数据库实例通过文件打开过程中获取的extent map,直接对ASM disk进行读写操作
4、文件关闭
a)数据库实例发送信息给ASM实例
b)ASM清除文件内部状态,关闭文件不需要反馈信息给ASM实例
5、文件删除
a)发送请求给ASM实例。
b)ASM实例创建COD记录文件删除过程
c)将分配表记录标记为空闲,释放文件目录记录,删除相关别名目录信息。如果删除过程中失败,COD负责回滚删除动作。
二、ASM文件分配
1、extents大小分配原则
a)如果diskgroup中的compatible.rdbms版本在11.1以下,所有的extents分配1AU。
b)如果是11.1版本及以上,文件中头20000 extents分配1AU,下一个20000 extents是8AU,40000以上的extents分配8AU。
2、ASM条带化(略)
3、ASM Redundancy
a)ASM是以extent进行镜像
b)将不同的电源、HBA或控制卡组成不同的failure group,保证磁盘的丢失,至少还有一个extent 备份。
4、disk partners
a)extents备份存放在disk partners,disk partnership是相同diskgroup,不同failure groups的两个磁盘
b)parnership信息存放在PST(Parnership Status Table)中,用户不能指定使用哪个partner,而是ASM基于failure group定义自动选择
c)diskgroup配置的改变,disk partnership也可能发生改变,PST跟踪先前的parnership直至rebanlance 完成。
d)因为PST空间限制,为更有效对diskgroup重配置,最好是批量进行,以避免频繁diskgroup 重配置导致PST空间不足,导致ORA-15074 错误。
5、ASM镜像文件I/O读写
ASM并行写所有镜像的extents,从primary extent读。
a)读错误:
- 如果不能获取任何extent,则dismount磁盘组,如果不能从某个磁盘获取extents,则将该磁盘offline;
- 在10g版本中,对整个盘读错误和某个扇区读错误,认为是一样的,将disk offline;而11g中如果是扇区错误,将触发数据库或ASM实例重新映射该扇区,ASM读取好的extent镜像数据,恢复读错误的extent,如果成功认为正常,如果不成功,将把extent写到报读错误盘上的其他位置,如果写成功,则将读错误extent标记为不可用,如果还是写失败,则将整个disk offline,该过程会体现在alert.log中。
- 数据库碰到写错误,将发送disk offline信息给ASM实例,如果数据库能够写入其中一个extent并从ASM实例接受到disk offline,则认为写成功,如果所有对extent的写都失败,则将采取适当行动,如表空间offline;
- ASM接受到信息后,查看PST看是否其他disk partner也offline,如果太多disk partner offline,则将diskgroup强制dismount,或者把相应的disk offline。
- Disk offline是影响全局操作,ASM实例将发送消息给集群中其他ASM实例以及数据库实例,在10g版本中(或compatible.rdbms <11.1),ASM立即强制删除磁盘,但在11g(或compatible.rdbms >=11.1),磁盘不会立刻强制删除,要等到管理员执行online命令或者DISK_REPAIR_TIME计时器过期。
- 在并行写过程中,如果发生进程中断或者节点宕机,有可能一个extent写完成,另一个没有写完成,mirror resilvering能够确保其数据一致;
- 确保手段是先检查数据块是否损坏,如果镜像的数据块其中一个损坏,则检查并找出有效数据块版本,使用该数据块进行修复操作。数据块版本可以用SCN来进行判断。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/354732/viewspace-629703/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/354732/viewspace-629703/