Getting ORA-01031 "insufficient privileges" during 12.2.1.3 RCU
Problem:
When running the Repository Configuration Utility (RCU) for Oracle Fusion Middleware 12.2.1.3, you may receive the following error during the creation process in the GUI:
ORA-01031: insufficient privileges
The rcu.log file may show entries that look like this:
Tue Jul 9 23:55:51.780 GMT 2019 ERROR assistants.rcu.backend.action.AbstractAction: oracle.sysman.assistants.rcu.backend.action.AbstractAction::handleNonIgnorableError: Received Non-Ignorable Error: ORA-01031: insufficient privileges
File:/u01/oracle/middlewareTEST/soa/common/sql/soainfra/sql/oracle/createuser_grant_privs_oracle.sql
Statement:GRANT execute on dbms_utility to DELETETHIS_SOAINFRA
Tue Jul 9 23:55:55.545 GMT 2019 ERROR assistants.common.dbutil.jdbc.JDBCEngine: oracle.sysman.assistants.common.dbutil.jdbc.JDBCEngine::onException: SQLException: ORA-01031: insufficient privileges
java.sql.SQLSyntaxErrorException: ORA-01031: insufficient privileges
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:494)
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:446)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1054)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:623)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:252)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:612)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:226)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:59)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:910)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1119)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3780)
at oracle.jdbc.driver.T4CPreparedStatement.executeInternal(T4CPreparedStatement.java:1343)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3887)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1079)
at oracle.sysman.assistants.common.dbutil.jdbc.JDBCEngine.runSqlStatement(JDBCEngine.java:1272)
at oracle.sysman.assistants.common.dbutil.jdbc.JDBCEngine.callRunSqlStatement(JDBCEngine.java:931)
at oracle.sysman.assistants.common.dbutil.jdbc.JDBCEngine.executeSql(JDBCEngine.java:950)
at oracle.sysman.assistants.common.dbutil.jdbc.JDBCEngine.executeSql(JDBCEngine.java:925)
at oracle.sysman.assistants.common.dbutil.jdbc.OracleDDLStatement.execute(ANSISQLStatementType.java:713)
at oracle.sysman.assistants.common.dbutil.jdbc.JDBCEngine.executeNextSQLStatement(JDBCEngine.java:1785)
at oracle.sysman.assistants.common.dbutil.jdbc.JDBCEngine.parseNexecuteScript(JDBCEngine.java:1688)
at oracle.sysman.assistants.rcu.backend.action.JDBCAction.perform(JDBCAction.java:424)
at oracle.sysman.assistants.rcu.backend.task.AbstractCompTask.execute(AbstractCompTask.java:255)
at oracle.sysman.assistants.rcu.backend.task.ActualTask.run(TaskRunner.java:346)
at java.lang.Thread.run(Thread.java:748)
Caused by: Error : 1031, Position : 17, Sql = GRANT execute on dbms_lob to DELETETHIS_SOAINFRA, OriginalSql = GRANT execute on dbms_lob to DELETETHIS_SOAINFRA, Error Msg = ORA-01031: insufficient privileges
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:498)
... 24 more
Solution:
When running the RCU, make sure that account you select has the SYSDBA role.
Depending on the Oracle Fusion Middleware components being installed, you will need to use the "SYSDBA" role and not the "Normal" role.
In the screenshot, you can observe the message, "One or more components may require SYSDBA for the operation to succeed."