Donnerstag, 27. Januar 2011

SecureFiles - Ein kleiner Exkurs in die Niederungen der Oracle Datenbank

Vor kurzem wurde ich von einem Kunden gefragt, welche Empfehlungen es in Bezug auf die DB Block Size für das Speichern von Rasterdaten als Large Objects (LOBs) gibt.
Für die Beantwortung dieser Frage ist das Wissen um Kernfunktionalität der Oracle Datenbank unabdingbar. Daher möchte ich einige Überlegungen an dieser Stelle mit anderen Interessierten teilen.
Seit Freigabe der Version 11.1 gibt es einen neuen Datentyp für die Speicherung von grossen Objekten in der Datenbank, SecureFiles genannt.
Einen sehr guten Einstieg in die Nutzung von SecureFiles gibt dieser Tipp in der deutschsprachigen Oracle DBA Community.
Darüberhinaus möchte ich auch noch auf diesen Artikel im Database Journal verweisen. Hat man sich durch die ersten beiden Kapitel gearbeitet, finden sich einige Hinweise auf u.a. relevante DB Parameter oder Tabellen-Eigenschaften.
Wichtig ist zunächst einmal zu wissen, dass bis Version 11 für LOBs nicht so sehr die DB Block Size wichtig ist - hier braucht man eigentlich nur darauf zu achten, dass diese möchst nicht grösser als das LOB selbst ist - , sondern die Grösse der sogenannten CHUNKs (zu deutsch: Brocken, Klumpen, großes Stück).
Seit 11.1 und SecureFiles hat die DB Block Size nur minimalen Einfluss auf die Performanz und auch die CHUNK Grösse muss nicht explizit angegeben werden. Die DB übernimmt es, nach bestem "Wissen und Gewissen" die optimale CHUNK Grösse zu bestimmen. Die variiert zwischen der DB Block Size (Minimum) und 64 MB (Maximum). Unsere DB EntwicklerInnen nennen das "Super Chunk".
Möchte man trotzdem Einfluss nehmen, so bleibt die Möglichkeit, das Minimum durch Setzen einer entsprechenden DB Block Size pro Tablespace zu regulieren.
Das ist auch schon das Stichwort für einen anderen Hinweis: In jedem Falle empfehle ich, einen eigenen Tablespace für LOBs vorzusehen, ggf. mehrere für unterschiedliche Arten von LOBs oder verschiedene Datenstände dieser.
Dann gibt es beim Anlegen von Tablespaces den wichtigen Begriff der Extents, bei denen es sich um physisch zusammenhängende Speicherbereiche handelt, in welche die Datenbankobjekte gespeichert werden. Je näher die Daten in zusammenhängenden Plattenbereichen liegen, umso geringer sind natürlich die Zugriffszeiten beim Lesen.
Eine Empfehlung an dieser Stelle ist also, die Grösse der Extents so zu anzugeben, dass möglichst wenige solcher während eines Ladevorgangs neu angelegt werden müssen.
Wem es generell auf Geschwindigkeit beim Ladevorgang ankommt, sollte sich überlegen, die Daten mit NOLOGGING zu laden, um das Mitschreiben von ReDo-Informationen zu reduzieren.
Nach dem Laden kann man wieder auf LOGGING setzen und am Besten gleich noch ein Online-Backup ziehen.
ALTER TABLE my_lob_tab NOLOGGING;

ALTER TABLE my_lob_tab MODIFY (lob_col CLOB)
  LOB(lob_col) STORE AS SECUREFILE (
    NOCACHE NOLOGGING       -- NOCACHE muss zusammen mit NOLOGGING gesetzt werden
  );

... 

ALTER TABLE my_lob_tab MODIFY LOB (lob_col) (CACHE);
ALTER TABLE my_lob_tab LOGGING;
Weitere Hinweise dazu finden sich in der Online-Dokumentation SecureFiles and Large Objects Developer´s Guide.
Was ist noch wichtig?
Datenbank-Objekte werden als sogenannte Segmente gespeichert. Es gibt einige unterschiedliche davon, z.B. Tabellen-, Index- oder auch LOB-Segmente.
Letztere werden standardmässig erzeugt, wenn die Grösse des LOBs > 4000 Bytes ist. Das nennt man dann Outline-Speicherung. Das Gegenteil davon Inline speichert die ganze Tabellenzeile inklusive LOB in einem Tabellen-Segment und ist das Standardverhalten bei LOBs < 4000 Bytes.
Will man ausschliesslich Outline speichern, z.B. um LOBs und die sonstigen (relationalen) Daten in verschiedene Segmente (möglicherweise wegen unterschiedlicher Tablespaces) aufzuteilen, so kann man in der Storage-Klausel der Tabellendefinition DISABLE STORAGE IN ROW spezifizieren.
Aber Achtung: Das muss man am zum Zeitpunkt des Anlegens der Tabelle bereits tun, da es sich nachträlglich nicht ändern lässt.

Und was hat das alles jetzt eigentlich mit SDO_GEOMETRY, SDO_GEORASTER zu tun, den Oracle Objekttypen für Vektor- und Rasterdaten zu tun? Beide und dazu auch SDO_PC (für Point Clouds) können SecureFiles verwenden. Bei einer Rasterdatentabelle sieht das dann z.B. so aus:

CREATE TABLE city_images_rdt OF SDO_RASTER (
  PRIMARY KEY (
    rasterID, 
    pyramidLevel, 
    bandBlockNumber,
    rowBlockNumber, 
    columnBlockNumber))
  TABLESPACE raster_im_tbs
  LOB(rasterBlock) STORE AS SECUREFILE lobseg(
    NOCACHE NOLOGGING)
/ 
Bei Vektordaten werden sowohl Stützpunkte (SDO_ORDINATE_ARRAY) als auch SDO_ELEM_INFO in VARRAYs gespeichert. Und auch diese können mit der Storage-Klausel STORE AS SECUREFILE angegeben werden. Die Syntax sieht beispielhaft so aus:
CREATE TABLE my_geom_tab (
  feature_name VARCHAR2(4000),
  geometry     SDO_GEOMETRY
)
VARRAY geometry.SDO_ORDINATES STORE AS SECUREFILE lob geom_ord
VARRAY geometry.SDO_ELEM_INFO STORE AS SECUREFILE lob geom_elem
/
Bevor dieser Blog-Eintrag jetzt zu lang wird und niemand mehr Lust hat, ihn bis zum Ende zu lesen, hebe ich mir das Thema Komprimieren von den als SecureFiles gespeicherten Stützpunkten für einen neuen Eintrag auf.

Montag, 10. Januar 2011

Hands On Workshop "Oracle Spatial & MapViewer" am 3. Februar 2011

Es gibt eine Neuauflage des Hands On Workshops "Oracle Spatial & MAPS" ausgerichtet vom Oracle-Partner CISS TDI.
Der Kurs richtet sich an Kunden von Oracle und der CISS TDI, die erste Erfahrungen mit Oracle Locator und Spatial gesammelt haben und ihre Kenntnisse erweitern bzw. vertiefen wollen.

Termin ist der 3. Februar 2011.
Ort: CISS TDI GmbH, Barbarossastr. 36, 53489 Sinzig

Referenten:

    Markus Lindner, CISS TDI GmbH
    Carsten Czarski, Oracle Deutschland GmbH
Preis: 300,- € pro Person
In der Kursgebühr sind Seminarunterlagen, Pausengetränke und Mittagssnack inbegriffen.

Kursbeschreibung:
Zu einer funktionierenden GDI gehört die zentrale Bereitstellung vor- bzw. aufbereiteter Daten zum Zwecke der Analyse, Auswertung und der Publikation von Geodaten. Der Gedanke, Daten nicht aus operativen Systemen direkt zu publizieren, sondern zunächst in einem Warehouse zu konsolidieren und vorzuhalten ist nicht neu. Ermöglicht dieser Ansatz doch, gepaart mit einer OGC-konformen offenen Datenhaltung eine globale Sicht auf die verschiedenen Datenbestände, die im Rahmen einer GDI zusammen kommen können. INSPIRE und ALKIS-Nutzung (Auskunfts- und Präsentationskomponente APK) können als reale Beispiele für einen solchen Ansatz gelten.
Lernen Sie, wie man Geodatenstrukturen anlegt, Geodaten in eine Oracle Datenbank mittels ETL am Beispiel von CITRA sinnvoll einbringt und auswertet. Vermittelt werden Auswertungen durch SQL, mit Oracle Maps und beispielhaft an verschiedenen GIS.
Lernen Sie, wie man Geodaten mit Oracle Maps schnell und einfach im Browser visualisieren kann - mit einer Oberfläche, die jeder aus dem Internet kennt. Erfahren Sie weiterhin, wie Sie externe Kartendienste im Hintergrund verwenden und dabei die Fachinformationen (Features Of Interest) aus Ihrer lokalen Datenbank nutzen können. Im Ausblick lernen Sie in einem Überblick die umfassenden Möglichkeiten von Oracle Spatial, z.B. Georaster, Geocoding und Topologie und die Auswertemöglichkeiten mit Apex kennen.

Voraussetzungen:

    Für die Arbeit im Workshop ist ein eigener (W-LAN-fähiger) Laptop mit installiertem Web-Browser erforderlich
    Grundkenntnisse in Oracle Locator/Spatial
Zum Nachlesen und für die Anmeldung bitte auf diesen Link klicken.

Freitag, 7. Januar 2011

Deadline für Oracle Spatial User Conference 2011

Für die Oracle Spatial User Conference können noch Vorträge eingereicht bzw. Projekte für den Spatial Award nominiert werden. Stichtag dafür ist Montag, der 10. Januar 2011.
Wie im Blog schon angekündigt, findet die Konferenz am 19. Mai 2011 in Washington, DC statt.
Im Übrigen können Preisnominierungen auf von Oracle-Mitarbeiterinnen und Mitarbeitern eingereicht werden.
Für Richtlinien finden sich nachfolgende Informationen (auf Englisch):

Was und wer wird prämiert? Diese Fragen beantwortet am besten ein Auszug aus dem Guideline Dokument, den ich hier der Einfachheit halber reinkopiere.

The annual Oracle Spatial Excellence Awards recognize top customers and partners for significant achievements using Oracle's spatial technologies. Awards are given to organizations and individuals in the categories below:

    Innovator: Demonstrate novel, new uses of Oracle's spatial technologies not seen previously in the marketplace, to solve business problems. The innovation should be of interest and relevance to peers in the industry.
    Integrated Enterprise: Deploy a very large production system that harnesses Oracle's enterprise features, to achieve scalability, serving large numbers of internal users and/or customers. Adoption of advanced Oracle Spatial datatypes/models is also a factor.
    Education and Research: Innovate and lead in using Oracle Spatial technologies in academic curricula and research projects. Support and advance the training of spatial technology talent in academia and/or the private sector.
    Partnership: Build and foster a community around Oracle’s spatial technologies.
The public is invited to submit nominations for the awards. Organizations or individuals may selfnominate or accept a nomination by another organization or individual. Candidates worldwide are eligible for consideration.

Montag, 3. Januar 2011

Neue Version des GeoRaptor für den SQL Developer verfügbar

Es geht immer weiter mit dem GeoRaptor für das kostenfreie DB-Entwicklungswerkzeug Oracle SQL Developer.
Die Autoren Holger Laebe, Matik Petek, Olaf Iseeger und Simon Greener haben über die Weihnachtsfeiertage auf SourceForge.net das Release 2.1.4 zum Download bereitgestellt.
Details bezüglich der neuen Features sind für Release 2.1.4 hier bzw. für das vorherige Release 2.1.2 hier zu finden.

Alles Gute für das Jahr 2011 ...

... wünschen wir unseren Blog-Leserinnen und Lesern, allen aktuellen und zukünftigen Oracle Kunden und Partnern.

Ihr Oracle Spatial Team