(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 function
DBMS_CQ_NOTIFICATION.DEREGISTER();
cela jette l'erreur:
ORA-29970: Specified registration id does not exist.
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 –