本篇内容介绍了“ASM磁盘管理分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1.ASM磁盘组

ASM存储管理除了ASM实例之外,最大的组成部分就是ASM磁盘组。一个ASM磁盘组由过多个ASM磁盘组成。

一个磁盘组内可以存放多个数据文件,一个数据文件仅仅只能位于一个磁盘组内,不能跨磁盘组。

多个数据库可以共享相同的或多个磁盘组。

磁盘组的冗余类型可以分为三类:标准冗余,高度冗余,外部冗余。

对于已创建的磁盘组,不能够更改其冗余级别,如要更改,需要删除该磁盘组后再重新创建。

2.ASM磁盘

ASM磁盘通过标准的OS接口来访问,由Oracle用户来读写,在聚集的所有节点可以被访问。

ASM磁盘在不同的节点可以使用不同的名字。

ASM磁盘可以使网络文件系统。

ASM磁盘上的对象被冗余保护。

每一个ASM磁盘的第1块用于定义磁盘的头部信息,ASM磁盘名字编号,创建的时间戳等。

ASM文件会均匀分布在一个ASM组内的各个磁盘中。

3.ASM故障组

一个磁盘组可以由两个或多个故障组组成。

一个故障组由一个或多个ASM磁盘组成。

故障组提供了共享相同资源的冗余,我们可以这样来理解标准冗余。

假定有磁盘组DG1,且创建了两个故障组。

fgroup1,fgroup2,每个故障组由2个ASM磁盘组成,则对标准冗余而言,两个故障组互为镜像。

failgroup1-->asmdiskA , asmdiskB

failgroup2-->asmdiskC , asmdiskD

假定文件datafileA大小为4MB,则4个extent均匀分布到asmdiskA,asmdiskB,同样asmdiskC,asmdiskD也包含该文件的1至4个extent。

即只要有一个extent在故障组fgroup1中存在,必定有一个镜像的extent存在于fgroup2中,反之亦然,两个extent互为镜像。

当一个故障组中的某个磁盘损坏,假定为asmdiskA ,则asmdiskA中原来保存的extent将会从failgroup2中复制到asmdiskB中。

总之,故障组failgroup1和failgroup2必定有相同的extent副本。

标准冗余至少需要2个故障组,高度冗余则至少需要3个故障组。事实上对于未明确指定故障组的情况下,一个标准冗余至少需要2个

asm磁盘,而高度冗余至少需要3个asm磁盘。

4.分配单元

ASM磁盘的最小粒度是分配单元,大小默认是1M,也可设置为128K进行细粒度访问。

支持粗粒度和细粒度分配单元进行读写来实现装载平衡和减少延迟。

ASM文件由一些分配单元的集合组成。

5.ASM文件

对Oracle自身而言,实际上与标准的文件并没有太多区别。

ASM文件一般位于磁盘组内创建的子目录内,磁盘组以加号开头,相当于Linux系统的根目录。

如+DG1/oradb/datafile/system.258.346542

ASM可以为控制文件,数据文件,联机日志文件,参数文件,归档日志,备份等。

不支持trace文件,可执行文件,OCR,Votingdisk等,注:Oracle 11g R2可支持。

使用extent maps来记录文件到磁盘的映射。

6.I/O分布

可以使用条带化和镜像来保护数据。

文件被平均分布在一个组内的所有磁盘中。

磁盘的添加与删除,ASM会自动重新分配AU,因此也不存在碎片的问题。

将I/O分配到不同的磁盘控制器提高了读写数据。

7.Rebalance

ASM文件被均衡地分布在一个磁盘组的所有磁盘中。

磁盘添加时,当前磁盘组加载的所有磁盘中共享的部分extent将会被移植到新的磁盘中,直到重新分布完成才正常提供I/O均衡。

磁盘删除或故障时,删除磁盘或故障磁盘的extent将会被均匀的分布到剩余的磁盘中。

未使用force关键字drop磁盘操作,该磁盘上所有数据rebalance完毕后才被释放.即完毕后磁盘脱机,置磁盘头部状态为former。

总之,任意存储性质改变(磁盘增加,删除,故障)都将导致rebalance,且由asm自动完成,无需人工干预,在一个时间段通常会锁定一个盘区。

8.ASM磁盘组的管理

通常建议创建两个磁盘组,一个用于保存数据文件,一个用于保存闪回,备份恢复使用。

Flash RecoveryArea的大小取决于闪回内容需要保留的时间长短。

尽可能将数据区与闪回区使用不同的物理通道。

尽可能一次性mount所有需要用到的磁盘。

建议使用性能,磁盘大小相近的磁盘。假定两个故障组FG1,FG2各使用一块磁盘,则FG1内的磁盘应保持与FG2内的磁盘大小相同,否则会以最小的磁盘空间作为可使用空间。

9.ASM磁盘组的管理方式

SQLPlus

OEM

DBCA

ASMCMD

ASM磁盘创建及管理
-----------------------------------------------------------------------------------------------------------------
1.查看ASM配置磁盘搜索信息

SQL>showparameter instance_type

NAMETYPEVALUE

----------------------------------------------- ------------------------------

instance_typestringASM

SQL>showparameter asm_diskst

NAMETYPEVALUE

----------------------------------------------- ------------------------------

asm_diskstringstring/dev/oracleasm/disks/VOL*

2.使用oracleasm创建磁盘

[root@zhouwanchun~]#/etc/init.d/oracleasm createdisk VOL1/dev/sdd1

Markingdisk"VOL1"asanASMdisk:[OK]

[root@zhouwanchun ~]#/etc/init.d/oracleasm createdisk VOL2/dev/sdd2

Markingdisk"VOL2"asanASMdisk:[OK]

[root@zhouwanchun ~]#/etc/init.d/oracleasmcreatedisk VOL3/dev/sde1

Markingdisk"VOL3"asanASMdisk:[OK]

[root@zhouwanchun ~]#/etc/init.d/oracleasm createdisk VOL4/dev/sde2

Markingdisk"VOL4"asanASMdisk:[OK]

[root@zhouwanchun ~]#/etc/init.d/oracleasm listdisks

VOL1

VOL2

VOL3

VOL4

3.创建磁盘组语法

CREATEDISKGROUPdiskgroup_name

[{ HIGH | NORMAL | EXTERNAL } REDUNDANCY ]

[FAILGROUP failgroup_name ]

DISK[NAME disk_name ] [ SIZE size_clause ] [ FORCE | NOFORCE ]...;

4.创建磁盘组

SQL>creatediskgroupDG1 normalredundancydisk'/dev/oracleasm/disks/VOL1'nameVOL1;

creatediskgroupDG1 normalredundancydisk'/dev/oracleasm/disks/VOL1'nameVOL1

*

ERROR at line 1:

ORA-15018:diskgroupcannot be created--标准冗余至少需要两块磁盘

ORA-15072:commandrequires at least 2 failure groups,discovered only 1

SQL>creatediskgroupDG1 normal redundancy

2disk'/dev/oracleasm/disks/VOL1'nameDG1_VOL1,'/dev/oracleasm/disks/VOL2'nameDG1_VOL2;

SQL>creatediskgroupDG2 normal redundancy--使用标准冗余创建磁盘组DG2

2failgroupFG1disk'/dev/oracleasm/disks/VOL3'nameDG2_FG1_VOL3

3failgroupFG2disk'/dev/oracleasm/disks/VOL4'nameDG2_FG2_VOL4;

SQL>creatediskgroupDG_extexternalredundancydisk'/dev/oracleasm/disks/VOL10'nameDG_ext_VOL10;--外部冗余

SQL>selectgroup_numbergno,name,state,type,total_mb,free_mb,--查看创建的磁盘组

2required_mirror_free_mbrmfmb,usable_file_mb ufmb

3fromv$asm_diskgroup;

GNONAMESTATETYPETOTAL_MBFREE_MBRMFMBUFMB

------------------------- ----------- ------ ---------- ---------- ---------- ----------

1DG1MOUNTEDNORMAL3066296401482

2DG2MOUNTEDNORMAL3066296401482

3DG_EXTMOUNTEDEXTERN10050050

SQL>selectgroup_numbergno,name,failgroupfgno,state,total_mb,free_mb,header_statusfromv$asm_disk;

GNONAMEFGNOSTATETOTAL_MBFREE_MBHEADER_STATU

------------------------- --------------- -------- ---------- ---------- ------------

2DG2_FG2_VOL4FG2NORMAL15371486MEMBER

2DG2_FG1_VOL3FG1NORMAL15291478MEMBER

1DG1_VOL2DG1_VOL2NORMAL15371486MEMBER

1DG1_VOL1DG1_VOL1NORMAL15291478MEMBER

3DG_EXT_VOL10DG_EXT_VOL10NORMAL10050MEMBER

5.磁盘组添加故障组和成员

--为非故障组添加成员

SQL>alterdiskgroupDG1adddisk'/dev/oracleasm/disks/VOL5'nameDG1_VOL5;

--为DG2添加一个故障组FG3及成员

SQL>alterdiskgroupDG2

2addfailgroupFG3disk'/dev/oracleasm/disks/VOL6'nameDG2_FG3_VOL6;--添加故障组及成员

--为DG2的个故障组各添加一个成员

SQL>alterdiskgroupDG2

2addfailgroupFG1disk'/dev/oracleasm/disks/VOL7'

3addfailgroupFG2disk'/dev/oracleasm/disks/VOL8'

4addfailgroupFG3disk'/dev/oracleasm/disks/VOL9';

6.删除磁盘组中的磁盘,故障组中的成员,磁盘组

SQL>alterdiskgroupDG1dropdiskDG1_VOL5;--删除磁盘组DG1中的磁盘VOL5

SQL>alterdiskgroupDG2dropdiskDG2_0003;--删除故障组中的单个成员

SQL>alterdiskgroupDG2dropdisksinfailgroup FG3;--删除故障组及所有成员,注意此时为drop disks复数形式

SQL>alterdiskgroupDG1dropdiskDG1_VOL4--删除磁盘组中的磁盘,同时添加故障组FG3

addfailgroupFG3disk'/dev/oracleasm/disks/VOL9'nameDG1_VOL11;

SQL>dropdiskgroupDG1;--删除磁盘组

7.调整磁盘组的容量

----故障组FG3的容量将被调整到G,如果磁盘空间不足,则调整失败

SQL>alterdiskgroupDG2resize disksinfailgroup FG3size10G;

8.手动Rebalance

SQL>alterdiskgroupDG2 rebalancepower3 wait;

9.磁盘组的加载与卸载及内部一致性检查

SQL>alterdiskgroupalldismount;

SQL>alterdiskgroupDG2 mount;

SQL>alterdiskgroupDG2checkall;

10.查看磁盘组的partner

SQL>selectname,state,typefromv$asm_diskgroupwheregroup_number=3;--查看磁盘组DG3的信息

NAMESTATETYPE

-------------------------- ------

DG3MOUNTEDNORMAL

SQL>selectgrp,disk,number_kfdpartnerfromx$kfdpartnerwheregrp=3;

GRPDISKNUMBER_KFDPARTNER

-------------------- -----------------

301--磁盘组DG3使用了3个磁盘,且冗余度为标准冗余

302--磁盘组0的partner为磁盘组1,2

310--磁盘组1的partner为磁盘组0,2

312

320--磁盘组2的partner为磁盘组0,1

321

ASM磁盘组中目录、文件的管理
-------------------------------------------------------------------------------------------------------------------------------
1.为磁盘组增加目录

SQL>alterdiskgroupDG2adddirectory'+DG2/datafile';

--为磁盘组增加目录

SQL>alterdiskgroupDG2 renamedirectory'+DG2/datafile'to'+DG2/dtfile';--重命名目录

SQL>alterdiskgroupDG2dropdirectory'+DG2/dtfile'; --删除目录

SQL>alterdiskgroupDG2adddirectory'+DG2/asmdb/datafile';--为磁盘组增加目录

alterdiskgroupDG2adddirectory'+DG2/asmdb/datafile'

*

ERROR at line 1:

ORA-15032:notallalterationsperformed

ORA-15173:entry'asmdb'doesnotexistindirectory'/'--收到错误提示,asmdb目录不存在,必须要先创建

SQL>alterdiskgroupDG2adddirectory'+DG2/asmdb/'; --首先添加asmdb

SQL>alterdiskgroupDG2adddirectory'+DG2/asmdb/datafile';--再次添加目录成功

2.为文件添加别名,重命名别名

SQL>alterdiskgroupDG1addalias'+DG1/asmdb/datafile/users.dbf'--添加别名

2for'+DG1/asmdb/datafile/users.263.734885485';

SQL>selectname,group_number,file_number,alias_index,alias_directory,system_created

2fromv$asm_aliaswherefile_number=263;

NAMEGROUP_NUMBERFILE_NUMBER ALIAS_INDEX A S

------------------------------------- ----------- ----------- - -

USERS.263.7348854851263215N Y

users.dbf1263216N N

SQL>alterdiskgroupDG1 rename alias'+DG1/asmdb/datafile/users.dbf'--重命名一个别名

2to'+DG1/asmdb/datafile/users01.dbf';

SQL>selectname,group_number,file_number,alias_index,alias_directory,system_created

2fromv$asm_aliaswherefile_number=263;

NAMEGROUP_NUMBERFILE_NUMBER ALIAS_INDEX A S

------------------------------------- ----------- ----------- - -

USERS.263.7348854851263215N Y

users01.dbf1263216N N

3.为文件删除别名

SQL>alterdiskgroupDG1dropalias'+DG1/asmdb/datafile/users01.dbf';


ASM磁盘组,TEMPLATE的管理
---------------------------------------------------------------------------------------------------
TEMPLATE是一个模板,为数据库中新增的文件定义了缺省分配单元大小,以及冗余级别。对于不同类型的文件,使用了不同的AUs以及不同的冗余度。如对控制文件采用高度冗余,条带使用精细化条带(128kb),而参数文件,数据文件则采用标准冗余,粗级别条带(1MB)。这个特性正是Oracle asm管理不同于外部冗余的特性,即可以基于文件的不同属性而使用不同级别的冗余度和不同大小的条带化分配单元。当然,我们可以根据不同的需求来修改该模板,使得创建新的文件时根据需要来应用其冗余和条带花特性。系统管理人员能改变系统缺省template,但不能删除该删除,管理员能增加自己的template,然后在该模板上创建数据文件。

1.缺省的条带化及其冗余级别

SQL>select*fromv$asm_templatewheregroup_number=1;

GROUP_NUMBER ENTRY_NUMBERREDUND STRIPE SNAME

------------------------ ------ ------ - -----------------------------------

10MIRROR COARSE Y PARAMETERFILE

11MIRROR COARSE Y DUMPSET

12HIGHFINEY CONTROLFILE

13MIRROR COARSE Y ARCHIVELOG

14MIRROR FINEY ONLINELOG

15MIRROR COARSE Y DATAFILE

16MIRROR COARSE Y TEMPFILE

17MIRROR COARSE Y BACKUPSET

18MIRROR COARSE Y AUTOBACKUP

19MIRROR COARSE Y XTRANSPORT

110MIRROR COARSE Y CHANGETRACKING

111MIRROR FINEY FLASHBACK

112MIRROR COARSE Y DATAGUARDCONFIG

2.创建TEMPLATE的语法

ALTERDISKGROUPdisk_group_nameADDTEMPLATE template_name

ATTRIBUTES([{MIRROR|HIGH|UNPROTECTED}][{FINE|COARSE}]);

3.添加TEMPLATE

SQL>alterdiskgroupDG1addtemplate template_one attributes(high fine);

SQL>alterdiskgroupDG1addtemplate template_two attributes(unprotected);

4.修改已存在的TEMPLATE

SQL>alterdiskgroupDG1altertemplate template_one attributes(coarse);

5.删除TEMPLATE

SQL>alterdiskgroupDG1droptemplate template_two;

6.基于模板创建数据文件

SQL>createtablespacetestdatafile'+DG1/asmdb/datafile/test.dbf(template_one)'size10M;

7.查看当前系统中文件使用的模板

SQL>selectname,redundancy,striped

2fromv$asm_aliasajoinv$asm_file b

3ona.file_number=b.file_number

4anda.group_number=b.group_number

5orderbyname;

NAMEREDUNDSTRIPE

----------------------------------------- ------

Current.256.734885363HIGHFINE

SYSAUX.260.736463679MIRRORCOARSE

TBS_RMAN.265.735409761MIRRORCOARSE

TEMP.262.734885475MIRRORCOARSE

SYSTEM.259.734885389MIRRORCOARSE


ASM认证与口令文件
---------------------------------------------------------------------------------------------------------------------
1.ASM认证
ORACLE ASM实例没有数据字典,所以连接ASM实例只能通过如下三种系统权限来进行连接: SYSASM,SYSDBA,SYSOPER.

2.连接ASM实例
1.在操作系统上直接使用OS认证。
2.在操作系统上使用口令文件认证。
3.通过Oracle Net Service远程+口令文件远程连接。

3.ASM口令文件

如何创建ASM实例的口令文件?

若使用ASMCA来创建的ASM实例,那么会创建口令文件,口令文件默认的用户是SYS和ASMSNMP。

如果要添加其他用户到口令文件中,就需要使用create user和grant命令来添加。

若不是使用ASMCA来创建的,就需要手工的创建口令文件,并对SYS用户赋予SYSASM的权限。

ASM口令文件创建和oracle实例一样:
$ orapwd file=$ORACLE_HOME/dbs/orapw+ASM password=oracle

“ASM磁盘管理分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!