- 浏览: 4406249 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (634)
- Oracle日常管理 (142)
- Oracle体系架构 (45)
- Oracle Tuning (52)
- Oracle故障诊断 (35)
- RAC/DG/OGG (64)
- Oracle11g New Features (48)
- DataWarehouse (15)
- SQL, PL/SQL (14)
- DB2日常管理 (9)
- Weblogic (11)
- Shell (19)
- AIX (12)
- Linux/Unix高可用性 (11)
- Linux/Unix日常管理 (66)
- Linux桌面应用 (37)
- Windows (2)
- 生活和工作 (13)
- 私人记事 (0)
- Python (9)
- CBO (15)
- Cognos (2)
- ORACLE 12c New Feature (2)
- PL/SQL (2)
- SQL (1)
- C++ (2)
- Hadoop大数据 (5)
- 机器学习 (3)
- 非技术 (1)
最新评论
-
di1984HIT:
xuexilee!!!
Oracle 11g R2 RAC高可用连接特性 – SCAN详解 -
aneyes123:
谢谢非常有用那
PL/SQL的存储过程和函数(原创) -
jcjcjc:
写的很详细
Oracle中Hint深入理解(原创) -
di1984HIT:
学习了,学习了
Linux NTP配置详解 (Network Time Protocol) -
avalonzst:
大写的赞..
AIX内存概述(原创)
ASM的SGA组成
ASM实例的SGA包括Buffer Cache,Share Pool,Large Pool等。 需要注意的是Share Pool,因为Extent Map要放在这部分的内存中,需要根据数据量来估计Extent Map的大小做相应的调整。
Extent Map的大小可以根据所有文件大小的和来估算,使用下面的语句来计算所有文件和:
Select sum(bytes)/(1024*1024*1024) from v$datafile;
Select sum(bytes)/(1024*1024*1024) from v$logfile a, v$log b where a.Group#=b.Group#;
Select sum(bytes)/(1024*1024*1024) from v$tempfile where status='online';
这3个sum 的总和对应着数据库存放ASM中所有文件大小总和,对于使用External Redundancy 的磁盘组,每100G 需要1MB的Extent Map,根据这个比例计算Extent Map 所需要的空间,在加上额外的2MB就可以了。在实际工作中一般不需要考虑ASM
SGA的配置,使用Oracle提供的缺省值就可以了。
ASM的后台进程
ASM 实例比RDBMS 实例多2个进程:RBAL和ABRn。
RBAL:这个进程也叫Rebalancer进程,负责规划ASM 磁盘组的Reblance活动。
ABRn:是RBAL进程的子进程,这个进程在数量上可以有多个,n从1~9,这组进程负责真正完成Reblance活动。
使用ASM 作为存储的RDBMS 实例也会多出2个进程:RBAL和ASMB
RBAL:这个进程的主要功能是打开每个磁盘的所有磁盘和数据的Rebalance。
ASMB:这个进程作为ASM 实例和数据库实例之间的信息通道。这个进程负责与ASM 实例的通信,它先利用Diskgroup Name从CSS
获得管理该Diskgroup的ASM实例的连接串,然后建立到ASM的持久连接,两个实例之间通过这条连接定期交换信息,同时也是一种心跳机制。
RDBMS实例要想使用ASM作为存储,RDBMS实例必须在启动时从ASM实例获得Extent Map,以后发生磁盘组的维护操作,
ASM实例还要把Extent Map的更新信息通知给RDBMS 实例,这2个实例间的信息交换就是通过ASMB 进程完成的。这也就为什么:
ASM 实例必须要先于数据库实例启动,和数据库实例同步运行,迟于数据库实例关闭。
注意:ASM 实例和数据库实例的关系可以是1:1,也可以是1:n。如果是1:n,最好为ASM 安装单独的ASM_HOME。
Disk Discovery
Disk Discovery是指Oracle确定磁盘能够被ASM实例使用的全过程。这个过程包括权限检查,内容检查,后者更为重要。在RAC环境下,存储设备是节点间共享使用的,同一个设备在不同节点的设备名称可能不一样,比如磁盘在节点1被标识为/dev/sdb1,而在节点2被标识为/dev/sdb2,而Oracle的数据文件只有一个路径名称,这样可能破坏数据。必须使用其他机制来解决这种不一致。
ASM的Disk Discovery就是用来避免这种不一致造成的危害。ASM的每个磁盘都是自描述的,由于ASM具有丰富的元数据,因此ASM并不是根据路径名称或者设备名称来判断磁盘的归属,而是根据这些自描述信息来确认的。因此ASM允许系统重启后的路径变化,也允许RAC节点间的ASM Disk的路径名称不同。但是作为良好的工作习惯,还是要保持路径信息的一致。
被ASM实例检查的所有磁盘构成一个Diskcovery Set,这些磁盘有参数ASM_DISKSTRING定义。ASM会在下列情况下进行Disk Recovery:
Mount diskgroup
Create diskgroup
Add disk
Online disk
Select from V$ASM_DISKGROUP or V$ASM_DISK
ASM Striping
在介绍ASM条带之前先介绍下条带深度和条带宽度
条带深度
为了提高 I/O 效率,一次逻辑 I/O请求转化成物理 I/O 请求后,应该让这些物理 I/O 分布到最多的物理磁盘上去,也就是每个物理磁盘处理的物理I/O最少,最好只有一次 , 因而影响条带的一个重要因素就是一次逻辑 I/O请求的大小。
此外,系统中I/O的并发度不同我们对条带的配置要求也不同。例如,在高并发度且逻辑 I/O请求的大小都比较小的情况下,我们希望一块磁盘能同时响应多个I/O 请求;而在那些存在大的逻辑 I/O 请求的低并发度系统中,我们可能就需要多块磁盘同时响应一个 I/O 请求。无论是一个磁盘还是多个磁盘响应 I/O 请求,我们的一个原则是让一次逻辑 I/O 能被物理设备一次处理完成。
条带宽度
正如我们前面所述,无论是一个还是多个磁盘响应一个逻辑 I/O,我们都希望物理设备只处理一次 I/O 。因而在确定了条带深度的基础上,我们需要保证条带宽度 >= I/O 请求的大小/ 条带深度。这样就能最大程度的保证 I/O 请求的并发处理能力了。
block size为rdbms的逻辑存储单位,Extent为rdbms的逻辑扩展单位,AU为ASM的物理存储单位,ASM的条带深度为物理IO单位,决定了每次向磁盘发出IO请求的大小,ASM的条带宽度为一个条带分布的ASM磁盘数。
在ASM中的条带化是在ASM File级别配置的,可选的条带粒度有Fine和Coarse两种,由_asm_stripesize控制条带深度,由_asm_stripewidth控制条带宽度。对于Oracle来讲,db_block_size即设定的逻辑 I/O。db_file_multiblock_read_count就一次读取时最多并行的数据块的个数。在8i或者以上的版本之后,Oracle的每次实际最大IO大小为1MB由SSTIOMAX这个内部常数。在ASM环境下,单次最大物理IO大小由_asm_maxio决定。单次最大逻辑IO由 db_block_size*db_file_multiblock_read_count决定。 db_block_size*db_file_multiblock_read_count 和 _asm_maxio无法超过 SSTIOMAX指定的1MB, 超过时配置无法生效,低于1MB时配置能够生效。 理论上条带宽度*条带深度>=2*db_block_size*db_file_multiblock_read_count是最优的IO配置。因为假如设置成与Oracle数据块相同大小,无法保证Oracle数据块的边界正好与条带单元的边界对应,如果不对应的话,就会出现大量的一个I/O由两个条带单元,来处理的情况。
粗粒度条带(Coarse Striping)
这种条带化条带粒度是在AU级别上实现的,每个条带粒度对应1个AU。及AU为1MB条带深度就为1MB,AU为16MB条带深度就为16MB。条带宽度将一直是1。宽度和条带深度不受_asm_stripewidth和_asm_stripesize控制。假设磁盘组由4个磁盘组成,则数据文件的第一个Extent写到磁盘1的AU2中,第二2Extent会被写到磁盘2的AU2中,第3个Extent会被写到磁盘3的AU2中,第4个Extent会被写到磁盘4的AU2中,第5个Extent会被写到磁盘3的AU3中,依次循环。
细粒度条带(Fine Striping)
这个条带化的条带粒度默认为128KB,也就是数据被以128KB为单位按照上文所述的方式进行条带读写。该条带化的情况条带宽度和条带深度分别受_asm_stripewidth和_asm_stripesize控制,其中在细粒度条带下,条带深度最大为1MB。
具体的实验过程可以参考
http://www.itpub.net/thread-1705245-1-1.html
两种条带的比较
之所以有两种条带化方法,主要是因为Oracle文件的区别。对于大部分Oracle文件(包括数据文件,归档日志,备份集),文件本身很大,每次IO操作的数据量也很大。对于这些文件操作时,真正的磁盘数据读写时间远大于磁盘头的寻址时间,因此这种模式下,使用个较大的条带策略(Coarse Striping)可以提供吞吐量。
而联机日志文件和控制文件,由于文件本身较小,每次IO操作数据量很小且对读写的延时性要求较高,采用Fine-Striping将数据分布到多个disk上。如果采用AU为单位分散文件内容,则磁头寻址在整个等待的时延中相当可观,故通过把数据分布到多个磁盘的AU上,通过并行的方式可以减少时延。同时,由于io粒度较小,数据同步到磁盘到磁盘的时间较短。
ASM和RDBMS交互
当ASM实例挂载一个磁盘组之后,ASM会把Disk Group Name、ASM Instance、Oracle Home Path等信息注册到CSS,这些信息会被RDBMS用来构造Connect String。当RDBMS启动过程中需要访问某个ASM File时,RDBMS会和CSS联系,从CSS获得Connect String,然后发起一个到ASM实例的连接,这条ASM和RDBMS实例之间的出事连接叫Umbilicus,只有RDBMS打开ASM File,这个连接就会保持活动。直到所有ASM FILE都被RDBMS关闭之后,这个连接才会关闭。在RDBMS一端,这个连接是ASMB后台进程,而在ASM方面,叫做Umbilicus Forground(UFG)。ASM和RDBMS通过这个连接发送互动信息。如果检查listener中ASM实例的注册信息,可以看到ASM不少OPEN状态,而是以BLOCKED状态注册的。BLOCKED状态禁止了通常方式的数据库连接,从而确保所有连接都是通过ASMB后台进程的路由完成,保证了ASM操作的安全性。
$lsnrctl status
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 24-DEC-2012 20:29:38
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER_CZMMIAO2
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 24-DEC-2012 19:52:25
Uptime 0 days 0 hr. 37 min. 12 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/10.2.0/crs/network/admin/listener.ora
Listener Log File /u01/app/oracle/product/10.2.0/crs/network/log/listener_czmmiao2.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.2.112)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.2.102)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM1", status BLOCKED, has 1 handler(s) for this service...
Service "+ASM_XPT" has 1 instance(s).
Instance "+ASM1", status BLOCKED, has 1 handler(s) for this service...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "czmmiao" has 2 instance(s).
Instance "czmmiao1", status READY, has 2 handler(s) for this service...
Instance "czmmiao2", status READY, has 1 handler(s) for this service...
Service "czmmiaoXDB" has 2 instance(s).
Instance "czmmiao1", status READY, has 1 handler(s) for this service...
Instance "czmmiao2", status READY, has 1 handler(s) for this service...
Service "czmmiao_XPT" has 2 instance(s).
Instance "czmmiao1", status READY, has 2 handler(s) for this service...
Instance "czmmiao2", status READY, has 1 handler(s) for this service...
The command completed successfully
创建ASM File的过程
1、RDBMS产生一个前台进程去连接ASM实例的进程,创建指令通过这个连接交给ASM实例
2、ASM实例根据创建指令创建文件,从磁盘分配AU;ASM会根据指令中指定的template或Diskgroup默认的template来决定文件的冗余、条带策略;
3、AU分配完成后,ASM就吧这个文件的Extent Map发送给RDBMS;ASM创建一个COD记录以跟踪目前这个挂起操作;
4、RDBMS发起IO操作,初始化这个ASM File,这时候不需要ASM介入
5、初始化完成后,RDBMS向ASM发生commit请求
6、ASM接到commit请求后,ASM的LGWR进程吧ACD Change Record写入到ACD Directory;然后ASM的DBWR进程吧Allocation Table、File Directory、Alias Directory异步写回磁盘;
7、如果RDBMS放弃创建,ASM会使用COD混滚文件操作。回滚操作会把Allocation Entries标志位Free,释放File Directory中的条目
ASM File的打开和IO过程
1、RDBMS向ASM Instacne发生file-open请求
2、ASM查看ASM SGA中是否存在相应的Extent Map,如果有则直接通过ASMB把Extent Map发生给RDBMS,如果没有则从File Directory,再通过ASMB把Extent Map发生给RDBMS
3、在10g中ASM会把整个ASM FILE的extent map都发生给RDBMS,在11g中只会返回前60个Direct Extent,Indirect Extent会在需要时载入。
4、ASM FILE的整个IO过程由RDBMS直接操作ASM FILE不需要ASM实例介入
删除ASM File的过程
1、RDBMS实例想ASM实例发出删除请求
2、ASM创建COD记录用于回滚操作,接着标记allocation table中的条目为free,释放File directory记录,删除alias direcotry中的别名记录。
3、如果此时ASM实例崩溃,则利用COD记录进行回滚
关于ASM的元数据读者可以参考
http://czmmiao.iteye.com/admin/blogs/1749971
ASM实例恢复
ASM实例和RDBMS实例一样,也可能出现异常,也需要进行实例恢复。在单实例环境下,这种恢复叫做ASM Instance Recovery。在RAC环境下,某个节点上的ASM实例出现故障,会触发其他节点上的ASM实例进行实例恢复,这种恢复叫做ASM Crash Recovery。这两种操作和RDBMS对应的恢复同名。
在ASM实例运行中,CSS起着IO隔离的作用。存储由ASM实例维护,但是RDBMS在运行过程中,并不是所有的读写都要借助ASM实例,RDBMS实例只在打开数据文件时需要从ASM实例获得Extent Map信息,并把这些信息保存在SGA中。而后的数据读写都是直接操作存储的。因此如果ASM实例终止,必须关闭所有使用该ASM的RDBMS实例,以确保这些RDBMS实例不能操作该ASM管理的存储上的数据,也就是IO隔离(IO Fencing)
ASM实例启动时,需要在CSS中注册,而所有使用ASM存储的RDBMS实例启动时,也要向CSS注册,同时从CSS获得ASM的连接串。RDBMS实例和ASM实例是通过由ASM实例端的UFG和RDBMS实例端的ASMB进程组成的通道进行通信的。如果ASM实例Crash,UFG就会终止RDBMS的ASMD进程,对于RDBMS而言,这个进程是个关键进程,起终止会导致RDBMS终止。两个实例除了主动向CSS注册,CSS也要跟踪两个实例中IO的健康状况,如果RDBMS实例终止,CSS通知ASM,ASM实例就替代RDBMS实例执行一些资源回收释放工作。ASM实例仍然正常运行。
在ASM实例恢复时,ASM是在每个磁盘组级别上进行恢复的,每个磁盘组上的ACD和COD两部分内容在ASM实例恢复中起重要作用,其前者相当于RDBMS中的联机日志,后者相当于Undo tablespace。ASM实例的恢复过程中,首先使用ACD内容吧ASM Cache恢复成一致的状态,然后再执行COD恢复,COD记录的都是长时间的操作,这一步就是回滚这些操作,比如回滚文件创建操作。ASM Recovery的技术和RDBMS的技术一致。
参考至:
《Oracle Automatic Storage Management: Under-the-Hood & Practical Deployment Guide》
《 大话Oracle Rac》张晓明著
http://www.cnblogs.com/huangjingzhou/articles/2140514.html
http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0812yuancg/
http://www.itpub.net/thread-1705245-1-1.html
http://www.orafaq.com/papers/tuning_asm.pdf
http://www.linuxidc.com/Linux/2012-01/51884.htm
http://www.emc.com/collateral/hardware/white-papers/h6015-oracle-data-warehouse-sizing-dmx-4-dell-wp.pdf
http://dbanotes.net/database/oracle_mbrc_sstiomax.html
本文原创,转载请注明出处、作者
如有错误,欢迎指正
邮箱:czmcj@163.com
发表评论
-
Oracle 锁与锁争用
2015-05-08 02:13 4179大多数的锁都是行级 ... -
Oracle SQL Parsing
2014-07-30 22:24 1949Stages of SQL Processing Fig ... -
Oracle 11g中的direct path read(原创)
2014-06-16 23:01 5785在11g中,全表扫描可能使用direct path rea ... -
深入解析direct path read
2014-06-16 22:35 2597传统读取数据的 ... -
ORA-01555和延迟块清除
2014-06-16 21:13 206001555, 00000, "snapshot t ... -
Oracle(block clean out)的块清除
2014-06-16 21:09 1286Oracle(block clean out)的块清除Cl ... -
SCN之fast cleanout
2014-06-07 16:13 1751SQL> select dbms_rowid.row ... -
SCN之delayed block cleanout
2014-06-07 16:09 1194Block的cache header部分 ... -
Oracle rman change tracking CTWR(原创)
2014-04-25 11:10 2977block change tracking介绍Block c ... -
SSM自动段空间管理 简介
2014-03-27 19:46 1360因为ASSM的官方文档很少,经过多次的查证之后,终于弄明白了 ... -
undo表空间相关(原创)
2014-03-25 21:48 2109DML语句与undo ... -
Bitmap Index vs B-tree Index(原创)
2014-03-08 21:09 1529Introduction Conventional wi ... -
bitmap索引的深入研究
2014-03-08 14:59 1464位图(bitmap)索引是另外一种索引类型,它的组织形式与 ... -
Oracle 10g/11g Latch机制的变化
2013-01-09 18:57 1547Oracle 10g/11g Latch机制 ... -
ASM的元数据(原创)
2012-12-18 21:16 3068概述 ASM Filesystem是建立在ASM D ... -
Oracle数据块深入分析总结
2012-04-23 12:51 7910最近在研究块的内部结构,把文档简单整理了一下,和大家分享一下。 ... -
深入理解重建索引(原创)
2012-04-10 16:58 20794什么时候需要重建索引 ... -
Oracle中B-TREE索引的深入理解(原创)
2012-04-09 20:59 15937索引概述 索引与表一样,也属于段(segment)的 ... -
深入理解Oracle中的latch(原创)
2012-04-04 18:17 11167串行化 概述 串行化 - 数据库系统本 ... -
深究Oracle中的锁之锁管理经验总结
2012-03-29 23:37 0锁的申请与释放 锁的申请: 1.使用hash算法将 ...
相关推荐
ASM1061 原理图 PCIE转2 port Sata芯片 ASM1061 原理图 PCIE转2 port Sata芯片
2. **ASM1064 参考原理图设计**: 这部分资料通常包括一个或多个ASM1064的典型应用电路示例,展示了如何将ASM1064整合到实际的电路板设计中。参考原理图会展示芯片与其他组件(如电容、电阻、电感等)的连接方式,...
在设计原理方面,ASM1061芯片包含了一个PCI-E兼容的物理层(PHY)和一个SATA PHY,它们之间通过内部的桥接逻辑进行通信。PCI-E PHY负责处理与主板上的PCI-E接口的通信,而SATA PHY则处理与SATA设备的连接。此外,ASM...
ASM1053电路原理图 ASM1053原理图.pdf SATA转USB桥接的电路原理图
3. **ASM1351 design kit.zip** - 设计套件通常包含用于开发和测试ASM 1351芯片的电路板布局、原理图、PCB设计文件以及其他相关资源。这些文件帮助工程师快速启动基于ASM 1351的项目,提供了一个起点,减少了从零...
这份文件看起来是一份关于ASM1153芯片的原理图和详细的技术规范。 ASM1153是一种多功能芯片,主要设计用于电源管理。其应用广泛,特别是在需要多电源输入输出的电子系统中。这份文件主要描述了ASM1153的电源设计、...
标题与描述中的“asm不错的图”暗示了讨论的是与Oracle Automatic Storage Management (ASM)相关的图形化展示或概念图。ASM是Oracle数据库系统中用于管理存储的一种高性能、高可用性技术,它提供了一种灵活的方式对...
ASM1053芯片是一款由祥碩科技股份有限公司(ASMedia Technology Inc.)推出的SATA转USB桥接控制器。其设计目的是为了将SATA接口的存储设备转换为USB接口,从而便于在没有SATA接口的计算机系统中连接和使用这些存储...
这些项目不仅帮助学生深入理解计算机系统的内部工作原理,也锻炼了他们的实践能力和编程技能。以下是关于这些项目的一些关键知识点: 1. **步进机**: - 步进机是一种模拟硬件设备,通过编程控制电机按照预定步骤...
ASM,全称是Active Shape Models,是一种在计算机视觉和图像处理领域广泛应用的模型。它结合了统计形状模型和图像特征,常用于物体检测、识别、定位以及姿态估计等任务。在"asm的搜索图片数据"这个场景中,我们讨论...
SOUND.asm ; 电子发声设计实验
asm-1.3.3.jar, asm-1.3.4.jar, asm-1.3.5.jar, asm-1.4.1.jar, asm-1.4.2.jar, asm-1.4.3.jar, asm-1.4.jar, asm-1.5.1.jar, asm-1.5.2.jar, asm-1.5.3.jar, asm-2.0.jar, asm-2.1.jar, asm-2.2.1-sources.jar, asm...
这是ASM1153E的标准FW,通过特定的MPtool工具来烧录。
ASM1153E是一款由ASMedia Technology Inc.生产的USB3.0到SATA桥接控制器,主要用于构建移动硬盘盒。这款芯片的核心功能是将高速的USB3.0接口转换为SATA接口,以实现外部存储设备(如硬盘驱动器)与计算机之间的数据...
ASM1166是一款SATA主机控制器,由ASMedia Technology Inc.生产,该公司是一家专注于研发高性能计算机界面解决方案的厂商。根据文件内容描述,ASM1166是一款支持PCI-E总线的SATA控制器,它能够连接SATA设备,并通过...
### asm64汇编语言介绍及原理:深入解析与核心概念 #### 一、asm64汇编语言的诞生背景与重要性 asm64,即64位汇编语言,是随着计算机技术的发展,特别是在处理器架构从32位向64位过渡的过程中应运而生的一种编程...
本例程主要针对ASM330陀螺仪进行程序设计,以实现其功能的最大化利用。ASM330是一款高性能的三轴数字陀螺仪,适用于各种需要精确角速度测量的应用,如无人机、机器人、虚拟现实设备等。 首先,我们需要了解ASM330的...
在标题提到的"C-include-ASM.zip_asm中include_asm_c语言中嵌套asm",我们主要讨论的是如何在C程序中使用汇编代码,并且可能涉及到如何在汇编代码中包含其他汇编模块。 首先,让我们了解一下C语言嵌套汇编的基本...
赢高内网准入ASM知识点总结 以下是关于赢高内网准入ASM的知识点总结: 1. ASM 盈高™双实名制入网规范管理系统介绍:ASM 盈高™双实名制入网规范管理系统是一种新型内网管理方式,旨在保护和引导整个内网安全。它...