Februar 25th, 2011 By hoekstra Categories: Oracle

Mit der folgenden Abfrage kann man Session-Statistiken ermitteln, z.B. um die Session zu finden, die die meisten Festplattenzugriffe verursacht oder die meiste CPU-Zeit in Anspruch nimmt.

SELECT n.NAME, s.VALUE, ses.USERNAME, ses.PROGRAM, ses.OSUSER, ses.MACHINE
FROM V$STATNAME N, V$SESSTAT S, v$session ses
WHERE N.STATISTIC# = S.STATISTIC# AND s.SID = ses.SID AND S.STATISTIC# NOT IN (13, 14)
ORDER BY VALUE DESC
 

Wenn z.B. nur die CPU Nutzung von Interesse ist, kann man mit NAME like ‘%CPU%’ entsprechend weiter einschränken.

Einen umfassenderen Überblick liefert natürlich die Enterprise Manager Console, aber die steht ja nicht immer zur Verfügung…

Januar 19th, 2011 By hoekstra Categories: Allgemein

Eigentlich ist das ja Off Topic, aber weil es so einfach ist, wenn man weiß wie es geht und man sonst nicht viel dazu findet, hier ein kurzer Tipp:
Wer noch Backups aus Windows XP, Windows Server 2003, Windows 2000 oder gar Windows NT Zeiten hat, und Daten aus diesen auf aktuelleren Windows Versionen lesen möchte, kann dies einfach tun, indem er z.B. aus einer XP Installation oder auch von der jeweiligen CD die Dateien

  • ntbackup.exe
  • ntmsapi.dll
  • vssapi.dll

in ein Verzeichnis kopiert (z.B. c:\Programme\NTBackup). Nun kann man die gute alte Backup Software starten, das Backup katalogisieren und auf die alten Daten zugreifen.

Natürlich kann man auch das Tool von Microsoft verwenden, das benötigt aber das Feature “Removable Storage Management”. Wer auf Bänder zugreifen möchte, wird wohl diesen Weg gehen müssen, aber für BKF Dateien ist das nicht erforderlich.

September 7th, 2010 By hoekstra Categories: Oracle

PL/SQL (Procedural Language / Structured Query Language) – schon der Name dieser Sprache legt nahe, dass es sich hier um ein Relikt aus den Zeiten prozeduraler Entwicklung handelt. Außerdem gibt es ja noch Java, wenn man mit Oracle objektorientiert entwickeln möchte. Trotzen habe ich mich in einem meiner letzten Projekte, einem Lagerverwaltungssystem, für PL/SQL und gegen Java entschieden.

Mit der Version Oracle 8i (8.1.5) haben objektorientierte Features Einzug in PL/SQL gehalten und seit Oracle 9i R2 (9.2.0.1) betrachte ich PL/SQL als vollwertige objektorientierte Sprache.

So fing 2003 ein Vortrag auf der DOAG Konferenz in Mannheim an, den ich halten durfte. An den objektorientierten Features von Oracle hat sich seit dem nicht viel geändert. (Warum eigentlich…?). Das Manuskript bietet daher noch immer einen guten Einstieg in die Thematik. Die Beschäftigung mit PL/SQL als objektorientierter Sprache lohnt sich meiner Meinung nach immer noch, zumal mit heutiger Technik eine nahtlose Integration der Oracle Objekte in .Net Applikationen möglich ist. Die .Net Beispiele im Manuskript sind nicht mehr aktuell. Sie basieren noch auf OO4O (Oracle Objects for OLE), da es damals keinen .Net Provider gab, der mit User Defined Types umgehen konnte. Das änderte sich erst mit dem Provider von CoreLab, dessen Nachfolger  (Das Unternehmen heißt heute Devart) wir heute noch einsetzen.

Hier also der damalige Vortrag: Objektktorientiertes PL/SQL

Veröffentlicht unter ISBN 3-928490-14-1, alle Rechte vorbehalten.

September 6th, 2010 By hoekstra Categories: Oracle

Nicht jede Oracle Datenbank wird mit der Enterprise Manager Console installiert und in der Version 9.i und früher gab es diese noch garnicht.

Wie findet man nun schnell heraus, welche Gründe es für eine schlechte Performance gibt? Worauf wartet die Datenbank? Welche Sessions sind betroffen? Welches SQL verursacht das Problem?

Diese Abfrage ist ein guter Einstieg in die detaillierte Diagnose:

SELECT W.*, S.PROGRAM, S.USERNAME, S.OSUSER, Q.SQL_TEXT
  FROM V$SESSION_WAIT W, V$SESSION S, V$SQL Q
 WHERE W.SID = S.SID
   AND S.SQL_ADDRESS = Q.ADDRESS

Und diese Abfrage liefert alle derzeit wartenden Sessions:

SELECT Q.SQL_FULLTEXT, S.OSUSER, S.TERMINAL, S.PROGRAM,S.USERNAME, W.*
  FROM V$SESSION_WAIT W, V$SESSION S, V$SQL Q
 WHERE W.SID = S.SID
   AND S.SQL_ADDRESS = Q.ADDRESS
September 6th, 2010 By hoekstra Categories: Oracle
declare
xmlf xmltype;
res boolean;
begin
  xmlf := xmtype.CreateXML(:conf);
  res := dbms_xdb.createresource('/xdbconfig.xml',xmlf);
  if res then
    dbms_output.put_line('file created');
  else
    dbms_output.put_line('file not created');
  end if;
end;

Wenn dieser Fehler auftritt, ist die xdbconfig.xml beschädigt oder fehlt. Der Zugriff auf das XDB Repository über ftp oder http ist dann nicht mehr möglich. Die Anleitung bezieht sich wieder auf den PL/SQL Developer, andere Tools wie z.B. Toad bieten sicher ähnlich Funktionen.

Dann den obigen Code in ein TestWindow kopieren, einen Parameter “conf”, Typ CLOB anlegen und den Inhalt dieses Archives:  xdbconfig dort einfügen.

Nach dem Ausführen des Scripts muss die Konfiguration (Ports für FTP, HTTP. etc.) noch angepasst werden. Hierzu können die Methoden   dbms_xdb.setFTPPort und  dbms_xdb.setHTTPPort verwendet werden.