This blog contains experience gained over the years of implementing (and de-implementing) large scale IT applications/software.

SQLPLUS ORA-01031: insufficient privileges as SYSDBA

This issue is commonly caused by the operating system group you are currently using, not having the correct permissions inside the Oracle binaries.  On UNIX, the Oracle binaries are always re-compiled after installation, with the group name of the “dba” group.  If your current user is not a member of that group, then you can’t use “AS SYSDBA”.  It’s a protection measure to restrict the O/S users that can access the database “AS SYSDBA”.
On Windows, the group is created as a local Windows group into which you need to add your user account (or group).  The local group name is not compiled into the Oracle binaries.

In UNIX, it’s possible when using SQL*Plus to connect to an idle instance AS SYSDBA, you get “ORA-01031: insufficient privileges” even though you have changed the $ORACLE_HOME/rdbms/lib/config.c file database group to match your UNIX group and re-compiled the Oracle binaries.

As specified in Oracle note 400459.1, you should move the old $ORACLE_HOME/rdbms/lib/config.o to config.o.old and then re-link oracle using “relink oracle”.

Check that a new config.o file is generated, before performing the “relink all”.

For some reason, using relink doesn’t always seem to trigger a rebuild of config.o.