RMAN restore on ASM fails ORA-12547: TNS:lost contact, WARNING: ASMB0 exiting with error

Problem:

Our client was not able to restore controlfile on +FRA diskgroup:

RMAN> restore controlfile to '+FRA' from '<backup file location>';
....
RMAN-03002 failure of restore command at 2021/05/24 19:12:19
ORA-19870: error while restoring backup piece 
ORA-19504: failed to create file '+FRA'
ORA-17502: ksfdcre:4 Failed to create file +FRA
ORA-15001: diskgroup "FRA" does not exist or is not mounted
ORA-12547: TNS:lost contact
ORA-12547: TNS:lost contact

Reason:

oracle binary under GI home did not have correct permissions:

[grid@rac1 bin]$ ll oracle
-rwxr-x--x 1 grid oinstall 420332360 Oct 13  2020 oracle

Solution:

Change permissions to 6751 and retry the restore:

[grid@rac1 bin]$ chmod 6751 oracle

[grid@rac1 bin]$ ll oracle
-rwsr-s--x 1 grid oinstall 420332360 Oct 13  2020 oracle

ORA-15045: ASM file name ‘+DATA’ is not in reference form

Error Message:

RMAN-06136: ORACLE error from auxiliary database: ORA-00200: control file could not be created
ORA-00202: control file: ‘+DATA’
ORA-15045: ASM file name ‘+DATA’ is not in reference form
ORA-17502: ksfdcre:5 Failed to create file +DATA
ORA-15081: failed to submit an I/O operation to a dis

Cause:

There are permissions problem.

Solution:

The following solution helped me, hope be the same for you.

[oracle@node2  ~] ls -la $ORACLE_HOME/bin/oracle

-r-sr-s–x 1 oracle oinstall  /u01/app/oracle/product/11.2.0/db_1/bin/oracle

[oracle@node2  ~] su –
Password:

[root@node2  ~] chown oracle:asmadmin  /u01/app/oracle/product/11.2.0/db_1/bin/oracle

[root@node2  ~] ls -la  /u01/app/oracle/product/11.2.0/db_1/bin/oracle

-r-xr-x–x 1 oracle asmadmin  /u01/app/oracle/product/11.2.0/db_1/bin/oracle

[root@node2  ~] chmod a+s  /u01/app/oracle/product/11.2.0/db_1/bin/oracle

[root@node2  ~] ls -la  /u01/app/oracle/product/11.2.0/db_1/bin/oracle

-r-sr-s–x 1 oracle asmadmin  /u01/app/oracle/product/11.2.0/db_1/bin/oracle

Note:

[root@node1 ~]# id oracle
uid=501(oracle) gid=500(oinstall) groups=500(oinstall),501(dba),503(asmdba),505(oper)
[root@node1 ~]# id grid
uid=500(grid) gid=500(oinstall) groups=500(oinstall),501(dba),502(asmadmin),503(asmdba),504(asmoper)

Oracle is oracle software owner and Grid user is grid software owner. So I have two different users.