1 应用场景
适用于
Oracle RAC与应用程序不兼容的情况,需拆除为单实例;
应用案例:主机:alex1、alex2
共享存储:DATADG1(包含Disk1、Disk2....Disk50,共五十块)
预期效果:拆除
RAC,均分磁盘到两台主机,创建两个实例;
alex1:DATADG1 (Disk1...Disk25)
alex2:DATADG2 (Disk26...Disk50)
2 操作步骤
1.从
DATADG1中剔除部分ASM磁盘组的磁盘,腾出DATADG磁盘2组所需的空间,前提条件是DATADG1的空间使用率小于50%;
#su - grid
--任意一台机
#sqlplus / as sysasm
SQL>select name,total_mb,free_mb from v$asm_disk_stat order by 1;
--列出每块盘的空间使用情况,由于
ASM需要rebal(重分布)数据,需较多时间,所以建议选择剩余空间较多的盘来操作;
SQL >alter diskgroup DISKNAME drop disk Disk_Name;
--执行退出操作,如需将DATADG1_0051退出DATADG1磁盘组;
执行:alter diskgroup DATADG1 drop disk DATADG1_0051;
SQL>select * from v$asm_operation;
--检查退出磁盘的进度,输出如下;
GROUP_NUMBER OPERATION STATE
POWER ACTUAL SOFAR EST_WORK EST_RATE EST_MINUTES ERROR_CODE
------------ ---------- -------- ---------- ---------- ---------- ---------- ---------- ----------- ----------
2 REBAL RUN 1 1 31238 7055227 3983 1763
注:重分布数据的速率大概为120MB/s,420GB/Hr,本次使用EMC CX480存储;
当检查v$asm_operation,输出 no rows selected 表示处理完毕;
--附送,磁盘组操作指令:
SQL> drop diskgroup DATA1 including contents ---删除磁盘组;
SQL> ALTER DISKGROUP DATA1 ADD DISK '/dev/oracleasm/disks/DGD022'; ---向磁盘组添加磁盘;
>当退出磁盘组完毕后,再次确认磁盘状态:
SQL>select name,total_mb,free_mb from v$asm_disk_stat order by 1;
--可看到磁盘的数量和剩余空间都已减少。
2.在
ALEX2上停止CRS服务,如使用root用户执行,前提确保环境变量设置正确;
#crsctl stp crs
3.在
ALEX2上删除原先数据库的目录结构,使用root用户执行如下指令:
#/u01/app/crs_home/crs/install/rootcrs.pl -deconfig -force
rm -rf /var/opt/oracle
rm -rf /u01/app/*
rm -rf /tmp/.oracle
rm -rf /tmp/OraInstall*
rm -rf /etc/oratab
rm -rf /opt/oracle
mkdir -p /u01/app/crs_base
mkdir -p /u01/app/crs_home
mkdir -p /u01/app/oracle/product/11.2.0/db_1
chown -R root:oinstall /u01
chown -R oracle:oinstall /u01/app/oracle
chown -R grid:oinstall /u01/app/crs*
chmod -R 775 /u01
chmod -R 755 /u01/app/crs*
dd if=/dev/zero of=/dev/dm-9 bs=8192 count=16384
dd if=/dev/zero of=/dev/dm-10 bs=8192 count=16384
dd if=/dev/zero of=/dev/dm-11 bs=8192 count=16384
4.在
ALEX2清除RAC中的缓存信息,需重启服务器
#reboot
5.重装ALEX2的grid、database,创建DATADG2,创建 standalone DB
#详见安装文档,此处略;
6.在ALEX1上修改ASM参数文件;ASM和DB上将cluster_database参数true-->false;
Oracle&grid
#sqlplus / as sysasm
--grid用户
>alter system set cluster_database=false scope=spfile;
#sqlplus / as sysdba
--oracle用户
>alter system set cluster_database=false scope=spfile;
7.确认ALEX1剔除ALEX2后能正常工作,需重启RAC,在ALEX1上使用root执行;
#crsctl stop crs --停止RAC
#crsctl start crs --启动数据,此时以为单实例库;