SlideShare ist ein Scribd-Unternehmen logo
1 von 53
Downloaden Sie, um offline zu lesen
Seite 1Gunther Pippèrr © 2010 http://www.pipperr.de
SQL*PLUS
Das Schweizer Taschenmesser für die Oracle-Datenbank
Seite 2Gunther Pippèrr © 2010 http://www.pipperr.de
Arbeiten mit SQL*Plus
 SQL-Kommando-Interpreter für Oracle DBMS
 Arbeitet mit dem SQLNET-Protokoll
 Voraussetzung:
– Min. Oracle Client Installation
– Verbindungsbeschreibung zur Datenbank bekannt und
konfiguriert
– Dateien:
• Tnsnames.ora
• sqlnet.ora
Tnsnames
.ora
Sqlnet
.ora
Tnsnames
.ora
Seite 3Gunther Pippèrr © 2010 http://www.pipperr.de
SQL Anweisungen
Buffer
SQL*Plus-
Kommandos
SQL- und SQL*Plus-Interaktion
Server
prozess
SQLNET
Listener
SQL*Plus
SQL>select. .
Formatierte Berichte
Seite 4Gunther Pippèrr © 2010 http://www.pipperr.de
Der Aufruf von SQL*Plus
 Grafische Oberfläche unter Windows:
– %ORACLE_HOME%/bin/Sqlplusw.exe
 Textoberfläche unter einer Shell
– %ORACLE_HOME%/bin/Sqlplus.exe
 Empfehlung: Textoberfläche!
Seite 5Gunther Pippèrr © 2010 http://www.pipperr.de
Schnelles Arbeiten mit SQL*Plus
 Verknüpfung anlegen auf die Textversion
von SQL*Plus auf die am meisten benötigen User
sqlplus scott/tiger@oradb1 oder scott@oradb1
 Arbeitsverzeichnis mit Standardskripten setzen
 Copy/Paste in CMD Shell einstellen
 Farben und Font setzen
Seite 6Gunther Pippèrr © 2010 http://www.pipperr.de
Quickconnect mit SQL*Plus 10g
 Quickconnect / Easy Connect
sqlplus system/oracle@'//localhost:1521/GPI'
 URL => 'USER@'//HOST:PORT/SID'
Seite 7Gunther Pippèrr © 2010 http://www.pipperr.de
Die Backtaste unter Unix verwenden
 Unter Unix wird nur die Backtaste unterstützt (keine
Arrow Keys, kein Kommando-Buffer)
 Setzen der Backtaste über stty
stty erase <Escape_Sequence _Backtaste_shell>
~>stty erase ^?
sqlplus>stty * ^?^?^?^?v
Seite 8Gunther Pippèrr © 2010 http://www.pipperr.de
Das Arbeitsverzeichnis setzen SQLPATH
 Mit der Umgebungsvariablen SQLPATH das
Arbeitsverzeichnis setzen
 Skripte werden zuerst in diesem Verzeichnis gesucht!
~>export SQLPATH=~
Seite 9Gunther Pippèrr © 2010 http://www.pipperr.de
Verbindung zur Datenbank aufbauen
 Verbindung wird durch SQL*Net aufgebaut
 Angabe des Username/Passwort@TNSalias
Beispiel:
 Default TNSALIAS mit der Umgebungsvariablen
LOCAL setzen
SQL> connect scott/tiger@oradb1
Seite 10Gunther Pippèrr © 2010 http://www.pipperr.de
Ein SQL Statement eingeben
 SQL Statement eingeben
 Zeilenumbruch mit RETURN
 Eingabe abbrechen mit .
 Eingabe ausführen mit ; oder / in neuer Zeile
 Online-Hilfe mit help (rudimentär .-) )
 Eingabe löschen mit ESC
Seite 11Gunther Pippèrr © 2010 http://www.pipperr.de
Zeilen-Eingaben umbrechen mit -
 Eingabezeilen können mit dem Zeichen -
umgebrochen werden (ähnlich  in der Bash)
 Beispiel:
sql>EXECUTE DBMS_OUTPUT.PUT_LINE -
> ('Dies ist eine sehr lange Zeile ................')
Dies ist eine sehr lange Zeile ......................
Seite 12Gunther Pippèrr © 2010 http://www.pipperr.de
Datenbank-Parameter anzeigen lassen
 Parameter der DB mit SHOW PARAMETER
<Parameter> anzeigen
 Zeigt alle Parameter, deren Name ein Teil des
Suchstrings ist
Beispiel:
 Vor 8i nur im Servermanager (svrmgrl) möglich
sql>show parameter dump
NAME TYPE VALUE
-------------------------- ------- ----------------------------
background_dump_dest string d:oracleadmingpibdump
max_dump_file_size string 10240
user_dump_dest string d:oracleadmingpiudump
Seite 13Gunther Pippèrr © 2010 http://www.pipperr.de
SQL*Plus-Datei-Befehle
 Die Ausgabe und den Buffer von SQL*Plus speichern
• SAV[E] filename
[CREATE | REPLACE | APPEND]
Buffer in Datei speichern
• GET filename Datei in Buffer schreiben
• STA[RT] filename Datei ausführen
• @ filename Datei ausführen
• ED[IT] filename Datei editieren
• SPOOL filename
Ausgaben in Datei
spoolen
Seite 14Gunther Pippèrr © 2010 http://www.pipperr.de
Die SQL*Plus-Editier-Befehle (1)
 Den Buffer von SQL*Plus bearbeiten
• A[PPEND] text Text anhängen
• C[HANGE] / old / new aktuelle Zeile im Buffer
ändern aktuelle Zeile
durch Nummer setzen!
• C[HANGE] / text / Text im Buffer löschen
• CL[EAR] BUFF[ER] Buffer löschen
• DEL Letzte Zeile löschen
• DEL n Zeile n löschen
• DEL m n Zeile m bis n löschen
Seite 15Gunther Pippèrr © 2010 http://www.pipperr.de
Die SQL*Plus-Editier-Befehle (2)
 Den Buffer von SQL*Plus bearbeiten
• I[NPUT] Neue Zeile im Buffer hinzufügen
• I[NPUT] text Neuen Text am Ende anfügen
• L[IST] Buffer ausgeben
• L[IST] n Buffer Zeile n ausgeben
• L[IST] m n Buffer Zeile m bis n ausgeben
• R[UN] Buffer ausführen ( auch / möglich)
• n Zeile des Buffers anzeigen
• n text Zeile n des Buffer Text einfügen
• 0 text erste Zeile text eingeben
Seite 16Gunther Pippèrr © 2010 http://www.pipperr.de
Kommando-Shell aus SQL*PLUS aufrufen
 Der HOST-Befehl
– Kommando-Interpreter des Betriebssystems aufrufen
 Verlassen mit exit
Seite 17Gunther Pippèrr © 2010 http://www.pipperr.de
Steuern von SQL*Plus mit SET
 Die SQL*Plus-Umgebung anpassen
– SET-Befehl => setzt die Eigenschaften der Umgebung
– Befehl HELP SET => Online-Hilfe für die möglichen
Einstellungen
– SHOW-Befehl => gesetzte Werte überprüfen
SET system_variable value
Seite 18Gunther Pippèrr © 2010 http://www.pipperr.de
Wichtige SET-Kommando-Variablen
 SET-Anweisungen
– UNDERLINE {_ | text} Linie unter Spaltenbezeichner
– COLSEP {_ | text} Trennzeichen der Spalten
– FEEDBACK {6 | n |OFF | ON}
SQL*Plus-Angaben
im Ergebnis unterdrücken
– HEADING {OFF | ON} Spaltenname anzeigen
– LINESIZE {80 | n} Breite der Ausgabe
– LONG {80 | n} Anzahl der Zeichen von Long
– PAGESIZE {24 | n} Anzahl Zeilen pro Seite
– PAUSE {OFF | ON | text} Pause nach jeder Seite
– TAB {OFF | ON} Tabulatoren für Leerzeichen
Seite 19Gunther Pippèrr © 2010 http://www.pipperr.de
Das SPOOL-Kommando
 SPOOL <dateiname>
Alle Eingaben und Ergebnisse werden in eine Datei
<dateiname> geschrieben
 Mit SPOOL OFF ausschalten
 MIT SPOOL ON wird in Default-Datei on.LST im
Arbeitsverzeichnis geschrieben
Seite 20Gunther Pippèrr © 2010 http://www.pipperr.de
Die Hilfe von SQL*Plus verwenden
 Wie werden die Hilfetabellen für SQL*Plus installiert
(vor 8i)?
• Zur Verwendung des sql>help Kommandos
• Wie werden die Hilfetabellen für SQL*Plus installiert ( 8i/9i )?
#!/bin/sh
$ORACLE_HOME/bin/svrmgrl << EOF
connect system/manager
@$ORACLE_HOME/sqlplus/admin/help/helptbl.sql;
exit;
EOF
$ORACLE_HOME/bin/svrmgrl << EOF
connect system/manager
@$ORACLE_HOME/sqlplus/admin/help/helpindx.sql;
exit;
EOF
cd $ORACLE_HOME/sqlplus/admin/help
$ORACLE_HOME/bin/sqlldr userid=system/manager control=plushelp.ctl
$ORACLE_HOME/bin/sqlldr userid=system/manager control=plshelp.ctl
$ORACLE_HOME/bin/sqlldr userid=system/manager control=sqlhelp.ctl
~>Cd $ORACLE_HOME/sqlplus/admin/help/
~>sqlplus system/manger
system>@helpbld.sql . helpus.sql
Seite 21Gunther Pippèrr © 2010 http://www.pipperr.de
Ein Datenbank-Objekt beschreiben
 Die DESCRIBE-Anweisung
Beispiel:
Name Null? Type
--------------- -------- --------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
sqlpus>desc emp
Seite 22Gunther Pippèrr © 2010 http://www.pipperr.de
Die login.sql-Datei
 wird aus dem Arbeitsverzeichnis gelesen
 wird immer beim Start gelesen
 Platz für die gewünschten SET-Kommandos oder
anderen SQL-Befehlen, die immer beim Start
ausgeführt werden sollen
Seite 23Gunther Pippèrr © 2010 http://www.pipperr.de
Beispiel LOGIN.SQL
 automatisch bei Start von SQL*Plus ausführen
set head off
set termout on
select 'User: '|| user || ' on database ' || global_name,
'(Terminal='||USERENV('TERMINAL')||
', Session-Id='||USERENV('SESSIONID')||')'
from global_name;
REM Set prompt
column _user noprint new_value user_name
column _sid noprint new_value sid
column _session noprint new_value session_id
select user "_user" ,
global_name "_sid" ,
USERENV('SESSIONID') "_session"
from global_name;
set sqlprompt &SESSION_ID:&USER_NAME:&SID>
set head on
Spalten mit „noprint“
werden nicht ausgeben
set sqlprompt "_user 'on' _date 'at' _connect_identifier >"
Seite 24Gunther Pippèrr © 2010 http://www.pipperr.de
Ausführungspläne in SQL*Plus anzeigen (1)
 Ausführungspläne erzeugen mit AUTOTRACE
 Vorbereitung
– Plus-Rollen erzeugen (global bzw. individuell)
• Rolle
• Persönliche Tabelle für die Execution Pläne anlegen
sys> @?/sqlplus/admin/plustrce.sql
sys> grant plustrace to scott;
scott> @?/rdbms/admin/utlxplan.sql
Seite 25Gunther Pippèrr © 2010 http://www.pipperr.de
Ausführungspläne in SQL*Plus anzeigen (2)
 Plan-Tabelle für alle Entwickler anlegen
– Owner für Plantabelle
– Plan-Tabelle als „GLOBAL TEMPORARY TABLE“ mit „ON
COMMIT PRESERVE ROWS“ anlegen
SQL> connect tools/tool123@oragpi
SQL>CREATE GLOBAL TEMPORARY TABLE PLAN_TABLE (
statement_id varchar2(30), .......
,filter_predicates varchar2(4000)) ON COMMIT PRESERVE ROWS ;
SQL>grant all on plan_table to public;
sys> create user tools
identified by tool123 default tablespace tools
temporary tablespace temp;
sys> grant connect to tools;
sys> grant create table to tools;
Seite 26Gunther Pippèrr © 2010 http://www.pipperr.de
Ausführungspläne in SQL*Plus anzeigen (3)
 Plan-Tabelle für alle Entwickler anlegen
– Public Synonym für diese Tabelle anlegen
– Alle Entwickler können sich nun diese Plan-Tabelle teilen,
nur Ihre Daten sind für Sie sichtbar, am Ende der Session
werden die Daten automatisch gelöscht.
sys>create public synonym plan_table for tools.plan_table;
Seite 27Gunther Pippèrr © 2010 http://www.pipperr.de
Die Ausgabe
sql>set autotrace on
sql>select LAST_NAME from EMPLOYEES where EMP_ID=93698;
LAST_NAME
------------------------
Abbott
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=13)
1 0 TABLE ACCESS (BY INDEX ROWID) OF 'EMPLOYEES' (Cost=1 Card=1 Bytes=13)
2 1 INDEX (UNIQUE SCAN) OF 'EMP_PK' (UNIQUE) (Cost=1 Card=2)
Statistics
----------------------------------------------------------
0 recursive calls --> Internes SQL
0 db block gets --> DB Blöcke gelesen (Current Mode z.B. bei Updates)
3 consistent gets --> Konsistente Blöcke gelesen
0 physical reads --> Blöcke von Platte gelesen
0 redo size --> geschriebene Redo Daten
372 bytes sent via SQL*Net to client --> Daten vom Server
424 bytes received via SQL*Net from client --> Daten zum Server
4 SQL*Net roundtrips to/from client
0 sorts (memory) --> Sortiervorgänge im Speicher
0 sorts (disk) --> Sortiervorgänge auf Platte
1 rows processed
estimate the taking bytes
estimate the number of rows
Seite 28Gunther Pippèrr © 2010 http://www.pipperr.de
Ausführungsplan mit utlxpls abfragen
 Ausführungsplan abfragen
SQL> explain plan for
2 select * from emp join dept using(deptno);
Explained.
SQL> @?/rdbms/admin/utlxpls
PLAN_TABLE_OUTPUT
-------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost |
--------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 14 | 700 | 5 |
|* 1 | HASH JOIN | | 14 | 700 | 5 |
| 2 | TABLE ACCESS FULL | DEPT | 4 | 72 | 2 |
| 3 | TABLE ACCESS FULL | EMP | 14 | 448 | 2 |
--------------------------------------------------------------------
Predicate Information (identified by operation id):
PLAN_TABLE_OUTPUT
-------------------------------------------------
1 - access("EMP"."DEPTNO"="DEPT"."DEPTNO")
Seite 31Gunther Pippèrr © 2010 http://www.pipperr.de
Ein SQL-Skript enthält
– Kommentare
• -- Dies ist ein Kommentar
• /* Dies ist ein mehrzeiliger Kommentar */
– SQL-Anweisungen
• select * from emp where ename like ‘%1‘
– SQL*Plus-Anweisungen
• Set Echo on
– SQL*PLus-Variablen (variable)
• variable wert number
– Austauschvariablen mit dem &-Zeichen
– Anweisungen werden mit dem / oder dem ; abgeschlossen
Seite 32Gunther Pippèrr © 2010 http://www.pipperr.de
Beispiel:
 Wie oft ist ein Benutzer angemeldet?
set ver off
Prompt +------------ Alle aktiven Sessions eines Benutzers ----------+
accept username prompt Benutzername:
Column sid FORMAT 999 HEADING "SID"
Column serial# FORMAT 99999 HEADING "Serial#"
column program FORMAT A35 WRAPPED
Column username FORMAT A9 HEADING "Ora User"
Column machine FORMAT A9
Column osuser FORMAT A8 HEADING "OS User"
select s.sid,
s.serial#,
s.username,
s.status,
s.osuser,
s.process,
s.machine,
s.program
from v$session s
where s.username like UPPER('&username');
set ver on
Seite 33Gunther Pippèrr © 2010 http://www.pipperr.de
Aufruf von SQL*Plus mit einem Skript
 Beispiel
 SQL*Plus wird gestartet und das entsprechende Skript
ausgeführt
 Aufruf in SQL*Plus:
Es wird immer im Arbeitsverzeichnis gesucht
 Mit dem ? kann das aktuelle ORACLE_HOME
referenziert werden
Benutzername und DB Alias für SQL*Net Skript
Die Argumente
für das Skript
SQL>@myScript oder sta[rt] myScript
SQL>@?/rdbms/admin/myScript
sqlplus scott/tiger@oradb1 @myScript.sql argument1 .. 2
Seite 34Gunther Pippèrr © 2010 http://www.pipperr.de
Aufruf-Argumente beim Start übernehmen
 Ähnlich der %1...n Syntax
 Syntax: &1 --> erster Parameter
&2 --> zweiter Parameter
.......
&n --> n Parameter
Beispiel:
 Datei sEmp.sql
sqlplus scott/tiger@oradb1 @sEmp.sql emp 7777
select * from emp where empno=&1
Seite 35Gunther Pippèrr © 2010 http://www.pipperr.de
Ersetzungsvariablen
– SQL*Plus-Ersetzungsvariable um temporäre Wert zu
speichern.
• Ampersand (&)
• Ampersand (&&)
• DEFINE und ACCEPT
– Übergabe von Variablen an SQL-Anweisungen
– &Wert
Fordert den Benutzer auf, einen Wert einzugeben
– Achtung !
Reine Textersetzung! ' bei Literalen beachten!
SQL> SELECT empno, ename, sal, deptno
2 FROM emp
3 WHERE empno = &employee_num;
Enter value for employee_num: 7369
EMPNO ENAME SAL DEPTNO
--------- ---------- --------- ---------
7369 SMITH 800 20
Seite 36Gunther Pippèrr © 2010 http://www.pipperr.de
Das Kommando SET VERIFY
 Ausgabe der Textersetzung mit on und off einschalten
bzw. ausschalten.
SQL> SET VERIFY ON
SQL> SELECT empno, ename, sal, deptno
2 FROM emp
3 WHERE empno = &employee_num;
Enter value for employee_num: 7369
old 3: WHERE empno = &employee_num
new 3: WHERE empno = 7369
...
Seite 37Gunther Pippèrr © 2010 http://www.pipperr.de
Variablen in SQL*Plus erzeugen
 Nur SQL*PLUS intern, HOST Variablen siehe Kapitel
PL/SQL
 Variablen können in SQL*Plus auf zwei Arten erzeugt
werden:
– DEFINE: erzeugt eine Benutzer-Variable vom Typ CHAR
– ACCEPT: Eingabe eines Benutzers lesen und in einer
Variablen speichern
 Variablen sollten keine Leerzeichen enthalten
– Falls doch, mit einfachen Anführungszeichen versehen
Seite 38Gunther Pippèrr © 2010 http://www.pipperr.de
ACCEPT variable [datatype] [FORMAT format] [PROMPT text] [HIDE]
Das ACCEPT Kommando
– Erzeugt einen benutzerdefinierten Prompt für die Eingabe
– Definiert explizit den Datentyp
– Kann für eine Passworteingabe die Eingaben des Benutzers
ausblenden
ACCEPT dept PROMPT 'Geben Sie den Namen ein: '
SELECT *
FROM dept
WHERE dname = UPPER('&dept')
/
Geben Sie den Namen ein: Sales
DEPTNO DNAME LOC
--------- -------------- -------------
30 SALES CHICAGO
Seite 39Gunther Pippèrr © 2010 http://www.pipperr.de
Das DEFINE und UNDEFINE Kommando
 Ein Variable bleibt solange definiert, bis:
– mit UNDEFINE gelöscht wird
– SQL*Plus beendet wird
 Mit DEFINE überprüfen
 Falls gewünscht, mit DEFINE in der login.sql die
Variablen definieren, die stets vorhanden sein sollen.
SQL> define Parameter=Wert
SQL> define
DEFINE PARAMETER = "Wert" (CHAR)
SQL> Variablen
anzeigen
Seite 40Gunther Pippèrr © 2010 http://www.pipperr.de
Define Tips
 Beispiel:
Select * from dept where deptno in ('10','20','30');
Define dept_string= '''10'',''20'',''30'''
Select * from dept where deptno in (&dept_string);
Drei Treffer !
Oder:
Define dept_string = '10','20','30'
Define dept_string= '(''10'',''20'',''30'')'
Lösung:
Select * from dept where deptno in &dept_string;
Select * from dept where deptno in (&dept_string);
Ein Treffer !
Seite 41Gunther Pippèrr © 2010 http://www.pipperr.de
Formatierte Ausgaben mit SQL*Plus
 Formatierungs-Anweisungen
– COLUMN [column option]
• Aussehen einer Spalte
– TTITLE [text | OFF | ON]
• Setzen eines Titels über der Seite
– BTITLE [text | OFF | ON]
• Setzen eines Footer-Texts
– BREAK [ON report_element]
• Spaltenumbruch definieren bei geändertem Wert
Seite 42Gunther Pippèrr © 2010 http://www.pipperr.de
Die Formatierung von Spalten
 Kontrolliert das Aussehen einer Spalte
– CLE[AR]: löscht zuvor gesetzte Formatierung
– FOR[MAT] format: setzt die Formatierung über eine
Formatangabe
– HEA[DING] text: setzt die Überschrift der Spalte
mit | im Text der Überschrift wird ein Umbruch erreicht
– JUS[TIFY] {align}: richte die Überschrift der Spalte aus (left,
center, oder right)
COL[UMN] [{column|alias} [option]]
Seite 43Gunther Pippèrr © 2010 http://www.pipperr.de
Verwendung des COLUMN-Kommandos
– Überschriften von Spalten erzeugen
– Aktuelle Einstellungen darstellen
– Einstellungen löschen.
COLUMN ename HEADING 'Angestellter' FORMAT A20
COLUMN sal JUSTIFY LEFT FORMAT 99,990.00L
COLUMN mgr FORMAT 999999999 NULL 'Kein Chef'
COLUMN ename
COLUMN ename CLEAR
Seite 44Gunther Pippèrr © 2010 http://www.pipperr.de
Das Formatmodell von COLUMN Beispiel „1234“
Format Beschreibung Beispiel Ergebnis
A<n> Ausgabeweite ----- 1234
9 Nullwerte unterdrücken 9999 1234
0 Nullwerte anzeigen 09999 01234
D und G
Dezimalpunkt und
Tausender
Punkt
9G999D00 1.234,00
Seite 45Gunther Pippèrr © 2010 http://www.pipperr.de
Rechnen in Berichten mit SQL*Plus
 „Compute sum“ und „break on“
Sys:gpi>compute sum of bytes on pool
sys:gpi>break on pool skip 1
sys:gpi>select pool
, name
, bytes
from v$sgastat
order by pool,name;
POOL NAME BYTES
----------- -------------------------- --------
java pool free memory 1441792
memory in use 2560000
*********** --------
sum 4001792
large pool free memory 7871040
session heap 128960
*********** --------
sum 8000000
NULL
db_block_buffers 8192000
fixed_sga 70924
log_buffer 4999680
*********** --------
sum 13262604
Berechne die
Summe auf die
Spalte Bytes
pro distinkten Wert
der Spalte Pool
Umbruch einfügen
Seite 46Gunther Pippèrr © 2010 http://www.pipperr.de
INSERT INTO dept VALUES (10,'ACCOUNTING','NEW YORK');
INSERT INTO dept VALUES (20,'RESEARCH','DALLAS');
INSERT INTO dept VALUES (30,'SALES','CHICAGO');
INSERT INTO dept VALUES (40,'OPERATIONS','BOSTON');
INSERT INTO dept VALUES (91,'DEVELOPMENT','AUGSBURG');
SET HEADING OFF ECHO OFF FEEDBACK
OFF
SET PAGESIZE 0
SPOOL data.sql
SELECT 'INSERT INTO dept VALUES
('||
deptno||','||
''''||dname||''''||','||
''''||loc||''''||');'
FROM dept;
SPOOL OFF
SET HEADING ON ECHO OFF FEEDBACK ON
SET PAGESIZE 24
SQL
Data
Dictionary
SQL Skript
SQL verwenden, um SQL zu erzeugen
+
Seite 47Gunther Pippèrr © 2010 http://www.pipperr.de
SQL> SELECT 'DROP TABLE ' || object_name || ';'
2 FROM user_objects
3 WHERE object_type = 'TABLE';
DROP TABLE EMP;
DROP TABLE DEPT;
DROP TABLE SALGRADE;
. . .
Ein Skript dynamisch erzeugen
 Löschen aller Tabellen eines Benutzers
Seite 48Gunther Pippèrr © 2010 http://www.pipperr.de
SET ECHO OFF
SET FEEDBACK OFF
SET PAGESIZE 0
SPOOL droptab.sql
SPOOL OFF
SET ECHO ON
SET FEEDBACK ON
SET PAGESIZE 24
Die Umgebung setzen
Auf die Standard-Werte
zurücksetzen
SQL STATEMENT
Die Umgebung einstellen
 Mit SET die SQL*Plus-Ausgabe vorbereiten
Seite 49Gunther Pippèrr © 2010 http://www.pipperr.de
SET ECHO OFF
SET FEEDBACK OFF
SET PAGESIZE 0
SPOOL dropem.sql
SELECT 'DROP TABLE ' || object_name || ';'
FROM user_objects
WHERE object_type = 'TABLE';
SPOOL OFF
SET ECHO ON
SET FEEDBACK ON
SET PAGESIZE 24
Das komplette Beispiel
 Ein Drop-Skript erzeugen
Seite 50Gunther Pippèrr © 2010 http://www.pipperr.de
SET HEADING OFF ECHO OFF FEEDBACK OFF
SET PAGESIZE 0
SPOOL data.sql
SELECT 'INSERT INTO dept VALUES ('||
deptno||','||
''''||dname||''''||','||
''''||loc||''''||');'
FROM dept;
SPOOL OFF
SET HEADING ON ECHO OFF FEEDBACK ON
SET PAGESIZE 24
Den Inhalt einer Tabelle in eine Datei
 Ein Import/Export-Beispiel
Seite 51Gunther Pippèrr © 2010 http://www.pipperr.de
Sourcecode
'''X'''
''''
''''||dname||''''
Ergebnis
'X'
'
'AUGSBURG'
Hochkommatas erzeugen
 Escapesequenz von Hochkommatas
Seite 52Gunther Pippèrr © 2010 http://www.pipperr.de
Passwörter in SQL-Skripten
 Die Aufrufe von Oracle Tools über die Kommandozeile
enthalten die Passwörter
 Über lokale Umgebungsvariablen maskieren!
Neuen Shell Prozess temporär erzeugen mit gesetzten
Variablen (z.B. Fork aus C-Prog.)
 Vorteil: neben der Sicherheit zentrale Verwaltung aller
Passwörter
Sqlplus scott/tiger@db1 @import.sql
Sqlplus scott/$SCOTT_PWD@db1 @import.sql
Seite 53Gunther Pippèrr © 2010 http://www.pipperr.de
Die Aufrufparameter von Prozessen
 PS Liste enthält die Aufrufparameter eines Prozesses
(-x unter Linux)
 Passwort nicht in der Umgebung verwenden
 Passwort und Befehle über Pipe an sqlplus
‚übergeben‘
 Oder führen leider nicht zum gewünschten Erfolg
 Evtl. OPS$ Account benutzen
4555 sqlplus sqlplus scott/tiger@db1 @test.sql
>sqlplus << EOF scott/tiger@gpi
> ... Befehle
> EOF
>sqlplus `echo scott/tiger@db1`
BackTick! Richtung beachten!
Seite 54Gunther Pippèrr © 2010 http://www.pipperr.de
Zusammenfassung
 SQL*Plus ist DAS Werkzeug für die Oracle-Datenbank
– Alle administrativen Tasks können mit SQL*Plus
durchgeführt werden
– Für die Entwicklung unentbehrlich
– Die wichtigsten Umgebungsvariablen
• TNS_ADMIN => wo finde ich meine SQL*Net-Dateien
• LOCAL => welchen TNS ALIAS möchte ich als Default
• SQLPATH => wo sind meine SQL-Skripte
– Arbeitsverzeichnis sauber setzen
– mit „login.sql“ arbeiten, um das Verwechseln von
Datenbanken zu vermeiden
– DOS Oberfläche empfehlenswerter als das Grafische Tool
Seite 55Gunther Pippèrr © 2010 http://www.pipperr.de
Fragen
Antworten
SQL*Plus

Weitere ähnliche Inhalte

Was ist angesagt?

Rex Linuxtag 2012
Rex Linuxtag 2012Rex Linuxtag 2012
Rex Linuxtag 2012
inovex GmbH
 
SysDB – System DataBase — Ein Datenaggregator für System-Informationen
SysDB – System DataBase — Ein Datenaggregator für System-InformationenSysDB – System DataBase — Ein Datenaggregator für System-Informationen
SysDB – System DataBase — Ein Datenaggregator für System-Informationen
SysDB Project
 
German Perl Workshop 2015 - Infrastruktur als Code
German Perl Workshop 2015 - Infrastruktur als CodeGerman Perl Workshop 2015 - Infrastruktur als Code
German Perl Workshop 2015 - Infrastruktur als Code
Jan Gehring
 

Was ist angesagt? (20)

Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package Manager
Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package ManagerEinfuehrung in die Erstellung von Software-Paketen mit dem RPM Package Manager
Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package Manager
 
DOAG 2018 / Praktische Erfahrungen mit SPARC S7-2 Server
DOAG 2018 / Praktische Erfahrungen mit SPARC S7-2 ServerDOAG 2018 / Praktische Erfahrungen mit SPARC S7-2 Server
DOAG 2018 / Praktische Erfahrungen mit SPARC S7-2 Server
 
Automatisierte infrastruktur mit ansible
Automatisierte infrastruktur mit ansibleAutomatisierte infrastruktur mit ansible
Automatisierte infrastruktur mit ansible
 
Open-Source-Monitoring von Netzwerkkomponenten mit check_nwc_health
Open-Source-Monitoring von Netzwerkkomponenten mit check_nwc_healthOpen-Source-Monitoring von Netzwerkkomponenten mit check_nwc_health
Open-Source-Monitoring von Netzwerkkomponenten mit check_nwc_health
 
PowerShell Sicherheit in 6 Schritten produktiv absichern
PowerShell Sicherheit in 6 Schritten produktiv absichernPowerShell Sicherheit in 6 Schritten produktiv absichern
PowerShell Sicherheit in 6 Schritten produktiv absichern
 
Automatisierte Linux Administration mit (R)?ex
Automatisierte Linux Administration mit (R)?ex Automatisierte Linux Administration mit (R)?ex
Automatisierte Linux Administration mit (R)?ex
 
check_sap_health
check_sap_healthcheck_sap_health
check_sap_health
 
Python builds mit ant
Python builds mit antPython builds mit ant
Python builds mit ant
 
Rex Linuxtag 2012
Rex Linuxtag 2012Rex Linuxtag 2012
Rex Linuxtag 2012
 
Monitoring von SAP mit check_sap_health
Monitoring von SAP mit check_sap_healthMonitoring von SAP mit check_sap_health
Monitoring von SAP mit check_sap_health
 
Oracle Critical Patch Update und Patch Set Update - DOAG SIG Security 2011 - ...
Oracle Critical Patch Update und Patch Set Update - DOAG SIG Security 2011 - ...Oracle Critical Patch Update und Patch Set Update - DOAG SIG Security 2011 - ...
Oracle Critical Patch Update und Patch Set Update - DOAG SIG Security 2011 - ...
 
SysDB – System DataBase — Ein Datenaggregator für System-Informationen
SysDB – System DataBase — Ein Datenaggregator für System-InformationenSysDB – System DataBase — Ein Datenaggregator für System-Informationen
SysDB – System DataBase — Ein Datenaggregator für System-Informationen
 
Automation with Ansible
Automation with AnsibleAutomation with Ansible
Automation with Ansible
 
German Perl Workshop 2015 - Infrastruktur als Code
German Perl Workshop 2015 - Infrastruktur als CodeGerman Perl Workshop 2015 - Infrastruktur als Code
German Perl Workshop 2015 - Infrastruktur als Code
 
MySQL Absicherung und Datensicherung
MySQL Absicherung und DatensicherungMySQL Absicherung und Datensicherung
MySQL Absicherung und Datensicherung
 
cynapspro data endpoint protection 2010 - Installationsleitfaden
cynapspro data endpoint protection 2010 - Installationsleitfadencynapspro data endpoint protection 2010 - Installationsleitfaden
cynapspro data endpoint protection 2010 - Installationsleitfaden
 
Praktische Erfahrungen mit den kleinen SPARC S7-2 Servern
Praktische Erfahrungen mit den kleinen SPARC S7-2 ServernPraktische Erfahrungen mit den kleinen SPARC S7-2 Servern
Praktische Erfahrungen mit den kleinen SPARC S7-2 Servern
 
Einführung in Docker
Einführung in DockerEinführung in Docker
Einführung in Docker
 
Agorum core-installation-linux-6 4-0a
Agorum core-installation-linux-6 4-0aAgorum core-installation-linux-6 4-0a
Agorum core-installation-linux-6 4-0a
 
Wiederherstellung von Daten im Rechenzentrum - OPITZ CONSULTING - Andreas Rei...
Wiederherstellung von Daten im Rechenzentrum - OPITZ CONSULTING - Andreas Rei...Wiederherstellung von Daten im Rechenzentrum - OPITZ CONSULTING - Andreas Rei...
Wiederherstellung von Daten im Rechenzentrum - OPITZ CONSULTING - Andreas Rei...
 

Andere mochten auch

Diversidad sexual en la escuela(1)
Diversidad sexual en la escuela(1)Diversidad sexual en la escuela(1)
Diversidad sexual en la escuela(1)
Hugo Acosta
 
La puesta del carg uye un despido arbitrario
La puesta del carg uye un despido arbitrarioLa puesta del carg uye un despido arbitrario
La puesta del carg uye un despido arbitrario
Marciano Ore Malmaceda
 
Innovaciones educativas con recursos abiertos (rea)arturo suástegui huicochea
Innovaciones educativas con recursos abiertos  (rea)arturo suástegui huicocheaInnovaciones educativas con recursos abiertos  (rea)arturo suástegui huicochea
Innovaciones educativas con recursos abiertos (rea)arturo suástegui huicochea
Arturo Suástegui
 
Herramientas informáticas. inocencio meléndez julio. procesador de texto.
Herramientas informáticas. inocencio meléndez julio. procesador de texto.Herramientas informáticas. inocencio meléndez julio. procesador de texto.
Herramientas informáticas. inocencio meléndez julio. procesador de texto.
INOCENCIO MELÉNDEZ JULIO
 
Conte de Miguel arjona
Conte de Miguel arjonaConte de Miguel arjona
Conte de Miguel arjona
Martin Xavier
 
Pfiffikus ferien 2013 ... raus aus dem wedding
Pfiffikus ferien 2013 ... raus aus dem weddingPfiffikus ferien 2013 ... raus aus dem wedding
Pfiffikus ferien 2013 ... raus aus dem wedding
kib_gmbh
 
Inocencio melendez julio.¿es el rol del docente determinante en la educació...
 Inocencio melendez julio.¿es el rol del docente determinante en la educació... Inocencio melendez julio.¿es el rol del docente determinante en la educació...
Inocencio melendez julio.¿es el rol del docente determinante en la educació...
INOCENCIO MELÉNDEZ JULIO
 

Andere mochten auch (20)

Diversidad sexual en la escuela(1)
Diversidad sexual en la escuela(1)Diversidad sexual en la escuela(1)
Diversidad sexual en la escuela(1)
 
Ira, rabia o cólera, sinónimos desagradables
Ira, rabia o cólera, sinónimos desagradablesIra, rabia o cólera, sinónimos desagradables
Ira, rabia o cólera, sinónimos desagradables
 
La puesta del carg uye un despido arbitrario
La puesta del carg uye un despido arbitrarioLa puesta del carg uye un despido arbitrario
La puesta del carg uye un despido arbitrario
 
Innovaciones educativas con recursos abiertos (rea)arturo suástegui huicochea
Innovaciones educativas con recursos abiertos  (rea)arturo suástegui huicocheaInnovaciones educativas con recursos abiertos  (rea)arturo suástegui huicochea
Innovaciones educativas con recursos abiertos (rea)arturo suástegui huicochea
 
Poster Point 25 September 2014
Poster Point 25 September 2014Poster Point 25 September 2014
Poster Point 25 September 2014
 
Herramientas informáticas. inocencio meléndez julio. procesador de texto.
Herramientas informáticas. inocencio meléndez julio. procesador de texto.Herramientas informáticas. inocencio meléndez julio. procesador de texto.
Herramientas informáticas. inocencio meléndez julio. procesador de texto.
 
trabajo final.
trabajo final.trabajo final.
trabajo final.
 
Conte de Miguel arjona
Conte de Miguel arjonaConte de Miguel arjona
Conte de Miguel arjona
 
Pfiffikus ferien 2013 ... raus aus dem wedding
Pfiffikus ferien 2013 ... raus aus dem weddingPfiffikus ferien 2013 ... raus aus dem wedding
Pfiffikus ferien 2013 ... raus aus dem wedding
 
Las 7-maravillas-del-perú
Las 7-maravillas-del-perúLas 7-maravillas-del-perú
Las 7-maravillas-del-perú
 
gold im Mai – DAS STAR-MAGAZIN von Netto
gold im Mai – DAS STAR-MAGAZIN von Nettogold im Mai – DAS STAR-MAGAZIN von Netto
gold im Mai – DAS STAR-MAGAZIN von Netto
 
Formato s..
Formato s..Formato s..
Formato s..
 
TMT Holz für M8 Medien
TMT Holz für M8 MedienTMT Holz für M8 Medien
TMT Holz für M8 Medien
 
Begrüssung durch die Bauherrschaft
Begrüssung durch die BauherrschaftBegrüssung durch die Bauherrschaft
Begrüssung durch die Bauherrschaft
 
Perspectivas, Luis Salvador Velasquez Rosas
Perspectivas, Luis Salvador Velasquez RosasPerspectivas, Luis Salvador Velasquez Rosas
Perspectivas, Luis Salvador Velasquez Rosas
 
Fundación María Ecuménica 10 años de Amor en Acción
Fundación María Ecuménica 10 años de Amor en AcciónFundación María Ecuménica 10 años de Amor en Acción
Fundación María Ecuménica 10 años de Amor en Acción
 
Inocencio melendez julio.¿es el rol del docente determinante en la educació...
 Inocencio melendez julio.¿es el rol del docente determinante en la educació... Inocencio melendez julio.¿es el rol del docente determinante en la educació...
Inocencio melendez julio.¿es el rol del docente determinante en la educació...
 
Klenk & Hoursch Krisenkommunikation Umfrageergebnisse (deutsch)
Klenk & Hoursch Krisenkommunikation Umfrageergebnisse (deutsch)Klenk & Hoursch Krisenkommunikation Umfrageergebnisse (deutsch)
Klenk & Hoursch Krisenkommunikation Umfrageergebnisse (deutsch)
 
Arietehidraulico 9°a
Arietehidraulico 9°aArietehidraulico 9°a
Arietehidraulico 9°a
 
So foerdert der Kanton Luzern das beste Bauen und Erneuern, Jules Gut
So foerdert der Kanton Luzern das beste Bauen und Erneuern, Jules GutSo foerdert der Kanton Luzern das beste Bauen und Erneuern, Jules Gut
So foerdert der Kanton Luzern das beste Bauen und Erneuern, Jules Gut
 

Ähnlich wie 01 sqlplus

Ähnlich wie 01 sqlplus (20)

Ausgewählte PL/SQL Packages (3)
Ausgewählte PL/SQL Packages (3)Ausgewählte PL/SQL Packages (3)
Ausgewählte PL/SQL Packages (3)
 
Norbert Rieger – IT-Tage 2015 – Optimierung der Performance bei Oracle-Datenb...
Norbert Rieger – IT-Tage 2015 – Optimierung der Performance bei Oracle-Datenb...Norbert Rieger – IT-Tage 2015 – Optimierung der Performance bei Oracle-Datenb...
Norbert Rieger – IT-Tage 2015 – Optimierung der Performance bei Oracle-Datenb...
 
MySQL Performance Tuning für Oracle-DBA's
MySQL Performance Tuning für Oracle-DBA'sMySQL Performance Tuning für Oracle-DBA's
MySQL Performance Tuning für Oracle-DBA's
 
Oracle 11g - Neuerungen im Überblick
Oracle 11g - Neuerungen im ÜberblickOracle 11g - Neuerungen im Überblick
Oracle 11g - Neuerungen im Überblick
 
Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)
Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)
Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)
 
Webinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 ReleaseinformationenWebinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 Releaseinformationen
 
Datenbank-Hausputz für Einsteiger
Datenbank-Hausputz für EinsteigerDatenbank-Hausputz für Einsteiger
Datenbank-Hausputz für Einsteiger
 
Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)
 
Go - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeGo - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare Systeme
 
Oracle connection manager_cman_doag_sig_security_mai_2015
Oracle connection manager_cman_doag_sig_security_mai_2015Oracle connection manager_cman_doag_sig_security_mai_2015
Oracle connection manager_cman_doag_sig_security_mai_2015
 
Oracle Old Features DOAG 2011
Oracle Old Features DOAG 2011Oracle Old Features DOAG 2011
Oracle Old Features DOAG 2011
 
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
 
Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)
 
TYPO3 CMS 8.4 - Die Neuerungen - pluswerk
TYPO3 CMS 8.4 - Die Neuerungen - pluswerkTYPO3 CMS 8.4 - Die Neuerungen - pluswerk
TYPO3 CMS 8.4 - Die Neuerungen - pluswerk
 
Domino Statistiken verstehen und nutzen (Teil 1) - 41. DNUG Konferenz
Domino Statistiken verstehen und nutzen (Teil 1) - 41. DNUG KonferenzDomino Statistiken verstehen und nutzen (Teil 1) - 41. DNUG Konferenz
Domino Statistiken verstehen und nutzen (Teil 1) - 41. DNUG Konferenz
 
TYPO3 CMS 7.4 - Die Neuerungen - pluswerk
TYPO3 CMS 7.4 - Die Neuerungen - pluswerkTYPO3 CMS 7.4 - Die Neuerungen - pluswerk
TYPO3 CMS 7.4 - Die Neuerungen - pluswerk
 
CadSoft - Elektro Anwendungen - Tutorial Version 4
CadSoft - Elektro Anwendungen - Tutorial Version 4CadSoft - Elektro Anwendungen - Tutorial Version 4
CadSoft - Elektro Anwendungen - Tutorial Version 4
 
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
 
Performance-Analyse mit Bordmitteln
Performance-Analyse mit BordmittelnPerformance-Analyse mit Bordmitteln
Performance-Analyse mit Bordmitteln
 
OSMC 2008 | Monitoring Microsoft SQL Server by Michael Streb
OSMC 2008 | Monitoring Microsoft SQL Server by Michael StrebOSMC 2008 | Monitoring Microsoft SQL Server by Michael Streb
OSMC 2008 | Monitoring Microsoft SQL Server by Michael Streb
 

Mehr von Gunther Pippèrr

Oracle no sql-doag-datenbank_konferenz_juni_2014
Oracle no sql-doag-datenbank_konferenz_juni_2014Oracle no sql-doag-datenbank_konferenz_juni_2014
Oracle no sql-doag-datenbank_konferenz_juni_2014
Gunther Pippèrr
 

Mehr von Gunther Pippèrr (8)

DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysieren
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysierenDBSAT – Die Oracle DATENBANK bzgl. PII Daten analysieren
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysieren
 
Über Rechte/Rollen und den sicheren Betrieb der Datenbank
Über Rechte/Rollen und den sicheren Betrieb der DatenbankÜber Rechte/Rollen und den sicheren Betrieb der Datenbank
Über Rechte/Rollen und den sicheren Betrieb der Datenbank
 
Archiving Oracle Primavera project plans with software development tools
Archiving Oracle Primavera project plans with software development toolsArchiving Oracle Primavera project plans with software development tools
Archiving Oracle Primavera project plans with software development tools
 
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperrOracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
 
Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02
Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02
Doag 2104 manuskript_hadoop_oracle_integration_gunther_pipperr_v02
 
Oracle hadoop doag-big-data_09_2014_gpi
Oracle hadoop doag-big-data_09_2014_gpiOracle hadoop doag-big-data_09_2014_gpi
Oracle hadoop doag-big-data_09_2014_gpi
 
Oracle no sql-doag-datenbank_konferenz_juni_2014
Oracle no sql-doag-datenbank_konferenz_juni_2014Oracle no sql-doag-datenbank_konferenz_juni_2014
Oracle no sql-doag-datenbank_konferenz_juni_2014
 
Oracle nosql twjug-oktober-2014_taiwan_print_v01
Oracle nosql twjug-oktober-2014_taiwan_print_v01Oracle nosql twjug-oktober-2014_taiwan_print_v01
Oracle nosql twjug-oktober-2014_taiwan_print_v01
 

01 sqlplus

  • 1. Seite 1Gunther Pippèrr © 2010 http://www.pipperr.de SQL*PLUS Das Schweizer Taschenmesser für die Oracle-Datenbank
  • 2. Seite 2Gunther Pippèrr © 2010 http://www.pipperr.de Arbeiten mit SQL*Plus  SQL-Kommando-Interpreter für Oracle DBMS  Arbeitet mit dem SQLNET-Protokoll  Voraussetzung: – Min. Oracle Client Installation – Verbindungsbeschreibung zur Datenbank bekannt und konfiguriert – Dateien: • Tnsnames.ora • sqlnet.ora Tnsnames .ora Sqlnet .ora Tnsnames .ora
  • 3. Seite 3Gunther Pippèrr © 2010 http://www.pipperr.de SQL Anweisungen Buffer SQL*Plus- Kommandos SQL- und SQL*Plus-Interaktion Server prozess SQLNET Listener SQL*Plus SQL>select. . Formatierte Berichte
  • 4. Seite 4Gunther Pippèrr © 2010 http://www.pipperr.de Der Aufruf von SQL*Plus  Grafische Oberfläche unter Windows: – %ORACLE_HOME%/bin/Sqlplusw.exe  Textoberfläche unter einer Shell – %ORACLE_HOME%/bin/Sqlplus.exe  Empfehlung: Textoberfläche!
  • 5. Seite 5Gunther Pippèrr © 2010 http://www.pipperr.de Schnelles Arbeiten mit SQL*Plus  Verknüpfung anlegen auf die Textversion von SQL*Plus auf die am meisten benötigen User sqlplus scott/tiger@oradb1 oder scott@oradb1  Arbeitsverzeichnis mit Standardskripten setzen  Copy/Paste in CMD Shell einstellen  Farben und Font setzen
  • 6. Seite 6Gunther Pippèrr © 2010 http://www.pipperr.de Quickconnect mit SQL*Plus 10g  Quickconnect / Easy Connect sqlplus system/oracle@'//localhost:1521/GPI'  URL => 'USER@'//HOST:PORT/SID'
  • 7. Seite 7Gunther Pippèrr © 2010 http://www.pipperr.de Die Backtaste unter Unix verwenden  Unter Unix wird nur die Backtaste unterstützt (keine Arrow Keys, kein Kommando-Buffer)  Setzen der Backtaste über stty stty erase <Escape_Sequence _Backtaste_shell> ~>stty erase ^? sqlplus>stty * ^?^?^?^?v
  • 8. Seite 8Gunther Pippèrr © 2010 http://www.pipperr.de Das Arbeitsverzeichnis setzen SQLPATH  Mit der Umgebungsvariablen SQLPATH das Arbeitsverzeichnis setzen  Skripte werden zuerst in diesem Verzeichnis gesucht! ~>export SQLPATH=~
  • 9. Seite 9Gunther Pippèrr © 2010 http://www.pipperr.de Verbindung zur Datenbank aufbauen  Verbindung wird durch SQL*Net aufgebaut  Angabe des Username/Passwort@TNSalias Beispiel:  Default TNSALIAS mit der Umgebungsvariablen LOCAL setzen SQL> connect scott/tiger@oradb1
  • 10. Seite 10Gunther Pippèrr © 2010 http://www.pipperr.de Ein SQL Statement eingeben  SQL Statement eingeben  Zeilenumbruch mit RETURN  Eingabe abbrechen mit .  Eingabe ausführen mit ; oder / in neuer Zeile  Online-Hilfe mit help (rudimentär .-) )  Eingabe löschen mit ESC
  • 11. Seite 11Gunther Pippèrr © 2010 http://www.pipperr.de Zeilen-Eingaben umbrechen mit -  Eingabezeilen können mit dem Zeichen - umgebrochen werden (ähnlich in der Bash)  Beispiel: sql>EXECUTE DBMS_OUTPUT.PUT_LINE - > ('Dies ist eine sehr lange Zeile ................') Dies ist eine sehr lange Zeile ......................
  • 12. Seite 12Gunther Pippèrr © 2010 http://www.pipperr.de Datenbank-Parameter anzeigen lassen  Parameter der DB mit SHOW PARAMETER <Parameter> anzeigen  Zeigt alle Parameter, deren Name ein Teil des Suchstrings ist Beispiel:  Vor 8i nur im Servermanager (svrmgrl) möglich sql>show parameter dump NAME TYPE VALUE -------------------------- ------- ---------------------------- background_dump_dest string d:oracleadmingpibdump max_dump_file_size string 10240 user_dump_dest string d:oracleadmingpiudump
  • 13. Seite 13Gunther Pippèrr © 2010 http://www.pipperr.de SQL*Plus-Datei-Befehle  Die Ausgabe und den Buffer von SQL*Plus speichern • SAV[E] filename [CREATE | REPLACE | APPEND] Buffer in Datei speichern • GET filename Datei in Buffer schreiben • STA[RT] filename Datei ausführen • @ filename Datei ausführen • ED[IT] filename Datei editieren • SPOOL filename Ausgaben in Datei spoolen
  • 14. Seite 14Gunther Pippèrr © 2010 http://www.pipperr.de Die SQL*Plus-Editier-Befehle (1)  Den Buffer von SQL*Plus bearbeiten • A[PPEND] text Text anhängen • C[HANGE] / old / new aktuelle Zeile im Buffer ändern aktuelle Zeile durch Nummer setzen! • C[HANGE] / text / Text im Buffer löschen • CL[EAR] BUFF[ER] Buffer löschen • DEL Letzte Zeile löschen • DEL n Zeile n löschen • DEL m n Zeile m bis n löschen
  • 15. Seite 15Gunther Pippèrr © 2010 http://www.pipperr.de Die SQL*Plus-Editier-Befehle (2)  Den Buffer von SQL*Plus bearbeiten • I[NPUT] Neue Zeile im Buffer hinzufügen • I[NPUT] text Neuen Text am Ende anfügen • L[IST] Buffer ausgeben • L[IST] n Buffer Zeile n ausgeben • L[IST] m n Buffer Zeile m bis n ausgeben • R[UN] Buffer ausführen ( auch / möglich) • n Zeile des Buffers anzeigen • n text Zeile n des Buffer Text einfügen • 0 text erste Zeile text eingeben
  • 16. Seite 16Gunther Pippèrr © 2010 http://www.pipperr.de Kommando-Shell aus SQL*PLUS aufrufen  Der HOST-Befehl – Kommando-Interpreter des Betriebssystems aufrufen  Verlassen mit exit
  • 17. Seite 17Gunther Pippèrr © 2010 http://www.pipperr.de Steuern von SQL*Plus mit SET  Die SQL*Plus-Umgebung anpassen – SET-Befehl => setzt die Eigenschaften der Umgebung – Befehl HELP SET => Online-Hilfe für die möglichen Einstellungen – SHOW-Befehl => gesetzte Werte überprüfen SET system_variable value
  • 18. Seite 18Gunther Pippèrr © 2010 http://www.pipperr.de Wichtige SET-Kommando-Variablen  SET-Anweisungen – UNDERLINE {_ | text} Linie unter Spaltenbezeichner – COLSEP {_ | text} Trennzeichen der Spalten – FEEDBACK {6 | n |OFF | ON} SQL*Plus-Angaben im Ergebnis unterdrücken – HEADING {OFF | ON} Spaltenname anzeigen – LINESIZE {80 | n} Breite der Ausgabe – LONG {80 | n} Anzahl der Zeichen von Long – PAGESIZE {24 | n} Anzahl Zeilen pro Seite – PAUSE {OFF | ON | text} Pause nach jeder Seite – TAB {OFF | ON} Tabulatoren für Leerzeichen
  • 19. Seite 19Gunther Pippèrr © 2010 http://www.pipperr.de Das SPOOL-Kommando  SPOOL <dateiname> Alle Eingaben und Ergebnisse werden in eine Datei <dateiname> geschrieben  Mit SPOOL OFF ausschalten  MIT SPOOL ON wird in Default-Datei on.LST im Arbeitsverzeichnis geschrieben
  • 20. Seite 20Gunther Pippèrr © 2010 http://www.pipperr.de Die Hilfe von SQL*Plus verwenden  Wie werden die Hilfetabellen für SQL*Plus installiert (vor 8i)? • Zur Verwendung des sql>help Kommandos • Wie werden die Hilfetabellen für SQL*Plus installiert ( 8i/9i )? #!/bin/sh $ORACLE_HOME/bin/svrmgrl << EOF connect system/manager @$ORACLE_HOME/sqlplus/admin/help/helptbl.sql; exit; EOF $ORACLE_HOME/bin/svrmgrl << EOF connect system/manager @$ORACLE_HOME/sqlplus/admin/help/helpindx.sql; exit; EOF cd $ORACLE_HOME/sqlplus/admin/help $ORACLE_HOME/bin/sqlldr userid=system/manager control=plushelp.ctl $ORACLE_HOME/bin/sqlldr userid=system/manager control=plshelp.ctl $ORACLE_HOME/bin/sqlldr userid=system/manager control=sqlhelp.ctl ~>Cd $ORACLE_HOME/sqlplus/admin/help/ ~>sqlplus system/manger system>@helpbld.sql . helpus.sql
  • 21. Seite 21Gunther Pippèrr © 2010 http://www.pipperr.de Ein Datenbank-Objekt beschreiben  Die DESCRIBE-Anweisung Beispiel: Name Null? Type --------------- -------- -------------- EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2) sqlpus>desc emp
  • 22. Seite 22Gunther Pippèrr © 2010 http://www.pipperr.de Die login.sql-Datei  wird aus dem Arbeitsverzeichnis gelesen  wird immer beim Start gelesen  Platz für die gewünschten SET-Kommandos oder anderen SQL-Befehlen, die immer beim Start ausgeführt werden sollen
  • 23. Seite 23Gunther Pippèrr © 2010 http://www.pipperr.de Beispiel LOGIN.SQL  automatisch bei Start von SQL*Plus ausführen set head off set termout on select 'User: '|| user || ' on database ' || global_name, '(Terminal='||USERENV('TERMINAL')|| ', Session-Id='||USERENV('SESSIONID')||')' from global_name; REM Set prompt column _user noprint new_value user_name column _sid noprint new_value sid column _session noprint new_value session_id select user "_user" , global_name "_sid" , USERENV('SESSIONID') "_session" from global_name; set sqlprompt &SESSION_ID:&USER_NAME:&SID> set head on Spalten mit „noprint“ werden nicht ausgeben set sqlprompt "_user 'on' _date 'at' _connect_identifier >"
  • 24. Seite 24Gunther Pippèrr © 2010 http://www.pipperr.de Ausführungspläne in SQL*Plus anzeigen (1)  Ausführungspläne erzeugen mit AUTOTRACE  Vorbereitung – Plus-Rollen erzeugen (global bzw. individuell) • Rolle • Persönliche Tabelle für die Execution Pläne anlegen sys> @?/sqlplus/admin/plustrce.sql sys> grant plustrace to scott; scott> @?/rdbms/admin/utlxplan.sql
  • 25. Seite 25Gunther Pippèrr © 2010 http://www.pipperr.de Ausführungspläne in SQL*Plus anzeigen (2)  Plan-Tabelle für alle Entwickler anlegen – Owner für Plantabelle – Plan-Tabelle als „GLOBAL TEMPORARY TABLE“ mit „ON COMMIT PRESERVE ROWS“ anlegen SQL> connect tools/tool123@oragpi SQL>CREATE GLOBAL TEMPORARY TABLE PLAN_TABLE ( statement_id varchar2(30), ....... ,filter_predicates varchar2(4000)) ON COMMIT PRESERVE ROWS ; SQL>grant all on plan_table to public; sys> create user tools identified by tool123 default tablespace tools temporary tablespace temp; sys> grant connect to tools; sys> grant create table to tools;
  • 26. Seite 26Gunther Pippèrr © 2010 http://www.pipperr.de Ausführungspläne in SQL*Plus anzeigen (3)  Plan-Tabelle für alle Entwickler anlegen – Public Synonym für diese Tabelle anlegen – Alle Entwickler können sich nun diese Plan-Tabelle teilen, nur Ihre Daten sind für Sie sichtbar, am Ende der Session werden die Daten automatisch gelöscht. sys>create public synonym plan_table for tools.plan_table;
  • 27. Seite 27Gunther Pippèrr © 2010 http://www.pipperr.de Die Ausgabe sql>set autotrace on sql>select LAST_NAME from EMPLOYEES where EMP_ID=93698; LAST_NAME ------------------------ Abbott Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=13) 1 0 TABLE ACCESS (BY INDEX ROWID) OF 'EMPLOYEES' (Cost=1 Card=1 Bytes=13) 2 1 INDEX (UNIQUE SCAN) OF 'EMP_PK' (UNIQUE) (Cost=1 Card=2) Statistics ---------------------------------------------------------- 0 recursive calls --> Internes SQL 0 db block gets --> DB Blöcke gelesen (Current Mode z.B. bei Updates) 3 consistent gets --> Konsistente Blöcke gelesen 0 physical reads --> Blöcke von Platte gelesen 0 redo size --> geschriebene Redo Daten 372 bytes sent via SQL*Net to client --> Daten vom Server 424 bytes received via SQL*Net from client --> Daten zum Server 4 SQL*Net roundtrips to/from client 0 sorts (memory) --> Sortiervorgänge im Speicher 0 sorts (disk) --> Sortiervorgänge auf Platte 1 rows processed estimate the taking bytes estimate the number of rows
  • 28. Seite 28Gunther Pippèrr © 2010 http://www.pipperr.de Ausführungsplan mit utlxpls abfragen  Ausführungsplan abfragen SQL> explain plan for 2 select * from emp join dept using(deptno); Explained. SQL> @?/rdbms/admin/utlxpls PLAN_TABLE_OUTPUT ------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost | -------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 14 | 700 | 5 | |* 1 | HASH JOIN | | 14 | 700 | 5 | | 2 | TABLE ACCESS FULL | DEPT | 4 | 72 | 2 | | 3 | TABLE ACCESS FULL | EMP | 14 | 448 | 2 | -------------------------------------------------------------------- Predicate Information (identified by operation id): PLAN_TABLE_OUTPUT ------------------------------------------------- 1 - access("EMP"."DEPTNO"="DEPT"."DEPTNO")
  • 29. Seite 31Gunther Pippèrr © 2010 http://www.pipperr.de Ein SQL-Skript enthält – Kommentare • -- Dies ist ein Kommentar • /* Dies ist ein mehrzeiliger Kommentar */ – SQL-Anweisungen • select * from emp where ename like ‘%1‘ – SQL*Plus-Anweisungen • Set Echo on – SQL*PLus-Variablen (variable) • variable wert number – Austauschvariablen mit dem &-Zeichen – Anweisungen werden mit dem / oder dem ; abgeschlossen
  • 30. Seite 32Gunther Pippèrr © 2010 http://www.pipperr.de Beispiel:  Wie oft ist ein Benutzer angemeldet? set ver off Prompt +------------ Alle aktiven Sessions eines Benutzers ----------+ accept username prompt Benutzername: Column sid FORMAT 999 HEADING "SID" Column serial# FORMAT 99999 HEADING "Serial#" column program FORMAT A35 WRAPPED Column username FORMAT A9 HEADING "Ora User" Column machine FORMAT A9 Column osuser FORMAT A8 HEADING "OS User" select s.sid, s.serial#, s.username, s.status, s.osuser, s.process, s.machine, s.program from v$session s where s.username like UPPER('&username'); set ver on
  • 31. Seite 33Gunther Pippèrr © 2010 http://www.pipperr.de Aufruf von SQL*Plus mit einem Skript  Beispiel  SQL*Plus wird gestartet und das entsprechende Skript ausgeführt  Aufruf in SQL*Plus: Es wird immer im Arbeitsverzeichnis gesucht  Mit dem ? kann das aktuelle ORACLE_HOME referenziert werden Benutzername und DB Alias für SQL*Net Skript Die Argumente für das Skript SQL>@myScript oder sta[rt] myScript SQL>@?/rdbms/admin/myScript sqlplus scott/tiger@oradb1 @myScript.sql argument1 .. 2
  • 32. Seite 34Gunther Pippèrr © 2010 http://www.pipperr.de Aufruf-Argumente beim Start übernehmen  Ähnlich der %1...n Syntax  Syntax: &1 --> erster Parameter &2 --> zweiter Parameter ....... &n --> n Parameter Beispiel:  Datei sEmp.sql sqlplus scott/tiger@oradb1 @sEmp.sql emp 7777 select * from emp where empno=&1
  • 33. Seite 35Gunther Pippèrr © 2010 http://www.pipperr.de Ersetzungsvariablen – SQL*Plus-Ersetzungsvariable um temporäre Wert zu speichern. • Ampersand (&) • Ampersand (&&) • DEFINE und ACCEPT – Übergabe von Variablen an SQL-Anweisungen – &Wert Fordert den Benutzer auf, einen Wert einzugeben – Achtung ! Reine Textersetzung! ' bei Literalen beachten! SQL> SELECT empno, ename, sal, deptno 2 FROM emp 3 WHERE empno = &employee_num; Enter value for employee_num: 7369 EMPNO ENAME SAL DEPTNO --------- ---------- --------- --------- 7369 SMITH 800 20
  • 34. Seite 36Gunther Pippèrr © 2010 http://www.pipperr.de Das Kommando SET VERIFY  Ausgabe der Textersetzung mit on und off einschalten bzw. ausschalten. SQL> SET VERIFY ON SQL> SELECT empno, ename, sal, deptno 2 FROM emp 3 WHERE empno = &employee_num; Enter value for employee_num: 7369 old 3: WHERE empno = &employee_num new 3: WHERE empno = 7369 ...
  • 35. Seite 37Gunther Pippèrr © 2010 http://www.pipperr.de Variablen in SQL*Plus erzeugen  Nur SQL*PLUS intern, HOST Variablen siehe Kapitel PL/SQL  Variablen können in SQL*Plus auf zwei Arten erzeugt werden: – DEFINE: erzeugt eine Benutzer-Variable vom Typ CHAR – ACCEPT: Eingabe eines Benutzers lesen und in einer Variablen speichern  Variablen sollten keine Leerzeichen enthalten – Falls doch, mit einfachen Anführungszeichen versehen
  • 36. Seite 38Gunther Pippèrr © 2010 http://www.pipperr.de ACCEPT variable [datatype] [FORMAT format] [PROMPT text] [HIDE] Das ACCEPT Kommando – Erzeugt einen benutzerdefinierten Prompt für die Eingabe – Definiert explizit den Datentyp – Kann für eine Passworteingabe die Eingaben des Benutzers ausblenden ACCEPT dept PROMPT 'Geben Sie den Namen ein: ' SELECT * FROM dept WHERE dname = UPPER('&dept') / Geben Sie den Namen ein: Sales DEPTNO DNAME LOC --------- -------------- ------------- 30 SALES CHICAGO
  • 37. Seite 39Gunther Pippèrr © 2010 http://www.pipperr.de Das DEFINE und UNDEFINE Kommando  Ein Variable bleibt solange definiert, bis: – mit UNDEFINE gelöscht wird – SQL*Plus beendet wird  Mit DEFINE überprüfen  Falls gewünscht, mit DEFINE in der login.sql die Variablen definieren, die stets vorhanden sein sollen. SQL> define Parameter=Wert SQL> define DEFINE PARAMETER = "Wert" (CHAR) SQL> Variablen anzeigen
  • 38. Seite 40Gunther Pippèrr © 2010 http://www.pipperr.de Define Tips  Beispiel: Select * from dept where deptno in ('10','20','30'); Define dept_string= '''10'',''20'',''30''' Select * from dept where deptno in (&dept_string); Drei Treffer ! Oder: Define dept_string = '10','20','30' Define dept_string= '(''10'',''20'',''30'')' Lösung: Select * from dept where deptno in &dept_string; Select * from dept where deptno in (&dept_string); Ein Treffer !
  • 39. Seite 41Gunther Pippèrr © 2010 http://www.pipperr.de Formatierte Ausgaben mit SQL*Plus  Formatierungs-Anweisungen – COLUMN [column option] • Aussehen einer Spalte – TTITLE [text | OFF | ON] • Setzen eines Titels über der Seite – BTITLE [text | OFF | ON] • Setzen eines Footer-Texts – BREAK [ON report_element] • Spaltenumbruch definieren bei geändertem Wert
  • 40. Seite 42Gunther Pippèrr © 2010 http://www.pipperr.de Die Formatierung von Spalten  Kontrolliert das Aussehen einer Spalte – CLE[AR]: löscht zuvor gesetzte Formatierung – FOR[MAT] format: setzt die Formatierung über eine Formatangabe – HEA[DING] text: setzt die Überschrift der Spalte mit | im Text der Überschrift wird ein Umbruch erreicht – JUS[TIFY] {align}: richte die Überschrift der Spalte aus (left, center, oder right) COL[UMN] [{column|alias} [option]]
  • 41. Seite 43Gunther Pippèrr © 2010 http://www.pipperr.de Verwendung des COLUMN-Kommandos – Überschriften von Spalten erzeugen – Aktuelle Einstellungen darstellen – Einstellungen löschen. COLUMN ename HEADING 'Angestellter' FORMAT A20 COLUMN sal JUSTIFY LEFT FORMAT 99,990.00L COLUMN mgr FORMAT 999999999 NULL 'Kein Chef' COLUMN ename COLUMN ename CLEAR
  • 42. Seite 44Gunther Pippèrr © 2010 http://www.pipperr.de Das Formatmodell von COLUMN Beispiel „1234“ Format Beschreibung Beispiel Ergebnis A<n> Ausgabeweite ----- 1234 9 Nullwerte unterdrücken 9999 1234 0 Nullwerte anzeigen 09999 01234 D und G Dezimalpunkt und Tausender Punkt 9G999D00 1.234,00
  • 43. Seite 45Gunther Pippèrr © 2010 http://www.pipperr.de Rechnen in Berichten mit SQL*Plus  „Compute sum“ und „break on“ Sys:gpi>compute sum of bytes on pool sys:gpi>break on pool skip 1 sys:gpi>select pool , name , bytes from v$sgastat order by pool,name; POOL NAME BYTES ----------- -------------------------- -------- java pool free memory 1441792 memory in use 2560000 *********** -------- sum 4001792 large pool free memory 7871040 session heap 128960 *********** -------- sum 8000000 NULL db_block_buffers 8192000 fixed_sga 70924 log_buffer 4999680 *********** -------- sum 13262604 Berechne die Summe auf die Spalte Bytes pro distinkten Wert der Spalte Pool Umbruch einfügen
  • 44. Seite 46Gunther Pippèrr © 2010 http://www.pipperr.de INSERT INTO dept VALUES (10,'ACCOUNTING','NEW YORK'); INSERT INTO dept VALUES (20,'RESEARCH','DALLAS'); INSERT INTO dept VALUES (30,'SALES','CHICAGO'); INSERT INTO dept VALUES (40,'OPERATIONS','BOSTON'); INSERT INTO dept VALUES (91,'DEVELOPMENT','AUGSBURG'); SET HEADING OFF ECHO OFF FEEDBACK OFF SET PAGESIZE 0 SPOOL data.sql SELECT 'INSERT INTO dept VALUES ('|| deptno||','|| ''''||dname||''''||','|| ''''||loc||''''||');' FROM dept; SPOOL OFF SET HEADING ON ECHO OFF FEEDBACK ON SET PAGESIZE 24 SQL Data Dictionary SQL Skript SQL verwenden, um SQL zu erzeugen +
  • 45. Seite 47Gunther Pippèrr © 2010 http://www.pipperr.de SQL> SELECT 'DROP TABLE ' || object_name || ';' 2 FROM user_objects 3 WHERE object_type = 'TABLE'; DROP TABLE EMP; DROP TABLE DEPT; DROP TABLE SALGRADE; . . . Ein Skript dynamisch erzeugen  Löschen aller Tabellen eines Benutzers
  • 46. Seite 48Gunther Pippèrr © 2010 http://www.pipperr.de SET ECHO OFF SET FEEDBACK OFF SET PAGESIZE 0 SPOOL droptab.sql SPOOL OFF SET ECHO ON SET FEEDBACK ON SET PAGESIZE 24 Die Umgebung setzen Auf die Standard-Werte zurücksetzen SQL STATEMENT Die Umgebung einstellen  Mit SET die SQL*Plus-Ausgabe vorbereiten
  • 47. Seite 49Gunther Pippèrr © 2010 http://www.pipperr.de SET ECHO OFF SET FEEDBACK OFF SET PAGESIZE 0 SPOOL dropem.sql SELECT 'DROP TABLE ' || object_name || ';' FROM user_objects WHERE object_type = 'TABLE'; SPOOL OFF SET ECHO ON SET FEEDBACK ON SET PAGESIZE 24 Das komplette Beispiel  Ein Drop-Skript erzeugen
  • 48. Seite 50Gunther Pippèrr © 2010 http://www.pipperr.de SET HEADING OFF ECHO OFF FEEDBACK OFF SET PAGESIZE 0 SPOOL data.sql SELECT 'INSERT INTO dept VALUES ('|| deptno||','|| ''''||dname||''''||','|| ''''||loc||''''||');' FROM dept; SPOOL OFF SET HEADING ON ECHO OFF FEEDBACK ON SET PAGESIZE 24 Den Inhalt einer Tabelle in eine Datei  Ein Import/Export-Beispiel
  • 49. Seite 51Gunther Pippèrr © 2010 http://www.pipperr.de Sourcecode '''X''' '''' ''''||dname||'''' Ergebnis 'X' ' 'AUGSBURG' Hochkommatas erzeugen  Escapesequenz von Hochkommatas
  • 50. Seite 52Gunther Pippèrr © 2010 http://www.pipperr.de Passwörter in SQL-Skripten  Die Aufrufe von Oracle Tools über die Kommandozeile enthalten die Passwörter  Über lokale Umgebungsvariablen maskieren! Neuen Shell Prozess temporär erzeugen mit gesetzten Variablen (z.B. Fork aus C-Prog.)  Vorteil: neben der Sicherheit zentrale Verwaltung aller Passwörter Sqlplus scott/tiger@db1 @import.sql Sqlplus scott/$SCOTT_PWD@db1 @import.sql
  • 51. Seite 53Gunther Pippèrr © 2010 http://www.pipperr.de Die Aufrufparameter von Prozessen  PS Liste enthält die Aufrufparameter eines Prozesses (-x unter Linux)  Passwort nicht in der Umgebung verwenden  Passwort und Befehle über Pipe an sqlplus ‚übergeben‘  Oder führen leider nicht zum gewünschten Erfolg  Evtl. OPS$ Account benutzen 4555 sqlplus sqlplus scott/tiger@db1 @test.sql >sqlplus << EOF scott/tiger@gpi > ... Befehle > EOF >sqlplus `echo scott/tiger@db1` BackTick! Richtung beachten!
  • 52. Seite 54Gunther Pippèrr © 2010 http://www.pipperr.de Zusammenfassung  SQL*Plus ist DAS Werkzeug für die Oracle-Datenbank – Alle administrativen Tasks können mit SQL*Plus durchgeführt werden – Für die Entwicklung unentbehrlich – Die wichtigsten Umgebungsvariablen • TNS_ADMIN => wo finde ich meine SQL*Net-Dateien • LOCAL => welchen TNS ALIAS möchte ich als Default • SQLPATH => wo sind meine SQL-Skripte – Arbeitsverzeichnis sauber setzen – mit „login.sql“ arbeiten, um das Verwechseln von Datenbanken zu vermeiden – DOS Oberfläche empfehlenswerter als das Grafische Tool
  • 53. Seite 55Gunther Pippèrr © 2010 http://www.pipperr.de Fragen Antworten SQL*Plus