IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

ORA-00942: Table ou vue inexistante


Sujet :

SQL Oracle

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2016
    Messages : 4
    Points : 0
    Points
    0
    Par défaut ORA-00942: Table ou vue inexistante
    Bonjour,

    Je rencontre un prob étrange pendant quelques jours.
    Il est aléatoire et il se produit à chaque fois dans des requêtes différentes et sur des tables différentes.

    Pendant mon traitement, j'ai étrangement l'erreur suivante: Table ou vue inexistante.
    Sachant que sur la table où se produit l'erreur, le programme a déjà fait des SELECT et des INSERT avec succès.
    Et quand j'exécute la même requête sur SQL Developer, ça passe correctement.

    Avez-vous une idée de ce que cela pourrait être?

    Cette erreur se produit plusieurs jours de suite, puis, elle disparaît toute seule, sans aucune intervention !!

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 735
    Points
    52 735
    Billets dans le blog
    5
    Par défaut
    Nous sommes sur un site français dans lesquelles les questions doivent êtres posées en français. Merci de modifier votre demande !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Sans savoir ce que vous faite c'est plus un exercice d'imagination.

    Mais prenons les faits: Vous avez une erreur qui vous indique que la table (ou vue) n'existe pas. Ca c'est donc un fait: la requête qui a été exécutée vous rapporte qu'il n'existe pas de table dans la session courante qui corresponde à ce que la requête référence.

    Vous dite que "le programme a déjà fait des Select sur cette table" et que la requête en question passe dans SQL Developer.

    Hypothèses:
    1) Vous vous trompez sur la requête qui plante
    2) Vous avez changé de connexion pour un autre utilisateur qui n'a pas des droits d'accès sur la table en question.
    3) Parfois votre requête implique un travail supplémentaire qui fait référence a des tables dont l'utilisateur de connexion n'a pas des droits.
    4) Etc.

    Remède: tracez votre requête pour avoir plus des informations sur la requête et le contexte qui provoque le plantage.

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2016
    Messages : 4
    Points : 0
    Points
    0
    Par défaut
    Ce qui est étrange est que la requête change à chaque fois, c'est-à-dire, ce n'est pas toujours les mêmes requêtes ou les mêmes tables qui causent l'apparition de cette erreur !!

    C'est comme si au cours de route, le schéma change, alors qu'il n'y a rien qui a été changé !!
    Je dis ça parce que si je préfixe les tables par le nom du schéma, ça fonctionne.
    Alors que je ne veux pas opter pour cette solution, puisque mon application est une version unique installée sur plusieurs sites.
    Chaque site a sa propre base de données et son propre schéma, mais toutes les instances de la base ont exactement la même structure des tables.

  5. #5
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Vous utilisez des synonymes pour vos tables sans schéma ?

    De toute façon la meilleur solution pour les applications développées pour Oracle est d'interagir juste avec une couche des "services" fournis par des API écrites en PL/SQL.

  6. #6
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2016
    Messages : 4
    Points : 0
    Points
    0
    Par défaut
    Non, je n'utilise pas des synonymes !!

    C'est une ancienne application qui date de 2007, elle est tout simplement en maintenance avec quelques évols de temps en temps.
    Elle utilise un ancien ORM appelé IBATIS, qui se base sur des requêtes écrites dans des fichiers XML, qui les mappe par la suite à des objets.

    Cette erreur se produit aléatoirement. Cette application est déployée sur 4 sites. Pour chaque site, nous avons une instance de base de données avec un schéma/user propre à chaque site.
    Sur les 4 instances, il n'y a qu'un seul schéma où se produit le problème. Les trois autres passent correctement.

    J'ai cherché dans la piste que peut être une table est verrouillé, mais, en exécutant une requête pour vérifier, il n'y a aucun lock.

    Qu'est-ce qui fait que l'application perd le schéma avec lequel on pointe ? En lisant sur les forums, ils parlent tous de privilèges qui manquent !! Mais, je ne comprends pas quel genre de privilèges peut manquer !!

  7. #7
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Pourriez-vous montrer un exemple de requête qui plante ?

  8. #8
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2016
    Messages : 4
    Points : 0
    Points
    0
    Par défaut
    Celle là est l'erreur:

    System.Data.OracleClient.OracleException (0x80131938): ORA-00942: Table ou vue inexistante

    à System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)
    à System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals)
    à System.Data.OracleClient.OracleCommand.ExecuteNonQueryInternal(Boolean needRowid, OciRowidDescriptor& rowidDescriptor)
    à System.Data.OracleClient.OracleCommand.ExecuteNonQuery()
    à IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteInsert(ISqlMapSession session, Object parameterObject)
    à IBatisNet.DataMapper.SqlMapper.Insert(String statementName, Object parameterObject)
    à Business.ProcessHistDetail.Save()
    On utilise un ORM spécifique nommé IBATIS, la syntaxe est un peu différente, mais, généralement des requêtes simples INSERT ou UPDATE :
    Ci-dessous, un exemple de requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE T_L_PHS_PSD
          SET PHD_ECART = #ecart#, PHD_RESULTAT = #resultat#
          WHERE PHD_PHS_IDN = #processHistoryId#
          AND PHD_PSD_IDN = #processDetailId#
    J'insiste toujours que quand je préfixe la table avec le schéma, ça passe.

  9. #9
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Le problème est compliqué

    Il est dommage que tu ne veuilles pas ou ne puisses pas préfixer les tables par le nom du schéma car ça fonctionne de cette façon selon toi : "J'insiste toujours que quand je préfixe la table avec le schéma, ça passe."

    Je pense donc que, peut-être, dans les programmes, il y a le code ALTER SESSION SET SCHEMA_NAME = ... en clair il y aurait un changement de schéma même si le user ne change pas.
    Cela implique que si le user01 créé la table T01 sans synonyme public et a donné les droits de faire des SELECT dessus à tout le monde, le user02 doit obligatoirement faire SELECT sur user01.T01. OU BIEN, il change de schéma et là il peut faire SELECT sur T01 sans préfixe.

    C'est complexe mais c'est peut-être une piste.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  10. #10
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Y-a-t-il des triggers sur cette table ?
    Sinon vous dite que chaque installation utilise un autre schéma pour attaquer la base. Cela veut dire qu'à la connexion vous devez gérer cette situation. A quel niveau cela se fait et comment ? A priori c'est ici qu'il doit y avoir un bug.

Discussions similaires

  1. ORA-00942 Table ou vue inexistante
    Par BONNEFOI Patrick dans le forum Oracle
    Réponses: 9
    Dernier message: 02/10/2014, 14h40
  2. ORA 00942:table ou vue inexistante
    Par bibouu dans le forum Débuter
    Réponses: 3
    Dernier message: 29/04/2011, 22h36
  3. ORA-00942 Table ou vue inexistante
    Par nouraty dans le forum PL/SQL
    Réponses: 6
    Dernier message: 08/02/2011, 02h43
  4. Réponses: 4
    Dernier message: 21/03/2009, 00h35
  5. ORA-00942 Table ou vue inexistante
    Par mullger dans le forum SQL
    Réponses: 8
    Dernier message: 10/09/2007, 19h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo