mercredi 6 mai 2009

Composante "Oracle Database Packages and Types" invalide dans DBA_REGISTRY

Après l'exécution du script « catupgrd.sql », on doit vérifier le statut des composantes avec la requête suivante :

Select comp_name,version,status
from sys.dba_registry;

Lors de la vérification des celles-ci sur une instance fraichement migrée, il s'est avéré que la composante « Oracle Database Packages and Types » était invalide.

Après vérification du statut des objets de la base de données, le package DBMS_SQLPA était invalide.

cd $ORACLE_HOME/rdbms/admin
sqlplus / as sysdba

-- Detruire la table si elle a été mise à jour
drop table plan_table$;
-- Detruire la PLAN_TABLE du schema si elle existe
drop table plan_table;
-- Recréer la PLAN_TABLE
@catplan.sql
-- Recharger les packages impactés
@dbmsxpln.sql
@prvtxpln.plb
@prvtspao.plb
-- Recompiler les objets invalides en tenant compte des dépendances
@utlrp

Référence : Oracle Metalink, Note 605317.1

ORA-00600 suite à une migration à 10.2.0.4.0

Suite à la migration d'une base de données de la version 10.2.0.3.0 à 10.2.0.4.0, l'exécution du script de recompilation "utlrp.sql" provoquait l'erreur suivante :

ORA-00600: internal error code, arguments: [psdmsc.c: spawned type invalid],
[], [], [], [], [], [], []

Pour résoudre ce problème, il suffit de procéder comme suit :

cd $ORACLE_HOME/rdbms/admin
sqlplus / as sysdba
shutdown immediate
startup upgrade
@utlirp

Declare
MASK constant varchar2(80) := 'SYS_PLSQL_[0-9]+_([0-9]+DUMMY)_[12]';
dep_count number;
Begin
select count(*) into dep_count from dba_dependencies
where (referenced_owner, referenced_name, referenced_type) in
(select owner, object_name, object_type from dba_objects
where object_type = 'TYPE'
and regexp_like(object_name, MASK))
and not (type = 'TYPE' and regexp_like(name, MASK));

if (dep_count > 0) then
raise_application_error(-20001,
'Unknown dependent objects on system-generated types');
end if;

for r in (select owner, object_name from dba_objects
where object_type = 'TYPE'
and regexp_like(object_name, MASK))
loop
execute immediate 'drop type "'r.owner'"."'r.object_name
'" force';
end loop;
End;
/

Shutdown immediate
startup
@utlrp.sql

Réf. : Oracle Metalink, Note 726623.1