ASM磁盘基本管理与维护.docx

上传人:b****7 文档编号:9168647 上传时间:2023-02-03 格式:DOCX 页数:13 大小:440.36KB
下载 相关 举报
ASM磁盘基本管理与维护.docx_第1页
第1页 / 共13页
ASM磁盘基本管理与维护.docx_第2页
第2页 / 共13页
ASM磁盘基本管理与维护.docx_第3页
第3页 / 共13页
ASM磁盘基本管理与维护.docx_第4页
第4页 / 共13页
ASM磁盘基本管理与维护.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

ASM磁盘基本管理与维护.docx

《ASM磁盘基本管理与维护.docx》由会员分享,可在线阅读,更多相关《ASM磁盘基本管理与维护.docx(13页珍藏版)》请在冰豆网上搜索。

ASM磁盘基本管理与维护.docx

ASM磁盘基本管理与维护

ASM(自动存储管理)是一个专门为Oracle数据库服务的数据文件存储机制,通过ASM管理数据文件,DBA不用再担心I/O性能问题,也不需要知道文件的名称,同时ASM也提供了文件系统到卷管理器的集成,下面依次介绍。

一、ASM的特点

(1)自动调整I/O负载

ASM可以在所有可用的磁盘中自动调整I/O负载,不但避免了人工调整I/O的难度,而且也优化了性能,同时,利用ASM可以在线增加数据库的大小,而无需关闭数据库。

(2)条带化存储

ASM将文件分为多个分配单元(AllocationUnits,AU)进行存储,并在所有磁盘间平均分配每个文件的AU。

(3)在线自动负载均衡

当共享存储设备有变化时,ASM中的数据会自动均匀分配到现有存储设备中。

同时,还可以调节数据的负载均衡速度。

(4)自动管理数据库文件

在ASM存储管理中,Oracle数据文件是ASM自动管理的。

ASM创建的任何文件一旦不再需要,就会被自动删除。

但是,ASM不管理二进制文件、跟踪文件、预警日志和口令文件。

(5)数据冗余

ASM通过磁盘组镜像可以实现数据冗余,不需要第三方工具。

(6)支持各种Oracle数据文件

ASM存储支持Oracle数据文件、日志文件、控制文件、归档日志、RMAN备份集等。

二、ASM的体系结构与后台进程

图1显示了ASM的物理构成。

 

        从图1可以看出,在顶层是ASM磁盘组,ASM实例和数据库实例可以直接访问这些磁盘组;然后是ASM文件,每个ASM文件只能包含在一个磁盘组中,不过,一个磁盘组中可以包含属于多个数据库的多个ASM文件,并且单个数据库可以使用来自多个磁盘组的存储空间;第三部分是ASM磁盘,多个ASM磁盘组成了ASM磁盘组,但每个ASM磁盘只能属于一个磁盘组;接着是AU(分配单元),AU是ASM磁盘组分配的最小连续磁盘空间,ASM磁盘按照AU进行分区,每个AU的大小为1MB;这个结构的底层是Oracle数据块,由于AU是ASM分配的最小连续磁盘空间,因此,ASM是不允许跨分配单元拆分一个Oracle数据块的。

         要使用ASM,需要在启动数据库实例之前,先启动一个名为“+ASM”的实例,ASM实例不会装载数据库,启动它的目的是为了管理磁盘组和保护其中的数据。

同时,ASM实例还可以向数据库实例传递有关文件布局的信息。

通过这种方式,数据库实例就可以直接访问磁盘组中存储的文件。

图2显示了ASM的一般体系结构。

 

 

        从图2可以看出,ASM实例与数据库实例进行通信的桥梁是ASMB进程,此进程运行在每个数据库实例上,是两个实例间信息交换的通道。

ASMB进程先利用磁盘组名称通过CSS获得管理该磁盘组的ASM实例连接串,然后建立一个到ASM的持久连接,这样两个实例之间就可以通过这条连接定期交换信息,同时这也是一种心跳监控机制。

        另外,在ASM实例中还存在另外一个新的进程,即RBAL,此进程负责规划和协调磁盘组的重新平衡活动。

除此之外,ASM实例还有一些与数据库实例中的进程相同的后台进程,例如LGWR、SMON、PMON、DBWR、CKPT等。

如果一个数据库实例使用ASM作为存储,那么它将多出两个后台进程,即RBAL和ASMB。

RBAL负责打开磁盘组中所有磁盘和数据,而ASMB负责和ASM实例进程通信。

三、管理ASM实例

 在使用ASM作为数据存储时,ASM实例管理显得非常重要,Oracle提供了丰富的管理功能,对ASM实例进行管理需要具备SYSDBA权限,在Oracle11g中可以使用一个新角色,即SYSASM,此角色只用于管理ASM实例。

1.创建ASM实例

创建ASM实例有两种方法,第一种是利用dbca创建,这种方法只需运行DatabaseConfigurationAssistant(DBCA),然后根据提示即可创建一个ASM实例,此种方式在前面已有讲述,这里不再多说。

第二中方法是用命令行方式创建ASM实例,下面进行简单介绍。

(1)创建ASM磁盘

可以使用RAID划分的LUN、分区和裸设备等来创建ASM磁盘,但是在使用LUN、分区或裸设备时,要注意将属主和属组改为Oracle用户及其对应的组,这个在前面节已经讲述过,另外一种简单的方法就是使用Oracle提供的ASMLib来完成ASM磁盘的创建,下面将讲述这种方法。

在创建ASM实例之前,首先应该确保节点上已经安装了ASMlib包,同时确认ASMLib是否已经自动加载:

[root@node1~]#lsmod|greporacleasm

oracleasm             46356 1

然后,通过ASMlib提供的oracleasm将已经划分好的磁盘分区转化为ASM磁盘,例如:

[root@node1~]#/etc/init.d/oracleasmcreatediskASMDISK1/dev/sdc5 

Markingdisk"/dev/sdc5"asanASMdisk[ OK ] 

[root@node1~]#/etc/init.d/oracleasmcreatediskASMDISK2/dev/sdc6 

Markingdisk"/dev/sdc6"asanASMdisk[ OK ] 

[root@node1~]#/etc/init.d/oracleasmcreatediskASMDISK3/dev/sdc7

Markingdisk"/dev/sdc7"asanASMdisk[ OK ] 

[root@node1~]#/etc/init.d/oracleasmcreatediskASMDISK4/dev/sdc8

Markingdisk"/dev/sdc8"asanASMdisk[ OK ] 

[root@node1~]#/etc/init.d/oracleasmcreatediskASMdisk5/dev/sdc9

Markingdisk"/dev/sdc9"asanASMdisk[ OK ] 

创建完ASM磁盘后,可以查看系统的/dev/oracleasm/disks/目录下是否已经生成磁盘设备,可以采用的命令如如下:

[root@node1~]#ll/dev/oracleasm/disks/ASMDISK*

brw-rw----1oracleoinstall8,21Sep1023:

40/dev/oracleasm/disks/ASMDISK1

brw-rw----1oracleoinstall8,22Sep1023:

40/dev/oracleasm/disks/ASMDISK2

brw-rw----1oracleoinstall8,23Sep1023:

36/dev/oracleasm/disks/ASMDISK3

brw-rw----1oracleoinstall8,24Sep1023:

40/dev/oracleasm/disks/ASMDISK4

brw-rw----1oracleoinstall8,25Sep1023:

40/dev/oracleasm/disks/ASMDISK5

也可以通过如下方式查看:

[root@node1~]#serviceoracleasmlistdisks

ASMDISK1

ASMDISK2

ASMDISK3

ASMDISK4

ASMDISK5

如果要删除ASM磁盘可通过以下命令:

 

[root@node1~]#/etc/init.d/oracleasmdeletediskASMDISK5 

RemovingASMdisk"ASMdisk5"[ OK ] 

在RAC环境中,要注意另外一个节点是否能够发现对应的ASM磁盘,执行如下命令,让另外一个节点来获取这种变化。

 

[root@node2~]#/etc/init.d/oracleasmscandisks 

到此位置,ASM磁盘已经创建完毕了。

(2)初始化参数

启动ASM实例只需要如下几个参数即可,利用这些参数可以实现ASM实例的内存的自动分配和自动管理。

下面介绍ASM实例初始化参数:

instance_type=asm

cluster_database=true

DB_UNIQUE_NAME=+ASM

ASM_POWER_LIMIT=1

large_pool_size=60M

asm_diskgroups='FLASH_DISK','ARCH_DISK','DATA_DISK'

asm_diskstring='/dev/oracleasm/disks/*'

每个参数的含义如下:

?

 instance_type,指定实例的类型,对于ASM实例,应设置为ASM

?

 cluster_database,指定是否是数据库集群,true表示是ASM集群

?

 DB_UNIQUE_NAME,指定ASM实例的名称,默认是+ASM

?

 ASM_POWER_LIMIT,该参数用来控制ASM中数据的负载均衡速度

?

 large_pool_size,设置大池的大小,由于ASM文件的分配单元映射是从large_pool分配的,因此large_pool_size至少要8MB,建议越大越好

?

 asm_diskgroups,指定实例启动时可用的ASM磁盘组,ASM实例将在启动时自动挂载这些磁盘组

?

 asm_diskstring,用于限制ASM实例可用于创建磁盘组的磁盘设备。

如果该值为NULL,则ASM实例可见的所有磁盘都可以成为创建磁盘组的可选磁盘

(3)创建密码文件

[oracle@node1~]$su-oracle 

[oracle@node1~]$cd$ORACLE_HOME/dbs 

[oracle@node1~]$orapwdfile=orapw+ASMpassword=oracle 

(4)创建目录结构 

[oracle@node1~]$su–oracle 

[oracle@node1~]$cd$ORACLE_HOME/dbs 

[oracle@node1~]$mkdir–p$ORALCE_BASE/admin/+ASM/udump 

[oracle@node1~]$mkdir–p$ORALCE_BASE/admin/+ASM/bdump

[oracle@node1~]$mkdir–p$ORALCE_BASE/admin/+ASM/adump 

[oracle@node1~]$mkdir–p$ORALCE_BASE/admin/+ASM/cdump 

2.启动ASM实例

 无论在RAC环境中还是单实例环境,ASM实例都需要用到CSS进程,在RAC环境中,启动CRS后CSS已经运行,而在单实例环境下,需要以root用户运行脚本,初始化CSS服务,否则,在启动ASM实例时会报如下错误:

ORA-29701:

unabletoconnecttoClusterManager

执行初始化脚本的过程如下:

[root@node1~]#$ORACLE_HOME/bin/localconfigadd

/etc/oracledoesnotexist.Creatingitnow.

SuccessfullyaccumulatednecessaryOCRkeys.

CreatingOCRkeysforuser'root',privgrp'root'..

Operationsuccessful.

ConfigurationforlocalCSShasbeeninitialized

CleaningupNetworksocketdirectories

SettingupNetworksocketdirectories

 Addingtoinittab 

Startupwillbequeuedtoinitwithin30seconds.

CheckingthestatusofnewOracleinitprocess...

ExpectingtheCRSdaemonstobeupwithin600seconds.

 ClusterSynchronizationServicesisactiveonthesenodes. 

       node1

ClusterSynchronizationServicesisactiveonallthenodes. 

OracleCSSserviceisinstalledandrunningunderinit(1M)

然后启动ASM实例:

[oracle@node1~]$exportORACLE_SID=+ASM 

[oracle@node1~]$sqlplus/assysdba 

SQL>startup

ASMinstancestarted

TotalSystemGlobalArea   134217728bytes

FixedSize                  1218124bytes

VariableSize              107833780bytes

ASMCache                  25165824bytes

ORA-15110:

nodiskgroupsmounted 

因为首次启动ASM实例并没有创建ASM磁盘组,所以显示15110错误是正常的。

 

3.管理ASM磁盘组

 ASM磁盘组是作为逻辑单元进行统一管理的一组磁盘,在ASM实例中,可以创建和添加新的磁盘组,可以修改现有的磁盘组,在其中添加一个磁盘或者删除一个磁盘,也可以删除现有的磁盘组。

(1)添加磁盘组

SQL>creatediskgroupFLASH_DISKexternalredundancydisk'/dev/oracleasm/disks/ASMDISK1'nameflashdisk;

Diskgroupcreated.

SQL>creatediskgroupARCH_DISKexternalredundancydisk'/dev/oracleasm/disks/ASMDISK2'namearchdisk1;

Diskgroupcreated.

SQL>creatediskgroupDATA_DISKnormalredundancydisk'/dev/oracleasm/disks/ASMDISK4'namedatadisk1,'/dev/oracleasm/disks/ASMDISK5'namedatadisk2;

Diskgroupcreated.

(2)查看磁盘组状态

SQL>selectname,statefromv$asm_diskgroup;

NAME                          STATE

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

FLASH_DISK                  MOUNTED

ARCH_DISK                  MOUNTED

DATA_DISK              MOUNTED

(3)卸载FLASH_DISK磁盘组

SQL>alterdiskgroupFLASH_DISKdismount;

Diskgroupaltered.

SQL>selectname,statefromv$asm_diskgroup;

NAME              STATE

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

FLASH_DISK        DISMOUNTED

ARCH_DISK         MOUNTED

DATA_DISK         MOUNTED

(4)挂载FLASH_DISK磁盘组

SQL>alterdiskgroup FLASH_DISKmount;

Diskgroupaltered.

SQL>selectname,statefromv$asm_diskgroup;

NAME               STATE

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

FLASH_DISK     MOUNTED

ARCH_DISK       MOUNTED

DATA_DISK    MOUNTED

(5)查看磁盘名与裸设备对应关系

SQL> selectname,pathfromv$asm_disk_stat;

NAME                            PATH

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

                              /dev/oracleasm/disks/ASMDISK3

DATADISK2                     /dev/oracleasm/disks/ASMDISK5

DATADISK1                     /dev/oracleasm/disks/ASMDISK4

ARCHDISK1                     /dev/oracleasm/disks/ASMDISK2

FLASHDISK                     /dev/oracleasm/disks/ASMDISK1

(6)查看每个磁盘组的可用大小

SQL>selectname,allocation_unit_size,total_mbfromv$asm_diskgroup;

NAME     ALLOCATION_UNIT_SIZE    TOTAL_MB

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

FLASH_DISK  1048576         3815

ARCH_DISK  1048576         3815

DATA_DISK  1048576          954

(7)向磁盘组中增加一个磁盘

SQL>ALTERDISKGROUPARCH_DISKADDDISK'/dev/oracleasm/disks/ASMDISK3'nameARCHDISK2;

Diskgroupaltered.

查看每个磁盘组的可用大小

SQL>selectname,allocation_unit_size,total_mbfromv$asm_diskgroup;

NAME      ALLOCATION_UNIT_SIZE  TOTAL_MB

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

FLASH_DISK  1048576        3815

ARCH_DISK  1048576        4292

DATA_DISK  1048576         954

SQL>selectname,pathfromv$asm_disk_stat;

NAME                           PATH

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

DATADISK2                      /dev/oracleasm/disks/ASMDISK5

DATADISK1                      /dev/oracleasm/disks/ASMDISK4

ARCHDISK2                      /dev/oracleasm/disks/ASMDISK3

ARCHDISK1                      /dev/oracleasm/disks/ASMDISK2

FLASHDISK                      /dev/oracleasm/disks/ASMDISK1

可以看出,磁盘组ARCH_DISK的大小发生变化了,表明添加磁盘成功。

(8)从磁盘组中删除一个磁盘:

SQL>ALTERDISKGROUPARCH_DISKDROPDISKARCHDISK2;

Diskgroupaltered.

(9)删除一个磁盘组:

SQL>dropdiskgroup FLASH_DISK;

Diskgroupdropped.

当有数据库使用ASM的磁盘组时,是无法卸载和删除这个磁盘组的。

ASM实例如果宕掉,那么使用ASM的数据库实例也会宕掉。

在RAC环境中,在删除一个磁盘组之前,其他节点的ASM实例必须将这个要删除的磁盘组卸载。

4.关闭ASM实例

关闭ASM实例的命令和关闭数据库实例的命令相同,但只有在没有任何数据库实例连接到该ASM实例的情况下,才能正常关闭ASM实例,如果至少有一个数据库实例与之连接,会提示以下错误:

ORA-15097:

cannotSHUTDOWNASMinstancewithconnectedRDBMSinstance

此时,如果对该ASM实例强制执行SHUTDOWNABORT命令,那么ASM实例将被关闭,任何与之连接的数据库实例最终也将自动关闭,同时报以下错误:

ORA-15064:

communicationfailurewithASMinstance

ASM实例被强制关闭后,在下次启动时,会要求进行恢复。

5. ASMCMD命令

Oracle在10g版本中提供了ASMCMD命令,通过这个命令可以管理存储在ASM磁盘中的数据。

下面简单介绍ASMCMD命令的使用方法。

在使用ASMCMD命令时必须启动ASM实例,然后指定ORACLE_HOME和ORACLE_SID,例如:

[oracle@node-rac1~]$exportORACLE_SID=+ASM1

[oracle@node-rac1~]$asmcmd

ASMCMD>

还可以使用“asmcmd-p”,加上“-p”参数可以显示当前路径。

下面是ASMCMD提供的一些可用命令,其中oracle11g新增的命令有cp、md_backup、md_restore。

ASMCMD>?

       commands:

       --------

       help

       cd

       cp

       du

    

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1