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

Administration Oracle Discussion :

Lancer des shell unix pour creation d'objet ORACLE


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Par défaut Lancer des shell unix pour creation d'objet ORACLE
    Bonjour, je suppose que c'est le bon forum pour poser des question sur les shel !
    J'exécute des .sh qui lance des ordres SQL oracle .sql sous unix.
    Nous Créons pour chaque .sh un .log et pour chaque .sql un .lst.

    Je voudrais voir apparaitre à l'écran le déroulement du .sh, c'est à dire à chaque ajout d'une ligne dans le .log cette même ligne apparaissent à l'écran sous unix.

    code du dbl_create_dblink.sh :
    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
     
    # chargement du fichier variable environement
    . env_migbel
     
    #definition des constantes
    SQL_PATH=$PATH_RACINE'/sql'
    LOG_PATH=$PATH_RACINE'/log'
    LOG_FIC=$LOG_PATH/'dbl_create_dblink.log'
     
    cd $SQL_PATH
     
    echo "debut :`date \"+%d-%h-%y\"`    `date \"+%H:%M:%S\"`\c" > $LOG_FIC
     
    #Initialisation interactive du mot de passe du compte
    echo " Veuillez entrer le nom de la BASE : "
    read ORACLE_DB
    ORACLE_SID='toto'
    echo " Veuillez entrer le MOT DE PASEE de "$ORACLE_SID" : "
    read ORACLE_PWD
     
    clear
    echo "DEBUT - Lancement des scripts de creation des dblinks" 
    sqlplus -s $ORACLE_SID/$ORACLE_PWD@$ORACLE_DB << TRI >> $LOG_FIC
    @dbl_create_dblink.sql;
    TRI
    echo "FIN - Lancement des scripts de creation des dblinks" 
    echo "fin :`date \"+%d-%h-%y\"`    `date \"+%H:%M:%S\"`\c" >> $LOG_FIC
    code du dbl_create_dblink.sql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    spool dbl_create_dblink
     
    prompt 'Creation du dblink'
     
    drop public database link BDL;
     
    create public database link BDL
    connect to toto
    identified by titi
    using 'BASE';
     
    spool off
    result du dbl_create_dblink.lst :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    'Creation du dblink'
     
    Lien de base de données supprimé.
     
     
    Lien de base de données créé.
    result du dbl_create_dblink.log :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    debut :07-Oct-04    17:21:22'Creation du dblink'
     
    Lien de base de données supprimé.
     
     
    Lien de base de données créé.
     
    fin :07-Oct-04    17:21:31
    Les lignes qui apparraisent à l'écran sont :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DEBUT - Lancement des scripts de creation des dblinks
    FIN - Lancement des scripts de creation des dblinks
    Et moi je souhaites avoir ces mêmes lignes + les lignes du fichier .log, ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    DEBUT - Lancement des scripts de creation des dblinks
    debut :07-Oct-04    17:21:22'Creation du dblink'
     
    Lien de base de données supprimé.
     
     
    Lien de base de données créé.
     
    fin :07-Oct-04    17:21:31
    FIN - Lancement des scripts de creation des dblinks
    Cette modification nous permet de ne pas aller rechercher le .log à chaque exécution faire un vi etc....

    QUESTION 1 : Comment faire pour afficher les infos souhaitées à l'écran
    QUESTION 2 : Comment faire pour savoir si l'utilisateur c'est pas tromber dans les mots de passe et compte de la db, ce qui nous permet d'afficher un message
    "user/password erronnée sur cette base !" et relancer le .sh ??

    Merci d'avance

    PS : nous sommes sous AIX Version 5.2!

  2. #2
    Membre chevronné
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Par défaut
    Réponse Question 1 :

  3. #3
    Membre chevronné
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Par défaut
    Réponse Question 2 :
    Tester le code retour de sqlplus ==>
    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
    clear 
    echo "DEBUT - Lancement des scripts de creation des dblinks" 
    sqlplus -s $ORACLE_SID/$ORACLE_PWD@$ORACLE_DB << TRI >> $LOG_FIC 
    @dbl_create_dblink.sql; 
    TRI
    Retour=$? 
    # =========================================
    #  Analyse ici du code retour de sqlplus
    # =========================================
     
    if [ $Retour -ne 0 ]
    then
     
     
          exit 1
    fi
    #
    # =========================================
    echo "FIN - Lancement des scripts de creation des dblinks" 
    echo "fin :`date \"+%d-%h-%y\"`    `date \"+%H:%M:%S\"`\c" >> $LOG_FIC

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    pour voir "avancer" le log tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tail -f dbl_create_dblink.log

    En revanche, le PROMPT sql ne sera pas dans le log, à la place tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT 'Creation du dblink' FROM DUAL;
    (A noter que je vois pas bien l'intérêt du spool si tu fais déjà le log )

    Enfin, pour savoir si le password est correct, tu peux lancer un test de la connection :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    sqlplus -s -l $ORACLE_SID/$ORACLE_PWD@$ORACLE_DB << EOF
    EOF
    if [ $? -eq 0 ]
    then
    echo Connection etablie
    else
    echo Connection refusee
    fi

  5. #5
    Membre averti
    Inscrit en
    Mars 2002
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 25
    Par défaut
    bonjour ,
    Tu peux aussi utilise 2 spool, un spool oracle et un spool sh
    et vider l'un dans l'autre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    sqlplus $O_USERID/$O_PASSWD <<FIN  >>$Gc_SPOOL
    spool $SPOOLPATH/$Gc_NOM_FIC_SPOOL_ORACLE
    Tester la valeur retour $? comme le presice argoet, et si erreur, ensuite un grep ora dans ton spool te ramene le code erreur oracle avec son libelle.

  6. #6
    Membre éclairé

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Par défaut
    Merci pour toute ces réponses, je vais mettre ca en oeuvre et je vous dis quelle solution j'ai pris.

    Ensuite je passerais en résolu

  7. #7
    Membre éclairé

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Par défaut
    pour la QUESTION 2 OK pas de pb j'ai pris la solution suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    echo "DEBUT - Lancement des scripts de creation des tables de correspondances BEL" 
    sqlplus -s $ORACLE_SID/$ORACLE_PWD@$ORACLE_DB << TRI >> $LOG_FIC
    @tb_test.sql;
    TRI
    if [ $? -eq 0 ] 
    then 
    echo "Connection etablie SGA"
    else 
    echo "Connection refusee SGA"
    fi
    pour la QUESTION 1 rien à faire
    je sais pas ou le placer dans le code alors j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    sqlplus -s $ORACLE_SID/$ORACLE_PWD@$ORACLE_DB << TRI >> $LOG_FIC
    set feedback on
    @tb_test.sql;
    TRI
    Mais je ne retouve pas les résultats du log à l'écran.

    Pour le tail ok cela fonctionne mais il affiche les 10 dernière ligne à l'écran, ou les 100 si on paramètres cependant on est obligé de faire une "ACTION" clavier pour en sortir !!

    Nous avons donc opté pour CAT

    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
     
    echo "debut :`date \"+%d-%h-%y\"`    `date \"+%H:%M:%S\"`\c" > $LOG_FIC
     
    #Initialisation interactive du mot de passe du compte system
    ORACLE_DB='toto'
    ORACLE_SID='tata'
    echo " Veuillez entrer le MOT DE PASEE de "$ORACLE_SID" : "
    read ORACLE_PWD
     
    clear
     
    echo "DEBUT - Lancement des scripts " 
    sqlplus -s $ORACLE_SID/$ORACLE_PWD@$ORACLE_DB << TRI >> $LOG_FIC
    @tb_test.sql;
    TRI
    [color=red][b]if [ $? -eq 0 ] 
    then 
    echo "Connection etablie SGA"
    else 
    echo "Connection refusee SGA"
    fi[/b][/color]
     
     
    [color=red][b]cat $LOG_FIC[/b][/color]
     
    echo "FIN - Lancement des scripts " 
     
    echo "fin :`date \"+%d-%h-%y\"`    `date \"+%H:%M:%S\"`\c" >> $LOG_FIC

    ce qui donne l'écran suivant :
    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
    DEBUT - Lancement des scripts 
    Connection etablie SGA
    debut :27-Oct-04    17:56:42'Creation table test'
     
    Table supprimée.
     
     
    Table créée.
     
     
    Commentaire créé.
     
     
    Commentaire créé.
     
     
    Synonyme supprimé.
     
    'Creation des synonyms'
     
    Synonyme créé.
     
    'Creation des droits d''acces'
     
    Autorisation de privilèges (GRANT) acceptée.
     
    FIN - Lancement des scripts


    PS : vous savez pour quoi les couleurs et le gras ne fonctionne pas dans les balises [Code] ?

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

Discussions similaires

  1. Spline pour lancer des objets
    Par Kromagg dans le forum Unity
    Réponses: 1
    Dernier message: 30/06/2011, 00h54
  2. Shell Unix pour la Purge de fichiers?
    Par jfmerveille dans le forum C
    Réponses: 2
    Dernier message: 27/02/2007, 01h34
  3. Réponses: 7
    Dernier message: 31/08/2006, 18h03
  4. CODE RETOUR GENERE PAR PL/SQL POUR SHELL UNIX
    Par mimi_été dans le forum PL/SQL
    Réponses: 6
    Dernier message: 18/11/2004, 08h32
  5. [Kylix] probleme pour lancer le shell
    Par miky dans le forum EDI
    Réponses: 5
    Dernier message: 13/08/2002, 09h39

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