ITPub博客

首页 > 数据库 > Oracle > Oracle10g New Feature -- 9. ASM (Automatic Storage Management)

Oracle10g New Feature -- 9. ASM (Automatic Storage Management)

原创 Oracle 作者:zhyuh 时间:2004-09-23 09:16:32 0 删除 编辑

Oracle10g里,用户能在数据库级别直接管理磁盘。

目前没有环境测试,就摘抄kamus的一份step by step文章,留着供下次察看。

[@more@]

Automatic Storage Management (ASM)

1.     Advantages of ASM

·         Disk Addition -- No downtime is required, file extents are redistributed automatically

·         Stripe Width -- Striping can be fine grained as in Redo Log Files and coarse for datafiles

·         Buffering --The ASM filesystem is not buffered, making it direct I/O capable by design.

·         Kernelized Asynch I/O -- There is no special setup necessary to enable kernelized asynchronous I/O

·         Mirroring -- Software mirroring can be set up easily, if hardware mirroring is not available

2.     Creating an ASM-enabled Database, Step by Step

1.     创建ASM instance

1.   创建初始化文件

$ su – oracle

$ cd $ORACLE_HOME/dbs

$ vi init+ASM.ora

创建asm 实例的初始化脚本,脚本内容如下所示:

# ******Below is init script for asm instance******

*.asm_diskstring='ORCL:VOL*'

*.background_dump_dest='/oracle/admin/+ASM/bdump'

*.core_dump_dest='/oracle/admin/+ASM/cdump'

*.instance_type='asm'

*.large_pool_size=12M

*.remote_login_passwordfile='SHARED'

*.user_dump_dest='/oracle/admin/+ASM/udump'

# ******Above is init script for asm instance******

说明:

1dump 目录指向$ORACLE_BASE/,本文中ASM 实例的SID +ASM。最好

不要修改这个实例名,否则在下一步用dbca 创建数据库的时候,dbca 将找不到可用的磁

盘组,我想这应该是dbca 的一个bug,手工创建ASM 类型的数据库就应该没有这个限制

了。

2asm_diskstring 用于实例启动的时候检查可用的ASM 磁盘,由于我们前面创建ASM

磁盘的名称是VOL1 VOL4,所以我们此处使用*通配符,前面的’ORCL:’不可以省略,

否则ASM 实例将无法检查到磁盘。

2.   创建密码文件

$ su – oracle

$ cd $ORACLE_HOME/dbs

$ orapwd file=orapw+ASM password=dba

3.   创建目录结构

$ su – oracle

$ cd $ORACLE_HOME/dbs

$ mkdir –p $ORALCE_BASE/admin/+ASM/udump

$ mkdir –p $ORALCE_BASE/admin/+ASM/bdump

$ mkdir –p $ORALCE_BASE/admin/+ASM/cdump

4.   启动实例

$ export ORACLE_SID=+ASM

$ sqlplus / as sysdba

SQL> startup

ASM instance started

Total System Global Area 100663296 bytes

Fixed Size 777616 bytes

Variable Size 99885680 bytes

Database Buffers 0 bytes

Redo Buffers 0 bytes

ORA-15110: no diskgroups mounted

因为我们是首次启动asm 实例,还没有创建diskgroup,所以显示15110 错误是正常的。

5.   创建spfile,重新启动

SQL> create spfile from pfile;

SQL> shutdown immediate;

SQL> startup;

6.   创建diskgroup

SQL> create diskgroup dgroup1 normal redundancy

2 failgroup fgroup1 disk 'ORCL:VOL1','ORCL:VOL2'

3 failgroup fgroup2 disk 'ORCL:VOL3','ORCL:VOL4';

Diskgroup created.

SQL> col name for a10

SQL> select name,state from v$asm_diskgroup;

NAME STATE

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

DGROUP1 MOUNTED

如果上述命令返回的state DISMOUNTED,那么我们需要手工将挂载diskgroup

SQL> ALTER DISKGROUP dgroup1 MOUNT;

Diskgroup altered.

此时检查数据库初始化参数,发现asm_diskgroups 参数值已经自动设置为DGROUP1

这表明在下次启动asm 实例的时候,这个diskgroup 会被自动挂载。

SQL> col name for a10

SQL> col type for a10

SQL> col value for a20

SQL> show parameter asm_diskgroups

NAME TYPE VALUE

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

asm_diskgroups string DGROUP1

如果要卸载diskgroup,使用下面的命令:

ALTER DISKGROUP ALL DISMOUNT;

2.     创建ASM 数据库

3.     启动ASM 数据库的步骤

由于启动ASM 数据库必须要先启动ASM 实例,所以基本上启动步骤如下。

1. 以oracle 用户进入操作系统

2$ export ORACLE_SID=+ASM

3SQL> sqlplus / as sysdba

4SQL> startup

5SQL> exit

6$ export ORACLE_SID=

7SQL> sqlplus / as sysdba

8SQL> startup

4.     ASM 数据库的简单测试

测试ASM 数据库的automatic rebalance 功能

添加两个虚拟硬盘,分别是sdf sdg,大小500M

启动系统,启动ASM 实例,启动数据库实例

创建ASM 磁盘

#/etc/init.d/oracleasm createdisk VOL5 /dev/sdf

#/etc/init.d/oracleasm createdisk VOL6 /dev/sdg

登入ASM 实例检查v$asm_disk 视图,发现这两个新加的硬盘已经找到了

将硬盘添加到磁盘组中

SQL> ALTER DISKGROUP DGROUP1 ADD FAILGROUP FGROUP1 DISK

'ORCL:VOL5' FAILGROUP FGROUP2 DISK 'ORCL:VOL6';

Diskgroup altered.

检查数据库的auto rebalance 工作进度,数据库正在将原来分布在两个磁盘上的数据平均

分配到三个磁盘上

SQL> SELECT group_number, operation, state, est_work, sofar, est_rate,

est_minutes FROM v$asm_operation;

GROUP_NUMBER OPERATION STATE EST_WORK SOFAR

EST_RATE EST_MINUTES

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

1 REBAL RUN 416 0 0

0

SQL> /

GROUP_NUMBER OPERATION STATE EST_WORK SOFAR

EST_RATE EST_MINUTES

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

1 REBAL RUN 275 39 148

1

SQL> /

以上表示数据重新分配的工作已经成功完成

SQL> select name,allocation_unit_size,total_mb from v$asm_diskgroup;

NAME ALLOCATION_UNIT_SIZE TOTAL_MB

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

DGROUP1 1048576 5120

现在磁盘组空间总共是5120M

登入数据库实例

创建一个自己的表空间,创建一个用户,创建一个表

SQL> create tablespace ts_test datafile '+DGROUP1' size 200M;

Tablespace created.

SQL> create user kamus identified by pass default tablespace ts_test;

User created.

SQL> grant dba to kamus;

Grant succeeded.

SQL> conn kamus/pass

Connected.

SQL> create table t_test as select * from dba_objects;

Table created.

SQL> select count(*) from t_test;

COUNT(*)

----------

10319

登入ASM 实例,将磁盘从磁盘组中删除

SQL> alter diskgroup dgroup1 drop disk VOL4;

Diskgroup altered.

SQL> SELECT group_number, operation, state, est_work, sofar, est_rate,

est_minutes FROM v$asm_operation;

GROUP_NUMBER OPERATION STATE EST_WORK SOFAR

EST_RATE EST_MINUTES

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

1 REBAL RUN 566 46 151

3

SQL> select name,allocation_unit_size,total_mb from v$asm_diskgroup;

NAME ALLOCATION_UNIT_SIZE TOTAL_MB

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

DGROUP1 1048576 4096

Executed in 0.13 seconds

SQL> select label,failgroup from v$asm_disk;

LABEL FAILGROUP

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

VOL1 FGROUP1

VOL2 FGROUP1

VOL3 FGROUP2

VOL5 FGROUP1

VOL6 FGROUP2

可以看到磁盘组的总容量已经减少了,磁盘数目也减少了

有些文档上说删除了磁盘之后要执行:ALTER DISKGROUP REBALANCE

但是发现不需要手动执行,整个REBALANCE 的工作确实是自动的,当删除磁盘以后,数

据库自动开始作REBALANCE

为了两个FAILGROUP 的大小相同,再删除一个磁盘

SQL> alter diskgroup dgroup1 drop disk VOL2;

Diskgroup altered.

我们可以从下面的SQL 知道在ASM 实例中可以查询到所有可以用的磁盘,而在数据库实

例中只可以查询到让自己使用的磁盘

ASM 实例:

SQL> SELECT disk_number, label FROM V$asm_disk;

DISK_NUMBER LABEL

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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/207/viewspace-778809/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    233
  • 访问量
    2009552