Kategorien

Suchen


Aktuelle Artikel

Archiv

Oracle

Nächste Beiträge »

Oracle: Kalenderwoche (KW) in Datum umrechnen

Mittwoch, 01.07.2009

In Oracle kann aus einer Kalenderwoche (KW) einfach das Startdatum und Enddatum berechnet werden:

SELECT
  TRUNC(TO_DATE('25112009', 'DDMMYYYY'), 'IYYY') + (26 - 1) * 7 AS date_from,
  TRUNC(TO_DATE('25112009', 'DDMMYYYY'), 'IYYY') + (26 - 1) * 7 + 6 AS date_to
FROM sys.dual;

Das Beispiel gilt für die Woche 26/2009. Für andere Kalenderwochen ändern Sie bitte beide Werte “26″ im SQL Statement in Ihre gewünschte Woche um. Das Jahr (im Beispiel “2009″) ggf. ebenfalls angepasst werden.

Das folgende Beispiel zeigt Ihnen den Aufbau der Query:

SELECT
  TRUNC(TO_DATE('2511[Jahr]', 'DDMMYYYY'), 'IYYY') + ([KW] - 1) * 7 AS date_from,
  TRUNC(TO_DATE('2511[Jahr]', 'DDMMYYYY'), 'IYYY') + ([KW] - 1) * 7 + 6 AS date_to
FROM sys.dual;

Dabei ist das Datum im SQL Befehl (hier der 25.11.) unwichtig.

Oracle: Stored Procedures auflisten

Mittwoch, 27.05.2009

Mit dem folgenden SQL Script können Sie alle in der Datenbank gespeicherten Stored Procedures (SP) auflisten:

select * from user_procedures

Oracle: Beschreibung (Aufbau) einer Tabelle per SQL Befehl

Montag, 25.05.2009

Mit dem Befehl

desc Muster

wird Ihnen der Aufbau der Tabelle “Muster” angezeigt.
Folgende Daten werden als Liste angezeigt:

Oracle: Zahl mit führenden Nullen

Freitag, 10.04.2009

Wenn Sie eine Zahl mit führenden Nullen auffüllen möchten, nutzen Sie folgenden Befehl:

select to_char(zahlfeld, '000000')

Würde als Beispiel im Feld “Zahlfeld” eine 2 stehen, erhalten Sie 000002.

Oracle: sqlplus mit Benutzernamen & Passwort starten

Sonntag, 05.04.2009

Wenn Sie unter Oracle das SqlPlus Programm als sysdba (Datenbank-Administrator) starten möchten, dann nutzen Sie folgende Befehle:

Bei Oracle 8.0 (Clientversion):
sqlplus 'sys/oracle@datenbank as sysdba'
Bei Oracle 8i: (Meist geht auch die Eingabe wie unter Oracle 8.0)
sqlplus \"sys/oracle@datenbank as sysdba\"
Bei Oracle 9i:
sqlplus "sys/oracle@datenbank as sysdba"

Oracle: Performance von Sortierungen messen (In-Memory Sort Ratio)

Donnerstag, 02.04.2009

Mit dem folgenden SQL Befehl können Sie auf Ihrer Oracle Datenbank prüfen, wie der “In-Memory Sort Ratio” auf Ihrem Datenbankserver ist:

SELECT a.value/(b.value + a.value) "Sort Ratio"
FROM v$sysstat a, v$sysstat b
WHERE a.name = 'sorts (memory)'
AND b.name = 'sorts (disk)'

Ihnen wird als Ergebnis eine Zahl angezeigt.

Bei gut optimierten Datenbanken liegt der “In-Memory Sort Ratio” über 0,95 (also 95%).

Im Beispiel würde es bedeuten, dass mehr als 95 % sämtlicher Sortieraktionen im Hauptspeicher stattfinden.

Oracle: MERGE Beispiel

Mittwoch, 01.04.2009

Um Daten automatisch entweder in die Tabelle einzufügen oder upzudaten, können Sie den MERGE Befehl von Oracle nutzen. Im folgenden PHP-Beispiel wird die Nutzung verdeutlicht. Dabei ist zusätzlich eine automatische Löschung des Datensatzes eingebaut, wenn kein Benutzername übergeben wurde (Erklärung s.u.):

foreach ($users as $id => $username) {
  if (empty($username))
    $sql = "DELETE FROM users WHERE id = $id";
  else {
    $sql = "MERGE INTO users U
            USING dual ON (dual.dummy is not null and U.id = $id)
            WHEN MATCHED
              THEN UPDATE SET name = $username
            WHEN NOT MATCHED
              THEN INSERT (id, name) VALUES ($id, $username)";
  }
}

Als SQL Beispiel:

MERGE INTO users U
USING dual ON (dual.dummy is not null and U.id = 10)
WHEN MATCHED
  THEN UPDATE SET name = 'Max Muster'
WHEN NOT MATCHED
  THEN INSERT (id, name) VALUES (10, 'Max Muster')

Das Script sucht nach dem Benutzer mit der ID “10″. Wird er gefunden, dann wird der Name per UPDATE geändert. Wird der Eintrag nicht gefunden, dann wird per INSERT ein entsprechender Datensatz angelegt.

Bei Fragen oder Anmerkung schreiben Sie uns gerne einen Kommentar.
Wir freuen uns auch über Einträge, wenn Ihnen dieser Artikel half.

Oracle: Optimierung von SQL Befehlen durch entfallende Sortierungen

Dienstag, 31.03.2009

Die folgenden Oracle Befehle lösen (je nach Umfang aufwändigere) Sortierungen aus:

Bei großen Datenmengen können diese Befehle / Optionen so aufwändig werden, dass Sie mehrere Sekunden bis Minuten nur wegen der Sortierung warten. Kombinieren oder kapseln Sie diese Befehle noch, vervielfacht sich der Rechenaufwand für den Datenbankserver und die performance sinkt dementsprechent stark.

Um die Performance zu verbessern, können Sie folgende Maßnahmen umsetzen:

Beachten Sie auch unseren Artikel zur Messerung der Sortierperformance.

Oracle: Monat aus einem Datum extrahieren

Donnerstag, 26.03.2009

Um aus einem Datum den Monat zu erhalten, hilft der folgende Oracel SQL-Befehl:

to_number(to_char(Datumfeld, 'n'))

Beispiel:
Möchte man wissen, ob das Datum im Feld “Startdatum” im August liegt:

to_number(to_char(Startdatum, 'n')) = 8

Oracle: Create Tablespace

Donnerstag, 19.03.2009

Um Tablespace auf einem Oracle System anzulegen, nutzen Sie folgenden Befehl:

CREATE TABLESPACE user_ts DATAFILE 'c:\oracle\oradata\ora\userts.dbf'
SIZE 100M AUTOEXTEND ON NEXT 50M

Dieses Beispiel erzeugt Tablespace …

Nächster Beitrag »