Oracle 11g rac 生产环境asm磁盘迁移
一.配置存储
CRS | DATA | ARCH | |
---|---|---|---|
旧存储 | /dev/sddlmaa | /dev/sddlmai | /dev/sddlmag |
OCR | DATA | ARCH | |
---|---|---|---|
新存储 | /dev/sddlmab | /dev/sddlmaj | /dev/sddlmah |
/dev/sddlmad | |||
/dev/sddlmaf |
先配置好存储设备,使操作系统能够看到新增加的硬盘。
[root@racdb1 rules.d]# fdisk -l |grep /dev/sddlm
Disk /dev/sddlmaa: 2147 MB, 2147483648 bytes, 4194304 sectors
Disk /dev/sddlmab: 2147 MB, 2147483648 bytes, 4194304 sectors
Disk /dev/sddlmac: 2147 MB, 2147483648 bytes, 4194304 sectors
Disk /dev/sddlmad: 2147 MB, 2147483648 bytes, 4194304 sectors
Disk /dev/sddlmae: 2147 MB, 2147483648 bytes, 4194304 sectors
Disk /dev/sddlmaf: 2147 MB, 2147483648 bytes, 4194304 sectors
Disk /dev/sddlmag: 214.7 GB, 214748364800 bytes, 419430400 sectors
Disk /dev/sddlmah: 214.7 GB, 214748364800 bytes, 419430400 sectors
Disk /dev/sddlmai: 536.9 GB, 536870912000 bytes, 1048576000 sectors
Disk /dev/sddlmaj: 536.9 GB, 536870912000 bytes, 1048576000 sectors
查看grid用户已经识别的硬盘
[root@racdb1 rules.d]# ll /dev/sddlm* | grep grid
brw-rw---- 1 grid asmadmin 251, 0 Sep 16 15:46 /dev/sddlmaa
brw-rw---- 1 grid asmadmin 251, 32 Sep 10 08:22 /dev/sddlmac
brw-rw---- 1 grid asmadmin 251, 64 Sep 10 08:22 /dev/sddlmae
brw-rw---- 1 grid asmadmin 251, 96 Sep 16 15:46 /dev/sddlmag
brw-rw---- 1 grid asmadmin 251, 128 Sep 16 15:46 /dev/sddlmai
二、配置udev(两个节点都需要操作)
1.修改规则文件
[root@racdb1 ~]# cp -r /etc/udev/rules.d/99-oracle-asmdevices.rules /etc/udev/rules.d/99-oracle-asmdevices.rules.bak
[root@racdb2 ~]# vim /etc/udev/rules.d/99-oracle-asmdevices.rules
SUBSYSTEM=="block", KERNEL=="sddlmaa", GROUP="asmadmin", OWNER="grid", MODE="0660"
SUBSYSTEM=="block", KERNEL=="sddlmac", GROUP="asmadmin", OWNER="grid", MODE="0660"
SUBSYSTEM=="block", KERNEL=="sddlmae", GROUP="asmadmin", OWNER="grid", MODE="0660"
SUBSYSTEM=="block", KERNEL=="sddlmag", GROUP="asmadmin", OWNER="grid", MODE="0660"
SUBSYSTEM=="block", KERNEL=="sddlmai", GROUP="asmadmin", OWNER="grid", MODE="0660"
SUBSYSTEM=="block", KERNEL=="sddlmab", GROUP="asmadmin", OWNER="grid", MODE="0660"
SUBSYSTEM=="block", KERNEL=="sddlmad", GROUP="asmadmin", OWNER="grid", MODE="0660"
SUBSYSTEM=="block", KERNEL=="sddlmaf", GROUP="asmadmin", OWNER="grid", MODE="0660"
SUBSYSTEM=="block", KERNEL=="sddlmah", GROUP="asmadmin", OWNER="grid", MODE="0660"
SUBSYSTEM=="block", KERNEL=="sddlmaj", GROUP="asmadmin", OWNER="grid", MODE="0660"
2.加载规则文件
加载规则文件(如果规则文件修改后只需加载规则文件无需重新启动udev)
/sbin/udevadm control --reload-rules
/sbin/udevadm trigger --type=devices --action=change
3.检查磁盘可用性
[root@racdb1 ~]# ll /dev/sddlm* | grep grid
brw-rw---- 1 grid asmadmin 251, 0 Sep 20 10:06 /dev/sddlmaa
brw-rw---- 1 grid asmadmin 251, 16 Sep 20 10:06 /dev/sddlmab
brw-rw---- 1 grid asmadmin 251, 32 Sep 20 10:06 /dev/sddlmac
brw-rw---- 1 grid asmadmin 251, 48 Sep 20 10:06 /dev/sddlmad
brw-rw---- 1 grid asmadmin 251, 64 Sep 20 10:06 /dev/sddlmae
brw-rw---- 1 grid asmadmin 251, 80 Sep 20 10:06 /dev/sddlmaf
brw-rw---- 1 grid asmadmin 251, 96 Sep 20 10:06 /dev/sddlmag
brw-rw---- 1 grid asmadmin 251, 112 Sep 20 10:06 /dev/sddlmah
brw-rw---- 1 grid asmadmin 251, 128 Sep 20 10:06 /dev/sddlmai
brw-rw---- 1 grid asmadmin 251, 144 Sep 20 10:06 /dev/sddlmaj
[grid@racdb1 ~]$ asmcmd lsdsk
/dev/sddlmaa
/dev/sddlmag
/dev/sddlmai
[grid@racdb1 ~]$ asmcmd lsdsk --candidate
/dev/sddlmab
/dev/sddlmac
/dev/sddlmad
/dev/sddlmae
/dev/sddlmaf
/dev/sddlmah
/dev/sddlmaj
SQL> sqlplus / as sysdba
set linesize 200 pages 1000;
col name format a16;
col path format a30;
col HEADER_STATUS format a16;
select name,path,HEADER_STATUS,TOTAL_MB from v$asm_disk;
NAME PATH HEADER_STATUS TOTAL_MB
---------------- ------------------------------ ---------------- ----------
/dev/sddlmae CANDIDATE 0
/dev/sddlmac CANDIDATE 0
/dev/sddlmaf CANDIDATE 0
/dev/sddlmad CANDIDATE 0
/dev/sddlmab CANDIDATE 0
/dev/sddlmah CANDIDATE 0
/dev/sddlmaj CANDIDATE 0
CRS_0000 /dev/sddlmaa MEMBER 2048
DATA_0000 /dev/sddlmai MEMBER 512000
ARCH_0000 /dev/sddlmag MEMBER 204800
10 rows selected.
三、创建新的ocr磁盘组orc
sqlplus / as sysasm
col name form a20
col COMPATIBILITY form a20
col DATABASE_COMPATIBILITY form a20
select name,state,total_mb,free_mb,COMPATIBILITY,DATABASE_COMPATIBILITY from v$asm_diskgroup;
NAME COMPATIBILITY DATABASE_COMPATIBILI
-------------------- -------------------- --------------------
ARCH 11.2.0.0.0 10.1.0.0.0
CRS 11.2.0.0.0 10.1.0.0.0
DATA 11.2.0.0.0 10.1.0.0.0
###创建磁盘组compatible与之前查询出来的结果保持一致。
SQL> create diskgroup ocr external redundancy disk '/dev/sddlmab', '/dev/sddlmad','/dev/sddlmaf' attribute 'compatible.rdbms'='10.1.0.0.0','compatible.asm'='11.2.0.0.0';
Diskgroup created.
四、备份原ocr和votedisk
[root@racdb1 ~]# mkdir -p /backup/20220909
[root@racdb1 ~]# /u01/app/11.2.0/grid/bin/ocrconfig -export /backup/20220909/ocr_20220909.exp
dd if=/dev/sddlmaa of=/backup/20220909/votedisk_20220909_ocr1.bak
五、迁移OCR磁盘组
1.查看原OCR为+CRS
[grid@racdb1 ~]$ ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 3
Total space (kbytes) : 262120
Used space (kbytes) : 2892
Available space (kbytes) : 259228
ID : 696587786
Device/File Name : +CRS
2.另一个需要先挂载OCR磁盘组
SQL> alter diskgroup OCR mount;
Diskgroup altered.
3.添加为OCR添加磁盘组OCR
[root@racdb1 ~]$ /u01/app/11.2.0/grid/bin/ocrconfig -add +OCR
4.再次查看OCR已经多了一个磁盘组OCR了。
[grid@racdb1 ~]$ ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 3
Total space (kbytes) : 262120
Used space (kbytes) : 2888
Available space (kbytes) : 259232
ID : 696587786
Device/File Name : +CRS
Device/File integrity check succeeded
Device/File Name : +OCR
Device/File integrity check succeeded
Device/File not configured
Device/File not configured
Device/File not configured
Cluster registry integrity check succeeded
Logical corruption check bypassed due to non-privileged user
[grid@racdb1 ~]$ more /etc/oracle/ocr.loc
#Device/file getting replaced by device +OCR
ocrconfig_loc=+CRS
ocrmirrorconfig_loc=+OCR
local_only=false
5.替换OCR
[root@racdb1 ~]# /u01/app/11.2.0/grid/bin/ocrconfig -replace +CRS -replacement +OCR
PROT-29: The Oracle Cluster Registry location is already configured
6.删除原来的OCR:CRS磁盘组。
/u01/app/11.2.0/grid/bin/ocrconfig -delete +CRS
7.再次查看ocr只看到磁盘组OCR了。
[grid@racdb1 ~]$ ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 3
Total space (kbytes) : 262120
Used space (kbytes) : 2888
Available space (kbytes) : 259232
ID : 696587786
Device/File Name : +OCR
创建pfile
create pfile=‘/u01/app/11.2.0/grid/dbs/asmpfile.ora’ from spfile;
create spfile=‘+OCR’ from pfile=‘/u01/app/11.2.0/grid/dbs/asmpfile.ora’;
六、迁移votedisk
[grid@racdb1 ~]$ crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 217fca4d97bc4fe7bffafa8f995201e3 (/dev/sddlmaa) [CRS]
Located 1 voting disk(s).
[grid@racdb1 ~]$ crsctl replace votedisk +OCR
Successful addition of voting disk 2ebcd42944624f57bfe06f96692b66fa.
Successful deletion of voting disk 217fca4d97bc4fe7bffafa8f995201e3.
Successfully replaced voting disk group with +OCR.
CRS-4266: Voting file(s) successfully replaced
[grid@racdb1 ~]$ crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 2ebcd42944624f57bfe06f96692b66fa (/dev/sddlmab) [OCR]
Located 1 voting disk(s).
六、删除原来的OCR和votedisk:CRS磁盘组。
col c form a30
set linesize 200
col name form a20
col COMPATIBILITY form a20
col DATABASE_COMPATIBILITY form a20
select inst_id,name||' '||path c,HEADER_STATUS,mount_status from gv$asm_disk order by 1,2;
select name,state,total_mb,free_mb,COMPATIBILITY,DATABASE_COMPATIBILITY from v$asm_diskgroup;
停止crs
/u01/app/11.2.0/grid/bin/crsctl stop crs
启动crs
/u01/app/11.2.0/grid/bin/crsctl start crs
/u01/app/11.2.0/grid/bin/crsctl stat res -t
卸载
SQL> alter diskgroup CRS dismount;
另一节点
停止crs
/u01/app/11.2.0/grid/bin/crsctl stop crs
启动crs
/u01/app/11.2.0/grid/bin/crsctl start crs
/u01/app/11.2.0/grid/bin/crsctl stat res -t
删除磁盘组
SQL> drop diskgroup ocr including contents;
Diskgroup dropped.
七、迁移数据库存储
[grid@racdb1 ~]$ sqlplus / as sysasm
alter diskgroup data add disk '/dev/sddlmaj' drop disk DATA_0000 rebalance power 10;
##ASM_POWER_LIMIT范围是0~11,0:表示不进行rebalance,值越大, rebalance速度越快。
##该命令相当于下面2条命令
##alter diskgroup DATA add disk '/dev/sddlmaj' rebalance power 10;
##alter diskgroup DATA drop disk 'DATA_0000' rebalance power 10;
select sofar,EST_MINUTES from gv$asm_operation;
##如果没有数据代表sam磁盘平衡操作完成。
alter diskgroup ARCH add disk '/dev/sddlmah' drop disk ARCH_0000 rebalance power 10;
select sofar,EST_MINUTES from gv$asm_operation;
##如果没有数据代表sam磁盘平衡操作完成。
八、清除udev规则文件多余部分。
查询目前数据库用到的asm磁盘信息:
col c form a30
set linesize 200
col name form a20
col COMPATIBILITY form a20
col DATABASE_COMPATIBILITY form a20
select inst_id,name||' '||path c,HEADER_STATUS,mount_status from gv$asm_disk order by 1,2;
select name,state,total_mb,free_mb,COMPATIBILITY,DATABASE_COMPATIBILITY from v$asm_diskgroup;
在节点1删除多余的asm磁盘信息。
cp /etc/udev/rules.d/99-oracle-asmdevices.rules /etc/udev/rules.d/99-oracle-asmdevices.rules.bak2
vim /etc/udev/rules.d/99-oracle-asmdevices.rules
加载规则文件(如果规则文件修改后只需加载规则文件无需重新启动udev)
/sbin/udevadm control --reload-rules
/sbin/udevadm trigger --type=devices --action=change