Kategorie: Oracle

Alles über die teuerste Datenbank der Welt

alle Trigger des aktuellen Users durchsuchen

Hier kommt die Tabelle USER_TRIGGERS zum Einsatz. In der Tabelle gibt es das Feld TRIGGER_BODY. Dieses kann jedoch nicht mit einem „like“ durchsucht werden, da es sich um ein Long-Feld handelt. Um das zu realisieren, muss man einen kleinen Umweg nehmen. Zuerst erstellt man ein temporäre Tabelle mit dem Inhalt des Tabelle USER_TRIGGERS: CREATE GLOBAL …

Weiterlesen

Logfiles vergrößern wegen Checkpoint not complete

Für den Fall, dass man die Logfiles unter Oracle vergrößern möchte sollte man so vorgehen. In diesem Beispiel werden sechs neue Logfiles mit jeweils 800 MB größe angelegt und die alten Logfiles gelöscht. Einfaches vergrößern der Logfiles ist (soweit ich weiß) nicht möglich. Natürlich müssen die Verzeichnisse, Gruppen und Namen an die jeweilige Systemumgebung angepasst …

Weiterlesen

Databasefiles einer Oracle-DB prüfen

Um zu überprüfen, ob die Databasefiles korrupt sind, bietet sich eine Überprüfung mit dem rman an. Dazu geht man folgenderweise vor: rman target /rman target / Recovery Manager: Release 12.1.0.2.0 – Production on Thu May 28 19:55:24 2018 Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved. connected to target database: Obelix-DB (DBID=4711) …

Weiterlesen

Speicherverbraucher Top10 der Oracle-Objekte

Top10 der Speicherverbraucher einer Oracle-DB ermitteln: SELECT * FROM ( SELECT * FROM dba_segments ORDER BY bytes DESC) WHERE ROWNUM <= 10SELECT * FROM ( SELECT * FROM dba_segments ORDER BY bytes DESC) WHERE ROWNUM <= 10 TOP10 der größten Lobsegmente mit zugehöriger Tabellen-/Spaltenzuordnung SELECT * FROM ( SELECT l.owner, l.table_name, l.column_name, l.segment_name, l.tablespace_name, l.index_name, …

Weiterlesen

Benötigter Platz für Undo-Tablespace berechnen

Um die Größe des Undo-TS zu bestimmen/prüfen, ist folgendes SQL-Statement sehr hilfreich: SELECT d.undo_size/(1024*1024) "ACTUAL UNDO SIZE [MByte]", SUBSTR(e.value,1,25) "UNDO RETENTION [Sec]", (TO_NUMBER(e.value) * TO_NUMBER(f.value) * g.undo_block_per_sec) / (1024*1024) "NEEDED UNDO SIZE [MByte]" FROM ( SELECT SUM(a.bytes) undo_size FROM v$datafile a, v$tablespace b, dba_tablespaces c WHERE c.contents = ‚UNDO‘ AND c.status = ‚ONLINE‘ AND b.name …

Weiterlesen

Oracle Tablespace bzw. Databasefiles verkleinern

Um einen Tablespace auf ein Minimum zu reduzieren, kann folgendes SQL-Kommando genutzt werden: SELECT DECODE ( end_block_1, NULL, ‚ALTER TABLESPACE ‚ || TABLESPACE_NAME || ‚ DROP DATAFILE “‘ || FILE_NAME || “‘;‘, ‚ALTER DATABASE DATAFILE “‘ || FILE_NAME || “‘ RESIZE ‚ || CEIL ( (NVL (END_BLOCK_1, 1) * 8192) / 1024 / 1024) || …

Weiterlesen

Oracle-Databasefiles unter SAP verkleinern

Databasefiles werden mit Hilfe der brtools verkleinert. Um die maximal mögliche Verkleinerung zu erzielen, kann folgendes SQL-Kommando genutzt werden: SELECT DECODE ( end_block_1, NULL, ‚brspace -c force -f dfalter -a drop -f “‘ || FILE_NAME || ““, ‚brspace -c force -f dfalter -a resize -f “‘ || FILE_NAME || “‘ -s ‚ || CEIL ( …

Weiterlesen

Oracle Sequences sichern/wiedereinspielen

Für einen Export (zur Datensicherung) kann es wichtig sein, dass Sequenzes gesichert und nach einem Restore wieder eingespielt werden müssen. Dazu habe ich ein kleines Shell-Script geschrieben: #!/bin/bash   sqlplus -SM <<- DOK system/<passwort>   set lines 1000; set pages 2000; SET ECHO OFF SET FEEDBACK OFF SET HEADING OFF SET AUTOPRINT OFF SET AUTOTRACE …

Weiterlesen

Oracle Datapump

Der alte Export/Import hat ausgedient. Oracle stellt seit einiger Zeit Datapump zur Verfügung. Um Datapump nutzen zu können muss zuvor ein Verzeichnis auf OS-Ebene (sollte klar sein) und ein Oracle Directory erstellt werden (ggf. Berechtigungen dafür erteilen): — Directory erstellen CREATE OR REPLACE DIRECTORY <DumpDirectory> AS ‚<OS-Verzeichnis>‘;   — Berechtigungen erteilen GRANT EXECUTE, READ, WRITE …

Weiterlesen

Alte Statistiken für Oracle-Tabellen wiederherstellen

Seit Oracle 10g wird bei einer Analyse einer Tabelle die alte Statistik nicht gelöscht, sondern gesichert. Um eine alte Statistik wiederherzustellen gibt es folgendes Kommando: EXEC DBMS_STATS.RESTORE_TABLE_STATS (’SCHEMA‘, ‚TABELLE‘, systimestamp-10);exec DBMS_STATS.RESTORE_TABLE_STATS (‚SCHEMA‘, ‚TABELLE‘, systimestamp-10); bei diesem Kommando wird die Statistik von vor 10 Tagen wieder hergestellt.