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*Plus Oracle Discussion :

Requête SQL inopérante via SQL Plus batch


Sujet :

Sql*Plus Oracle

  1. #1
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2013
    Messages : 19
    Points : 10
    Points
    10
    Par défaut Requête SQL inopérante via SQL Plus batch
    Bonjour,

    J'ai créé une requete SQL qui fonctionne très bien dans sqldevelopper et me donne le résultat attendu.
    Lorsque je j'exécute cette requête via une commande sqlplus (dans une console DOS), je n'ai aucun résultat.
    Cette requete est sensée extraire les données et les écrire dans un fichier CSV.
    ci-dessous la requete. Au passage si vous pensez que la requete est mal construite, je suis preneur de vos remarques.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    SET NEWPAGE 0
    SET LINESIZE 1024
    SET PAGESIZE 0
    SET ECHO OFF
    SET FEEDBACK OFF
    SET VERIFY OFF
    SET HEADING OFF
    SET MARKUP HTML OFF SPOOL OFF
    SET TRIMSPOOL ON
    SET COLSEP ';'
     
    -- Formattage des colonnes
    COLUMN ReferenceECR format A12;
    COLUMN EtatWF format A15;
    COLUMN NoeudCCB1 format A20;
    COLUMN NoeudCCB2 format A20;
     
    spool C:\temp\Statut_ECR.csv
     
    -- Creation ligne d'entête
    select 'Reference ECR','Date de creation','Etat WF','CCB1','date reception CCB1','date de reponse CCB1','delai CCB1',
    'CCB2','date reception CCB2','date de reponse CCB2','delai CCB2','date de fin WF' from dual;
    -- Extraction des données
    select CCB1.processCCB1 ReferenceECR, CCB1.DebutProcess Creation, 
    (select description from SNE_R19.tn_flow_process_state where object_id=CCB1.StatutProcess) EtatWF,
    CCB1.NoeudCCB1 NoeudCCB1,
    CCB1.ReceptionCCB1 ReceptionCCB1, CCB1.ReponseCCB1 ReponseCCB1,CCB1.tempsCCB1 TraitementCCB1,
    CCB2.NoeudCCB2 NoeudCCB2,
    CCB2.ReceptionCCB2 ReceptionCCB2, CCB2.ReponseCCB2 ReponseCCB2,CCB2.tempsCCB2 TraitementCCB2,
    case when CCB1.StatutProcess<>2 then null
    else CCB1.FinProcess
    end ClotureECR
    from 
    (select P1.tdm_name processCCB1,
    P1.TDMX_FLOW_PROCESS_STATUS StatutProcess,
    P1.creation_date DebutProcess,
    H1.TDM_RECEIVE_TIME ReceptionCCB1,
    N1.MODIFICATION_DATE ReponseCCB1,
    CASE WHEN TRUNC((N1.MODIFICATION_DATE - H1.TDM_RECEIVE_TIME),0)>1 then
    TO_CHAR(TRUNC((N1.MODIFICATION_DATE - H1.TDM_RECEIVE_TIME),0),'9999') || ' j ' ||
    TO_CHAR(TRUNC((N1.MODIFICATION_DATE - H1.TDM_RECEIVE_TIME)*24,0)-(TRUNC((N1.MODIFICATION_DATE - H1.TDM_RECEIVE_TIME),0)*24),'99') || ' h '
    ELSE
    TO_CHAR(TRUNC((N1.MODIFICATION_DATE - H1.TDM_RECEIVE_TIME)*24,0),'99') || ' h ' 
    end tempsCCB1,
    N1.tdm_description NoeudCCB1, 
    P1.modification_date FinProcess
    from SNE_R19.tdm_sf_process P1
    inner join SNE_R19.tdm_sf_prc_history H1 on P1.object_id=H1.tdm_process_id
    inner join SNE_R19.tdm_sf_node N1 on H1.object_id1=N1.object_id and N1.tdm_description like 'Début'
    where P1.tdm_name like 'ECR%') CCB1
    left join  
    (select P2.tdm_name processCCB2,
    H2.TDM_RECEIVE_TIME ReceptionCCB2,
    N2.MODIFICATION_DATE ReponseCCB2,
    case when TRUNC((N2.MODIFICATION_DATE - H2.TDM_RECEIVE_TIME),0)>1 then
    TO_CHAR(TRUNC((N2.MODIFICATION_DATE - H2.TDM_RECEIVE_TIME),0),'9999') || ' j ' ||
    TO_CHAR(TRUNC((N2.MODIFICATION_DATE - H2.TDM_RECEIVE_TIME)*24,0)-(TRUNC((N2.MODIFICATION_DATE - H2.TDM_RECEIVE_TIME),0)*24),'99') || ' h '
    else
    TO_CHAR(TRUNC((N2.MODIFICATION_DATE - H2.TDM_RECEIVE_TIME)*24,0),'99') || ' h '
    end tempsCCB2,
    N2.tdm_description NoeudCCB2
    from SNE_R19.tdm_sf_process P2
    inner join SNE_R19.tdm_sf_prc_history H2 on P2.object_id=H2.tdm_process_id
    inner join SNE_R19.tdm_sf_node N2 on H2.object_id1=N2.object_id and N2.tdm_description like 'Planifier ECO%'
    where P2.tdm_name like 'ECR%') CCB2 On CCB1.processCCB1=CCB2.processCCB2
    where CCB1.StatutProcess<>3
    order by CCB1.processCCB1;
     
    spool off
    exit

  2. #2
    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
    Salut,

    Quand tu dis que tu n'as aucun résultat, tu entends quoi par là? le fichier est créé mais il est vide? le fichier n'est pas créé?
    Quand tu parles de commande SQL*Plus dans une fenêtre DOS : quelle est la commande? quel est le retour à l'écran? je suppose que si tu parles de DOS, c'est que ta base Oracle est sous Windows et pas Linux?
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  3. #3
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2013
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Salut,

    Oui, le fichier est vide (enfin pas tout à fait, je n'ai que la ligne d'entête générée par la commande select ... from dual.
    Effectivement c'est une base Oracle sous Windows.
    La commande est de la forme sqlplus user/pwd@SID @C:\temp\statut_ECR.sql.
    Le retour à l'écran est vide.
    J'ai d'autres requêtes (moins imbriquées) qui fonctionnent très bien suivant ce modèle.
    Je ne comprend pas pourquoi celle-ci ne fonctionne pas.

  4. #4
    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
    Si tu as dans ton fichier seulement l'en-tête du premier SELECT, (celui SELECT ... FROM DUAL), quelque chose me dit que, sous SQL Developer, ta connexion pointe vers la base A mais, sous SQL*Plus, tu pointes vers la base B.
    Ce qui expliquerai pourquoi ton deuxième SELECT ne renvoie rien dans ce cas là.

    Sous SQL*Developer, que donnent les commandes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT * FROM v$version;
    select name, instance_name from v$database, v$instance;
    select cdb from v$database;
    show con_name, user;
    Une fois ceci obtenu, tu relances les mêmes commandes mais sous SQL*Plus et on verra s'il y a des différences
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  5. #5
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2013
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Les infos sont identiques des deux cotés.

  6. #6
    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
    Bizarre... tu as lancé les commandes directement depuis SQL*Plus, on est d'accord, et non pas depuis un fichier .sql?

    Si c'est le cas, je pense que le pb est dans ton .sql.
    Faisons les choses les plus simples possibles pour éliminer les sources de pbs : dans ton .sql, tu supprimes TOUS les paramétrages suivants et tu relances le .sql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    SET NEWPAGE 0
    SET LINESIZE 1024
    SET PAGESIZE 0
    SET ECHO OFF
    SET FEEDBACK OFF
    SET VERIFY OFF
    SET HEADING OFF
    SET MARKUP HTML OFF SPOOL OFF
    SET TRIMSPOOL ON
    SET COLSEP ';'
     
    -- Formattage des colonnes
    COLUMN ReferenceECR format A12;
    COLUMN EtatWF format A15;
    COLUMN NoeudCCB1 format A20;
    COLUMN NoeudCCB2 format A20;
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  7. #7
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2013
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Ci-dessous le résultat de sqlplus sans les lignes 1 .. 16

    ConnectÚ Ó :
    Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production
    
    SP2-0042: commande inconnue "´╗┐" - reste de la ligne ignorÚ.
    
    'REFERENCEECR 'DATEDECREATION' 'ETATWF 'CCB 'DATERECEPTIONCCB1'
    ------------- ---------------- ------- ---- -------------------
    'DATEDEREPONSECCB1'  'DELAICCB1 'CCB 'DATERECEPTIONCCB2' 'DATEDEREPONSECCB2'
    -------------------- ---------- ---- ------------------- --------------------
    'DELAICCB2 'DATEDEFINWF'
    ---------- --------------
    Reference ECR Date de creation Etat WF CCB1 date reception CCB1
    date de reponse CCB1 delai CCB1 CCB2 date reception CCB2 date de reponse CCB2
    delai CCB2 date de fin WF
    
    
    
    aucune ligne sÚlectionnÚe
    
    DÚconnectÚ de Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production

  8. #8
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2013
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Sur mon serveur Oracle, il n'y a qu'une seule base et une seule instance.

  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
    Il y a deux choses dans le résultat :
    "SP2-0042: commande inconnue "´╗┐" - reste de la ligne ignorÚ." : visiblement, dans ton fichier .sql, il y a un caractère caché. C'est ´╗┐; essaye de recréer un fichier .sql tout nouveau tout propre et de saisir dedans ton code sans faire de copier/coller. Il faut se débarrasser de ce code erreur, c'est pas propre.

    Mais, dis-moi : ton gros SELECT renvoie "aucune ligne sÚlectionnÚe" : donc il s'est bien exécuté mais il ne ramène rien, c'est tout.
    Je continue à croire que sous SQL*Plus tu pointes vers une autre base mais bon, il faut essayer de se débarrasser du premier problème, le ´╗┐, peut-être que c'est ça qui fais échouer le deuxième SELECT.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  10. #10
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2013
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Le message d'erreur sur la ligne ignorée est résolu. Plus d'erreur.

    SQL*Plus: Release 12.1.0.2.0 Production on Mer. Avr. 6 13:29:23 2022

    Copyright (c) 1982, 2014, Oracle. All rights reserved.

    Heure de la dernière connexion réussie : Mer. Avr. 06 2022 13:25:24 +02:00

    Connecté à :
    Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production


    aucune ligne sélectionnée

    Déconnecté de Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production
    Il ne me reste donc que le message "aucune ligne sélectionnée" après le gros Select.
    "il s'est bien exécuté mais il ne ramène rien, c'est tout". Ok, sauf qu'avec la même requête dans sqldevelopper j'ai bien un résultat.

    L'objectif de cette requête est d'être lancée quotidiennement via un .bat contenant la commande sqlplus .... @fichier.sql et d'avoir un fichier .csv en sortie.

  11. #11
    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
    Tu peux nous dire comment tu as fait disparaître le message d'erreur "reste de la ligne ignoré", ça m'intéresse.

    Maintenant, je persiste à croire que tu ne pointes pas vers la bonne base car je ne vois aucune autre explication.
    Peux-tu mettres dans le .sql les commandes déjà lancées , à savoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT * FROM v$version;
    select name, instance_name from v$database, v$instance;
    select cdb from v$database;
    show con_name, user;
    et, surtout, poster ici le résultat.

    Autre chose, tu relances les mêmes commandes sous SQL*Developer, tu postes le résultat ici et je vais comparer les deux résulats.

    Au fait, avant de lancer ton .sql, tu fais bien un équivalent windows de la commande Linux . oraenv pour renseigner tes variables d'environnement Oracle sous Windows?
    Si oui, tu fais quoi exactement?
    Un peu de lecture ici : https://deeparaja.wordpress.com/2015...v-for-windows/
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  12. #12
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2013
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Pour répondre à la suppression du message "reste de la ligne ignoré", je l'ai résolu en changeant l'encodage du fichier SQL.
    Je travaille avec notepad++ comme editeur, et pour une raison que j'ignore l'encodage de mon fichier .sql était de type UTF-8-BOM.
    Je l'ai changé en UTF-8 et plus de message d'erreur.

    Je n'ai pas encore testé les autres manips, mais ton insistance sur le problème de base m'a fait réfléchir.
    J'ai noté une différence entre sqldevelopper et sqlplus.
    Une simple requete select ... from matable where ... dans sqldevelopper fonctionne très bien alors qu'en sqlplus je dois ajouter mabase.matable dans le from.
    Ce qui m'amène à penser que le from (...) CCB1 n'est effectivement pas correctement traité et qu'il manque un identifiant de base quelque part.

    Et non je fais pas de chargement d'environnement Oracle avant de lancer ma commande sqlplus (je n'ai pas toutes les bases).
    Il n'y a pas de variable ORA_HOME dans mon environnement windows, c'est pour cette raison qu'il me demande de m'identifier à chaque lancement de la commande sqlplus depuis la console DOS de Windows.

    Je vais regarder tout ça et faire les manips proprement.

  13. #13
    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
    Ah, je vois que tu avances, ça fait plaisir à lire car on commençait à tourner en rond...
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  14. #14
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2013
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Concernant l'environnement oracle, je me suis crée un batch qui ajoute les variables d'environnement ORACLE_HOME et ORACLE_SSID (le PATH est déjà positionné).
    Je l'exécute avant de lancer SQLPlus.
    Seul bémol, le user/pwd de la commande SQLPlus n'est pas reconnus, je dois les renseigner manuellement lors de l'exécution.

    Ci-dessous le résultat des actions via la commande SQLPlus

    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Heure de la dernière connexion réussie : Ven. Avr.  15 2022 07:56:20 +02:00
    
    Connecté à : Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production
    
    BANNER                                                                                                 CON_ID
    --------------------------------------------------------------------------------    ----------
    Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production         0
    PL/SQL Release 12.1.0.2.0 - Production          0
    CORE    12.1.0.2.0      Production         0
    
    BANNER                                                                                                CON_ID
    --------------------------------------------------------------------------------   ----------
    TNS for 64-bit Windows: Version 12.1.0.2.0 - Production         0
    NLSRTL Version 12.1.0.2.0 - Production         0
    
    select name, instance_name from v$database, v$instance
                                                *
    ERREUR à la ligne 1 : ORA-00942: Table ou vue inexistante
    
    select cdb from v$database
                    *
    ERREUR à la ligne 1 : ORA-00942: Table ou vue inexistante
    
    CON_NAME
    ------------------------------
    ORA12C
    USER est "xxxxx"
    
    aucune ligne sélectionnée
    
    Déconnecté de Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production



    Et le résultat des commandes passées dans SQLDevelopper

    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    BANNER                                                                               CON_ID
    -------------------------------------------------------------------------------- ----------
    Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production                0
    PL/SQL Release 12.1.0.2.0 - Production                                                    0
    CORE	12.1.0.2.0	Production                                                                  0
    TNS for 64-bit Windows: Version 12.1.0.2.0 - Production                                   0
    NLSRTL Version 12.1.0.2.0 - Production                                                    0
    
    Erreur commençant à la ligne: 2 de la commande -
    select name, instance_name from v$database, v$instance
    Erreur à la ligne de commande: 2 Colonne: 45
    Rapport d'erreur -
    Erreur SQL : ORA-00942: Table ou vue inexistante
    00942. 00000 -  "table or view does not exist"
    *Cause:    
    *Action:
    
    Erreur commençant à la ligne: 3 de la commande -
    select cdb from v$database
    Erreur à la ligne de commande: 3 Colonne: 17
    Rapport d'erreur -
    Erreur SQL : ORA-00942: Table ou vue inexistante
    00942. 00000 -  "table or view does not exist"
    *Cause:    
    *Action:
    CON_NAME Non consolidé
    USER est "xxxxx"
    REFERENCEECR CREATION ETATWF NOEUDCCB1 RECEPTIO REPONSEC TRAITEMENTCCB1 NOEUDCCB2 RECEPTIO REPONSEC TRAITEMENTCCB2 CLOTUREE
    ECR0000076 15/04/13 Terminé Début 15/04/13 19/04/13 3 j 23 h Planifier ECOs 28/05/13 12/09/13 107 j 4 h 12/09/13
    ECR0000076 15/04/13 Terminé Début 15/04/13 19/04/13 3 j 21 h Planifier ECOs 28/05/13 12/09/13 107 j 4 h 12/09/13
    ECR0000076 15/04/13 Terminé Début 16/04/13 19/04/13 3 j 2 h Planifier ECOs 28/05/13 12/09/13 107 j 4 h 12/09/13
    ECR0000077 15/04/13 Refusé Début 15/04/13 16/04/13 20 h
    ECR0000077 15/04/13 Refusé Début 15/04/13 16/04/13 21 h
    ECR0000079 15/04/13 Refusé Début 17/04/13 19/04/13 2 j 6 h
    ECR0000079 15/04/13 Refusé Début 15/04/13 19/04/13 3 j 23 h
    ECR0000079 ...

    Je ne vois pas de différence, sauf que dans SQLDevelopper, mon fichier est généré mais pas depuis SQLPlus.

  15. #15
    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
    Evite d'utiliser le CON_ID dans tes scripts, préfère le CON_NAME, bien plus facile à interpréter.

    Pour les messages d'erreur obtenus, comme celui qui suit, ça sent très fortement la connexion à la base via un user qui n'a pas les droits d'interroger le dictionnaire de données d'Oracle car v$database, v$instance existent toujours dans une base Oracle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select name, instance_name from v$database, v$instance
    *
    ERREUR Ó la ligne 1 : ORA-00942: Table ou vue inexistante
    Je vois "USER est "xxxxx"" : quels sont ses droits?
    Il doit avoir le privilège "select any dictionary" ou le rôle "select_catalog_role" pour interroger le dictionnaire de données Oracle.

    Enc e qui cocnerne le fait que ton script, sous SQL*Plus, ne renvoie aucune ligne, alors que c'est OK sous SQL Developer, on avait vu que c'était un pb de nom d'objets ou de schéma qui manquait dans ton SELECT.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  16. #16
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2013
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Je n'ai pas spécifier CON_ID, ce n'est que le résultat des commandes que tu avais spécifiées dans les précédents commentaires.
    (d'ailleurs la commande me renvoie l'erreur
    SP2-0158 : option SHOW inconnue "con_id,"USER est "xxxx"
    . J'ai du enlever la virgule entre con_id et user).
    L'utilisateur dont j'ai masqué le nom est le même dans les deux cas.

    Il n'a sûrement pas les privilèges admin oracle.
    Comment puis-je contrôler ses droits ?

    Pour ce qui est de l'exécution de la requête, je n'ai pas trouvé de solution sur le schéma manquant et c'est ce qui m'intéresse le plus.
    Il semble que les
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select ... from (select ...) as Tabletemporaire;
    pose problème à sqlplus.
    Si j'indique le nom de mon schéma dans la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select ... from MonShema.(select ...) as Tabletemporaire;
    il m'indique que le table n'existe pas.

  17. #17
    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
    Pour être franc, cela commence à être énervant ces pbs de droits.
    Attention à la règle suivante : si tu as un message disant que telle vue ou table n'existe pas, cela ne signifie aps qu'elle n'existe pas vraiment mais simplement que tu n'as pas les droits de SELECT dessus.
    Pour éliminer les pbs de droits, fait un GRANT DBA TO ton_user; et on verra ce qui reste comme pb.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  18. #18
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2013
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    J'ai trouvé la source de l'erreur.
    Le problème se situe dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    N1.tdm_description like 'Début'
    .
    Dans sqldevelopper, étant en langue française, le requête fonctionne, mais au travers de sqlplus les données ressortent en "Dùbut".
    Il n'y a donc aucune ligne correspondant à ce critère --> aucune ligne sélectionnées ...
    J'ai changé la ligne en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    N1.tdm_description like 'D_but'
    et mon fichier de sortie via la commande batch est conforme.

    Prochaine étape, indiquer à sqlplus le format de lecture des données de la base.

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/03/2017, 10h23
  2. Réponses: 2
    Dernier message: 10/02/2016, 14h16
  3. requêtes SQL plus précises
    Par Baldric de Dol dans le forum Langage SQL
    Réponses: 1
    Dernier message: 01/10/2008, 15h00
  4. Exécuter une requête SQL via un batch
    Par WeeJay dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 22/09/2008, 12h32
  5. Récupurer via une requête SQL la valeur la plus proche
    Par yoda_style dans le forum Langage SQL
    Réponses: 9
    Dernier message: 27/04/2004, 13h52

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