RMAN恢复识别不到ASM磁盘
一、故障现象
[oracle@racnode01 ~]$ rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on Fri Jan 7 20:56:31 2022
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: MYDB (not mounted)
RMAN> restore controlfile from '/tmp/rmanbak/full_MYDB_24_20220105_0o0ihev6_1_1';
Starting restore at 07-JAN-22
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=1 instance=mydb1 device type=DISK
channel ORA_DISK_1: restoring control file
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 01/07/2022 20:56:42
ORA-19870: error while restoring backup piece /tmp/rmanbak/full_MYDB_24_20220105_0o0ihev6_1_1
ORA-19504: failed to create file "+DATA"
ORA-17502: ksfdcre:4 Failed to create file +DATA
ORA-15001: diskgroup "DATA" does not exist or is not mounted
ORA-15040: diskgroup is incomplete
ORA-15040: diskgroup is incomplete
二、检查ASM磁盘信息
检查ASM磁盘信息正常
SQL> set linesize 200 pagesize 200
SQL> col path for a20
SQL> col name for a15
SQL> col failgroup for a15
SQL> select group_number,disk_number,failgroup,name,path,state,mount_status,total_mb,free_mb,os_mb from v$asm_disk;
GROUP_NUMBER DISK_NUMBER FAILGROUP NAME PATH STATE MOUNT_S TOTAL_MB FREE_MB OS_MB
------------ ----------- --------------- --------------- -------------------- -------- ------- ---------- ---------- ----------
3 0 DATA_0000 DATA_0000 /dev/asm-diskg NORMAL CACHED 10240 10192 10240
3 1 DATA_0001 DATA_0001 /dev/asm-diskh NORMAL CACHED 10240 10192 10240
2 1 FRA_0001 FRA_0001 /dev/asm-diskf NORMAL CACHED 4096 4056 4096
2 0 FRA_0000 FRA_0000 /dev/asm-diske NORMAL CACHED 4096 4048 4096
1 2 OCRVOTING_0002 OCRVOTING_0002 /dev/asm-diskd NORMAL CACHED 1024 680 1024
1 1 OCRVOTING_0001 OCRVOTING_0001 /dev/asm-diskc NORMAL CACHED 1024 676 1024
1 0 OCRVOTING_0000 OCRVOTING_0000 /dev/asm-diskb NORMAL CACHED 1024 676 1024
7 rows selected.
SQL> set linesize 200 pagesize 200
SQL> select group_number,name,state,type,total_mb,free_mb,required_mirror_free_mb rmfmb,usable_file_mb ufmb from v$asm_diskgroup;
GROUP_NUMBER NAME STATE TYPE TOTAL_MB FREE_MB RMFMB UFMB
------------ --------------- ----------- ------ ---------- ---------- ---------- ----------
1 OCRVOTING MOUNTED NORMAL 3072 2032 1024 504
2 FRA MOUNTED EXTERN 8192 8104 0 8104
3 DATA MOUNTED EXTERN 20480 20384 0 20384
三、检查Oracle用户权限
检查Oracle用户权限正常
[root@racnode01 ~]# id oracle
uid=2101(oracle) gid=2000(oinstall) groups=2000(oinstall),2021(asmdba),2031(dba),2032(oper)
[root@racnode01 ~]# id grid
uid=2100(grid) gid=2000(oinstall) groups=2000(oinstall),2020(asmadmin),2021(asmdba),2022(asmoper),2031(dba)
四、检查ASM磁盘权限
检查磁盘权限正常
[root@racnode01 ~]# ll /dev/asm*
brw-rw---- 1 grid asmadmin 8, 16 Jan 7 21:19 /dev/asm-diskb
brw-rw---- 1 grid asmadmin 8, 32 Jan 7 21:19 /dev/asm-diskc
brw-rw---- 1 grid asmadmin 8, 48 Jan 7 21:19 /dev/asm-diskd
brw-rw---- 1 grid asmadmin 8, 64 Jan 7 21:19 /dev/asm-diske
brw-rw---- 1 grid asmadmin 8, 80 Jan 7 20:56 /dev/asm-diskf
brw-rw---- 1 grid asmadmin 8, 96 Jan 7 21:19 /dev/asm-diskg
brw-rw---- 1 grid asmadmin 8, 112 Jan 7 20:56 /dev/asm-diskh
[root@racnode02 ~]# ll /dev/asm*
brw-rw---- 1 grid asmadmin 8, 16 Jan 7 21:19 /dev/asm-diskb
brw-rw---- 1 grid asmadmin 8, 32 Jan 7 21:19 /dev/asm-diskc
brw-rw---- 1 grid asmadmin 8, 48 Jan 7 21:19 /dev/asm-diskd
brw-rw---- 1 grid asmadmin 8, 64 Jan 7 17:19 /dev/asm-diske
brw-rw---- 1 grid asmadmin 8, 80 Jan 7 20:56 /dev/asm-diskf
brw-rw---- 1 grid asmadmin 8, 96 Jan 7 17:19 /dev/asm-diskg
brw-rw---- 1 grid asmadmin 8, 112 Jan 7 20:56 /dev/asm-diskh
五、检查Oracle二进制文件权限
检查发现$ORACLE_HOME/bin/oracle文件权限为oinstall而不是asmadmin,同时该文件需要授予6751权限和asmadmin属主
[root@racnode01 ~]# cd /u01/app/oracle/product/11.2.0/db_1/bin/
[root@racnode01 bin]# ll -d oracle
-rwsr-s--x 1 oracle oinstall 239501488 Jan 7 18:48 oracle
[root@racnode01 bin]# chown oracle.asmadmin oracle
[root@racnode01 bin]# chmod 6751 oracle
[root@racnode01 bin]# ll -d oracle
-rwsr-s--x 1 oracle asmadmin 239501488 Jan 7 18:50 oracle
[root@racnode02 ~]# cd /u01/app/oracle/product/11.2.0/db_1/bin/
[root@racnode02 bin]# ll -d oracle
-rwsr-s--x 1 oracle oinstall 239501488 Jan 7 18:52 oracle
[root@racnode02 bin]# chown oracle.asmadmin oracle
[root@racnode02 bin]# chmod 6751 oracle
[root@racnode02 bin]# ll -d oracle
-rwsr-s--x 1 oracle asmadmin 239501488 Jan 7 18:52 oracle
六、总结
因为没有使用DBCA建库,而是手工恢复数据库,该文件权限没有修改导致RMAN恢复报错,重新分配asmadmin和6751权限后,问题解决