2017-10-19 19 views
1

Je suis en train de désenregistrer notifications de changement dans 12c Oracle en exécutant:Supprimer Oracle Modifier Notifications

DBMS_CQ_NOTIFICATION.DEREGISTER(24906); 

Mais cela donne une erreur:

ORA-29970: Specified registration id does not exist

Bien que quand j'Interrogez la vue USER_CHANGE_NOTIFICATION_REGS il ne indiquer clairement le bon regid.

Quelqu'un at-il rencontré ce problème?

Répondre

1

(Doc ID 971412,1)

Comment peut Database notifications de modification non créé avec PL/SQL ENLEVÉS?

[Dernière mise à jour le 5 juillet 2017]

Applies to:

Oracle Database - Enterprise Edition - Version 10.2.0.1 to 11.2.0.2 [Libérer 10.2 to 11.2]

fournisseur de données Oracle pour .NET - Version 10.2.0.1 to 11.2.0.1 [Date de sortie 10.2 to 11.2]

Les informations de ce document s'appliquent à n'importe quelle plate-forme. VÉRIFIÉ pertinence le 14 déc 2016

Symptoms

Vous avez une application qui crée des notifications de modification de la base de données via le OCI API ou a higher level API qui expose cette fonctionnalité telles que ODP.Net. Il ne crée pas les notifications via PL/SQL, either through a stored procedure or PL/SQL block.

Cette application se ferme sans nettoyage de ces notifications, généralement via une erreur fatale car tout arrêt contrôlé doit supprimer toutes les notifications. Ou il se peut que l'application soit encore en développement et que le code pour supprimer les notifications ait un bug ou n'ait pas encore été ajouté. Cela laisse des notifications orphelines dans la base de données, qui ne peuvent pas être supprimées car elles ne peuvent être supprimées que dans la même session que celle dans laquelle elles ont été créées. Ils ne peuvent pas être enlevés avec the PL/SQL functionDBMS_CQ_NOTIFICATION.DEREGISTER(); cela jette l'erreur:

ORA-29970: Specified registration id does not exist.

+0

Cela explique beaucoup de choses. Mais quelle est la solution à cela alors? L'enregistrement est en effet déclenché à partir d'un service .NET, mais je dois pouvoir le supprimer via PL/SQL –

1

Solution selon le MOS-Note:

  • Utilisez patché la version Oracle (correction de bugs inclus dans 12.1 ou version ultérieure et le 11.2. 0.4 Correctif de base de données et client)
  • permettre à l'événement suivant de consommer le correctif: événement "10865 contexte de nom de trace pour toujours, niveau 1".