第13章 自动存储管理

自动存储管理(Automatic Storage Management, ASM)是Oracle内置的卷管理器,是对自动文件管理功能的扩充,它进一步简化了数据库管理的工作。如果仅仅使用自动文件管理功能,那么数据库文件都将存储在一些操作系统目录中。自动存储管理提供了卷管理功能,数据库管理员可以创建磁盘组,把多个磁盘以磁盘组的形式组织在一起,数据库中的文件将存储在磁盘组中。利用自动存储管理功能,还可以实现磁盘的镜像和条带状划分,从而提高数据库系统的性能和数据的安全。

在数据库运行的过程中,如果要创建表空间、重做日志文件、控制文件,可以把磁盘组指定为文件的存储位置,文件的名称和大小可以省略,Oracle将利用自动文件管理功能创建并且管理这些文件。

从Oracle 11g开始,还提供了一个集群文件系统(ASM Cluster File System, ACFS),在这种文件系统中,可以存储Oracle软件的可执行文件、数据库的跟踪文件、警告文件、视频、音频等类型的文件。需要注意的是,在ACFS中目前还不能存储数据库文件,所有能存储在ASM磁盘组中的文件都不能存储在ACFS中。

ASM、ACFS以及OMF是Oracle强力推荐使用的文件存储机制,尽管在单机版数据库中用户不一定会使用这些技术,但是RAC环境中,它们的应用非常多。通过这些技术,Oracle向用户提供了一个统一的存储数据库文件的方法,这样在不同的操作系统中配置RAC环境时,不再完全依赖操作系统所提供的存储方法。

为了使用Oracle 11g的ASM和ACFS,需要一个ASM实例。这个实例与数据库实例是相互独立的,在启动ASM实例时并不需要启动数据库实例,但是在启动数据库实例时,ASM实例必须已经启动起来。

13.1 ASM实例

为了在数据库中使用ASM,需要安装Grid Infrastructure软件,然后创建一个ASM实例,并在ASM实例下创建磁盘组。数据库中的数据文件、重做日志文件、控制文件、服务器参数文件等类型的文件就存储在ASM磁盘组中。ASM实例可以利用命令行、EM、ASMCA工具等来创建。

如果通过命令行创建ASM实例,就需要为它创建一个参数文件。参数文件的用法与数据库实例类似,在参数文件中只需要设置少数几个初始化参数。实例启动起来之后,就可以通过SQL*Plus登录,然后通过CREATE DISKGROUP命令创建磁盘组。表13.1列出了与ASM实例相关的初始化参数。

figure_0319_0099

利用ASMCA使用工具可以很方便地创建ASM实例,同时创建ASM磁盘组。在创建ASM实例时,需要为SYS用户和ASMSNMP用户指定口令,如图13.1所示。

figure_0319_0100

图 13.1 为ASM实例指定用户口令

在图13.1中单击“指定磁盘组”按钮,可以创建一个磁盘组,如图13.2所示。需要为磁盘组指定名称、冗余级别以及磁盘组中所包含的磁盘,单击“OK”按钮,磁盘组就可创建成功。以后还可以利用ASMCA工具创建别的磁盘组。

figure_0319_0101

图 13.2 磁盘组的创建

在创建磁盘组时,要确保安装Grid Infrastructure软件的用户对磁盘组中的所有磁盘具有写权限。在UNIX/Linux系统中安装Oracle软件的方法请参阅附录B。假设安装这个软件的用户是oracle,那么下面的命令用于在AIX系统中设置磁盘的权限(root用户执行):


chown oracle:asmadmin/dev/rhdisk1

chmod 660/dev/rhdisk1


ASM实例建立后,就可以启动它了。ASM实例的启动和关闭方法与数据库实例类似,利用SQL*Plus登录,通过执行STARTUP命令,即可启动ASM实例。同样,执行SHUTDOWN命令,即可关闭ASM实例。ASM实例也会读自己的参数文件。ASM实例的名称默认为+ASM,参数文件的默认名称为spfile+ASM.ora,存储在默认位置。

Oracle还提供了实用工具SRVCTL,利用这个工具可以对ASM实例进行控制。常用以下三条命令:

·srvctl status asm:ASM实例的状态。

·svrctl stop asm:关闭ASM实例。

·svrctl start asm:启动ASM实例。