I got ” ORA-00600: internal error code, arguments: [kccsbck_first], [1], [2154662377] ” error in the Oracle database.
ORA-00600: internal error code, arguments: [kccsbck_first]
Details of error are as follows.
SQL*Plus: Release 19.0.0.0.0 - Production on Thu Jul 8 16:34:45 2021 Version 19.8.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Connected to an idle instance. SQL> startup ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance ORACLE instance started. Total System Global Area 6.1575E+10 bytes Fixed Size 30148208 bytes Variable Size 3.8789E+10 bytes Database Buffers 2.2549E+10 bytes Redo Buffers 207720448 bytes ORA-00600: internal error code, arguments: [kccsbck_first], [1], [2154662377], [], [], [], [], [], [], [], [], [] SQL>
ORA-00600: internal error code [kccsbck_first]
This ORA-00600 errors are related with the instance parameter ‘db_unique_name’ had different values on the instances of the RAC database.
The value for ‘db_unique_name’ is used by a (RAC) instance to register itself with the DLM (CSSD) when its about to mount the database. If not explicitly set ‘db_unique_name’ defaults to the database name.
In this particular case only the second instance had ‘db_unique_name’ set, so the first instance showed:
show parameter db_unique_nameNAME TYPE
------------------------------------ --------------------------------
VALUE
------------------------------
db_unique_name string
<DB_NAME>
while the second instance showed:
show parameter db_unique_nameNAME TYPE
------------------------------------ --------------------------------
VALUE
------------------------------
db_unique_name string
<DB_NAME_SB>
When the 2nd instance registered with the DLM it found that no other instance had yet registered this name so it assumed it was the 1st instance to mount the database (see alert log), however when opening the control file it found that another instance had already mounted it and hence it reports the ORA-600.
Please note that in 10gR2 the parameter ‘db_unique_name’ cannot be changed for a single instance, any attempt to do so would fail with:
SQL> alter system set db_unique_name = '<DB_NAME_SB>' scope=spfile sid='<SID1>';
*
ERROR at line 1:
ORA-32017: failure in updating SPFILE
ORA-16194: Modifying DB_UNIQUE_NAME requires SID='*' qualifier
If however the SPFILE is created from a PFILE which only contains the parameter for one instance – e.g.
<SID1>.db_unique_name = '<DB_NAME_SB>'
the mistake will go unnoticed.
To solve this error, Make sure ‘db_unique_name’ is the same for all RAC instances using this database.
If using a shared SPFILE there are basically 2 ways to correct the issue.
1) Change the SPFILE using the ‘ALTER SYSTEM’ command.
The following command(s) can be used to remove any existing incorrect settings in the SPFILE:
alter system reset db_unique_name scope=spfile sid='*';
alter system reset db_unique_name scope=spfile sid='<SID1>';
alter system reset db_unique_name scope=spfile sid='<SID2>';
...
alter system reset db_unique_name scope=spfile sid='<DB_NAME>';
Please note that some of the above commands may fail with error
ORA-32010: cannot find entry to delete in SPFILE
which can be ignored.
When done add the parameter ‘db_unique_name’ back into the SPFILE using
alter system set db_unique_name = '<DB_NAME_SB>' scope=spfile sid='*';
2) Alternatively the SPFILE can be re-created via the CREATE PFILE/SPFILE command, this however requires that all RAC instances using the SPFILE need to be shutdown.
First create a temporary pfile:
create pfile='/tmp/temp.ora' from spfile='<path_to_shared_spfile>';
Next edit ‘/tmp/temp.ora’ and remove any incorrect settings. When done re-create the SPFILE using;
create spfile='<path_to_shared_spfile>' from pfile='/tmp/temp.ora';
OR Try to Flush Buffer cache and Flush cache then try again as follows.
SQL> alter system flush shared_pool; SQL> alter system flush buffer_cache;
Do you want to learn Oracle Database for Beginners, then read the following articles.
https://ittutorial.org/oracle-database-19c-tutorials-for-beginners/