21. Januar 2008

Weniger Tippen mit SQL*Plus: Miniskripts und SQLPATH

English title: PATH variable for SQL scripts: SQLPATH>

Ich bin mehr oder weniger zufällig drauf gestoßen - werde das folgende aber nun intensiver nutzen: Für SQL-Skripte bietet SQL*Plus auch eine Pfad-Variable (wie im Betriebssystem) an: die Umgebungsvariable SQLPATH. Wenn man mit start oder @ ein SQL-Skript startet, sucht SQL*Plus nicht nur im aktuellen Verzeichnis, sondern anschließend auch in den darin angegebenen Verzeichnissen. Und wie bei der PATH-Variablen im Betriebssystem werden die einzelnen Verzeichnisse durch Doppelpunkte (:) auf Lunix/UNIX bzw. durch Semikolons (;) auf Windows getrennt.
Das ist also ganz hilfreich für Abkürzungen. So kann man leicht ein Verzeichnis anlegen, dort häufig genutzte SQL-Kommandos unter kurzen Dateinamen (bspw. PURGE RECYCLEBIN als pr.sql) speichern und so immer wiederverwenden, egal von wo aus man SQL*Plus gestartet hat.
Hier ein paar Kommando-Abkürzungen, die ich in den letzten Tagen erstellt habe und die mir jetzt schon jede Menge Tipparbeit sparen:
-- dbapw.sql [password]
-- Als SYS AS SYSDBA verbinden; insbesondere gut bei langen TNSNAMES 

conn sys/&1@&_CONNECT_IDENTIFIER. as sysdba
undefine 1
-- dba.sql
-- Sichere Variante von "dbapw.sql" für Vorführungen

conn sys@"&_CONNECT_IDENTIFIER." as sysdba
-- cru.sql [username]
-- Abkürzung für CREATE USER; "schnelles Anlegen" eines Users

create user &1 identified by &1;
grant connect, resource, create view, alter session to &1;

undefine 1
-- c.sql [ausdruck]
-- "Alleskönner"; gut als Taschenrechner zu gebrauchen
-- @c "100 * 1.9 + 9.90" 

select &1 as ergebnis from dual
/
undefine 1
-- pr.sql
-- PURGE RECYCLEBIN

purge recyclebin
/
-- sess [username]
-- Gibt alle Sessions für den angegenenen User zurück

select
  sid, serial#, program
from v$session
where username = upper('&1')
/
undefine 1
I was not really aware of that (until today): SQL*Plus offers (as the operating system) a PATH variable for SQL Scripts: SQLPATH! When starting a SQL Script with start or @ then SQL*Plus looks for the script not only in the working directory but after that also in the directories noted in SQLPATH. And similar to the PATH variable the directories are seprated with a colon (:) on Unix/Linux and with a semicolon on Windows.
This is very useful to implement shortcuts. Just create a directory containing some SQL scripts with short filenames doing frequent issued statements (say: PURGE RECYCLEBIN as pr.sql). These shortcuts can then be used from whereever SQL*Plus was started ...
Here are some shortcuts I created during the last few days - and with which I saved a lot of typing ...
-- dbapw.sql [password]
-- Connect as "SYS AS SYSDBA"; this is useful when your TNSNAME is somewhat longer

conn sys/&1@&_CONNECT_IDENTIFIER. as sysdba
undefine 1
-- dba.sql
-- More secure variant of "dbapw.sql" for presentations

conn sys@"&_CONNECT_IDENTIFIER." as sysdba
-- cru.sql [username]
-- shortcut for CREATE USER; "fast user creation" on the fly

create user &1 identified by &1;
grant connect, resource, create view, alter session to &1;

undefine 1
-- c.sql [ausdruck]
-- "allrounder;" usable for example as a calculator
-- @c "100 * 1.9 + 9.90" 

select &1 as ergebnis from dual
/
undefine 1
-- pr.sql
-- PURGE RECYCLEBIN

purge recyclebin
/
-- sess [username]
-- Select all database sessions of a given User

select
  sid, serial#, program
from v$session
where username = upper('&1')
/
undefine 1

1 Kommentar:

daust_de hat gesagt…

Hallo Carsten,

hört sich prima an!

Dann braucht man nur noch ein "Inhaltsverzeichnis" dieser Shortcuts, am besten mit "help" :).

Viele Grüße,
~Dietmar.

Beliebte Postings