ITPub博客

首页 > Linux操作系统 > Linux操作系统 > asm

asm

原创 Linux操作系统 作者:rman不是man 时间:2011-09-26 15:31:15 0 删除 编辑

ASM安装及使用

一,ASM安装

下载asmlib包,对应系统内核版本

[root@10gr2_asm ~]# uname -a

Linux 10gr2_asm.oracle.com 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009 i686 i686 i386 GNU/Linux

*红色的就是linux系统内核版本号,可以去oracle官网上去下载对应的asmlib

[root@10gr2_asm 2.6.18-164.el5]# ls

oracleasm-2.6.18-164.el5-2.0.5-1.el5.i686.rpm

oracleasm-2.6.18-164.el5debug-2.0.5-1.el5.i686.rpm

oracleasm-2.6.18-164.el5-debuginfo-2.0.5-1.el5.i686.rpm

oracleasm-2.6.18-164.el5PAE-2.0.5-1.el5.i686.rpm

oracleasm-2.6.18-164.el5xen-2.0.5-1.el5.i686.rpm

oracleasmlib-2.0.4-1.el5.i386.rpm

oracleasm-support-2.1.7-1.el5.i386.rpm

*上面这些就是下载的asmlib

安装asmlib

root用户安装

安装顺序:1oracleasm-support-2.1.7-1.el5.i386.rpm  (必装)

          2oracleasm-2.6.18-164.el5-2.0.5-1.el5.i686.rpm   (必装)

          3oracleasmlib-2.0.4-1.el5.i386.rpm  (必装)

          4oracleasm-2.6.18-164.el5xen-2.0.5-1.el5.i686.rpm 依赖kernel-xen包(可选)

          5oracleasm-2.6.18-164.el5-debuginfo-2.0.5-1.el5.i686.rpm (可选)

          6oracleasm-2.6.18-164.el5debug-2.0.5-1.el5.i686.rpm依赖kernel-debug包(可选)

          7oracleasm-2.6.18-164.el5PAE-2.0.5-1.el5.i686.rpm 依赖kernel-PAE包(可选)

二,配置ASM

1,磁盘分区: 

[root@10gr2_asm 2.6.18-164.el5]# ls /dev/sd*

/dev/sda   /dev/sda2  /dev/sdb  /dev/sdd

/dev/sda1  /dev/sda3  /dev/sdc  /dev/sde

*黄色标底的是需要分区的磁盘设备。

可以使用fdisk来进行分区

[root@10gr2_asm ~]# fdisk /dev/sdb

查看分区:

[root@10gr2_asm ~]# ls /dev/sd*

/dev/sda   /dev/sda2  /dev/sdb   /dev/sdc   /dev/sdd   /dev/sde

/dev/sda1  /dev/sda3  /dev/sdb1  /dev/sdc1  /dev/sdd1  /dev/sde1

*黄色标底为划分后的设备

2,进行oracleasm的配置

[root@10gr2_asm ~]# /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

Scan for Oracle ASM disks on boot (y/n) [y]:

Writing Oracle ASM library driver configuration: done

Initializing the Oracle ASMLib driver:                     [  OK  ]

Scanning the system for Oracle ASMLib disks:               [  OK  ]

3,创建asm磁盘

[root@10gr2_asm ~]# /etc/init.d/oracleasm createdisk VOL1 /dev/sdb1

Marking disk "VOL1" as an ASM disk:                        [  OK  ]

[root@10gr2_asm ~]# /etc/init.d/oracleasm createdisk VOL2 /dev/sdc1

Marking disk "VOL2" as an ASM disk:                        [  OK  ]

[root@10gr2_asm ~]# /etc/init.d/oracleasm createdisk VOL3 /dev/sdd1

Marking disk "VOL3" as an ASM disk:                        [  OK  ]

[root@10gr2_asm ~]# /etc/init.d/oracleasm createdisk VOL4 /dev/sde1

Marking disk "VOL4" as an ASM disk:                        [  OK  ]

4,扫描磁盘,让系统发现ASM磁盘

[root@10gr2_asm ~]# /etc/init.d/oracleasm scandisks

Scanning the system for Oracle ASMLib disks:               [  OK  ]

5,列出ASM磁盘

[root@10gr2_asm ~]# /etc/init.d/oracleasm listdisks

VOL1

VOL2

VOL3

VOL4

6,初始化ASM磁盘驱动

[root@10gr2_asm ~]# /etc/init.d/oracleasm enable

Writing Oracle ASM library driver configuration: done

Initializing the Oracle ASMLib driver:                     [  OK  ]

Scanning the system for Oracle ASMLib disks:               [  OK  ]

三,利用DBCA使用ASM创建数据库

关键点是在发现asm磁盘的页面。

四,使用asm的数据库的起停

关闭:先停数据库实例再停asm实例

启动:先启asm实例再启数据库实例

五,使用asmcmd

[oracle@10gr2_asm ~]$ export ORACLE_SID=+ASM

[oracle@10gr2_asm ~]$ asmcmd

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

从帮助中可以看出其大致操作方式和linux相同,毕竟asm是为了解决裸设备的管理复杂性和文件系统的效率而产生的一个折中的产物,所以命令和文件系统大致一致。

ASMCMD> ls

DATA/

ASMCMD> cd DATA

ASMCMD> pwd

+DATA

ASMCMD> ls

TEST/

ASMCMD> mkdir test_dir

ASMCMD> ls

TEST/

test_dir/

ASMCMD> du TEST

Used_MB      Mirror_used_MB

   1056                2121

ASMCMD> lsdg

State   Type  Rebal  Unbal  Sector  Block  AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Name

MOUNTED  NORMAL N   N    512     4096  1048576   36850    34567         8189           13189              0       DATA/

Stateasm状态

Typeasm类型

Sector:扇区大小

Blockasm块大小

AU:分配单元

Total_MB:总容量

Free_MB:空闲容量

Offline_disks:离线的磁盘  

Nameasm磁盘组的名称

这些数据也可以从动态性能视图v$asm_diskgroup中获得

SQL>select GROUP_NUMBER, NAME,SECTOR_SIZE, BLOCK_SIZE, ALLOCATION_UNIT_SIZE  from v$asm_diskgroup;

GROUP_NUMBER NAME   SECTOR_SIZE BLOCK_SIZE ALLOCATION_UNIT_SIZE

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

 1           DATA         512             4096            1048576

五,查看关于asm的动态性能视图(在ASM实例和数据库实例中查询有些是不同的)

V$ASM_DISKGROUP

asm实例中描述了asm磁盘组的一些信息。

在数据库实例中包含了一条关于各个磁盘组信息的记录。

V$ASM_DISK

ASM实例中,这个视图可以包含每个磁盘的信息以及没有被分配磁盘组的磁盘的信息。

在数据库实例中此视图只包含在这个数据库实例中使用的磁盘。

V$ASM_DISKGROUP_STAT

V$ASM_DISKGROUP视图类似。

V$ASM_DISK_STAT

V$ASM_DISK类似

V$ASM_FILE

asm实例中,包含了每个挂载的磁盘组中的文件的信息。

在数据库实例中,这个视图没有数据。

V$ASM_ALIAS

在一个asm实例中,包含了每个文件或者文件夹的别名。

数据库实例中没有记录。

V$ASM_OPERATION

ASM实例中,显示正在运行的asm长时间的操作。

在数据库实例中,这个视图没有记录。

V$ASM_CLIENT

asm实例中,标识哪个数据库的磁盘组在被这个asm实例管理。

在数据库实例中,标识哪个asm实例管理本数据库所使用的磁盘组。

六,添加删除磁盘(放在系统空闲的时候做,因为平衡负载是很消耗资源的)

删除磁盘

SQL> column path format a12;

SQL> column label format a5;

SQL> select GROUP_NUMBER,DISK_NUMBER,LABEL,PATH from v$asm_disk;

GROUP_NUMBER DISK_NUMBER LABEL PATH

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

           1           0 VOL1  ORCL:VOL1

           1           1 VOL2  ORCL:VOL2

           1           2 VOL3  ORCL:VOL3

           1           3 VOL4  ORCL:VOL4

           1           5 VOL5  ORCL:VOL5

           1           4 VOL6  ORCL:VOL6

6 rows selected.

SQL> alter diskgroup DATA drop disk VOL6;

Diskgroup altered.

SQL> select GROUP_NUMBER,DISK_NUMBER,LABEL,PATH from v$asm_disk;

GROUP_NUMBER DISK_NUMBER LABEL PATH

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

           0           4 VOL6  ORCL:VOL6  <---这个磁盘已经不属于磁盘组1

           1           0 VOL1  ORCL:VOL1  

           1           1 VOL2  ORCL:VOL2

           1           2 VOL3  ORCL:VOL3

           1           3 VOL4  ORCL:VOL4

           1           5 VOL5  ORCL:VOL5

6 rows selected.

添加磁盘

SQL> select GROUP_NUMBER,DISK_NUMBER,LABEL,PATH from v$asm_disk;

GROUP_NUMBER DISK_NUMBER LABEL PATH

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

           0           0 VOL6  ORCL:VOL6

           1           0 VOL1  ORCL:VOL1

           1           1 VOL2  ORCL:VOL2

           1           2 VOL3  ORCL:VOL3

           1           3 VOL4  ORCL:VOL4

           1           5 VOL5  ORCL:VOL5

6 rows selected.

SQL> alter diskgroup DATA add disk 'ORCL:VOL6';

Diskgroup altered.

SQL> select GROUP_NUMBER,DISK_NUMBER,LABEL,PATH from v$asm_disk;

GROUP_NUMBER DISK_NUMBER LABEL PATH

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

           1           0 VOL1  ORCL:VOL1

           1           1 VOL2  ORCL:VOL2

           1           2 VOL3  ORCL:VOL3

           1           3 VOL4  ORCL:VOL4

           1           5 VOL5  ORCL:VOL5

           1           4 VOL6  ORCL:VOL6  <----这个磁盘又挂到磁盘组1上了

6 rows selected.

七,添加删除磁盘组

SQL> alter diskgroup DATA drop disk VOL5;

Diskgroup altered.

SQL> alter diskgroup DATA drop disk VOL6;

Diskgroup altered.

SQL> select GROUP_NUMBER,NAME,STATE from v$asm_diskgroup;

GROUP_NUMBER NAME                           STATE

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

           1 DATA                           MOUNTED

SQL> create diskgroup test normal redundancy disk 'ORCL:VOL5','ORCL:VOL6';

Diskgroup created.

SQL> select GROUP_NUMBER,NAME,STATE from v$asm_diskgroup;

GROUP_NUMBER NAME                           STATE

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

           1 DATA                           MOUNTED

           2 TEST                           MOUNTED

删除磁盘组:

SQL> drop diskgroup test;

Diskgroup dropped.

SQL> select GROUP_NUMBER,NAME,STATE from v$asm_diskgroup;

GROUP_NUMBER NAME                           STATE

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

           1 DATA                           MOUNTED

八,asm的一些理论知识

镜像和条带化:

ASM扩展了OMF的功能,在数据库的文件被建立和管理的时候,我们可以自动去使用OMF去管理这些文件。而ASM可以提供冗余和条带化。

ASM划分文件为1M的区段并且均衡的分散每个文件的区段到磁盘组中的磁盘上。这种优化和磁盘的利用,大大降低了手动的IO性能调优。

ASM镜像是比操作系统镜像更灵活的一种方式,因为ASM可以指定基于每个文件的冗余级别。因此两个文件可以共享一个磁盘组,其中一个可以被镜像而另外一个可以不被镜像。这个镜像发生在区块(extent)级别。如果一个文件被镜像,则依赖于冗余级别去设置这些文件的镜像,每个区块(extent)有1个及以上的镜像拷贝,并且这些镜像被永远的保存在这个磁盘组的不同磁盘组上。

现在可以看看不同的冗余策略

Normal:支持2路镜像,3路镜像和无保护的模式,默认为2路镜像

High:支持3路镜像,默认为3路镜像

External:支持无保护模式,默认为无保护模式。

九,ASM的初始化参数

SQL> show parameter asm

NAME                                 TYPE        VALUE

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

asm_diskgroups                       string      DATA, TEST

这个参数是指这个ASM实例有哪些磁盘组

asm_diskstring                       string

磁盘的列表,空则表明使用了默认路径

asm_power_limit                      integer     1

Disk重新负载均衡的后台进程数,默认为1

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

上一篇: data block学习
下一篇: Create the database
请登录后发表评论 登录
全部评论

注册时间:2010-07-08

  • 博文量
    12
  • 访问量
    47716