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 :

utilisation de logminer sous Oracle 10g [Fait]


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 31
    Points : 25
    Points
    25
    Par défaut utilisation de logminer sous Oracle 10g
    Bonjour à tous,
    J'utilise logminer pour récupérer les transactions effectués sur mon bdd, en l'exécutant dans un script tout marche parfaitement, mais dés que j'essaye de l'integrer dans un procedure tous se bloque et sqlplus m'envoie des erreurs, mon but est d'entrer l'option 'STARTTIME' ,dans le procedure logmnr.start, comme étant un paramètre d'entrer, je veut utiliser ' STARTTIME' comme une variable récupérer d'une autre fonction, voila ce que j'ai essayé de faire mais toujours ça marche pas:
    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
     
    create or replace function debut (date_start in varchar2 ) return varchar2 is
    begin
    return date_start;
    end;
     
    --fonction debut creé 
     
    variable date_s varchar2(2000);
    execute :date_s := début('29-Mars-2008 10:01:34');
     
    --procédure se termine avec succès
     
    EXECUTE DBMS_LOGMNR.START_LOGMNR(-
           STARTTIME => date_s, -
             ENDTIME => SYSDATE, -
                    OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + -
                        DBMS_LOGMNR.COMMITTED_DATA_ONLY + -
                        DBMS_LOGMNR.NO_SQL_DELIMITER + -
                        DBMS_LOGMNR.NO_ROWID_IN_STMT + -
                        DBMS_LOGMNR.CONTINUOUS_MINE);
    et voila l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ERREUR Ó la ligne 1 :
    ORA-06550: Ligne 1, colonne 53 :
    PLS-00201: l'identificateur 'DATE_S' doit Ûtre dÚclarÚ
    ORA-06550: Ligne 1, colonne 7 :
    PL/SQL: Statement ignored
    j'ai deux questions:
    i)Est ce qu'on peut pas utiliser des variables dans les options d'un prcédure pl/sql
    ii)Est ce que je peut utiliser logminer dans un procedure pl/sql.
    Merci d'avance pour toute aide
    Cordialement.

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    c'est probablement pas la source du problème mais tu appelles début au lieu debut

    il manque : devant le nom de la variable, tu le fais bien pour appeler debut mais pas dans la procédure suivante

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 31
    Points : 25
    Points
    25
    Par défaut
    Bonjour à tous,
    j'ai toujours le même problème, j'ai essayé de faire celà mais ça marche pas:
    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
     
    declare
    va date;
    begin
    select max(date_c) into va from connexion_test;
    DBMS_LOGMNR.START_LOGMNR(-
           STARTTIME =>:va -
             ENDTIME => SYSDATE, -
                    OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + -
                        DBMS_LOGMNR.COMMITTED_DATA_ONLY + -
                        DBMS_LOGMNR.NO_SQL_DELIMITER + -
                        DBMS_LOGMNR.NO_ROWID_IN_STMT + -
                        DBMS_LOGMNR.CONTINUOUS_MINE);
     
    end;
    et voila l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SP2-0552: Variable de lien "VA" non dÚclarÚe.
    je demande si l'erreur est du au procedure DBMS_LOGMNR.START_LOGMNR elle même, cad qu'elle n'accepte pas des variable, je ne sais pas, aidez moi svp parce que là je me bloque.

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut


    Soit tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    variable date_s varchar2(2000);
    execute :date_s := début('29-Mars-2008 10:01:34');
     
    --procédure se termine avec succès
     
    EXECUTE DBMS_LOGMNR.START_LOGMNR(-
           STARTTIME => :date_s, -
             ENDTIME => SYSDATE, -
                    OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + -
                        DBMS_LOGMNR.COMMITTED_DATA_ONLY + -
                        DBMS_LOGMNR.NO_SQL_DELIMITER + -
                        DBMS_LOGMNR.NO_ROWID_IN_STMT + -
                        DBMS_LOGMNR.CONTINUOUS_MINE);
    soit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    declare
    va date;
    begin
    SELECT max(date_c) INTO va FROM connexion_test;
    DBMS_LOGMNR.START_LOGMNR(
           STARTTIME =>va 
             ENDTIME => SYSDATE, 
                    OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + 
                        DBMS_LOGMNR.COMMITTED_DATA_ONLY + 
                        DBMS_LOGMNR.NO_SQL_DELIMITER + 
                        DBMS_LOGMNR.NO_ROWID_IN_STMT + 
                        DBMS_LOGMNR.CONTINUOUS_MINE);
     
    end;
    : dans le 1er cas parce que c'est une variable SQL*Plus et pas de : ensuite parce que c'est du PL/SQL... Evidemment si tu changes le code en cours de discussion ça marche pas

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 31
    Points : 25
    Points
    25
    Par défaut
    Merci Orafrance,
    j'ai essayé ceci, mais malheureusement toujours des erreurs:
    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
     
    declare
    va date;
    begin
    SELECT max(date_c) INTO va FROM connexion_test;
    DBMS_LOGMNR.START_LOGMNR(-
           STARTTIME =>va, -
             ENDTIME => SYSDATE, -
                    OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + -
                        DBMS_LOGMNR.COMMITTED_DATA_ONLY + -
                        DBMS_LOGMNR.NO_SQL_DELIMITER + -
                        DBMS_LOGMNR.NO_ROWID_IN_STMT + -
                        DBMS_LOGMNR.CONTINUOUS_MINE);
     
    end;
    et voilà l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DBMS_LOGMNR.START_LOGMNR(-
                             *
    ERREUR Ó la ligne 5 :
    ORA-06550: Ligne 5, colonne 26 :
    PLS-00707: structure non prise en charge ou erreur interne [2603]
    ORA-06550: Ligne 5, colonne 1 :
    PL/SQL: Statement ignored

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    il n'y a pas de -... pour rappel, on n'est pas sensé répondre aux erreurs de syntaxe... il faut lire les tutos si tu ne sais pas développé en PL/SQL

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 31
    Points : 25
    Points
    25
    Par défaut
    Pardon Orafrance, mais il'n y a pas d'erreur syntaxique, je n'ai que suivit l'exemple d'oracle, et voila ce que j'ai trouvé dans les tuto d'oracle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    EXECUTE DBMS_LOGMNR.START_LOGMNR(-
           STARTTIME => '13-jan-2003 15:00:00', -
           ENDTIME   => '13-jan-2003 16:00:00', -
           OPTIONS   => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + -
                          DBMS_LOGMNR.COMMITTED_DATA_ONLY + -
                          DBMS_LOGMNR.PRINT_PRETTY_SQL);
    c'est un exemple qui marche bien, si je lui entre 2 dates fixes, mais dés que j'entre
    STARTTIME comme variable, les problèmes commencent.

  8. #8
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    mais un coup tu fais EXECUTE et le coup suivant BEGIN... END... fixes toi sur la syntaxe correct une bonne fois pour toute

  9. #9
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 31
    Points : 25
    Points
    25
    Par défaut
    mais un coup tu fais EXECUTE et le coup suivant BEGIN... END... fixes toi sur la syntaxe correct une bonne fois pour toute
    Mais j'ai enlevé EXECUTE pour que je puisse travailler dans un procedure, mon but est de travailler avec DBMS_LOGMNR dans un procedure, donc il faut enlever EXECUTE, c'est pour ce là que j'ai utilisé BEGIN....END.

  10. #10
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    dans un begin...end il n'y a pas de -

  11. #11
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 31
    Points : 25
    Points
    25
    Par défaut
    dans un begin...end il n'y a pas de -
    Donc comment utiliser DBMS_LOGMNR dans un procédure, est ce que je doit enlever tous les '-' ou quoi au juste?

  12. #12
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075

  13. #13
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 31
    Points : 25
    Points
    25
    Par défaut
    Merci beaucoup Orafrance, enfin ça marche, maintenant je sait d'où vient le problème, juste remarque: il faut ajouter un ',' après 'va' comme ceci:
    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
     
    declare
    va date;
    begin
    SELECT max(date_c) INTO va FROM connexion_test;
    DBMS_LOGMNR.START_LOGMNR(
           STARTTIME =>va, 
             ENDTIME => SYSDATE, 
                    OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + 
                        DBMS_LOGMNR.COMMITTED_DATA_ONLY + 
                        DBMS_LOGMNR.NO_SQL_DELIMITER + 
                        DBMS_LOGMNR.NO_ROWID_IN_STMT + 
                        DBMS_LOGMNR.CONTINUOUS_MINE);
     
    end;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation de FND_FILE sous Oracle express 10g
    Par kodo dans le forum Oracle
    Réponses: 0
    Dernier message: 17/04/2011, 22h31
  2. problème d'exécution d'un report sous oracle 10g
    Par seure dans le forum Reports
    Réponses: 1
    Dernier message: 22/03/2006, 17h47
  3. [Volumétrie] recherche info sous Oracle 10g
    Par LovSylv dans le forum Oracle
    Réponses: 6
    Dernier message: 03/02/2006, 03h04
  4. Réponses: 11
    Dernier message: 30/12/2005, 12h33
  5. Pb de performances sous Oracle 10g
    Par kamalito dans le forum Oracle
    Réponses: 24
    Dernier message: 25/10/2005, 16h59

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