The oerr executable is functional when 12cR2 is installed on Windows.

However, oerr requires the ORACLE_HOME variable to be set.  Other executables don’t need this on Windows. It is better to leave ORACLE_HOME unset in the system wide variables for when there are multiple Oracle homes installed on the server.
In 12.1, oerr worked without setting ORACLE_HOME (assuming the MSG files had been copied into place).

C:\ora\12.1.0_db1\BIN>set ORACLE_HOME
 Environment variable ORACLE_HOME not defined

C:\ora\12.1.0_db1\BIN>oerr ora 1
 00001, 00000, "unique constraint (%s.%s) violated"
 // *Cause: An UPDATE or INSERT statement attempted to insert a duplicate key.
 // For Trusted Oracle configured in DBMS MAC mode, you may see
 // this message if a duplicate entry exists at a different level.
 // *Action: Either remove the unique restriction or do not insert the key.

In 12.2 an error is returned:

 C:\ora\12.2.0_db1\bin>set ORACLE_HOME 
 Environment variable ORACLE_HOME not defined 

 C:\ora\12.2.0_db1\bin>oerr ora 1 
 ORACLE_HOME not set. Contact Oracle Support Services.

At first I thought the ORACLE_HOME had to be set manually to allow the 12.2 oerr to find error messages for other ORACLE_HOME/versions.  This seems inconsistent with the behaviour of other Oracle executables on Windows.  Surely it could have used oerr‘s location the as the default ORACLE_HOME.

The oerr file is actually a batch file.  Comparing 12.1 to 12.2, the introduction of the problem becomes clear, as does the workaround.

12.1

@echo off
rem  
rem $Header: buildtools/scripts/oerr.sbs /main/1 2011/10/09 11:21:13 pkharter Exp $
rem
rem oerr.sbs
rem 
rem Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. 
rem
rem    NAME
rem      oerr.sbs - proto driver script for oerr.pl
rem
rem    DESCRIPTION
rem      Proto Windows driver for oerr, which is installed as oerr.bat
rem      and has C:\ora\12.1.0_db1 expanded by OUI.  oerr.bat invokes the
rem      new oerr.pl script, passing its command line arguments along.
rem
rem    NOTES
rem      
rem
rem    MODIFIED   (MM/DD/YY)
rem    pkharter    09/27/11 - code reviewer comments
rem    pkharter    09/27/11 - Creation
rem 
setlocal

set ORACLE_HOME=C:\ora\12.1.0_db1

if (%ORACLE_HOME%)==() (
    echo ORACLE_HOME not set.  Contact Oracle Support Services.
    goto out
)

%ORACLE_HOME%\perl\bin\perl %ORACLE_HOME%\bin\oerr.pl %1 %2 %3 %4 %5

:out
endlocal

12.2

@echo off
rem  
rem $Header: buildtools/scripts/oerr.sbs /main/2 2016/01/14 15:01:43 pkharter Exp $
rem
rem oerr.sbs
rem 
rem Copyright (c) 2011, 2015, Oracle and/or its affiliates. 
rem All rights reserved.
rem
rem    NAME
rem      oerr.sbs - proto driver script for oerr.pl
rem
rem    DESCRIPTION
rem      Proto Windows driver for oerr, which is installed as oerr.bat
rem      and has %ORACLE_HOME% expanded by OUI.  oerr.bat invokes the
rem      new oerr.pl script, passing its command line arguments along.
rem
rem    NOTES
rem      
rem
rem    MODIFIED   (MM/DD/YY)
rem    pkharter    12/17/15 - 16475009 - update to fix instantiation problem
rem                           for ORACLE_HOME
rem    pkharter    09/27/11 - code reviewer comments
rem    pkharter    09/27/11 - Creation
rem 
setlocal

set OH=%ORACLE_HOME%

if (%OH%)==() (
    echo ORACLE_HOME not set.  Contact Oracle Support Services.
    goto out
)

%OH%\perl\bin\perl %OH%\bin\oerr.pl %1 %2 %3 %4 %5

:out
endlocal

Workaround

@echo off
REM Determine ORACLE_HOME by the location of oerr.bat
REM  rather than relying on the environment variable
REM  which shouldn't be set system-wide in a multi-home server.

setlocal

if (%ORACLE_HOME%)==() (
  set ORACLE_HOME=%~dp0\..
)

%ORACLE_HOME%\perl\bin\perl %ORACLE_HOME%\bin\oerr.pl %1 %2 %3 %4 %5
endlocal