ASM 是 Oracle 数据库 10g 开始有的一个新特性,可以条带化和镜像磁盘,从而实现了在数据库被加载的情况下添加或移除磁盘以及自动平衡 I/O 以删除“热点”。

ASM 不是一个通用的文件系统,只能用于 Oracle 数据文件、重做日志以及控制文件。ASM 中的文件既可以由数据库自动创建和命名(通过使用 Oracle 管理文件特性),也可以由 DBA 手动创建和命名。由于操作系统无法访问 ASM 中存储的文件,因此对使用 ASM 文件的数据库执行备份和恢复操作的唯一途径就是通过恢复管理器 (RMAN)。 这种黑盒机制对那些要完全掌控数据的人们来说可能有些难以接受。

要使用ASM作为存储管理,必须单独运行一个叫做+ASM的Oracle 实例,ASM 需要的内存不多,对大多数系统,只需64MB就够了。

我们以Linux系统为例,要使用ASM功能,一般首先去Oracle网站下载安装Oracle提供的ASMLib支持软件,要找到对应的正确版本下载。

su - root
rpm -Uvh oracleasm-2.4.21-EL-1.0.0-1.i686.rpm \
oracleasm-support-1.0.2-1.i386.rpm \
oracleasmlib-1.0.0-1.i386.rpm

在使用ASMLib 之前,必须运行配置脚本。以root用户身份运行以下命令:

# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver.The following questions will determine whether the driver is
loaded on boot and what permissions it will have.The current values
will be shown in brackets ('[]').Hitting without typing an
answer will keep that current value.Ctrl-C will abort.

Default user to own the driver interface []:oracle
Default group to own the driver interface []:dba
Start Oracle ASM library driver on boot (y/n) [n]:y
Fix permissions of Oracle ASM disks on boot (y/n) [y]:y
Writing Oracle ASM library driver configuration [ OK ]
Creating /dev/oracleasm mount point [ OK ]
Loading module "oracleasm" [ OK ]
Mounting ASMlib driver filesystem [ OK ]
Scanning system for ASM disks [ OK ]

启用 ASMLib 驱动程序:

# /etc/init.d/oracleasm enable
Writing Oracle ASM library driver configuration [ OK ]
Scanning system for ASM disks [ OK ]

接下来就可以为ASM程序配置磁盘,可以是整块盘,也可以是一个分区,注意这里不必格式化成文件系统,而且createdisk后的名称要大写:

# /etc/init.d/oracleasm createdisk VOL1 /dev/sdb
Marking disk "/dev/sdb" as an ASM disk [ OK ]
# /etc/init.d/oracleasm createdisk VOL2 /dev/sdc
Marking disk "/dev/sdc" as an ASM disk [ OK ]

查看ASM使用的磁盘:

[oracle@erpdevdb ~]$ /etc/init.d/oracleasm listdisks
VOL1
VOL2
VOL3

接下来就可以用DBCA创建一个ASM的实例和多个磁盘组,如果服务器上已有ASM实例,则不必创建,一个实例可以管理多个磁盘组。每个磁盘组可给一个库使用。如果手动创建磁盘组:

[oracle@erpdevdb ~]$ export ORACLE_SID=+ASM
[oracle@erpdevdb ~]$ sqlplus " / as sysdba"

SQL> create diskgroup DGDEV external redundancy disk 'ORCL:VOL2';
Diskgroup created.
SQL> alter diskgroup DGDEV add disk 'ORCL:VOL3';
Diskgroup altered.
SQL> select name,group_number,disk_number,mode_status from v$asm_disk;

NAME GROUP_NUMBER DISK_NUMBER MODE_STATUS
------------------------------------------------------------
VOL1 2 0 ONLINE
VOL2 1 0 ONLINE
......

查看现有的磁盘组使用情况:

SQL> select group_number,name,total_mb,free_mb from v$asm_diskgroup
2 /

GROUP_NUMBER NAME TOTAL_MB FREE_MB
------------ ------------------------------ ---------- ----------
1 DGDEV 292974 290565
2 DGSTUDY 292974 170887

创建或更改表空间

SQL> create tablespace erp datafile '+DGDEV' size 30720m
2 /
Tablespace created.
SQL> select file_name,tablespace_name,bytes/1024/1024 MB,autoextensible from dba_data_files;
FILE_NAME TABLESPACE_NAME MB AUT
------------------------------ ---------- ---
+DGDEV/devdb/datafile/system.256.685990229
SYSTEM 480 YES

+DGDEV/devdb/datafile/erp.270.686139025
ERP
SQL> alter database datafile '+DGDEV/devdb/datafile/sysaux.257.685990229' resize 1024m
2 /
Database altered.

 

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>