Saturday, January 30, 2010

ORA-00600: [kzdlk_zt2 err]

SQL> SELECT * from dual@ICTD;
SELECT * from dual@ICTD
*
ERROR at line 1:
ORA-00600: internal error code, arguments: [kzdlk_zt2 err], [4294967283], [],
[], [], [], [], []




SQL> CREATE PUBLIC DATABASE LINK "ADST"
2 CONNECT TO "DBLN_INT11" IDENTIFIED BY VALUES '1B993ACB4BEA0415'
3 USING 'ADST' ;

Database link created.

SQL>
SQL> select * from dual@ADST;
select * from dual@ADST
*
ERROR at line 1:
ORA-00081: address range [0x60000000000A84E0, 0x60000000000A84E4) is not
readable
ORA-00600: internal error code, arguments: [kzdlk_zt2 err],
[18446744073709551603], [], [], [], [], [], []


According to doc 456320.1

Cause

The exception is caused by the unpublished below :

Bug:5576894 - Abstract: GET ORA-600 [KZDLK_ZT2_ERR] WHEN LINK CREATED WITH 'IDENTIFIED BY VALUES'

In Oracle 10.2, dblink passwords are now stored in a special encrypted form to improve databse link security. Tthe "IDENTIFIED BY VALUES" clause is only intened for use by Oracle internal utilities (EXPORT/IMPORT), and it's not documented in the Oracle user documentation.

The only valid value to be passed in the "IDENTIFIED BY VALUES" clause is an encrypted dblink password identifier (note - this is different from the user password identifier stored in the PASSWORD column of USER$). The internal error in this bug is raised when we attempt to access the db link and materialize the plain text password from the encrypted dblink password identifier - because the value passed to the "IDENTIFIED BY VALUES" clause was not a valid encrypted dblink password identifier we raise an internal error. This is expected behavoiur in this case.

SQL> exit
dev07:B.11:INT11:/software/oraprx> tnsping ADST

TNS Ping Utility for HPUX: Version 10.2.0.2.0 - Production on 25-JAN-2010 16:48: 51

Copyright (c) 1997, 2005, Oracle. All rights reserved.

Used parameter files:
/software/oraprx/product/10.2.0/network/admin/sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(Host = vas11gt) (Port = 1536)) (CONNECT_DATA = (SERVICE_NAME = ADST)))
OK (10 msec)
dev07:B.11:INT11:/software/oraprx> sqlplus "/ as sysdba"

SQL*Plus: Release 10.2.0.2.0 - Production on Mon Jan 25 16:48:57 2010

Copyright (c) 1982, 2005, Oracle. All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

SQL> drop PUBLIC DATABASE LINK "ADST" ;

Database link dropped.

SQL> CREATE PUBLIC DATABASE LINK "ADST"
2 -- CONNECT TO "DBLN_INT11" IDENTIFIED BY VALUES '1B993ACB4BEA0415'
3 CONNECT TO "DBLN_INT11" IDENTIFIED BY DBLNPWD
4 USING 'ADST' ;

Database link created.

SQL>
SQL>
SQL> select * from dual@ADST;

D
-
X