红帽5.4 企业版下 创建asm数据库

1、操作系统:redhat 5
      数据库   :oracle  11G  R1
2、查看系统内核,安装asm需要根据系统内核,安装相应的rpm包
       [root@localhost ~]# uname -r
        2.6.18-8.el5
3、下载并安装rpm包
下载相关的rpm包:

前两个rpm是通用的,最后一个分内核下载;

4、  在进行此步骤前请先确认/etc/sysconfig/selinux 文件中的SELINUX=disable

      否则在接下在的配置后会报Initializing the Oracle ASMLib driver: [FAILED]错误。

设置系统启动自动挂载asm磁盘
   /etc/init.d/oracleasm configure

输入这条命令后,会让你输入用户和组名,

数据库通常都安装在oracle用户oinstall组下,这里我们只要输入oracle和oinstall即可:

5、创建asm磁盘

   dd if=/dev/zero f=/home/asmdg/sdb1 bs=1M count=5000
    dd if=/dev/zero f=/home/asmdg/sdb2 bs=1M count=5000
    dd if=/dev/zero f=/data/asmdg/sdb3 bs=1M count=5000
    dd if=/dev/zero f=/data/asmdg/sdb4 bs=1M count=5000

将dd得到的文件虚拟成循环设备:
/sbin/losetup /dev/loop1 /home/asmdg/sdb1
/sbin/losetup /dev/loop2 /home/asmdg/sdb2
/sbin/losetup /dev/loop3 /data/asmdg/sdb3
/sbin/losetup /dev/loop4 /data/asmdg/sdb4

创建asm磁盘
/etc/init.d/oracleasm createdisk V1 /dev/loop1
/etc/init.d/oracleasm createdisk V2 /dev/loop2
/etc/init.d/oracleasm createdisk V3 /dev/loop3
/etc/init.d/oracleasm createdisk V4 /dev/loop4

以上步骤三个步骤千万不能出错,如果出错,及时重建,否则会影响后面的asm磁盘挂载

6、添加oracleasm磁盘
cd $ORACLE_HOME/bin
    ./localconfig add

7、磁盘创建至此,已经结束,接下来 就可以使用dbca来创建管理asm磁盘并创建数据库,

注意:此时创建的asm磁盘,在系统重启后将会消失,因此,我们需要修改系统文件配置,使其在重启时自动挂载并创建

修改/etc/rc.local 文件,把刚才创建asm的语句都放在上面就可以了:

[root@localhost ~]# cat /etc/rc.local 
#!/bin/sh
#
# This script. will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style. init stuff.

touch /var/lock/subsys/local

/sbin/losetup /dev/loop1 /home/sdb1

/sbin/losetup /dev/loop1 /home/sdb2

/etc/init.d/oracleasm createdisk V1 /dev/loop1
/etc/init.d/oracleasm createdisk V2 /dev/loop2

保存退出后,重启一下机器,查看磁盘是否正常挂载。

8、第七步的时候,如果我们不方面启动图形界面,我们也可以通过手工用命令创建

(以下内容 

 配置+asm参数文件---init+ASM.ora--

INSTANCE_TYPE=ASM      
DB_UNIQUE_NAME=+ASM
LARGE_POOL_SIZE=12M     
ASM_DISKSTRING='/dev/oracleasm/disks/V1','/dev/oracleasm/disks/V2'
_ASM_ALLOW_ONLY_RAW_DISKS=FALSE

注意:在配置好参数文件,  startup  nomount  时,可能出现
ORA-00845: MEMORY_TARGET not supported on this system  错误,这个问题是由于设置SGA的大小超过了操作系统/dev/shm的大小:
修改/etc/fstab表,添加
------------tmpfs /dev/shm tmpfs defaults,size=10240M 0 0----------------
这个值的大小可以自己根据实际情况调节,系统为内存的一半,我们可以适当的放大;
然后执行:umount /dev/shm
mount /dev/shm
df -k /dev/shm
 执行完这些操作后,再次startup  问题解决。
 -----
启动+ASM实例到 nomount状态后,创建逻辑卷组
有一个asm组时执行create diskgroup grouptest external redundancy disk '/dev/oracleasm/disks/VOL1';
多个asm组  执行create diskgroup DGROUP1 normal redundancy disk '/dev/oracleasm/disks/V1','/dev/oracleasm/disks/V2';
               create diskgroup DGROUP2 normal redundancy disk '/dev/oracleasm/disks/V3','/dev/oracleasm/disks/V4';
               create diskgroup DGROUP3 normal redundancy disk '/dev/oracleasm/disks/V5','/dev/oracleasm/disks/V6','/dev/oracleasm/disks/V7';
             Diskgroup created.
创建成功后,查看逻辑卷 挂载状态。

select path,mount_status from v$asm_disk;

9、关闭+ASM实例,在参数文件上添加参数,添加后,下次磁盘组讲自动挂载
 ASM_DISKGROUPS='DGROUP1','DGROUP2'

10、启动+ASM实例,测试是否可以一次性到mount。
  create spfile from pfile;

startup

11、创建asm磁盘相关命令:

手工挂载asm磁盘
   alter diskgroup dgroup1 mount; 
   alter diskgroup dgroup2 mount;

查看css状态
  crsctl check cssd

删除diskgroup

drop diskgroup DATA including contents;
 - 对于多结点的diskgroup, 只能有在一个asm实例上挂载之后才能被dorp, 其他结点必须dismount。

为diskgroup增加disk
 
SQL> alter diskgroup DATA add disk '/dev/oracleasm/VOL5' name
 
VOL5,'/dev/oracleasm/VOL6' name VOL6;


 从diskgroup删除disk
 
SQL> alter diskgroup DATA drop disk VOL5;