ASM日常维护

oracle10g自动存储管理(ASM

 

在常规的文件管理中,我们都要指定文件的名称和路径,操作每一个文件,都需要数据库管理员指出具体的文件路径和名称,而且在磁盘的优化也需要数据库管理员的参与,oracle公司在oracle10g推出来ASM,把文件的操作封装起来,外部使用时,只要指定具体的目标磁盘即可,而且asm还自动均匀存储数据,是I/O平衡;asm还有一个很重要的功能是支持并发,使oraclerac摆脱了第三方公司ASM之前,为了防止磁盘的失败,一般采用硬件或者操作系统的raid1镜像;现在asm也提供三种防止磁盘损坏的冗余级别

外部冗余:asm不对数据库文件镜像,可以通过raid磁盘镜像;所用磁盘最少,有效磁盘空间是所有磁盘设备的大小之和

常规冗余:asm使用2份镜像存储,以提高性能和数据的安全,最少需要两块磁盘(两个failure group);有效磁盘空间是所有磁盘设备大小之和的1/2一般用常规冗余就ok

高冗余:asm使用3份镜像存储,以提高性能和数据的安全,最少需要三块磁盘(三个failure group);有效磁盘空间是所有磁盘设备大小之和的1/3,虽然冗余级别高了,但是硬件的代价也最高在硬件安装的时候,一定要把不同的磁盘组安装在不同的磁盘控制器上,防止因为磁盘控制器的损坏而使数据保护失效

磁盘组的要求:asm磁盘组的所有磁盘具有大小相同,磁盘不得有的多个逻辑分区,每个磁盘设备就是一个独立的物理磁盘

asm磁盘组中可以指定逻辑卷设备,但是不建议用户使用,因为逻辑卷隐藏了磁盘的物理机构,对于asm通过物理磁盘优化系统

I/O是不利的.oracle建议优先使用文件系统和asm,尽量不用裸设备,因为裸设备难于管理,但对于数据的I/o。洛裸设备还是有优势的

什么是ASM实例

oracle10g中,有两种实例,分别是ASM实例和数据库实例,ASM实例对磁盘组进行管理,增加或删除磁盘设备时,会重新平衡磁盘组中的存储

asm实例工作原理

asm实例是在数据库实例启动前就启动的,asm实例启动过程中必须确认数据库的磁盘组和文件,然后asm实例装载(mount)磁盘组然后再创建一个区位图(extent map),再将区位图传递到数据库实例,然后asm就处于修状态;当在创建和删除文件,增加或删除磁盘时,asm实例才会被调用,用于重新平衡磁盘组的存储,并刷新数据库实例SGA的区位图;asm实例不处理事务,对数据库实例影响很小,在SGA中占用的内存大小不超过60MB

如何配置asm磁盘组

asm磁盘组是多个可管理的磁盘设备的逻辑集合,组成足够大的磁盘组,当磁盘组采用数据数据冗余时,可以实现数据的镜像和数据的分散存储,创建磁盘组时要考虑众多因素,如磁盘的块数,控制器及冗余级别,数据库的性能和可恢复性

创建磁盘组时,考虑的因素

1. asm的磁盘组中的磁盘大小及型号要相同,如果是不同型号,可以创建不同的磁盘组

2. 磁盘阵列和asm共存时, 尽量不要是磁盘阵列,因为阵列隐藏了磁盘的物理结构,对asm优化磁盘系统的I/0是不利的

3. asm将数据分散在磁盘组中的不同磁盘中,以实现负载平衡,,所以磁盘的存取性能相同很重要

4. 在增加或删除磁盘时,asm自动重新负载平衡,删除磁盘时,直到数据从磁盘中移动并完成重新平衡后,磁盘才会被释放

5. 可以在数据库运行时,增加或删除磁盘,但是会影响I/O

asm实例重要的参数

instance_type

db_unique_name

asm_power_limit

asm_diskstring

asm_diskgroups

asm实例的创建

我用的windows xp做的测试,这个比较简单,安装os系统,安装oracle数据库,然后用DBCA创建ASM实例

然后用asmtool创建磁盘,我记得在挂盘的时候,我刚开始遇到个小问题,就是在创建了物理分区,逻辑分区

之后,用asmtoolg工具对于磁盘标识时,找不到磁盘,原来是我在创建磁盘后,没有挂载,所以系统没有

识别到

只要执行如下语句,然后重启系统,就ok

C:/Documents and Settings/Administrator>diskpart

Microsoft DiskPart Copyright (C) 1999-2001 Microsoft Corporation.

On computer: ASM

DISKPART> help

Microsoft DiskPart 版本 5.2.3790.1830

ADD         - 将镜像添加到一个简单卷。

ACTIVE      - 将当前基本分区标记为活动的分区。

ASSIGN      - 给所选卷指派一个驱动器号或装载点。

AUTOMOUNT   - 启用和禁用基本卷的自动装载。

BREAK       - 中断镜像集。

CLEAN       - 从磁盘清除配置信息或所有信息。

CONVERT     - 在不同的磁盘格式之间转换。

CREATE      - 创建卷或分区。

DELETE      - 删除对象。

DETAIL      - 提供对象详细信息。

ATTRIBUTES  - 操纵卷属性。

EXIT        - 退出 DiskPart

EXTEND      - 扩展卷。

GPT         - 给选择的 GPT 分区分配属性。

HELP        - 打印命令列表。

IMPORT      - 导入磁盘组。

INACTIVE    - 将当前的基本分区标为不活动。

LIST        - 打印对象列表。

ONLINE      - 使当前标为脱机的磁盘联机。

REM         - 不起任何作用。用来注解脚本。

REMOVE      - 删除驱动器号或装载点指派。

REPAIR      - 用失败的成员修复一个 RAID-5 卷。

RESCAN      - 重新扫描计算机,查找磁盘和卷。

RETAIN      - 在一个简单卷下放置一个保留分区。

SELECT      - 将焦点移到一个对象。

DISKPART> automount enable

已经启用自动装载新卷。

DISKPART>

asm实例的维护

sqlplus维护磁盘组

asmcmd维护磁盘组

1. 创建磁盘组

2. 删除磁盘组

3. 磁盘组增加磁盘成员

4. 磁盘组删除磁盘成员

5. 挂载/卸载磁盘组

6.创建目录

 

1. 创建磁盘组

  1.1 创建外部冗余磁盘组

SQL> create diskgroup dg_skate1 external redundancy

  2  disk '//./orcldiskdisk10' ;

磁盘组已创建。

   1.2 创建常规冗余磁盘组

SQL> create diskgroup dg2 normal redundancy

  2  failgroup fdisk1 disk '//./orcldiskdisk11' name disk11

  3  failgroup fdisk2 disk '//./orcldiskdisk12' name disk12;

磁盘组已创建。

SQL> select name,failgroup,path,disk_number from v$asm_disk;

    NAME         FAILGROUP PATH              DISK_NUMBER

 DISK11 FDISK1 //./ORCLDISKDISK11                 0

 DISK12 FDISK2 //./ORCLDISKDISK12                 1

  1.3 创建高冗余磁盘组

SQL> create diskgroup dg3 high redundancy

  2  failgroup  fdisk1 disk '//./orcldiskdisk13' name disk13

  3  failgroup  fdisk2 disk '//./orcldiskdisk14' name disk14

  4  failgroup  fdisk3 disk '//./orcldiskdisk15' name disk15;

磁盘组已创建。

SQL> select name,failgroup,path,disk_number from v$asm_disk;

    NAME FAILGROUP PATH DISK_NUMBER

1 DG_SKATE1_0000 DG_SKATE1_0000 //./ORCLDISKDISK10 0

2 DISK11 FDISK1 //./ORCLDISKDISK11 0

3 DISK12 FDISK2 //./ORCLDISKDISK12 1

4 DISK13 FDISK1 //./ORCLDISKDISK13 0

5 DISK14 FDISK2 //./ORCLDISKDISK14 1

6 DISK15 FDISK3 //./ORCLDISKDISK15 2

 

2. 删除磁盘组

首先确认数据库是否使用磁盘组

SQL> select * from v$asm_client;

未选定行

没有数据库实例使用asm实例中的磁盘组,然后就可以删除与该实例连接的磁盘组

SQL> drop diskgroup dg3 including contents;

磁盘组已删除。

3. 磁盘组增加磁盘成员

SQL> select name,failgroup,path,disk_number from v$asm_disk;

    NAME FAILGROUP PATH DISK_NUMBER

1   //./ORCLDISKDISK13 0

2   //./ORCLDISKDISK14 1

3   //./ORCLDISKDISK15 2

4 DG_SKATE1_0000 DG_SKATE1_0000 //./ORCLDISKDISK10 0

5 DISK11 FDISK1 //./ORCLDISKDISK11 0

6 DISK12 FDISK2 //./ORCLDISKDISK12 1

4. 磁盘组删除磁盘成员

SQL> alter diskgroup dg2 drop disk disk13;

磁盘组已变更。

5. 挂载/卸载磁盘组

SQL> select name,state from v$asm_diskgroup;

NAME

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

STATE

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

DG_SKATE1

MOUNTED

DG2

MOUNTED

SQL> alter diskgroup dg_skate1 dismount;

磁盘组已变更。

SQL> select name,state from v$asm_diskgroup;

 

NAME

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

STATE

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

DG_SKATE1

DISMOUNTED

 

DG2

MOUNTED

SQL> alter diskgroup all mount;

alter diskgroup all mount

*

1 行出现错误:

ORA-15032: ?????????

ORA-15017: ??????? "DG2"

ORA-15030: ??????????????? "DG2"

 

SQL> alter diskgroup all dismount;

磁盘组已变更。

SQL> alter diskgroup all mount;

磁盘组已变更。

SQL> alter diskgroup dg_skate1 mount;

磁盘组已变更。

6.创建目录

SQL> alter diskgroup dg2 add directory '+dg2/test/';

磁盘组已变更。

SQL> alter diskgroup dg2 add directory '+dg2/test/datafile';

磁盘组已变更。

在数据库实例中使用asm磁盘组创建表空间和数据文件

SQL> create tablespace tbs1 datafile

  2  '+dg2/test/datafile/tbs01.dbf' size 1m

  3  autoextend on next 1m maxsize 2m;

表空间已创建。

 

SQL>

asm相关视图:

v$asm_disk

v$asm_diskgroup

v$asm_client

v$asm_template

 

维护asm磁盘组除了用sqlplus维护之外,还可以用asmcmd,他很类似linux的命令

 

C:/Documents and Settings/Administrator>asmcmd -p

ASMCMD [+] > ls

DG2/

DG_SKATE1/

ASMCMD [+] > help

        asmcmd [-p] [command]

 

        The environment variables ORACLE_HOME and ORACLE_SID determine the

        instance to which the program connects, and ASMCMD establishes a

        bequeath connection to it, in the same manner as a SQLPLUS / AS

        SYSDBA.  The user must be a member of the SYSDBA group.

 

        Specifying the -p option allows the current directory to be displayed

        in the command prompt, like so:

 

        ASMCMD [+DATAFILE/ORCL/CONTROLFILE] >

 

        [command] specifies one of the following commands, along with its

        parameters.

 

        Type "help [command]" to get help on a specific ASMCMD command.

 

        commands:

        --------

        cd

        du

        find

        help

        ls

        lsct

        lsdg

        mkalias

        mkdir

        pwd

        rm

        rmalias

ASMCMD [+] >

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wyzxg/archive/2009/11/30/4902439.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值