Oracle RDBMS

Kleine Kniffe und Skripte, die einem das Leben mit dem Datenbanksystem der gleichnamigen Firma etwas erleichtern...

Anzahl Zeilen aller Tabellen

Manchmal möchte man die Anzahl der Datensätze nicht nur in einer Tabelle, sondern in allen Tabellen eines Schemas wissen. Jetzt kann man dies über eine PL/SQL-Prozedur lösen oder mit Hilfe von XML etwas eleganter über ein SELECT-Statement. Weiterlesen...

Berechtigungen auf anderes Schema vergeben

Manchmal steht die Aufgabe im Raum, daß man mit einem Oracle User auf die Daten eines anderen Users zugreifen möchte. Bei ein paar Tabellen ist die Rechtevergabe relativ überschaubar. Soll eine Berechtigung auf alle Tabellen bzw. Objekte vergeben werden, hört der Spaß mit einer händischen Rechtevergabe meistens auf. Leider gibt es bei Oracle nämlich kein Statement der Form GRANT SELECT ON SCHEMA. Was bleibt einem übrig? Was man nicht selber machen möchte, muß man skripten. Weiterlesen...

DataPump: Konsistenter Export

Bei den alten Tools zum Exportieren von Dumps konnte man mit dem Parameter consistent=y einen zum Startzeitpunkt des Kommandos konsistenten Dump erstellen. Beim DataPump-Kommando expdp ist dieser Parameter verschwunden. Trotzdem ist es weiterhin möglich, für einen DataPump-Export eine explizite Konsistenz anzufordern. Leider ist die Umsetzung nicht ganz eingängig und unterscheidet sich zu allem Übel auch noch unter Windows und Linux aufgrund der notwendigen Escape-Zeichen. Weiterlesen...

Gesperrte Objekte anzeigen

Welche Objekte sind gerade gesperrt? Die folgende Abfrage beantwortet die Frage zwar nicht mit dem entsprechenden Datensatz, hilft aber dabei, Tabellen und Sessions herauszufinden, die generell Locks auf der Datenbank offen halten. Weiterlesen...

LOGON-Trigger braucht mehr Rechte

Jahrelang konnte man LOGON-Trigger für einzelne Oracle-User anlegen und "plötzlich" geht das nicht mehr, sondern die Datenbank lehnt die Anlage des Triggers mit der folgenden Meldung ab: Weiterlesen...

Löschen in Blöcken

Wenn umfangreiche Datenmengen aus einer Tabelle gelöscht werden sollen, gibt es verschiedene Ansätze. Kann alles weg, ist ein TRUNCATE TABLE ... der entspannteste Weg, sofern man sich nicht mit Abhängigkeiten herumschlagen muss. Müssen aber mal viele Datensätze gelöscht werden und man kommt um ein DELETE Statement nicht herum, steht meistens schon das nächste Problem vor der Tür: Der verfügbare Platz im UNDO-Tablespace oder für ArchiveLogs ist eingeschränkt. Um mit diesen Limitierungen zurecht zu kommen, kann folgendes Löschskript verwendet werden, dass die Datensätze einer Tabelle in Blöcken löscht. Weiterlesen...

Temp Tablespace Usage

Der temporäre Tablespace wächst an bzw. wird immer voller. In einer konsolidierten Umgebung stellt sich dann gerne mal die Fragen: Weiterlesen...

Undo Tablespace Usage

Das UNDO-Management ist zentraler Bestandteil für die Sicherstellung der Lesekonsistenz der Oracle-Datenbank. Eigentlich eine gute Sache, aber manchmal hat man auch damit zu kämpfen. Hier ein paar hilfreiche Abfragen, die beim Troubleshooting unterstützen. Weiterlesen...