SQLcl e' un'interfaccia a linea di comando per accedere alla base dati Oracle.
Rispetto allo storico comando SQL*Plus presenta notevoli vantaggi:
E molto altro ancora... continuate a leggere!
SQLcl nasce da una costola di SQL Developer, ottima GUI free di Oracle, ed utilizza lo stesso numero di versione. E' tuttavia installabile e utilizzabile come strumento a se stante da tutti coloro cui serve un'interfaccia da linea di comando.
Questo documento presenta in modo semplice e pratico i principali aspetti dell'SQLcl organizzati nei seguenti capitoli: Installazione, Esempi, Varie ed eventuali.
L'installazione di SQLcl e' banale. Basta scaricare il software dal sito ufficiale!
Si tratta di un'applicazione Java che comprende tutto, quindi non e' necessaria nessuna altra installazione (eg. SQL*Net, Oracle Instant Client) se non un'interprete Java recente.
La directory /bin contiene gli script di lancio utilizzabili da MS-Windows, Unix, Linux, Mac OSX, ... basta inserirla nel PATH ed SQLcl e' immediatamente utilizzabile.
Una volta installato SQLcl e' immediatamente utilizzabile:
Con HELP vengono riportati i comandi, che sono tutti quelli dell'SQL*Plus, e, sottolineati ed evidenziati in neretto, i nuovi comandi disponibili in SQLcl.
Per la connessione al database Oracle SQLcl supporta tutte le modalita' [NdA EZConnect, TNS, LDAP, Proxy G/Login.SQL, SSH tunnel, -oci]:
SQLcl implementa in modo completo ed esatto tutti i comandi SQL*Plus. Ogni eventuale differenza e' considerata un bug: ogni script realizzato con SQL*Plus, compresi quelli utilizzati con funzionalita' di reporting o con l'uso di variabili o qualsiasi altro comando interno, restituisce esattamente lo stesso risultato se lanciato con SQLcl.
Le funzionalita' di editing dell'SQL*Plus sono sempre state pittosto limitate [NdE anche perche' l'SQL*Plus e' nato al tempo degli editor di linea]. Da molti era utilizzato l'RLWRAP ma SQLcl fa molto di piu'. In SQLcl e' presente un'HISTORY completa di tutti i comandi selezionabili da tastiera. Non lo descrivo qui perche'... e' piu' facile da provare che da documentare!
I nuovi comandi di SQLcl estendono comandi precedenti di SQL*Plus
o semplificano il lancio dei comandi SQL:
INFO fornisce molte piu' informazioni del classico DESCR di SQL*Plus,
SET consente l'impostazione delle variabili d'ambiente SQL*Plus ed SQLcl (eg. SET SQLFORMAT ANSICONSOLE),
CTAS per eseguire un Create Table As Select,
DDL per ottenere i comandi DDL,
ALIAS per memorizzare comandi complessi,
SCRIPT per lanciare script realizzati con linguaggi esterni (eg. JavaScript, Python, ...),
BRIDGE per accedere ad istanze differenti,
FORMAT per definire i formati di default,
OERR descrive i codici d'errore Oracle,
NET permette di assegnare codici abbreviati alle connessioni,
...
Continuando l'elenco vi sono comandi relativi a funzionalita' specifiche:
APEX, REST, SODA,
...
Uno dei nuovi comandi piu' interessanti e' il REPEAT. Basta avere un comando memorizzato e lanciare il REPEAT:
La ripetizione di comandi SQL consente di costruire utili monitor. Tra i tanti esempi possibili sicuramente questo e' uno dei piu' significativi:
select s.sid ,s.serial# serial, s.sql_id, p.spid "OS proc.", s.username "Username", case when s.status = 'ACTIVE' then last_call_et else null end "Wait", decode(s.command,2,'Insert',3,'Select',6,'Update',7,'Delete',44,'Commit', 45,'Rollback' ,46,'Savepoint',47,'PL/SQL Exec',0,'No command','Other') "Command", s.machine "Machine", s.osuser "OS User", lower(s.status) "Status", s.program "Program" from gv$session s, gv$process p where s.USERNAME is not null and nvl(s.osuser,'x') <> 'SYSTEM' and s.type <> 'BACKGROUND' and s.paddr = p.addr and s.inst_id = p.inst_id order by 6 desc, 7 desc; REPEAT 10 5
La query, ricavata dai molti ottimi esempi su internet dei programmatori stessi ( Kris Jeff ) e dagli script ora2html riporta tutte le sessioni utente presenti sulla base dati Oracle lasciando per ultime quelle attive. In questo modo si controllano agevolmente DB anche con centinaia di sessioni.
L'esempio seguente invece riporta il contenuto dell'alert:
SELECT To_Char(Originating_Timestamp, 'DD-MON-YYYY HH24:MI:SSxFF') "Timestamp", substr(message_text, 0, 110) "Message Text" FROM X$dbgalertext WHERE rownum < 11 ORDER BY Originating_Timestamp DESC; REPEAT 10 1
Naturalmente possono essere utilizzate query specifiche per riportare altre informazioni sistemistiche o accedere alle tabelle applicative...
Il titolo del paragrafo? Ho un collega che ama le frasi in latino e quelle che contengono la parola JUV...
Il primo rilascio di produzione come tool distinto da SQL*Developer [4.2 disponibile dal 2016-09-16] ha introdotto nuovi potenti comandi (eg. REPEAT): e' assolutamente consigliato! [NdE nuovo rilascio di SQLcl il 2016-11-03]:
Questa pagina e' solo un'introduzione, vi sono parecchi funzionalita' che non sono state descritte o che richiederebbero una descrizione molto piu' ampia: formati di output, JavaScript, Cloud Support, gestione dei colori, ...
Per finire... SQLcl e' stato sviluppato dai programmatori di SQL Developer: show sqldev2
Titolo: SQLcl
Livello: Medio
Data:
16 Settembre 2016
Versione: 1.0.1 - 31 Ottobre 2016 🎃 Halloween
Autore: mail [AT] meo.bogliolo.name