ENV:10G RAC
系统架设有2年多了,当初规划的8TB硬盘所剩无几,随即申请停机时间,添加ASM DiskGroup
--搭建一套与实体机一样的RAC,做了测试,这是测试记录--
--添加方法:Node1创建,Node2 mount;
1. 先在vbox的虚拟机上,添加2个disk到主机里面,
设置要点:
1. 添加的磁盘必须是固定大小;
2. 将磁盘设置为share模式
3. Node2,添加Node1刚才添加的硬盘,并且按照Node1添加的顺序添加
在Node1主机上执行:
[root@ora10grac1 ~]# fdisk -l /dev/sd*
确认刚才添加的磁盘分别为/dev/sdg和/dev/sdh,然后进行分区,但不要格式化,因为我要用raw设备管理
确认硬盘分区好了之后,利用ASMLib,创建ASMDISK
创建之前先检查一下原有的磁盘:
[root@ora10grac1 ~]# /etc/init.d/oracleasm listdisks
ASMDISK3
ASMDISK4
ASMDISK5
那么创建的时候在Node1上创建ASMDISK6,ASMDISK7
[root@ ~Node1]# /etc/init.d/oracleasm createdisk ASMDISK6 /dev/sdg1
[root@ ~Node1]# /etc/init.d/oracleasm createdisk ASMDISK7 /dev/sdh1
在Node2上执行scan动作:
先执行[root@ora10grac2 ~]# /etc/init.d/oracleasm scandisks
再执行[root@ora10grac2 ~]# /etc/init.d/oracleasm listdisks
SQL>create diskgroup DATA3 external redundancy disk 'ORCL:ASMDISK6';
这个语法解释一下“'ORCL:ASMDISK6'”就是ASMDISK6的路径,
当然了,你也可以使用“/dev/oracleasm/disks/ASMDISK6”
这个过程比较慢,虽然ASMDISK3大小为1.5GB,整个过程需要1Min左右
ORCL关键字说明:
Linux ASMLib的发现字符串,ASMLib使用发现字符串来确定ASM正在请求哪些磁盘。一般的Linux ASMLib使用glob字符串。字符串必须以"ORCL:"为前缀。磁盘通过名称来指定。可以通过发现字符串"ORCL:VOL1"在ASM中,发现以名称"VOL1"创建的磁盘。类似地,可以用发现字符串"ORCL:VOL*"来查询所有以字符串"VOL"开始的磁盘。不能在发现字符串中用路径名称来发现磁盘。如果缺少前缀,那么一般的Linux ASMLib将完全忽略发现字符串,认为它适用于一个不同的ASMLib。唯一的例外是空字符串(""),它被认为是一个全通配符。这与发现字符串"ORCL:*"完全等价。
利用RAW來管理:
SQL> create diskgroup DATA3 external redundancy disk'/dev/raw/raw4';
另外一种语法:
Node2,mount起来
SQL> select name,state from v$asm_diskgroup;
确认OK之后,最重要的一步就是修改ASM的pfile,使刚才添加的磁盘组能够自动加载
关键步骤:添加pfile文件
编辑$ORACLE_BASE/admin/+ASM/pfile/init.ora,找到asm_diskgroups=添加'DATA3’(注意顺序和语法一个都不能错)
ora10grac1$vi /oracle/admin/+ASM/pfile/init.ora
ora10grac2$vi /oracle/admin/+ASM/pfile/init.ora
可以重启DB,测试刚才添加磁盘组的工作是否成功
ora10grac1$srvctl stop database -d ora10g -o immediate
ora10grac1$srvctl stop nodeapps -n ora10grac1
ora10grac1$srvctl stop nodeapps -n ora10grac2
ora10grac1$srvctl stop asm -n ora10grac1
ora10grac1$srvctl stop asm -n ora10grac2
验证服务是否完全关闭,
开启DB,按照生产系统的开机顺序来,先开Node2,再开Node1
ora10grac1$srvctl start asm -n ora10grac2
ora10grac1$srvctl start asm -n ora10grac1
ora10grac1$srvctl start nodeapps -n ora10grac2
ora10grac1$srvctl start nodeapps -n ora10grac1
至少这一步没有错误,那么就开启实例吧
ora10grac1$srvctl start instance -d ora10g -i ora10g2
ora10grac1$srvctl start instance -d ora10g -i ora10g1
删除办法:
思路是,RAC中,一个节点先执行dismount,另外一个节点drop
ora10grac1export ORACLE_SID=+ASM1
ora10grac1sqlplus / as sysdba
sql>alter diskgroup DATA3 dismount;
ora10grac2export ORACLE_SID=+ASM2
ora10grac2sqlplus / as sysdba
sql>alter diskgroup DATA3 drop;
完成之后修改pfile文件,删除之前添加的参数