Avoid mistakes when Gathering System Stats

Christian Antognini descibed in his book Troubleshooting Oracle Performance how to gather the system statistics in a very proficient way. The main idea of gathering system stats is to collect the system stats in Weiterlesen

Oracle RAC 12cR1 on OEL 7.2 VBox – Part 4: Install the GI software only

As described in my previous article Cloning the Node two a 2-Node-RAC we can start to install the GI software on both nodes. Normally you can install and configure the Grid Infrastructure (GI) Software on both nodes, starting on one node only. In a case Weiterlesen

Oracle RAC 12cR1 on OEL 7.2 VBox – Part 3: Cloning the Node two a 2-Node-RAC

In my previous article Adding ASM Disks and Configuration of OS I described to add some ASM Disks and to configure the Oracle Enterprise Linux (OEL) 7.2 to be ready for Oracle RAC 12c. In this article I will describe you a short script to clone   Weiterlesen

Oracle RAC 12cR1 on OEL 7.2 VBox – Part 2: Adding ASM Disks and Configiguration of OS

In addition to my first article Installation of OEL 7.2 I will show you how to add some ASM Disks and to configure the Oracle Enterprise Linux (OEL) 7.2 to be ready for oracle RAC 12c on OEL 7.2 Weiterlesen

Howto solve Bug 22832149 – SHUTDOWN FAILS WITH ORA-449

While trying to setup and configure a two-node-RAC (12.1.0.2.0) on AIX 7.1 TL 4 SP 1 (AIX OS 7100-04-01-1543) at customer site I run into Weiterlesen

Oracle RAC 12cR1 on OEL 7.2 VBox – Part 1: Installation of OEL 7.2

Based on several articles in the internet like ORACLE-BASE and RAC-Attack and the need to patch the GI software before the cluster is configured the first time I started to create a VM. I tried to summarize them in this article being the first Weiterlesen

HOWTO create SR with ADRCI ?

Gerade in einem Umfeld mit vielen Datenbanken treten naturgemäß auch mehr Fehler auf. Von daher ist notwendig, diese schnell zu analysieren und Maßnahmen einzuleiten.

In diesem Beitrag möchte ich versuchen darzustellen, wie man durch einfache Handgriffe sich dabei die Arbeit etwas erleichtern kann und somit auch die Arbeit des EM etwas Weiterlesen

HOWTO upgrade to 12c

In diesem Beitrag möchte ich ein paar interessante Links zusammenstellen, die gerade beim Upgrade nach 12c interessant sein können, oder aber eine Basis für Überlegungen einer neuen Infrastruktur darstellen können:

Basis ist natürlich die Dokumentation von Oracle: Oracle Database Upgrade Guide

Grundsätzlich ist ein Upgrade recht einfach: Upgrade nach Oracle Database 12c

 

Jedoch hat sich mit 12c einiges verändert. Die wichtigsten Punkte und Hinweise sind hier im aufgeführt: New version of the BIG 12c SLIDE DECK. Dieses Dokument enthält unter anderem folgende wichtige Punkte:

 

 

 

Besonders hervorzuheben sind die beiden Punkte:

Obwohl eine non-cdb Umgebung deprecated ist, sind einige Features sind im pdb Umfeld nicht verfügbar: Non-CDB architecture of Oracle databases is DEPRECATED since Oracle Database 12.1.0.2

      • Database Change Notification
      • Continuous Query Notification (CQN)
      • Client Side Cache
      • Heat Map
      • Automatic Data Optimization
      • Oracle Streams
      • Oracle Fail Safe
      • Flashback Pluggable Database (Flashback Database works but will flashback CDB$ROOT including all PDBs)
      • DBVERIFY
      • Data Recovery Advisor (DRA)
      • Flashback Transaction Backout

 

Jedoch gibt es einige Punkte zu beachten, um nicht unötige und vermeidbare Probleme zu bekommen:

 

Während und nach des Upgrades sollten noch beachtet werden:

 

Mein Dank geht an Mike Dietrich, der in seinem Blog sehr viele dieser Informationen verständlich und übersichtlich darstellt.

 

Viel Erfolg beim Upgrade,

Rainer

ORA-28575: unable to open RPC connection to external procedure agent

Nach dem Update der Oracle Software auf 11.2.0.4.0, dem Einspielen des neuesten PSU und eines speziellen Patches trat anschließend folgender Fehler beim Anwender auf:

1
ORA-28575: unable TO OPEN RPC connection TO external PROCEDURE agent

Im LOG File des Listener war degegen folgender Fehlerstack zu sehen:

1
2
3
4
5
TNS-12518: TNS:listener could NOT hand off client connection
 TNS-12547: TNS:lost contact
  TNS-12560: TNS:protocol adapter error
   TNS-00517: Lost contact
    Linux Error: 32: Broken pipe

Nach kurzer Suche in MOS fand ich dann zwei hilfreiche Notes:

Troubleshooting Guide for TNS-12518 TNS listener could not hand off client connection (Doc ID 550859.1)
External Procedures – Troubleshooting ORA-28575 Errors (Doc ID 70638.1)

Gerade in der zweiten (Doc ID 70638.1) fand in den hier endscheidenen Tipp, das Programm „extproc“ mit dem User, unter es ausgeführt werden soll, auch mal zu starten.

Dabei trat dann ein fehlermeldung auf, dass eine Shared Library nicht gefunden werden könne. Nach dem Setzen der richtigen Privilegien

1
2
3
chmod 755 $ORACLE_HOME/lib/libclntsh.so.11.1
chmod 755 $ORACLE_HOME/lib/libagtsh.so.1.0
chmod 755 $ORACLE_HOME/lib/libocci.so.11.1

konnte sowohl das Programm fehlerfrei gestartet werden als auch der Endanwender hatte keine Probleme mehr.

Als Alternative hat sich herausgestellt, dass ein Relink aller Binaries die Berechtigungen wieder korrekt setzt:

1
$ORACLE_HOME/bin/relink all

Viel Erfolg.

Oracle Database Upgrade to 12.1.0.2 – Avoid Performance Issues and Wrong Results

Mike Dietrich hat in seinem Blogbeitrag Oracle Upgrade 12.1.0.2 auf die MOS Note:2034610.1 „Oracle Database Upgrade to 12.1.0.2 – Avoid Performance Issues and Wrong Results“ verwiesen.

Diese enthält eine Reihe von Informationen und Hinweisen, die man vor jedem Upgrade durchaus überprüfen sollte.

Rainer

Caching in 12c

Mit der Version 12c (12.1.0.2) gibt es u.a. zwei neue Features zum Caching, die gerade bei kleinen oder mittleren Datenbanken einen Geschwindigkeitsvorteil ohne Änderung an der Anwendung erzielen lassen:

  1. ABTC = Automatic Big Table Caching
  2. FDC = Full Database Caching

Beide Features sind lizenzfrei und haben nichts mit der IN-MEMORY Option zu tun.

ABTC mit seriellen Abfragen im Single Instance Umfeld steht in allen Editionen zur Verfügung. Wird ABTC für parallele und serielle Abfragen im RAC oder Single Instance Umfeld verwendet, ist jedoch die Enterprise Edition erforderlich.
Dieses Feature ist speziell für solche Tabellen geeignet, die nicht komplett in den Hauptspeicher passen und viele Full-Table-Scan verursachen. Einen ersten Einblick, welche Parameter wie zu setzen sind, damit dieses Features wirkungsvoll arbeiten kann, gibt der Artikel ABTC-Parameter

FDC ist dann sinnvoll einzusetzen, die komplette DB in den Hauptspeicher passt. In einer multitenant – Umgebung gilt dies dann für die CDB als auch alle PDB. Der Tablespace SYSAUX wie auch TEMP können davon ausgeschlossen werden.
Die Objekte werden erst beim ersten Zugriff in den Speicher geladen. Die Objekte werden wie in einem „KEEP“ Buffer gehalten, ohne diesen spezifizieren zu müssen. Sie liegen im Buffer-Cache, werden aber so behandelt, als lägen sie im KEEP-Pool. Das Aktivieren wie auch das Deaktivieren dieses Features kann nur im Zustand einer gemounteden Datenbank erfolgen. In der Oracle Dokumentation ist beschrieben, wie FDC aktiviert und deaktiviert wird und welche Auswirkungen dies auf LOB hat FDC-Aktivieren

Viel Spass bei den Performancemesssungen !

Rainer

Standard Edition 2 ab 12.1.0.2

In der Oracle MOS Note Oracle Database 12c Standard Edition 2 (12.1.0.2) (Doc ID 2027072.1) gibt Oracle bekannt, dass

  • es ab Oracle 12c, genauer ab 12.1.0.2 keine Standard Edition (SE) und auch keine Standard Edition One (SEO) mehr geben wird
  • sondern nur noch eine „Standard Edition 2“ (SE2), die auf Servern mit zwei Sockets begrenzt ist.
  • Allerdings beinhaltet die Standard Edition 2 Oracle RAC für maximal zwei Knoten.

Ab 12.1.0.2 wird es dann keine Standard Edition noch eine Standard Edition One geben.
Diese existieren noch für 12.1.0.1 und werden auch 6 Monate nach 12.1.0.2 voll unterstützt.

Nach meiner Einschätzung wird dies viel Unmut und mögliche Konvertierungen der Lizenzen auf Enterprise Edition nach sich ziehen.

Eine mögliche Alternative ist, neue Hardware mit mehr Cores pro Socket anzuschaffen.

weitere Details – gerade im Hinblick auf SE2 – siehe auch

 

Zusammengefasst:

bis 12.1.0.1              SE und SEO, für 4 Sockets

ab 12.1.0.2              SE2, für 2 Sockets

 

ORA-02291: integrity constraint (RMAN.RLH_F1) violated – parent key not found

Beim Registrieren einer Datenbank an einem RMAN-Catalog (11g), trat folgender Fehler auf:
Auch ein De-Registrieren der DB brach mit diesem Fehler ab:

1
ORA-02291: integrity CONSTRAINT (RMAN.RLH_F1) violated - parent KEY NOT found

Nach Ausführen des folgenden Kommandos und dem anschließenden Ausführen des angezeigten Kommandos wurden alle Einträge komplett entfernt, so dass danach eine Registrierung möglich war.

1
2
3
4
SELECT 'EXEC DBMS_RCVCAT.UNREGISTERDATABASE('||DB_KEY||','||DBID||');' AS command
  , resetlogs_time
FROM rc_database
WHERE name = '&db_name';

Eine mögliche Ausgabe wäre dann:

1
2
3
COMMAND                                                                                     RESETLOGS
------------------------------------------------------------------------------------------- ---------
EXEC DBMS_RCVCAT.UNREGISTERDATABASE(1146,4974324);                                          30-MAY-15

Danach ist das folgende Kommando auszuführen:

1
2
3
SQL> EXEC DBMS_RCVCAT.UNREGISTERDATABASE(1146,4974324);
 
PL/SQL PROCEDURE successfully completed.

Viel Erfolg.

ORA-12162 beim Start von sqlplus / as sysdba

Beim Versuch mich via sqlplus mit der Datenbank eines Kunden zu verbinden, bekam ich folgende Fehlermeldung: ORA-12162 TNS:net service name is incorrectly specified.
Für diejenigen, die auch in diese Situation kommen, dieser kleine Beitrag Weiterlesen

DR versus IR: HowTo grant privs?

Aus einem aktuellen Projekt heraus entstand die Fragestellung: Muss man immer alle Rechte einem User direkt zuweisen oder genügt es nicht einfach, eine Prozedur mit Invoker Rights Weiterlesen

12c: ein Beispiel einer Interval-Reference Partitionierung

Im Rahmen eines Projektes ging es u.a. um die Einführung einer Referenz-Partitionierung mit Intervall, d.h. zwei oder mehr Tabellen, die zueinander über einen FK (Foreign Key) in Beziehung zu einander stehen, werden analog Weiterlesen

Index mit NULL Werten

Bei einer Anwendung stellte sich mir die Aufgabe, eine Abfrage zu optimieren, ohne die Abfrage oder die Tabelleninhalte ändern zu können. Wesentliches Kriterium der WHERE Klause war eine Abfrage auf der Spalte FELDNUM der Form (FELDNUM IS NULL or FELDNUM >= 5). Ich versuchte einen Index zu nutzen, der auch die Weiterlesen

YUM Repository für Oracle VM Server 3.3.1. erstellen

Um weitere Pakete nach der Installation des Oracle VM Servers 3.3.1 leichter zu installieren, ist es empfehlenswert, ein YUM Repository anzulegen. Wie leicht das geht, wird in Weiterlesen

Erstellen von Screenshots während einer Installation von OEL

Ich bin gerade dabei, ein Oracle Enterprise Linux (OEL) zu installieren und dieses auch dokumentieren, da stellt sich für mich die Frage, wie kann ich dies tun, wenn die Installation von einer CD/DVD erfolgt und das erste System auf dem Rechner ist?

Nach etwas Suchen im Internet stellt sich heraus, dass man während der Installation (innerhalb von anaconda) mit Hilfe der Tastenkombinationen + ein Screenshot erzeugen und gespeichert wird. Dies kann u.U. etwas dauern. Der Screenshot wird durchnumeriert und im Verzeichnis

1
/root/anaconda-screenshots

abgelegt.

Aber:
Während der Installation ist das /root Verzeichnis /tmp. Deshalb befinden sich die Screenshots während der Installation noch im Verzeichnis

1
/tmp/anaconda-screenshots

und können dort betrachtet werden. Mittels <Ctrl> + <Alt> + F2 kann man das Fenster umschalten.

Nach der Installation befinden sich die Screenshots dann in obigen Verzeichnis.

 

ABER:

Bei Oracle VM ist dies wohl von Oracle deaktiviert worden. Bei der Installation von Oracle VM Server – zumindest in der Version 3.3.1 – kann man leider auf diese Art und Weise keine Screenshots erzeugen.

Auslesen aller ALERT.LOG in einem RAC

Seit Oracle 10g kann man über die View sys.x$dbgalertext die alert.log auslesen. Diese stellt aber nur die Zeilen derjenigen alert.log zur Verfügung, die auf dem Server lesbar ist, an dessen Instance man angemeldet ist. Wie kann man nun aber in einem RAC – Umfeld alle alert.log Weiterlesen

AAS und andere Key Performance Indikatoren

Das folgende SQL berechnet einige Key performance Indicators einer DB – auf Basis der AWR History Views. Speziell wird hier für Jeden Snapshot Weiterlesen

Erstellen von Histogrammen über die Laufzeit von SQL Statements

Um einen ersten Überblick um die Laufzeit von SQL Statements, genauer gesagt über die Elapsed_time pro Execution, zu bekommen, nutze ich folgende kleines SQL Abfrage. Dadurch Weiterlesen

Rebuild einer Tabelle mit einer LONG RAW Spalte

Bei einem Kunden trat das Problem auf, dass das Auslesen einer kleinen Tabelle (25 Zeilen mit 4 Spalten) durchschnittlich über 45 Sekunden (!) dauerte. Nach kurzer Analysze war das Problem <!–more–> klar: Die Tabelle war mal sehr groß gewesen und hatte jetzt nur noch Zeilen im ersten und im letzten Block. Dazwischen lagen ca. 4 GB allokierter, aber ungenutzter Speicher, der bei jedem Lesen überlesen werden musste.

Natürlich war die erste Idee, die Tabelle zu reorganisieren:

ALTER TABLE SMALLTAB move;

Leider hatte diese Tabelle jedoch eine LONG RAW Spalte, so dass dieses Kommando mit dem Fehler

ORA-00997: illegal USE OF LONG datatype

fehlschlug.

Da die LONG RAW Spalten nicht sehr groß waren (die Längen waren überall kleiner als 20.000 Zeichen), konnten wir das Problem in diesem Fall mit Hilfe eines kleinen PL/SQL Programms lösen. Wäre eine oder mehr Spalten länger als 32.767 Zeichen gewesen, hätten wir die Tabellen exportieren, mit TRUNCATE leeren und anschließend wieder importieren müssen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# Umbenennen der alten
ALTER TABLE SMALLTAB RENAME TO SMALLTAB_OLD;
 
# Anlegen einer neuen
CREATE TABLE SMALLTAB( 
  id                NUMBER NOT NULL
 ,TYPE              NUMBER NOT NULL
 ,record            long raw NOT NULL
);
 
# Füllen der neuen Tabelle mit den Werten aus der alten
SET serveroutput ON
DECLARE
  v_txt VARCHAR(32767 CHAR);
  i     NUMBER              := 0;
BEGIN
  FOR r IN (SELECT id, TYPE, record FROM SMALLTAB_OLD) loop
    i := i + 1;
    v_txt := UTL_RAW.CAST_TO_VARCHAR2(r.record);
    dbms_output.put_line('Row='||i||': '||LENGTH(v_txt));
 
    INSERT INTO SMALLTAB(id,TYPE,record)
    VALUES (r.id, r.type, utl_raw.cast_to_raw(v_txt));
  END loop;
 
  commit;
END;
/
 
# die alte droppen
DROP TABLE SMALLTAB_OLD;

ORA-7445 [kkzgiojt()+8] bei Fast Refreshable MatViews nach dem Einspielen des PSU 11.2.0.3.7

Das Einspielen des Patches 11.2.0.3.7 (PSU) führt bei der Verwendung von Fast Refreshable MatViews unter anderem zu einem ORA-7445 [kkzgiojt()+8].
Dies hat zur Folge, dass alle Fast Refreshable MatViews sich nicht mehr refreshen lassen bzw. nicht mehr refreshed werden.

Dies ist bekannter Oracle Bug 17230530, der seine Ursache im besagten PSU hat. Zu diesem gibt es schon seit einiger Zeit auch den entsprechenden Patch. Dieser ist resp. wird auch in allen nachfolgenden PSU enthalten sein, so dass dieser One-Off Patch nicht mehr manuell nachgezogen werden muss, wenn weitere PSU eingespielt werden.

Detaillierte Informationen befinden sich in der ML Note 1573704.1

In meinem Fall hatte ich Fast Refreshable MatViews – on Commit eingesetzt.
Der Fehler hatte zur Folge, dass zwar alle DML auf den der MatViews zugrundeliegenden Basistabellen noch funktionierten, beim Commit dann aber die Fehlermeldung

ORA-12008: error in materialized view refresh path
ORA-01741: illegal zero-length identifier 

auftrat.

Die eigentliche Anwendung, die über einen Applikationserver in Verbindung mit Hypernate auf die DB zugreifft, protokolliert dann immer nur die (Java-) Fehlermeldung

transaction not active

ohne jedoch irgendwelche Oracle Fehlermeldung auch zu protokollieren.