Testare connessioni oracle da dos

di il
8 risposte

Testare connessioni oracle da dos

Salve,

vorrei realizzare un semplice file batch in grado di testare delle connessioni a diverse istanze DB. Se la connessione è OK voglio rispondere a video "OK" altrimenti "KO". Il problema che non so come risolvere è intercettare l'errore ORA in caso di connessione KO.

Qualcuno può aiutarmi?

Grazie mille!!

8 Risposte

  • Re: Testare connessioni oracle da dos

    Mmm... mi sa che tanto semplice non è
  • Re: Testare connessioni oracle da dos

    Al massimo puoi controllare se c'e' la connessione, con telnet.
    telnet e' un programmino da linea di comando che non e' detto tu abbia su Winzoz: te lo dovrai installare
  • Re: Testare connessioni oracle da dos

    Prova a vedere se l'utility TNSPING può esserti utile
    
    C:\OraClient\product\11.2.0\client_1\BIN\tnsping XE
    echo %ERRORLEVEL%
    pause
    
    HTH
  • Re: Testare connessioni oracle da dos

    Anzitutto grazie per le risposte!

    Allora mi sono spiegato male, in realtà quello che devo realizzare non è un mero test sullo stato dei DB. Mi spiego meglio.
    Ho accesso ad un elenco di DB solo che per policy aziendale se non viene realizzata almeno una connessione in un determinato lasso di tempo l'utenza viene bloccata.
    Quello che voglio realizzare è pertanto un programmino che lanciato periodicamente si connetta sequenzialmente ai db in modo da controllare la connessione ed evitare che "scadano" i permessi. E' necessario quindi non solo testare la connessione ma connettersi realmente!

    Quello che ho fatto io semplicemente è pertanto un file .bat che esegue una connessione /nolog e lancia un file sqlplus che esegue in sequenza le connessioni, ovvero:

    ---------------------
    connessione.bat:

    sqlplus -s /nolog @connessioni.sql
    ------------------------------------------

    connessioni.sql:

    CONN user/pwd1@db1
    prompt connessione db1 OK!
    disconn

    CONN user/pwd2@db2
    prompt connessione db2 OK!
    disconn

    CONN user/pwd3@db3
    prompt connessione db3 OK!
    disconn
    ........

    host pause
    exit

    ---------------------------------------------

    Il programmino funziona solo che vorrei realizzare un output più pulito, perché se la connessione non è disponibile viene generato un errore oracle e si perde evidenza di quale DB non sia accedibile e sullo schermo viene comunque riportato lo stesso messaggio di "connessione ok". Il mio obiettivo è quello cioè di intercettare l'errore (mediante un'istruzione condizionale IF..THEN) e gestirlo riportando a schermo qualcosa tipo:

    Connessione db1 OK!

    Connessione db2 KO! (magari riportando anche l'errore oracle)

    Connessione db3 OK!
    .....


    E' possibile realizzare tutto ciò mediante un .bat che richiama un .sql o è necessario l'utilizzo di un linguaggio più strutturato?

    Ciao e grazie ancora!
  • Re: Testare connessioni oracle da dos

    maverick1168 ha scritto:


    Anzitutto grazie per le risposte!
    ...
    Mi spiego meglio.
    Ho accesso ad un elenco di DB solo che per policy aziendale se non viene realizzata almeno una connessione in un determinato lasso di tempo l'utenza viene bloccata.
    Quello che voglio realizzare è pertanto un programmino che lanciato periodicamente si connetta sequenzialmente ai db in modo da controllare la connessione ed evitare che "scadano" i permessi.
    ...
    ... viene da chiedersi che senso abbia una policy che poi debba essere "imbrogliata";
    inoltre,siccome sembrerebbe una policy volta ad incrementare la sicurezza, non sembra
    neanche saggio inserire le password di accesso ai db in un batch
  • Re: Testare connessioni oracle da dos

    sspintux ha scritto:


    maverick1168 ha scritto:


    Anzitutto grazie per le risposte!
    ...
    Mi spiego meglio.
    Ho accesso ad un elenco di DB solo che per policy aziendale se non viene realizzata almeno una connessione in un determinato lasso di tempo l'utenza viene bloccata.
    Quello che voglio realizzare è pertanto un programmino che lanciato periodicamente si connetta sequenzialmente ai db in modo da controllare la connessione ed evitare che "scadano" i permessi.
    ...
    ... viene da chiedersi che senso abbia una policy che poi debba essere "imbrogliata";
    inoltre,siccome sembrerebbe una policy volta ad incrementare la sicurezza, non sembra
    neanche saggio inserire le password di accesso ai db in un batch
    la policy tende a far scadere le utenze che vengono utilizzate poco, questo in genere viene fatto in quelle aziende che si avvalgono di consulenti per evitare che rimangano attive utenze di consulenti che magari non lavorano più per quell'azienda. Ma il mio caso è diverso, mi hanno attivato quelle utenze per db che dovrò utilizzare poco e non nell'immediato allora in questo modo mi cautelo da disattivazioni non volute perché la procedura per riattivare l'utenza è piuttosto macchinosa, inoltre la pwd che metterei sul file (che comunque rimarrebbe sul mio pc) non è la vera pwd ma solo una $$string connection$$. La vera pwd la devo inserire a mano previo inserimento di un token usb.

    Comunque a parte queste disquisizioni di carattere "morale" qualcuno ha qualche idea di come raggiungere l'obiettivo?
  • Re: Testare connessioni oracle da dos

    maverick1168 ha scritto:


    sspintux ha scritto:


    maverick1168 ha scritto:


    ...
    Comunque a parte queste disquisizioni di carattere "morale" qualcuno ha qualche idea di come raggiungere l'obiettivo?
    ... una cosa del genere potrebbe andare bene ?

    MainTestOra.cmd
    
    @echo off
    echo Inizio test connessioni  : %date%_%time% > c:\temp\log.txt
    
    call TestOra.cmd "Connessione 1" user/pwd@XE
    call TestOra.cmd "Connessione 2" user/pwderrata@XE
    
    type c:\temp\log.txt
    
    pause
    
    TestOra.cmd
    
    @echo off
    
    echo Esito test %1 >> c:\temp\log.txt
    echo -------------------------------- >> c:\temp\log.txt
     
    rem exit | sqlplus -L %2 >null
    
    exit | sqlplus -L %2 >> c:\temp\log.txt
    
    if %ERRORLEVEL% neq 0 goto fail 
    
    :success
    echo success %1 >> c:\temp\log.txt
    goto fine
    
    :fail
    echo fail %1 >> c:\temp\log.txt
    
    :fine
    echo fine %1 >> c:\temp\log.txt
    
    echo -------------------------------- >> c:\temp\log.txt
    
    HTH
  • Re: Testare connessioni oracle da dos

    E' perfetta! Ti ringrazio moltissimo
Devi accedere o registrarti per scrivere nel forum
8 risposte