Several weeks ago I patched a 12.2 Oracle RAC and got several issues, I realized there were some key points I should follow during the RAC patching and list them here.
1. When patching the whole systems, I mean both the clusterware and the database home, please unzip the GI patch using GRID owner not DB owner.
2. Do not put the unzipped files under /home on Linux platforms. The unzipped files should be access by both grid and oracle.
3. When updating the Opatch, please make sure the folder under the ORACLE_HOME could be accessed by their corresponding owners. I believe 'chown -R grid:oinstall $ORACLE_HOME/OPatch' (GRID home) and 'chown -R oracle:oinstall $ORACLE_HOME/OPatch' (DB home) could be used for this purpose.
4. Use opatchauto if possible as the failed action could be resumed by 'opatchauto resume'.
5. Some security guides suggest remove some privileges from the public role. According to Oracle best practices, if such privileges would be removed, then they should be granted to all other users or roles before the remove. While not every one did this so maybe you would get some errors when executing the post patching db script.
6. export PATH=$GRID_HOME/perl/bin:$PATH:$GRID_HOME/OPatch. Sometimes the perl program on the Linux system worked abnormally and we could use the perl under the ORACLE_HOME to avoid such possible issue.