ASM

简介:
序号 分类 问题 答案
1 基础概念 ASM主要功能 管理磁盘组 在磁盘组内部管理冗余磁盘组。
最佳的磁盘IO管理和手动的调整。 
支持大表空间。
管理数据库对象,在新建数据库对象例如:表空间、日志文件和控制文件等的时候只需要指定文件名即可。
2 基础概念 AU是什么 ASM自动分配的块空间就是Aus,Aus 全称Allocation units。  AU 是组成ASM disk的基本单元。
 ASM AU 在10G R2 中系统自动默认为1M(条带大小对应为128K),通过系统隐含参数可以静态调整。11G可以在创建磁盘组的时候动态调整。将Aus尺寸调大的时候,请同时调整_asm_stripesize的大小,例如:
_asm_ausize=10485760
_asm_stripesize=1048576
3 基础概念 ASM Extents 是什么 一个或多个AU组成ASM的Extens(在10G里面AU的大小等于Extens的大小)。一个或多个Extens组成ASM file。可以使用下面的语句查询Extents的分布。
SELECT COUNT(PXN_KFFXP), DISK_KFFXP, GROUP_KFFXP FROM X$KFFXP WHERE
GROUP_KFFXP=2 GROUP BY DISK_KFFXP, GROUP_KFFXP ORDER BY GROUP_KFFXP,
DISK_KFFXP;
4 基础概念 ASM Rebalance触发的条件 磁盘的添加、删除、改变尺寸会触发Rebalance,但是Rebalance不会自动工作,用来消除hot areas和hot
extents.
5 基础概念 不同大小的磁盘组成磁盘组会带来什么问题 将25GB的磁盘加入50GB的磁盘组,在重新配平的过程中50GB的磁盘分配的extents将会是25GB磁盘分配的extents的两倍。由此看来不同大小的磁盘组成磁盘组会带来IO分布不均匀的问题。
6 基础概念 重新配平的时的IO操作大小 10G在重新配平的时候ASM是同步的读1MB写1MB。
7 ASM初始化参数 INSTANCE_TYPE   可以设置为ASM与RDBMS,ASM就是设置实例为ASM类型,RDBMS就是数据库类型。
8 ASM初始化参数 DB_UNIQUE_NAME   数据库的唯名称,默认值是+ASM,在RAC环境下是+ASM节点编号。
9 ASM初始化参数 ASM_POWER_LIMIT  数据自动配平的值,值得范围是1-11,默认只是1,数值越大配平速度越快。生产系统慎用,因为配平的时候AU单元是锁定的,影响数据的访问。你也可以在配平的时候指定改值。
10 ASM初始化参数 ASM_DISKGROUPS   设定ASM实例启动的时候挂载的磁盘组。
11 ASM初始化参数 ASM_DISKSTRING  设定ASM管理磁盘搜索的路径
12 ASM 后台进程 PMON PMON:用于监控ASM实例中进程,主要用于处理失效的进程。
13 ASM 后台进程 RBAL 负责创建重新配平的计划和管理磁盘组的Rebalance操作,RBAL调用ARBn(ARB0-ARBA)进程实际执行操作。ASM的RBAL和数据库实例的RBAM的功能是不一样的。
14 ASM 后台进程 SMON 系统监控进程和监控CSS服务在节点上的监控。
15 ASM 后台进程 CKPT 在RAC中管理跨越实例的调用。
16 ASM 后台进程 LGWR 负责管理ASM Active Change Directory (ACD),将缓存中的数据更新到磁盘。
17 ASM 后台进程 DBWn DBWn:管理ASM实例的SGA buffer cache,DBWR负责将脏数据(changed metadata buffers)从ASM buffer cache写回磁盘。
18 ASM 后台进程 MMAN MMAN:与自动SGA管理有关,负责自动管理SGA。
19 ASM 后台进程 PSPn PSPn:用于产生Oracle进程
20 ASM 后台进程 ARBx  ASM实例的数据配平的操作进程,我们可以在alert_+asm.log中看到在执行ALTER DISKGROUP asm_data2 REBALANCE POWER 5;后看到它们的运行情况。
如下:
Starting background process ARB0
Starting background process ARB1
ARB0 started with pid=17, OS id=3972……
21 ASM 后台进程 GMON 负责管理磁盘的活动删除和离线,以及负责磁盘组的向前兼容。
22 ASM 后台进程 ASMB 该进程使用磁盘组名联系CSS,并且获取关联的ASM连接字符串,然后使用该连接字符串连接ASM实例。通过使用这种持久的连接,交换定期的消息以更新统计,并且提供一种推动机制。在需要ASM干涉的操作期间,例如通过数据库前台创建文件时,数据库前台会直接连接ASM实例以执行该操作。成功完成文件创建之后,ASM将ASM文件的Extent的位图发送给数据库实例。此外,ASMB也将数据库I/O统计信息发送给数据库实例。ASM instace启动以后,通过ASMB进程和osccd通信,将ASM的一些信息告诉给ocssd,而数据库则从ocssd获得这些信息,也就是说,ocssd是ASM Instance和Database之间的纽带。
23 ASM视图 V$ASM_ALIAS 显示系统和用户定义的别名(主要是ASM文件的别名),该视图只显示挂载的磁盘组的包括别名。数据库实例该视图没有信息。
24 ASM视图 V$ASM_CLIENT  显示每个实例打开的ASM磁盘组
25 ASM视图 V$ASM_DISK 显示ASM磁盘的详细信息,主要包括mount status, disk state, size。
26 ASM视图 V$ASM_DISK_IOSTAT 显示每一个使用ASM磁盘的数据库实例的IO使用情况。
27 ASM视图 V$ASM_DISK_STAT 显示的信息与V$ASM_DISK的一样,但V$ASM_DISK_STAT直接读取内存磁盘信息。避免查询磁盘降低性能。
28 ASM视图 V$ASM_DISKGROUP 显示磁盘组的信息。
29 ASM视图 V$ASM_DISKGROUP_STAT 显示的信息与V$ASM_DISKGROUP,但V$ASM_DISK_STAT直接读取内存磁盘组信息。避免查询磁盘降低性能。
30 ASM视图 V$ASM_FILE 显示ASM文件的信息,只有MOUNT上的磁盘才能显示。
31 ASM视图 V$ASM_OPERATION 显示磁盘组配平(rebalance)运行的信息。
OPERATION的状态说明:
REBAL 磁盘组正在配平
COD   磁盘组正在恢复
DSCV  磁盘组正在被发现,在RBAL之前。 
ACD   新的ASM实例加入cluster和新的ASM实例为了准备提供服务的状态。
RFRSH 磁盘被刷新和删除时候的状态
EXPEL 磁盘被除名时候的状态
32 ASM视图 V$ASM_TEMPLATE 显示ASM用户与系统创建模板的信息。
33 ASM 元数据 COD Continuing Operations Directory 是ASM负责跟踪长时间操作元数据,例如文件创建和重新配型操作。如果上述操作失败COD记录的数据用于恢复。例如重新配平操作失败,在RAC中它将重新应用于其它可用的节点如果是单实例磁盘组再次挂载的时候重新配平将会重新启动。若果文件创建失败它将负责恢复。在log日志中我们可以看到COD的操作
NOTE: cache mounting group 2/0xB68207F1 (ASM_DATA2) succeeded
SUCCESS: diskgroup ASM_DATA2 was mounted
Sat Jul 25 16:14:02 2009
NOTE: recovering COD for group 1/0xae7207f0 (ASM_DATA1)
SUCCESS: completed COD recovery for group 1/0xae7207f0 (ASM_DATA1)
NOTE: recovering COD for group 2/0xb68207f1 (ASM_DATA2)
SUCCESS: completed COD recovery for group 2/0xb68207f1 (ASM_DATA2)
34 ASM 元数据 ASM元数据分类包括什么? ASM元数据分类:物理元数据和虚元数据。物理元数据存储在硬盘固定的位置,虚元数据存储在每一个ASM Flie文件上。所有的元数据存储在一个4K的块在文件头里。
35 ASM 元数据 物理元数据分类包括什么? Disk Header
Allocation Table (AT)
Free Space Table (FST)
Partnership Status Table (PST)
36 ASM 元数据 磁盘头文件的大小是什么? 磁盘头文件的大小为一个AU,在每个磁盘的第一个块上。
37 ASM 元数据 磁盘头文件包括的内容是什么? disk name
disk number
diskgroup name
failure group name
disk size
allocation unit (AU) size
creation time
mount time
ASM compatibility
RDBMS compatibility
file directory pointer 启动的时候指向了虚拟元数据的位置的指针
ASMLIB reserved block
38 ASM 元数据 虚元数据包括的内容是什么? File Directory
Disk Directory
Active Change Directory (ACD)
Continuing Operations Directory (COD)
Template Directory
Alias Directory
Attribute Directory
Staleness Directory
Staleness Registry
39 ASM 元数据 kfed read 简单说明 kfbh.endian:  /* endianness of writer */ Little endian = 1  Big endian = 0
kfbh.hard:    /* H.A.R.D. magic # and block size */  
kfbh.type     /* metadata block type */
kfbh.datfmt   /* metadata block data format */
kfbh.block    /* block location of this block*/
  blk -- Disk header should have T=0 and NUMB=0x0
  obj -- Disk header should have TYPE=0x8 NUMB=<disknumber>对应 v$asm_disk中的disk_number
kfbh.check    /* check value to verify consistency */
kfbh.fcn      /* change number of last change*/?
kfdhdb.driver /* ASMLIB driver reserved block */ If no driver is defined "ORCLDISK" is used.  
kfdhdb.compat /* Comaptible software version*/兼容版本 example: 0x 0a 100000 You get:  a=10 1=1 so 10.1.0 .0.0
kfdhdb.dsknum /* ASM disk number*/ 每个磁盘组中磁盘的编号从0开始,最大值65335.和kfbh.block.obj相等。
kfdhdb.capname /* Capacity grp, unused*/
kfdhdb.crestmp /* Creation timestamp*/
kfdhdb.mntstmp /* Mount timestamp */ 磁盘扇区的容量
kfdhdb.secsize /* Disk sector size (bytes) *
      This is the physical sector size of the disk in bytes. All I/O's to the
      disk are described in physical sectors. This must be a power of 2. An
      ideal value would be 4096, but most disks are formatted with 512 byte
      sectors. (from asmlib.h)
kfdhdb.blksize /* Metadata block (bytes) */
kfdhdb.ausize  /* Allocation Unit (bytes) */
kfdhdb.mfact   /* Stride between phys addr AUs */
kfdhdb.dsksize /* Disk size in Aus */ Mulitply by AUs to get actual size of disk when added.  
kfdhdb.pmcnt   /* Permanent phys addressed Aus */ Number of physically addressed allocation units.
kfdhdb.fstlocn /* First FreeSpace table blk num */ Used to find freespace.
kfdhdb.altlocn /* First Alocation table blk num */ Used to find alocated space.
kfdhdb.f1b1locn/* File Directory blk 1 AU num   */ Beginging for file directory
kfdhdb.grptyp:  KFDGTP_EXTERNAL ->指出磁盘类型,外部冗余。
kfdhdb.hdrsts: 3 ; 0×027: KFDHDR_MEMBER - > 磁盘头状态,表明它是磁盘组成员。
kfdhdb.dskname: DATA_0000 ; 0×028: length=9 ->磁盘名称。
kfdhdb.grpname: DATA ; 0×048: length=4 ->磁盘组名称。
kfdhdb.fgname: DATA_0000 ; 0×068: length=9 ->Failure Group组名称,如果该磁盘组没有Failure Group组那么它的fgname名称和dskname相同。
kfdhdb.hdrsts: 磁盘在磁盘组中的状态,这个信息与v$asm_disk的HEADER_STATUS一致。
40 ASM管理 如何查询磁盘组状态 select *
   from v$asm_diskgroup; 
select group_number, name, total_mb, free_mb, state, type
   from v$asm_diskgroup;
41 ASM管理 如何查询磁盘状态 SELECT *
   FROM   v$asm_disk;                
SELECT group_number, disk_number, mount_status, header_status, state, path
   FROM   v$asm_disk
42 ASM管理 如何挂载磁盘组 alter diskgroup asm_data1 mount;
43 ASM管理 ASM是什么 ASM 就是简化的Oracle DB的实例,是Oracle用来管理数据文件的实例,是Oracle自己的卷管理器。一个ASM实例可以同时为多个oracle DB和RAC实例提供服务。
44 ASM管理 如何挂载全部磁盘组 ALTER DISKGROUP ALL MOUNT 
45 ASM管理 ASM控制文件存放路径 show parameter CONTROL_FILES; 这个参数显示的值是有问题的,实际上控制文件存放在ASM的实例中。
46 ASM管理 如何启动ASM 使用Startup启动ASM实例,选项如下 
FORCE 用于about 之后的启动
MOUNT 启动实例加载磁盘组
NOMOUNT 启动实例不加载磁盘组
没有OPEN选项
47 ASM管理 如何关闭 使用SHUTDOWN 关闭ASM实例,选项和DB实例的相同。
48 ASM管理 ASM 磁盘组冗余级别 在 CREATE DISKGROUP 中可以为磁盘组指定如下冗余级别
NORMAL REDUNDANCY 两路镜像,需要两个failure groups。   
HIGH REDUNDANCY  三路镜像,需要三个failure groups
EXTERNAL REDUNDANCY 使用外部冗余。
49 ASM管理 如何创建磁盘组 create diskgroup asm_data2 normal redundancy
 failgroup controller1 disk 
'F:\asmdisks\_FILE_DISK8',
'F:\asmdisks\_FILE_DISK9'
 failgroup controller2 disk 
'F:\asmdisks\_FILE_DISK10',
'F:\asmdisks\_FILE_DISK11';
CREATE DISKGROUP asm_data1 EXTERNAL REDUNDANCY DISK
'/dev/raw/raw1',
'/dev/raw/raw2',
'/dev/raw/raw3'
50 ASM管理 如何删除磁盘组 DROP DISKGROUP asm_data2 INCLUDING CONTENTS;
51 ASM管理 如何设定AU为128KB ALTER system SET "_asm_ausize" = 131072 SCOPE=SPFILE;
52 ASM管理 如何查询ASM的隐含参数 select a.ksppinm "Name", b.ksppstvl "Value"
  from x$ksppi a, x$ksppcv b
 where a.indx = b.indx
   and ksppinm like '\_%asm%' escape '\'
order by a.ksppinm;
53 ASM管理 如何设置数据文件的别名 ALTER DISKGROUP asm_data2 ADD ALIAS '+ASM_DATA2/asmrems/datafile/test.dbf'
  FOR '+ASM_DATA2/asmrems/datafile/test.256.692967941';
54 ASM管理 如何删除数据文件的别名   ALTER DISKGROUP asm_data2 drop ALIAS '+ASM_DATA2/asmrems/datafile/test.dbf';
55 ASM管理 如何手动平衡数据在磁盘组上 ALTER DISKGROUP asm_data2 REBALANCE POWER 5;
例子:
1查询磁盘状态
select group_number, name, total_mb, free_mb, state 
   from v$asm_disk;
2手动配平,同时查询V$ASM_OPERATION,wait选项是为了确保空间的增加和可用,因为重新配平是异步操作。
ALTER DISKGROUP asm_data2 REBALANCE POWER 5 wait;
3再次查询磁盘状态
select group_number, name, total_mb, free_mb, state 
   from v$asm_disk;
56 ASM管理 如何添加磁盘 EXTERNAL REDUNDANCY情况下:
ALTER DISKGROUP asm_data2 ADD DISK
 'F:\asmdisks\_FILE_DISK12',
NORMAL REDUNDANCY情况下:
ALTER DISKGROUP asm_data2 ADD FAILGROUP  controller1 DISK 'F:\asmdisks\_FILE_DISK12' 
FAILGROUP controller2 DISK 'F:\asmdisks\_FILE_DISK13'
57 ASM管理 如何删除磁盘 ALTER DISKGROUP asm_data2 DROP DISK ASM_DATA2_0004;
ALTER DISKGROUP asm_data2 DROP DISK 
ASM_DATA2_0004,ASM_DATA2_0005 REBALANCE POWER 8;
58 ASM管理 ASM文件格式说明 +group/dbname/file type/tag.file.incarnation
其中,group是磁盘组名,dbname是文件所属的数据库,file type是Oracle文件类型,tag是文件类型特有的信息,file.incarnation对确保唯一性。
59 ASM管理 ab_<ASM SID>.dat文件的作用 在$ORACLE_HOME/dbs下
ab_<ASM SID>.dat 记录了数据库实例连接ASM实例的信息,如果删除了这个文件数据库实例就无法连接到ASM实例了。
60 ASM管理 hc_<SID>.dat文件的作用 在$ORACLE_HOME/dbs下
hc_<SID>.dat ASM健康检查的文件,删除了这个文件ASM实例的健康检查信息就不准确了。
61 ASM管理 如何RAC环境下不同节点设置的首选读取组 (11G下有效) Enter the following for Node1 (site1):
+ASM1.asm_preferred_read_failure_groups=MYDATA.FG1
Enter this code for Node2 (site2):
+ASM2.asm_preferred_read_failure_groups='MYDATA.FG2'
62 ASM管理 如何在存储间部署移动 ALTER DISKGROUP ADD DISK '/dev/rdsk/c7t19*'
DROP DISK DATA_0001, DATA_0002, DATA_0003, DATA_0004 REBALANCE POWER 8;
这样可以比先删除磁盘再添加磁盘减少两次重新配平。
63 ASM管理 RDBMS如何在ASM上建立表空间 CREATE TABLESPACE ISHAN DATAFILE '+DATA' SIZE 10GB;+DATA为磁盘组的名称
64 ASM管理 如何查看全部的ASM File 文件? SELECT CONNECT ('+'||GNAME,SYS_CONNECT_BY_PATH(ANAME, '/'))
FULL_ALIAS_PATH FROM (SELECT G.NAME GNAME, A.PARENT_INDEX PINDEX,
A.NAME ANAME, A.REFERENCE_INDEX RINDEX FROM V$ASM_ALIAS A,
V$ASM_DISKGROUP G WHERE A.GROUP_NUMBER=G.GROUP_NUMBER) START WITH
(MOD(PINDEX, POWER(2,24))) = 0 CONNECT BY PRIOR RINDEX = PINDEX;
65 ASM管理 一个ASM实例Oracle推荐管理几个磁盘组? 为了降低管理ASM和其磁盘组的复杂程度,Oracle推荐的方法是,一般情况下每个RAC集群或单个ASM实例维护和管理不超过两个磁盘组。一个磁盘组贮存数据,一个磁盘组放闪回区。
66 ASM管理 远端数据库可以连接本地ASM实例吗? 数据库实例是标准Oracle实例,并且是ASM实例的客户端。数据库和ASM之间的通信总是在节点内进行;也就是说,数据库不会联系远程(在RAC中)ASM实例以服务数据库请求。
67 ASM管理 如何备份文件头信息 可以在ASM实例联机状态下进行dd if=/dev/raw/raw4 bs=4096 count=1 of=/tmp/dd_raw4header或
kfed read /dev/raw/raw4>/tmp/raw4.txt
68 ASM管理 如何恢复文件头信息 必须关闭ASM实例dd if=/tmp/dd_raw4header bs=4096 count=1 of=/dev/raw/raw4 或
kfed merge /dev/raw/raw4 /tmp/raw4.txt
69 ASM 故障处理 ORA-15063 错误 处理步骤:
1 检查磁盘组当前状态: SELECT GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,STATE,NAME,PATH FROM V$ASM_DISK;
注意 DISK_NUMBER 等于0 的磁盘,也就是没有加入任何磁盘组的磁盘。
2 根据上述语句返回结果逐一检查磁盘owner和权限是否正确。。
3 检查初始化参数ASM_DISKSTRING是否正确。
4 使用kfed 读取磁盘头信息。
70 数据库实例 在应用ASM的实例中需要调整的初始化参数 PROCESSES 增加 16.
LARGE_POOL 增加 600K.
SHARED_POOL 增加内存,用来存储 extent maps.
71 数据库实例 增加SHARED_POOL指导方针 1 计算文件大小
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';
2 添加原则
1.外部冗余磁盘 = (every 100GB of file space
needs 1MB of extra shared pool) + 2MB
2.正常冗余: (every 50GB of file space needs
1MB of extra shared pool) + 4MB
3. 高冗余: (every 33GB of file space needs 1MB
of extra shared pool) + 6MB
72 数据库新增实例进程 RBAL进程说明 打开所有的磁盘组,列出每一个磁盘组和磁盘组可以提供服务的客户端。
73 数据库新增实例进程 ASMB进程说明 作用和ASM实例的ASMB相同,信息传递方向相反。









本文转自 hsbxxl 51CTO博客,原文链接:http://blog.51cto.com/hsbxxl/763501,如需转载请自行联系原作者

目录
相关文章
|
存储 Java API
ASM 关键接口 MethodVisitor
ASM 关键接口 MethodVisitor
328 0
ASM 关键接口 MethodVisitor
|
SQL 数据库
ASM卷加盘
1.登陆服务器 2.登陆到ASM实例su - grid sqlplus '/as sysasm' SQL> SELECT path FROM v$asm_disk WHERE NAME IS NULL; PATH /dev/rdsk/c0t60060E8007C72E000030C72E0000...
810 0
|
存储 Oracle 网络协议
|
SQL Web App开发 数据库
|
Java 数据库连接 应用服务中间件
|
Oracle 关系型数据库 数据库
|
关系型数据库 Unix Oracle
|
存储 Oracle 关系型数据库
【ASM】ASMLIB 系列
【ASM】ASMLIB 系列 使用ASMLIB管理磁盘 在存储管理员给服务器提供磁盘设备后,它们对于服务器来说是可用的并且可以在Linux系统中 的/proc/partitions虚拟文件中可以看到。
2605 0
|
Oracle 关系型数据库 数据库
【ASM】ASMSNMP用户已存在
【ASM】ASMSNMP用户已存在 During Oracle Grid Infrastructure for a cluster installation, the ASMSNMP account is created and its status is set to OPEN.
1036 0