asm磁盘组创建错误,用中转存储,重建磁盘组

asm磁盘组创建成normal模式,使用好长时间以后,才发现空间不够了,想调整为external模式,不能在线更改,需要删掉磁盘组重新创建,最后确定实施方案,
找另外的存储中转,这样不用导数据了,做的好,几乎可以不用停机。
大体思路是找同样容量的中转存储,在线加到现有磁盘组,把原来的盘从asm中剔出,这样数据全部都在中转存储上了,原来的盘重新创建一个新的磁盘组,冗余模式选择为external。
使用rman的copy把数据在线迁移到新建的正确的磁盘组,然后迁移控制文件,都迁移好了,删掉中转磁盘组。
下面是详细的实施步骤!
存储划盘,操作系统认盘,试了试,不重启不行,还是重启了一把。
认到硬盘以后,fdisk分区。
使用下面的命令创建asm硬盘。
/etc/init.d/oracleasm createdisk asm_lv21 /dev/sdc1
/etc/init.d/oracleasm createdisk asm_lv22 /dev/sdd1
使用下面的命令查看
/etc/init.d/oracleasm listdisks
使用下面的命令加到现在的盘组中。
SQL> conn / as sysasm                  
Connected.
SQL> alter diskgroup data add disk 'ORCL:asm_lv21';  
Diskgroup altered.
SQL> alter diskgroup data add disk 'ORCL:asm_lv22';
Diskgroup altered.
查看asm同步情况,有内容表示没有完成
SQL> select * from v$asm_operation;

GROUP_NUMBER OPERA STAT      POWER     ACTUAL      SOFAR   EST_WORK   EST_RATE
------------ ----- ---- ---------- ---------- ---------- ---------- ----------
EST_MINUTES ERROR_CODE
----------- --------------------------------------------
           1 REBAL RUN           1          1        281    1097936        351
       3127

使用下面的命令查看剩余时间
SQL> select EST_MINUTES from v$asm_operation;

可以考虑使用下面的命令提高响应级别来缩短时间

SQL>  alter diskgroup data rebalance power 5;

SQL> select * from v$asm_operation;查看没有输出,全部同步完成。

从diskgroup删掉原来的硬盘
SQL> alter diskgroup data drop disk 'asm_lv1';
SQL> alter diskgroup data drop disk 'asm_lv2';

去掉asm标记


/etc/init.d/oracleasm deletedisk asm_lv1

/etc/init.d/oracleasm deletedisk asm_lv2

因为硬件的原因,又重新分区,分区的时候因为硬盘是3TB的,fdisk不能使用,最后用的lvm。
pvcreate /dev/sdb
pvdisplay
vgcreate datavg /dev/sdb
lvcreate -n lvdata01 -L 300g datavg
lvcreate -n lvdata02 -L 300g datavg
lvcreate -n lvdata03 -L 300g datavg
lvcreate -n lvdata04 -L 300g datavg
lvcreate -n lvdata05 -L 300g datavg
lvcreate -n lvdata06 -L 300g datavg
lvcreate -n lvdata07 -L 300g datavg
lvcreate -n lvdata08 -L 300g datavg
lvcreate -n lvdata09 -L 300g datavg
lvcreate -n lvdata10 -L 300g datavg
vgdisplay /dev/datavg

asm标记

/etc/init.d/oracleasm createdisk asm_lv01 /dev/mapper/datavg-lvdata01
/etc/init.d/oracleasm createdisk asm_lv02 /dev/mapper/datavg-lvdata02
/etc/init.d/oracleasm createdisk asm_lv03 /dev/mapper/datavg-lvdata03
/etc/init.d/oracleasm createdisk asm_lv04 /dev/mapper/datavg-lvdata04
/etc/init.d/oracleasm createdisk asm_lv05 /dev/mapper/datavg-lvdata05
/etc/init.d/oracleasm createdisk asm_lv06 /dev/mapper/datavg-lvdata06
/etc/init.d/oracleasm createdisk asm_lv07 /dev/mapper/datavg-lvdata07
/etc/init.d/oracleasm createdisk asm_lv08 /dev/mapper/datavg-lvdata08
/etc/init.d/oracleasm createdisk asm_lv09 /dev/mapper/datavg-lvdata09

用图形界面创建的asm磁盘组,这次选择了正确的冗余方式。

开始进行rman的数据迁移,保证数据库是归档模式。测试新建了一个表空间,把数据文件迁移。
backup as  copy datafile 306 format '+newdata';
sql 'alter database datafile 306 offline';
switch datafile 306 to copy;
recover datafile 306;
sql 'alter database datafile 306 online';

然后编写脚本,用上面的方法把数据文件都弄到中转存储上,除了1号和3号数据文件,即system和undo文件。
添加temp文件,放在新的位置。然后删除掉。
添加日志组,放在新的位置。然后切换日志组,并删除掉。
因为操作不熟,所以后面多启了几次数据库,可以一次搞定。
切换system和undo文件
startup mount;
rman里面执行
backup as  copy datafile 1 format '+newdata';
switch datafile 1 to copy;
backup as  copy datafile 3 format '+newdata';
switch datafile 3 to copy;
alter database open;
所有数据文件搞定。
create pfile='/tmp/0325.ora' from spfile;
控制文件比较难搞,即使是mount方式下,使用backup as copy current controfile命令和copy current controfile必须要open resetlogs;
open resetlogs也无所谓,但是总想不那么搞。中间考虑过使用asm的ftp进行文件传输。最后忽然想到使用asmcmd工具中的cp。
把数据库停掉,在asm里面cp控制文件。
第一次使用cp命令,报错,差了一下是因为cp里面原文件带了一串数字,目标不能带数字,改成下面的命令,就ok了。
cp +DATA/rmdb/CONTROLFILE/current.256.831058221 +NEWDATA/rmdb/CONTROLFILE/current.ctl
修改pfile的相关内容,全部完成。
最后还是发现一个问题,就是asm实例的初始化文件居然在旧的盘组里面,创建pfile,然后启动,创建spfile,为了省事,直接把spfile不放到asm里面,放到
dbs目录里面,简单。
现在数据文件都回到原有硬盘,但磁盘组的冗余属性已经改成外部冗余了。
把中转磁盘组dismount一段时间,没有问题,干掉,ok,搞完。


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

转载于:http://blog.itpub.net/13337857/viewspace-1474947/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值