2016-10-14 1 views
0

Est-ce que deux curseurs avec le même nom peuvent exister dans deux processus différents? Disons que j'ai un alert_sender binaire qui utilise le nom cusror GET_ALERT_CURSOR pour obtenir les données de la base de données, et le même nom de curseur existe dans un autre binary alert_closer qui ferme les alertes.Est-ce que deux curseurs de même nom peuvent exister dans deux processus différents?

Les deux fichiers binaires s'exécuteront sur la même machine et se connecteront à la même base de données.

Y at-il un problème avec cela?

Je reçois des erreurs comme ceci dans mon processus.

H_ALERT_PROCESSOR: ERROR_LEVEL: 04/10/2016 05: 10: 55: Erreur d'ouverture H_CURSOR: ORA-00604: erreur au niveau SQL récursif 1

ORA-01000: maximum | Delta temporel: 0.003 | Total: 0,017 | (Fichier/ligne = HAlertDataPuller.PC: 176)

H_ALERT_PROCESSOR: ERROR_LEVEL: 04/10/2016 05: 25: 55: Erreur d'ouverture H_CURSOR: ORA-01003: aucune déclaration

analysé

H_ALERT_PROCESSOR: ERROR_LEVEL : 2016/10/04 05: 40: 55: ouverture d'erreur H_CURSOR: ORA-01003: aucune instruction analysée

H_ALERT_PROCESSOR: ERROR_LEVEL: 2016/10/04 05: 55: 55: ouverture d'erreur H_CURSOR: ORA-01003: aucune instruction analysée

H_ALERT_PROCESSOR: ERROR_LEVEL: 2016/10/04 06:10:55: erreur ouverture H _CURSOR: ORA-01003: aucune instruction analysée

+0

Il est vraiment difficile de vous aider à diagnostiquer le problème lorsque vous ne nous avez fourni aucun exemple de code, etc. Si vous avez besoin de plus d'aide, vous devrez nous fournir beaucoup plus d'informations - rappelez-vous, nous Vous ne pouvez pas voir votre base de données, nous ne connaissons pas votre structure de données ou de schéma et nous ne connaissons certainement pas votre logique d'entreprise, donc plus vous pouvez fournir d'informations, mieux c'est. – Boneist

Répondre

0

Il ne devrait pas y avoir de problèmes, c'est comme avoir la même variable locale définie dans différentes méthodes, ils peuvent fonctionner sur la même machine, et dans la même application.

+0

ok, en fait, je suis confronté à un problème dans l'un de mes processus. – naren

+0

Je modifie ma question. – naren

+0

Des modifications ont-elles été apportées aux tables utilisées par ces curseurs? – Sebz

1

Yes ils peuvent exist, mais s'ils fonctionnent à same time alors il y aurait un problème.

Lets considérer votre exemple:

Lorsque votre processus alert_sender a commencé et il a ouvert le curseur GET_ALERT_CURSOR, cela signifie que dans le tampon ses restes actifs jusqu'à ce que le traitement sql a lieu. En même temps, votre deuxième processus alert_closer a commencé et il a également essayé d'ouvrir un curseur avec le même nom GET_ALERT_CURSOR, d'où la définition antérieure du curseur reste toujours actif et le moteur SQL trouve que son déjà ouvert et renvoie des erreurs comme

ORA-06511 - Curseur déjà ouvert.

Incase votre curseur précédent se termine & curseur pas fermé et d'autres commence alors

maximum de curseurs ouverts ora-01000 a dépassé

et ainsi de suite.

+0

ok .. de votre point de vue cela peut arriver entre deux processus, en fait le nôtre est une grande application et nous avons n instances du même code .. comme alert_sender1, alert_sender_2 ... aler_sender_n (tous ensemble et lien avec le même code et dans l'environnement sam). Alors, que pensez-vous est la solution pour cela. – naren

+0

Modifiez le nom du curseur ou créez des dépendances. – XING

+0

Je suis désolé mais comment créer des dépendances? – naren