10. September 2009

Erweiterungen für den SQL Developer: APEX, XML DB, Dateisystem und mehr ...

English title: APEX and XML DB extensions for SQL Developer

In den letzten Tagen habe ich noch ein wenig mit den Erweiterungsmöglichkeiten des SQL Developer gespielt. Die Erweiterungen, die dabei herausgekommen sind, möchte ich euch nicht vorenthalten ...
During the last few days I played around with SQL Developer extensibility. I produced some extensions which I'd like to share ...
Der SQL Developer ist von Haus aus erweiterbar - das wissen die meisten. Nicht so bekannt ist die Tatsache, dass man dazu nicht unbedingt Java programmieren muss. Vor allem SQL und PL/SQL-gestützte Erweiterungen können auch mit XML-Dateien, die dann einfach in den SQL Developer eingeklinkt werden, realisiert werden. Wie man das macht und wie man die XML-Dateien erstellt, ist unter anderem in diesen Artikeln beschrieben:
SQL Developer is extensible by default - this is known widely. But only a few know that it is not required to implement java code for this. Database-centric (SQL and PL/SQL-based) extensions can be implemented in a declarative manner with by XML files. The following articles describe the process.
Ladet einach mal das ZIP-Archiv herunter und probiert es mal aus - Einfach im SQL Developer zu Extras, Voreinstellungen und dort zu Datenbank und Bnutzerdefinierte Erweiterungen navigieren. Dort fügt Ihr die Dateien aus dem ZIP-Archiv hinzu. Der Dateiname enthält einen Hinweis, ob die Datei als NAVIGATOR, EDITOR oder ACTION zu registrieren ist. Anschließend SQL Developer neu starten und ansehen ...
Just download the zip archive and try the extensions - just navigate in SQL Developer to Tools then to preferences. In the preference window go to database and user defined extensions. Register the files in the downloaded ZIP archive there. The filename contains a hint whether to register the file as NAVIGATOR, EDITOR or ACTION. After that, restart SQL Developer and have a look ...
  • APEX Workspace Management Extension
    Im Navigationsbaum des SQL Developer findet Ihr anschließend den Eintrag APEX Workspaces; Ihr müsst aber als SYS verbunden sein. Die Erweiterung habe ich mit APEX 3.1 und APEX 3.2 getestet.
  • Extension für Package FILE_TYPE
    Dies ist eine Erweiterung für das Package zum Zugriff auf das Server-Dateisystem.
  • Nutzer der Oracle XML DB finden auch eine Erweiterung zur Steuerung des XML DB Repository
  • Wer das Skript zum Bestimmen der tatsächlichen Größe einer Tabelle nutzt, findet im Archiv auch eine Erweiterung hierfür.
  • APEX Workspace Management Extension
    The navigation tree contains now an entry APEX Workspaces; you have to be connected as SYS. I tested this extension with APEX 3.1 and APEX 3.2. Note that there are also some features in the navigator tree entries' context menus.
  • Extension für Package FILE_TYPE
    This is an extension for my package for retrieving directory tree listings and file contents.. It's basically a server filesystem viewer. Read the packages' install notes before using this.
  • Oracle XML DB users might find the extension for managing the XML DB repository useful.
  • Users of the SQL script to determine the actual size of a table can embed this into SQL Developer with the fourth contained extension.
Viel Spaß beim Ausprobieren - und gebt mir Feedback!
Have fun trying it - and tell me if you like it (or not).

1 Kommentar:

m.patzwahl hat gesagt…

Das sind wirklich wunderschöne Erweiterungen. Einen kleinen Verbesserungsvorschlag habe ich für den XML DB Bereich:
Die Größe der Datei (Oracle 10.2.0.4) wird bei mir nur angezeigt, wenn ich folgenden Befehl verwende:
select
case
when extractvalue(r.res, '/Resource/@Container') = 'true' then 'FOLDER'
else 'FILE'
end as resource_type,
extractvalue(r.res, '/Resource/DisplayName') resource_name,
TO_NUMBER(NVL(DBMS_LOB.GETLENGTH(extractValue(r.res,'/Resource/XMLLob')), 0) ) resource_size,
extractvalue(r.res, '/Resource/ContentType') mimetype,
extractvalue(r.res, '/Resource/CreationDate') created,
extractvalue(r.res, '/Resource/ModificationDate') last_modified,
extractvalue(r.res, '/Resource/Owner') "resource_OWNER",
xdburitype(r.path).getblob() as content
from path_view r
where under_path(r.res, :XDB_ID, 1) = 1 and depth(1) = 1

Marco Patzwahl

Beliebte Postings