2013-05-09 1 views
5

Esiste un modo in cui sqlplus può stampare quale istruzione è stata eseguita. Voglio dire che ho alcuni file .sql che eseguo in uno script bash. Ho bisogno di sapere quando ho letto il file di log che ha eseguito l'istruzione sqlplus.sqlplus print running statement

Esempio: Dire che ho questo file test.sql:

set timing on 
create table foo (a varchar2(10)); 
create table bar (b varchar2(10)); 
exit 

Quando controllo il registro ottengo questo:

Table created. 

Elapsed: 00:00:00.02 

Table created. 

Elapsed: 00:00:00.01 

Che non è informativo. C'è un modo in cui posso ottenere output come questo:

Table foo created. 

Elapsed: 00:00:00.02 

Table bar created. 

Elapsed: 00:00:00.01 

e neppure come questo:

create table foo (a varchar2(10)); 

Table created. 

Elapsed: 00:00:00.02 

create table bar (b varchar2(10)); 

Table created. 

Elapsed: 00:00:00.01 

So che posso usare PRONTA prima di ogni affermazione, ma ho grossi script SQL e sarebbe noioso scrivere PROMPT prima di ogni affermazione.

EDIT:

Per la soluzione di Allan di lavorare sempre (vale a dire utilizzando "set eco sulla"), si dovrebbe evitare il seguente:

1) Non utilizzare l'opzione -S con sqlplus perché questo sopprimerà la visualizzazione dell'eco dei comandi.

2) Non "cat" lo script a SQLPlus come questo:

cat test.sql | sqlplus scott/[email protected] 

risposta

12

Il comando che stai cercando è SET ECHO ON, che ripeterà l'ciascuna istruzione che viene emesso.

+1

Grazie. Questo ha funzionato evitando due cose. Vedi la mia domanda aggiornata. – Younes

+0

Questo non funziona quando si esegue '@ script.sql'. In tal caso, i comandi all'interno dello script vengono riecheggiati, ma il comando originale ('@ script.sql') non viene riecheggiato. Per motivi di tracciabilità, ho davvero bisogno che i comandi dell'utente vengano registrati. –

+0

(in tutti gli altri casi però, "imposta echo on" funziona alla grande) –

0

Se è necessario conoscere il tempo esatto di creazione degli oggetti, è possibile eseguire query su DBA_OBJECTS o ALL_OBJECTS per la colonna CREATED.