It seems that lately, I have been getting around ORA-00600 errors when duplicating databases, and this will be a very short blog post on how I worked around ORA-00600 [KCBTSE_ENCDEC_TBSBLK_1]  when duplicating a PDB and TDE is enabled in the Source PDB in a 19.10 version.

Over the last months, the team has been seeing this ORA-00600 intermittently when issuing the duplicate command below:

RMAN> CONNECT AUXILIARY *
2> CONNECT CATALOG *

RMAN> run {
 allocate auxiliary channel ch1 type 'sbt_tape' PARMS="SBT_LIBRARY=/u01/app/CV/commvault/Base/libobk.so, BLKSIZE=1048576 ENV=(CV_mmsApiVsn=2,CV_channelPar=ch1)" TRACE 0;
 allocate auxiliary channel ch2 type 'sbt_tape' PARMS="SBT_LIBRARY=/u01/app/CV/commvault/Base/libobk.so, BLKSIZE=1048576 ENV=(CV_mmsApiVsn=2,CV_channelPar=ch2)" TRACE 0;
 DUPLICATE DATABASE CDBPROD TO CDBSTAGE PLUGGABLE DATABASE 'PDBRENE' ;
}

When I finally got involved and the problem was explained, I started to see a trend: whenever the duplicate command used an L0 + L1 backup for the restore, we were hitting the ORA-00600. Searching MOS, there are several bugs out there, but most are on the backup side of things, not on the restore side of it, so I couldn’t get an exact match.

Looking at the log and trace, you could see this happening on the incremental restore part of it.

Database Log
PDBRENE(5):Incremental restore complete of datafile 60 +DATAC1/CDBSTAGE/B871E50DDA0DCFD5E0530AFE10ACC7B6/DATAFILE/bill_01.7819.1079101617
PDBRENE(5): checkpoint is 426591948421
PDBRENE(5): last deallocation scn is 271840228442
Errors in file /u02/app/oracle/diag/rdbms/cdbstage/CDBSTAGE1/trace/CDBSTAGE1_ora_246596.trc (incident=115225) (PDBNAME=PDBRENE):
ORA-00600: internal error code, arguments: [kcbtse_encdec_tbsblk_1], [5], [10], [616562690], [86], [2], [20], [4294967295], [], [], [], []
PDBRENE(5):Incident details in: /u02/app/oracle/diag/rdbms/cdbstage/CDBSTAGE1/incident/incdir_115225/CDBSTAGE1_ora_246596_i115225.trc

Trace File
[TOC00000]
Jump to table of contents
Dump continued from file: /u02/app/oracle/diag/rdbms/cdbstage/CDBSTAGE1/trace/CDBSTAGE1_ora_246596.trc
[TOC00001]
ORA-00600: internal error code, arguments: [kcbtse_encdec_tbsblk_1], [5], [10], [616562690], [86], [2], [20], [4294967295], [], [], [], []

[TOC00001-END]
[TOC00002]
========= Dump for incident 115225 (ORA 600 [kcbtse_encdec_tbsblk_1]) ========
[TOC00003]
----- Beginning of Customized Incident Dump(s) -----
----- Abridged Call Stack Trace -----
<Skipped 2 stack frames>
kcbtse_encdec_tbsblk_pdb1<-krbr3b2<-krbr1b1<-krbrValidateData<-krbrpr<-krbirbp<-pevm_icd_call_common<-pfrinstr_ICAL<-pfrrun_no_tool<-pfrrun<-plsql_run<-pricar<-pricbr<-prient2<-prient<-kkxrpc<-kporpc<-opiodr<-ttcpip<-opitsk<-opiino<-opiodr<-opidrv<-sou2o<-opimai_real
<-ssthrdmain<-main<-__libc_start_main
----- End of Abridged Call Stack Trace -----
Partial short call stack signature: 0x90dfb4faae7825b1
.
Tablespace key not found as expected.
Key versions: pkv 4294967295 pkv2 4294967295 gkv 4294967295 gkv2 4294967295 input 4294967295 fon 1 cfv 0 tekafnrl (nil)

The workaround I applied to this bug is to use only the L0 backup for the duplicate command. Once I used that, the command will succeed.

channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=16
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:02
Finished restore at 25-JUL-21
Performing import of metadata...
Finished Duplicate PDB at 25-JUL-21

We are currently working with Oracle on identifying the bug, but for now, using only the L0 backup is how we are working around it.