Oracle Errors – ORA-48108 & ORA-01034

oracleoracle-11gsolaris

I'm trying to set up a database on a Solaris 10 platform that had its database corrupted before. Due to the lack of backups, I was forced to reinstall Oracle server. Currently I'm facing an issue where answers I have found keep sending me in loops.

I opened sqlplus, and saw that it was connected to an idle instance, so I performed the STARTUP command. This led me to the following errors:

ORA-48108: invalid value given for the diagnostic_dest init.ora parameter
ORA-48140: the specified ADR Base directory does not exist 
           [/export/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/<ORACLE_BASE>]

So after some googling, I was told to try changing the diagnostic_dest via the following: ALTER SYSTEM SET diagnostic_dest='u01/app/oracle';, which was equivalent to setting the diagnostic_dest to my ORACLE_BASE.

However, the error below occurred:

ORA-01034: ORACLE not available

After some googling again, I found that the solution was to start the database (which I can't)! I have no idea how I should proceed from here. Any help will be much appreciated. If any other information is required, I will gladly update it in the OP.

I have tried restarting lsnrctl, but it doesn't seem to help.

I would change all the default parameters within the file locations, but from what I found, the init.ora file which was supposed to be used already has diagnostic_dest='<ORACLE_BASE>', the spfile.ora file also has diagnostic_dest='/u01/app/oracle'. I'm really lost as to how I should carry on.

Best Answer

You can not use ALTER SYSTEM when the instance is not started, but you can not start the instance because of an incorrect parameter value. Create a PFILE (if you do not already have one), edit that, then start the instance.

$ sqlplus / as sysdba
SQL> create pfile from spfile;
SQL> exit
$ vi $ORACLE_HOME/dbs/init${ORACLE_SID}.ora

Set the value of diagnostic_dest as required, then save the file.

$ sqlplus / as sysdba
SQL> create spfile from pfile;
SQL> startup

Note: the directory must exist.

Answer to comment:

For UNIX or Linux, the platform-specific default location (directory) for the SPFILE and text initialization parameter file is:

$ORACLE_HOME/dbs

Oracle Database locates your initialization parameter file by examining filenames in the following order:

  1. spfile$ORACLE_SID.ora
  2. spfile.ora
  3. init$ORACLE_SID.ora

Or, for a test, you can startup the instance by manually specifying the pfile, for example:

SQL> startup pfile=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initORCL.ora