I got ” ORA-01617: cannot mount: 2 is not a valid thread number ” error in Oracle database during startup 2 nodes Oracle RAC.
ORA-01617: cannot mount: 2 is not a valid thread number
Details of error are as follows.
SQL> startup mount ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance ORACLE instance started. Total System Global Area 2.6844E+11 bytes Fixed Size 30150176 bytes Variable Size 9.6637E+10 bytes Database Buffers 1.7126E+11 bytes Redo Buffers 506720256 bytes ORA-01617: cannot mount: 2 is not a valid thread number Description: cannot mount: string is not a valid thread number Cause: The INIT.ORA parameter "thread" is not between 1 and the number of threads allowed by the control file. Action: Shut down the instance, change the INIT.ORA parameter and startup, or resize the thread record and/or checkpoint progress record sections of the control file.
The ORA-01617 error is related with the Oracle RAC parameters in the pfile/spfile used between instances do not have a proper value for thread parameter specified for each instance.
To solve this error, create pfile from spfile and check Thread, instance and cluster_database parameters.
Cluster_database was set true and <INSTANCE2>.thread=2, <INSTANCE1>.thread=1 in my case. There is only missing of thread 2’s logfile, I have added it as follows, then it is solved.
alter database add logfile thread 2 group 10 '+RECO' size 1024M,group 11 '+RECO' size 1024M,group 12 '+RECO' size 1024M;
Ensure spfile or pfile configured properly and having proper value for thread parameter specified for each instance.
If spfile is used, create pfile and check the value for thread parameter assigned for each instance
Example:
create pfile='/tmp/init<database>.ora' from spfile; Thread value to show for 2 node cluster: <INSTANCE2>.thread=2 <INSTANCE1>.thread=1
Alternately, start the instance manually using sqlplus (in nomount state if mount state gives error) and check the value of below parameter from each instance
SQL> show parameter pfile == > shows the pfile/spfile used, recommended common spfile SQL> show parameter thread ==> shows thread assigned for the instance and to be different between instances SQL> show parameter cluster_database ==> For RAC, the value to be true
If the thread value shows properly assigned for each instance, check whether each thread is added already in database.
SQL> select thread#,enabled from v$thread; THREAD# ENABLED ---------- -------- 1 PUBLIC 2 PUBLIC
If not, add the thread.
Example:
alter database add logfile thread 2 group 5 '+DATA' size 1000M, group 6 '+DATA' size 1000M; alter database enable public thread 2;
Do you want to learn Oracle Database for Beginners, then Click and read the following articles.
Oracle Database Tutorials for Beginners ( Junior Oracle DBA )