J'ai une installation Oracle 10G (Oracle Database 10g Édition Entreprise version 10.2.0.3.0 - Prod), et une application web Java qui appelle des procédures stockées et des fonctions dans Oracle via une connexion JDBC. Les SP et les fonctions font partie d'un paquet. La première fois qu'un SP ou une fonction est appelée, après que le package a été compilé avec succès, j'obtiens ces erreurs:Le premier appel à une procédure stockée, après une compilation réussie, échoue. Oracle 10g
(J'ai remplacé notre nom de schéma et nom de package par "# schéma-nom #. # Nom-package #"
ORA-04068: existing state of packages has been discarded
ORA-04061: existing state of package body "#schema-name#.#package-name#" has been invalidated
ORA-04065: not executed, altered or dropped package body "#schema-name#.#package-name#"
ORA-06508: PL/SQL: could not find program unit being called: "#schema-name#.#package-name#"
ORA-06512: at "#schema-name#.#package-name#", line 5393
ORA-06512: at line 1
La prochaine fois qu'elle est appelée, tout fonctionne comme elle le devrait. Des idées sur pourquoi et comment empêcher cela de se produire?
Oui, nous utilisons le regroupement de connexions. Où dois-je appeler DBMS_SESSION.RESET_PACKAGE? – jworrin
Vous devez arrêter tous les accès à la base de données à partir de l'application Web pendant la compilation, puis l'appeler dans chaque session contenue dans le pool de collections. Il peut être plus facile d'actualiser toutes les connexions dans le pool (c'est-à-dire les fermer et en créer un nouveau). – Codo