2009-07-23 5 views
0

Je maintiens une solution d'aide à domicile basée sur le Web et nous constatons un changement erroné dans un champ db dans certaines circonstances. Le code impliqué est franchement un gâchis, mélangeant différentes approches à l'accès à la base de données (la pire et la plus dangereuse étant la construction de chaînes sql par concaténation). Une recherche en texte intégral du domaine problématique dans l'ensemble de la solution n'a pas aidé (le champ n'est apparu que dans les sélections et dans un seul insert légitime) donc je ne peux même pas trouver le code incriminé.Oracle: suivi des instructions SQL

Connaissez-vous un moyen rapide pour activer SQL suivi soit dans Asp.Net ou dans Oracle (8) lui-même? (Est-il possible d'intercepter les commandes sql via l'objet OracleConnection ou quelque chose comme ça? Cela permettrait d'obtenir une trace de pile et de trouver le code bogué). J'ai fait un peu de googling et j'ai trouvé celui-ci: ALTER SYSTEM SET sql_trace = true SCOPE=MEMORY; mais je voudrais savoir quelle est la meilleure façon de résoudre le problème (et peut-être construire un mécanisme de journalisation SQL simple sans réécrire l'application) .

Répondre

2

traçage d'habilitation est la voie à suivre, mais si vous éprouvez des difficultés à obtenir que le travail, essayez de voir si vous pouvez trouver référence à la colonne incriminée dans le sql_text colonne de SYS.v $ sql. En supposant que l'instruction a été exécutée récemment (et que l'instruction qui a fait l'action n'est pas si longue que la colonne que vous recherchez a été tronquée - Oracle 8 n'a pas stocké le texte intégral), vous devriez être en mesure de localiser là-bas. Le seul autre cas où le SQL ne s'afficherait pas est si la modification se produisait via un trigger ou un proc stocké, auquel cas vous devriez être capable de localiser la colonne dans la colonne TEXT de la table ALL_SOURCES.

+0

la table v $ sql fourni suffisamment d'informations pour résoudre le problème, merci – Utaal

4
+0

Merci, je suis déjà tombé sur la page d'orafaq via google, je vais jeter un oeil aux autres (la première liée à "PROCEDURE DBMS ..." semble être cassée: je reçois un 404) . Toujours à la recherche de quelque chose de plus lié à Oracle OracleClient (si une telle chose existe). – Utaal

+0

@Utaal: ce lien était cassé! Désolé, Avoir mis à jour à la page Oracle 8i –

Questions connexes