今天碰到一个时期,一个机器上安装了11.2 单实例的数据库,采用了asm作为存储,diskgroup有两个DATA,RAYKTDG
对应的磁盘分别是/dev/rdisk2, /dev/rdisk5。由于业务需要,将另外一台机器上一个asm磁盘copy到本地,/dev/rdisk4。
问题出现了:
新的磁盘里面的diskgroup 也叫DATA,这时候会看到新的diskgroup并没有被asm识别到。
百度一下,发现11.2之后diskgroup可以用renamedg命令改名,于是想把原先的DATA改名为DATAOLD,里面的数据暂时不用。
要改名,需要先diskmount,
sqlplus / as sysasm
alter diskgroup data dismount;
ORA-15027: active use of diskgroup "DATA" precludes its dismount
怎么也不行,
原来默认情况下,Oracle使用asm的第一个磁盘组存放asm实例的参数文件,需要把参数文件移走才可以。
sqlplus / as sysasm
create pfile from spfile;
create spfile='+RAYKTDG' from pfile;
利用asmcmd到新的磁盘组里面找到新的spfile
然后
srvctl modify asm -p <新的spfile>
sqlplus / as sysasm
shutdown immediate;
startup nomount;
这时候DATA已经dismount了。
再执行renamedg命令
renamedg dgname=DATA newdgname=DATAOLD asm_diskstring='/dev/rdisk2' verbose=true
改完之后,再去查v$asm_diskgroup马上发现diskgroup变成
DATAOLD
DATA
RAYKTDG
3个了,原先只有DATA跟RAYKTDG
这时候,新的磁盘已经挂接上了,可以使用了。