mardi 6 octobre 2009

ORA-00600 en utilisant un Database link

Je travaille à mettre en place un environnement répliqué via Oracle Streams sous Oracle 10g R2 (10.20.3). Pour ce faire, je devais créer des Database links qui seront utilisés par des vues matérialisées.

Lors de la création des vues matérialisées, j'ai rencontré l'erreur suivante :

ORA-00600: internal error code, arguments: [kzdlk_zt2 err],
[18446744073709551603], [], [], [], [], [], []


Cette erreur est provoqué par le fait que le Database link a été créé avec le mot clé "VALUES".

Pour contourner le problème, j'ai utilisé les mots clés "CONNECT TO" et "IDENTIFIED BY".

J'en profite pour vous refiler le script que j'utilise pour extraire la commande DDL d'un Database link :

REM *******************************************************************
REM * Script: extr_dl.sql
REM * Titre : Extraire un DB Link
REM * Auteur: Eric Cloutier
REM * Date modif. : 06-08-2009
REM *******************************************************************
set pagesize 0 feed off linesize 5000 trimspoo on
set verify off long 200000 longchunksize 100000
set autoprint on

accept vDl prompt 'Entrez le nom du DB Link : '

spool extr_dl_&vDl..log

Declare
ExcpNotExist exception;
pragma exception_init( ExcpNotExist, -31608 );
Begin
-- Initialisation
DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'PRETTY',true);
DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SQLTERMINATOR',true);

For i in (select OWNER Prop, db_link nm_objet from dba_db_links where db_link = upper('&vDl'))
LOOP
-- Extraire l'objet
Begin
dbms_output.put_line(DBMS_METADATA.GET_DDL('DB_LINK', I.nm_objet,I.prop));
Exception when ExcpNotExist then null; -- Objet inexistant';
End;
END LOOP;
End;
/

spool off
set pagesize 999 feed on linesize 5000 verify on
Prompt
Prompt Executer le script : @extr_dl_&vDl..log
Prompt

Il existe une note sur Oracle Metalink qui explique le bug (#456320.1).