ORA-4031 During Startup Nomount using RMAN without parameter file (PFILE) (Doc ID 1176443.1)
APPLIES TO:
Oracle Database - Enterprise Edition - Version 11.2.0.1 and later
Oracle Database Cloud Schema Service - Version N/A and later
Oracle Database Exadata Express Cloud Service - Version N/A and later
Oracle Database Exadata Cloud Machine - Version N/A and later
Oracle Cloud Infrastructure - Database Service - Version N/A and later
Information in this document applies to any platform.
***Checked for relevance on 09-Oct-2014***
SYMPTOMS
RMAN startup nomount failed with ORA-4031
Customer was testing RMAN backup/restore in Exadata.
Customer firstly backup the database to tape and then remove all the datafiles, spfile, controlfiles for testing.
Then during the recover, customer connected RMAN with nocatalog and try to "startup nomount", then ORA-4031 occured.
==================== Log ========================
oracle@hkfop011db01:/<PATH>
$ export ORACLE_SID=<SID_NAME>
oracle@test011db01:/<PATH>
$ rman target / nocatalog
Recovery Manager: Release 11.2.0.1.0 - Production on Thu Jul 8 20:45:10 2010
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
connected to target database (not started)
RMAN> startup nomount
startup failed: ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/<PATH>/<INIT.ora>'
starting Oracle instance without parameter file for retrieval of spfile
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of startup command at 07/08/2010 20:45:19
RMAN-04014: startup failed: ORA-04031: unable to allocate 111264 bytes of shared memory ("shared pool","unknown object","sga heap(1,0)","KEWS sesstat values")
CAUSE
RMAN has failed to start a dummy instance without pfile.
This is reported in Bug 9680987 - RMAN CANNOT START DATABASE WITHOUT PARAMETER FILE
SOLUTION
There are two possible solutions:
1- Create temporary init.ora file (/<PATH>/<INIT.ora>) with the following parameters:
db_name=<db_name>
large_pool_size=100m
shared_pool_size=250m
db_cache_size=10m
2- Set environment variable ORA_RMAN_SGA_TARGET before executing rman. For example:
$ export ORA_RMAN_SGA_TARGET=350
=================================================================================================
如下示例:
RMAN> startup nomount ;
startup failed: ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora'
starting Oracle instance without parameter file for retrieval of spfile
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of startup command at 03/12/2019 06:39:27
RMAN-04014: startup failed: ORA-04031: unable to allocate 1048608 bytes of shared memory ("shared pool","unknown object","sga heap(1,0)","row cache")
[oracle@localhost ~]$ export ORACLE_SID=xxx
[oracle@localhost ~]$ export ORA_RMAN_SGA_TARGET=350
[oracle@prim backup]$
[oracle@prim backup]$ rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on Sun Jun 3 05:35:33 2018
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: DUMMY (not mounted)
==========================================================================================================