Whitepaper SQLcl – das neue SQL*Plus Eine Anleitung zum Ausprobieren SQLcl – das neue SQL*Plus Eine Anleitung zum Ausprobieren Autor: Michael Schulze für OPITZ CONSULTING Haben Sie Fragen zu diesem Thema? Dann sprechen Sie mich gerne an! Michael Schulze, OPITZ CONSULTING Senior Consultant [email protected] Inhaltsübersicht Vorwort Download, Installation und erster Test Interessante Features Extrahieren der DDL Statements & Objekte neu anlegen History-Funktionalität und Ersetzen der Befehlszeile Bessere Darstellung der Objektinhalte Verwendung von Farben in SQL-Statements Import-/Exportfunktionalität Verwendung von Aliases Insert Statements generieren Mehrere DB-Connects mit Bridge Command verbinden Change Directory Formatieren von SQL-Statements Tabellenliste Objektinformationen mit Abhängigkeiten anzeigen Repeats, Wiederholung von Statements Apex Informationen anzeigen Startumgebungen setzen für SQLcl Informationen zu Oracle Fehlermeldungen anzeigen Eastereggs Quellen Über OPITZ CONSULTING Vorwort In diesem Whitepaper stelle ich Ihnen das Tool SQLcl als sinnvolle Ergänzung und Alternative zu SQL*Plus vor. SQL*Plus ist in die Jahre gekommen, für Neuerungen ist es also an der Zeit: SQLcl kommt mit frischem Wind daher. Entstanden im Developer Projekt, ist das Command Line Tool mit vielen sinnvollen Features ausgestattet, von denen ich einige im im Folgenden näher beleuchten möchte. Die aktuelle Version befindet sich zwar noch im Status "Early Adopter", jedoch sind die integrierten Features schon gut zu nutzen und erleichtern die Arbeit für Anwender, die oft mit SQL*Plus arbeiten, enorm. SQLcl wird "out of the box" installiert, lediglich eine installierte Java-Runtime-Version ist Voraussetzung. Viel Spaß beim Ausprobieren! Texte und Abbildungen wurden mit größter Sorgfalt erarbeitet. OPITZ CONSULTING kann jedoch für eventuell verbleibende fehlerhafte Angaben und deren Folgen weder eine juristische Verantwortung noch irgendeine Haftung übernehmen. Das Recht an dargestellten Verfahren, Showcases, Implementierungsbeispielen und Sourcecodes liegt ausschließlich bei OPITZ CONSULTING. © OPITZ CONSULTING Deutschland GmbH 2015 Whitepaper: SQL—das neue SQL*Plus Seite 2 Download, Installation und erster Test Extrahieren der DDL Statements & Objekte neu anlegen Unter folgender URL kann das Zipfile (11M) heruntergeladen und anschließend in einen Pfad extrahiert werden: http://download.oracle.com/otn/ java/sqldeveloper/sqlcl-4.2.0.15.177.0246-no-jre.zip Über das Package: DBMS_METADATA können DDL-Statements extrahiert werden, diese Funktionalität wurde auch in SQLcl integriert. Die DDL Statements können angezeigt (STDOUT) oder in eine Datei gespeichert werden: Im Installationsverzeichnis (hier: /root/sqlcl) befindet sich eine Datei: "sql", diese ist zu starten. Analog funktioniert das im Windows Umfeld, hier wäre das Startfile: sql.bat. Das wars eigentlich schon, jetzt kann das Tool genutzt werden (./sql aufufen). ddl test ddl test /tmp/cr_test.sql Aufgrund der Java-JDBC-Funktionaliät von SQLcl ist eine Oracle Net Umgebung (tnsnames.ora ua.) nicht erforderlich, TNS steht aber zusammen mit weiteren Möglichkeiten (wie SSH, LDAP u. a.) zusätzlich zur Verfügung. Anmelden kann man sich nun mit der EZConnect Syntax (host:port/sid), im Beispiel hier an einer XE11g DB interaktiv: root/sqlcl/bin/sql Username: test Password: test Database: localhost:1521/XE Es können auch DDL Statements für neue Datenbank-Objekte erstellt werden, hier wird die Tabelle „test2“ aus der Vorlage: Tabelle „test1“ generiert (Create Table as Select): Oder mit Parameterübergabe: ctas test test1 /root/sqlcl/bin/sql test/test@localhost:1521/ XE Interessante Features Im Weiteren sollen einige Features bzgl. SQLcl im praktischen Betrieb vorgestellt werden, die den Mehrwert der neuen Anwendung unterstreichen. Dazu wurden zunächst einige Testdaten generiert: drop table test; create table test (id number, text varchar2 (100)); alter table test add constraint pk_test primary key (id); comment on column test.id is 'id'; comment on column test.text is 'Textfeld'; insert into test values(1,'eins'); insert into test values(2,'zwei'); insert into test values(3,'drei'); commit; © OPITZ CONSULTING Deutschland GmbH 2015 Whitepaper: SQLcl — das neue SQL*Plus Seite 3 History-Funktionalität und Ersetzen der Befehlszeile Verwendung von Farben in SQL-Statements SQLcl besitzt eine History-Funktion, per default werden die letzten 100 SQL In folgendem Beispiel (Auslastung von Tablespaces) soll die Möglichkeit der Statements aufgehoben. Entweder kann alles angezeigt oder eine Verwendung von Farben demonstriert werden: bestimmte Zeile aus der History verwendet werden (hier Zeile:100). Diese Zeile kann mit EDIT auch in den Default-Editor geladen werden. set sqlformat ansiconsole with ts_details as Mit „l“ wird die erneut angezeigt und mit „/“ erneut ausgeführt. Desweite( ren steht auch eine Befehlszeilenersetzung (analog bash) zur Verfügung, dazu ist „TAB“ zu benutzen. select rpad(tablespace_name,30, ' ')||' '||lpad(floor(used_percent), 3, ' ') history as ts_line, history 100 used_percent from dba_tablespace_usage_metrics l / ) select case when used_percent > 70 then '@|bg_red '||ts_line||'|@' when used_percent < 1 then '@|bg_green '||ts_line||'|@' Jeder der bereits mit SQL*Plus gearbeitet hat, kennt das Problem der Darelse '@|bg_yellow '||ts_line||'|@' stellung von Inhalten (zb. Tabellen), die erst durch Setzen von entspreend as ts_usage_percentage chenden Variablen etwas besser aussieht. Mit SQLcl ist es nun möglich from ts_details / set sqlformat ansiconsole select * from test; Bessere Darstellung der Objektinhalte Tabelleninhalte übersichtlicher darzustellen. Im folgenden Beispiel soll das demonstriert werden: © OPITZ CONSULTING Deutschland GmbH 2015 Whitepaper: SQLcl — das neue SQL*Plus Seite 4 Import-/Exportfunktionalität XML Export Mit dem Befehl: „load“ ist es möglich, Daten im CSV-Format in die Datenbank zu bringen. Vorher muss jedoch das entsprechende Format gesetzt werden. Ebenso kann man Daten in verschiedenen Formaten (CSV, JSON, XML, HTML) exportieren. set sqlformat xml select * from test; Import Lädt das CSV-File: test1.csv in die Tabelle „test1“ : load test1.csv test1 CSV Export set sqlformat csv select * from test; HTML Export set sqlformat html select * from test; JSON Export set sqlformat json select * from test; © OPITZ CONSULTING Deutschland GmbH 2015 Whitepaper: SQLcl — das neue SQL*Plus Seite 5 Mehrere DB-Connects mit Bridge Command verbinden Verwendung von Aliases Mit der Verwendung von Aliases kann aufwändige Syntax einem Schlüsselwort zugewiesen werden. Das erleichtert den Umgang mit häufig genutzten, komplexen Statements. Ein Beispiel: format file /tmp/1.sql /tmp/2.sql alias inst=select instance_name, version, status from v$instance set sqlformat ansiconsole inst Mit dem Befehl: „BRIDGE“ können andere Datenquellen angesprochen werden. Im folgenden Beispiel wird eine Tabelle aus einer anderen Datenquelle erstellt: bridge hr_tabs as "jdbc:oracle:thin:hr/ hr@localhost:1521/XE"(select table_name from user_tables); Insert Statements generieren Eine weitere sinnvolle Funktion erlaubt es, Insert-Statements aus Tabelleninhalten zu generieren. Hierzu muss vorher das Format „insert“ gesetzt werden. set sqlformat insert select 1,2,3,4,5 from dual; REM INSERTING into dual SET DEFINE OFF; Insert into "dual" ("1","2","3","4","5") values ('1','2','3','4','5'); Change Directory In SQL*Plus war der Wechsel des Verzeichnisses nur über das HostCommand möglich, in SQLcl gibt es ein entsprechendes Kommando „cd“. Formatieren von SQL-Statements Mit Hilfe des Befehls: „format“ kann ein SQL-File strukturiert dargestellt (formatiert) werden, wenn noch nicht geschehen. Die Datei: „1.sql“ in diesem Beispiel enthält unstrukturierte Statements, in „2.sql“ wird dann alles formatiert geschrieben: format file /tmp/1.sql /tmp/2.sql © OPITZ CONSULTING Deutschland GmbH 2015 Whitepaper: SQLcl — das neue SQL*Plus Seite 6 Tabellenliste Repeat, Wiederholung von Statements Mit dem Befehl „TABLES“ können Tabellen gelistet werden: Statements zu wiederholen, kann z. B. für eine Session-Überwachung sinnvoll sein. Das Beispiel zeigt den Repeat eines aktuellen Statements, das im Buffer steht. Es wird 10 Mal wiederholt, dazwischen liegt eine Pause von 2 Sekunden. SELECT SID, Serial#, UserName, Status, SchemaName, Logon_Time FROM V$Session WHERE Status='ACTIVE' AND UserName IS NOT NULL Objektinformationen mit Abhängigkeiten anzeigen Repeat 5 1 Der Befehl „INFO“ ist sozusagen ein erweitertes „DESC“. Es werden neben Objektinformationen auch Comments, Indexes und Keys angezeigt. Primärschlüssel werden hierbei mit einem „*“ hervorgehoben. Mit „INFO+“ können Mit dem Befehl „apex“ können Informationen zu APEX-Anwendungen noch detailliertere Informationen angezeigt werden. angezeigt werden. info test Apex Informationen anzeigen Startumgebung setzen für SQLcl Es kann eine Datei „login.sql“ angelegt werden, diese wird bei SQLcl Start aufgerufen und abgearbeitet. Hier können Formatanweisungen und Aliases vereinbart werden, die dann über die gesamte SQLcl Sitzung gelten. set sqlformat ansiconsole alias time=select to_char(sysdate, 'HH24:MI') as "time" from dual; info+ test Informationen zu Oracle Fehlermeldungen anzeigen Mit dem Befehl „OERR“ können Oracle Fehlermeldungen analysiert werden. Im Beispiel ist der Fehler: ORA-500 dargestellt. oerr ora 500 oerr ora 500 © OPITZ CONSULTING Deutschland GmbH 2015 Whitepaper: SQLcl — das neue SQL*Plus Seite 7 Eastereggs show sqldev show sqldev2 Quellen ■ ■ ■ ■ http://krisrice.blogspot.co.uk http://barrymcgillin.blogspot.co.uk https://mikesmithers.wordpress.com http://de.slideshare.net/hillbillyToad/sqlcl-overview-a-new-commandline-interface-for-oracle-database © OPITZ CONSULTING Deutschland GmbH 2015 Whitepaper: SQLcl — das neue SQL*Plus Seite 8 Über OPITZ CONSULTING ■ Training und Coaching: Das Oracle University Schulungszentrum von OPITZ CONSULTING bietet ein umfangreiches Schulungsprogramm in den Bereichen Oracle, SOA, Java und Business Intelligence. Die Trainings werden flexibel auf Kunden oder Projekte zugeschnitten und auf Wunsch auch inhouse durchgeführt. Die Trainer kommen direkt aus der Praxis und verfügen neben fundiertem theoretischem Wissen über langjährige Projekterfahrung. ■ Trends: Gemeinsam mit dem Kunden konzipieren und implementieren die IT-Experten innovative und differenzierende Lösungen. Hierzu beschäftigen sie sich permanent mit neuen Trends und evaluieren diese Hype-Themen hinsichtlich der möglichen Nutzung in den Kundenprojekten. OPITZ CONSULTING trägt als führender Projektspezialist für ganzheitliche IT-Lösungen zur Wertsteigerung von Unternehmen bei und bringt IT und Business in Einklang. Mit OPITZ CONSULTING als zuverlässigem Partner können sich die Kunden auf ihr Kerngeschäft konzentrieren und ihre Wettbewerbsvorteile nachhaltig absichern und ausbauen. OPITZ CONSULTING wurde 1990 gegründet und beschäftigt heute an neun Standorten mehr als 400 Mitarbeiter. Zum Kundenkreis zählen ¾ der DAX30-Unternehmen sowie branchenübergreifend mehr als 600 bedeutende Mittelstandsunternehmen. Portfolio Das Portfolio von OPITZ CONSULTING umfasst die folgenden Leistungsschwerpunkte: ■ IT-Beratung: Die IT-Experten unterstützen ihre Kunden dabei, die organisatorischen Grundlagen für eine verbesserte Wertschöpfung durch die Informationstechnologie zu schaffen. Transparente und effektive Strukturen im IT-Management sind hier grundlegend. Mit positiven Konsequenzen für das gesamte Unternehmen: bessere Kontrolle über aktuelle IT-Kosten, effektiverer Ressourceneinsatz, stabilere Planungsbasis für die Zukunft und zufriedene Anwender. ■ Business-Lösungen: In enger Zusammenarbeit mit seinen Kunden entwickelt unser Projekthaus innovative, differenzierende und individuelle Business-Lösungen. Hierbei unterstützen die Spezialisten den gesamten Plan-Build-Run-Zyklus. Auf Wunsch übernehmen sie die Verantwortung für Wartung und Weiterentwicklung der Lösungen über den gesamten Lebenszyklus, mittels Application Lifecycle Management, kurz: OC|ALM®. ■ Managed Services: Unsere Teams für Managed Services Application (OC|MSA®) und Managed Services Infrastructure (OC|MSI®) kümmern sich rund um die Uhr, remote oder vor Ort um die Applikationen und Systeme ihrer Kunden. Dabei übernehmen sie die Wartung, die Weiterentwicklung und die Modernisierung von Applikationen, sowie die Administration, die Wartung und den Betrieb von IT-Infrastrukturen. Proaktiv weisen Sie die Kunden auf mögliche Risiken und Engpässe hin. © OPITZ CONSULTING Deutschland GmbH 2015 Weitere Infos zu unseren Leistungsfeldern finden Sie auf unserer Homepage: www.opitzconsulting.com/portfolio Whitepaper: SQLcl — das neue SQL*Plus Seite 9 Folgen Sie uns: youtube.com/opitzconsulting @OC_WIRE slideshare.net/opitzconsulting xing.com/net/opitzconsulting Weitere Infos auf www.opitz-consulting.com