Mittwoch März 01, 2006

ORACLE: 9i Quick Reference Guide

Bei Lars Ditzel findet man man zwei recht praktische und kompakte Oracle 9i Referenzbücher als PDF zum Downloaden:

Oracle Server 9i Quick Reference Guide (37 Seiten)
Booklet Format des Oracle Server 9i Quick Reference Guide (20 Seiten)

Montag Feb. 27, 2006

ORACLE: System Datenfiles/Conrolfiles umbenennen/verschieben

Wenn man das Datenfile des System-TBS oder die Controlfiles an einer anderen Stelle des Filesystems platzieren möchte, kann man wie folgt vorgehen:

Erstmal ein PFILE erzeugen, damit man die Datenbankparameter wieder hat (Pfade natürlich vollständig angeben):

CREATE PFILE='initINSTANZ.ora' FROM 'spfileINSTANZ.ora';

Dann brauchen wir die CREATE-Statments um die Controlfiles wieder neu erzeugen zu können:

ALTER DATABASE BACKUP CONTROLFILE TO TRACE;

Dann Datenbank runterfahren:

SHUTDOWN IMMEDIATE

Nun verschiebt man die Controlfiles und/oder die Systemdatenfiles ins gewünschte Verzeichnis. Man kann auch gleich noch "normale" Datenfiles verschieben, aber das macht man normalerweise durch offline Setzen des entsprechenden TBS und dann die Datenfiles umbenennen. Aber grundsätzlich kann man mit dieser Methode hier gleich eine ganze DB verschieben.

Im Userdump-Verzeichnis (cd $ORACLE_BASE/admin/INSTANZ/udump/) entstehen dann drei Dateien, von denen eines das CREATE CONTROLFILE Statement enthält. In dem File steht etwas mehr drin, als was man braucht. Das wichtige Statement sieht dann z.B. so aus (wir gehen davon aus, das die Datenbank vorher mit SHUTDOWN oder SHUTDOWN IMMEDIATE sauber beendet wurde!):

CREATE CONTROLFILE REUSE DATABASE "INSTANZ" NORESETLOGS ARCHIVELOG
MAXLOGFILES 32
MAXLOGMEMBERS 3
MAXDATAFILES 300
MAXINSTANCES 10
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/DATENVERZEICHNIS/INSTANZ/redo/redo01.log' SIZE 50M,
GROUP 2 '/DATENVERZEICHNIS/INSTANZ/redo/redo02.log' SIZE 50M,
GROUP 3 '/DATENVERZEICHNIS/INSTANZ/redo/redo03.log' SIZE 50M
DATAFILE
'/DATENVERZEICHNIS/INSTANZ/data/system01.dbf',
'/DATENVERZEICHNIS/INSTANZ/undo/undotbs01.dbf',
'/DATENVERZEICHNIS/INSTANZ/data/sysaux01.dbf',
'/DATENVERZEICHNIS/INSTANZ/data/blahblub.dbf',
CHARACTER SET AL32UTF8;

Hier passt man nun die Pfade entsprechend an, wo man die Dateien hinverschoben hat. Das oben erstellte initINSTANZ.ora File kopieren wir nach $ORACLE_HOME/dbs/initINSTANZ.ora. Wenn man nicht nur das System-Datenfile verschoben hat sondern auch die Controlfiles, dann muss man auch den CONTROL_FILES-Parameter in der initINSTANZ.ora anpassen. Oracle 10.2 z.B. verwendet dann diese init.ora Datei später automatisch.

Nun fährt man die DB wie folgt hoch:

STARTUP NOMOUNT

Als nächstes führt man obiges CREATE CONTROLFILE Statement aus. Das erzeugt dann die neuen Controldateien dort, wie sie im CONTROL_FILES Parameter angegeben wurden. Wenn die DB das erfolgreiche Anlegen mit Control file created. bestätigt hat, kann man die DB wieder öffnen:

ALTER DATABASE OPEN;

Zum Schluss sollte man dann noch ein SPFile erzeugen (es sind natürlich die vollständigen Pfade anzugeben):

CREATE SPFILE='spfileINSTANZ.ora' FROM PFILE='initINSTANZ.ora';

Das sollte es eigentlich gewesen sein...

Ein paar Links: Ask Tom "move system datafiles", version 8.1.7 - http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:5033895918209
init.ora SpFile Parameters - http://www.ss64.com/orasyntax/initora.html

Donnerstag Feb. 23, 2006

POSTGRESQL: max_fsm_pages / max_fsm_relations

Wer sich immer schon mal gefragt hat, was er bei den beiden Parametern max_fsm_pages und max_fsm_relations in der postgresql.conf eigentlich einstellen soll, der sollte einfach mal Folgendes machen: psql mit der entsprechenden Datenbank starten und dann

db=# VACUUM ANALYZE VERBOSE;
...
INFO:  free space map contains 14679 pages in 999 relations                                                                        
DETAIL:  A total of 27808 page slots are in use (including overhead).
27808 page slots are required to track all free space.
Current limits are:  40000 page slots, 2000 relations, using 362 KB.

Da kommt dann jede Menge Ausgabe, aber wichtig sind die letzten vier Zeilen. Ich habe z.B. bei dieser Datenbank

max_fsm_pages = 40000
max_fsm_relations = 2000

in der postgresql.conf eingestellt. Das sieht man auch bei der Ausgabe in der letzten Zeile bei den Current limits. Der Analyze zeigt an, das die Free Space Map momentan 14679 Pages und 999 Relations beansprucht. Das paßt also locker in die angegebenen Parameter (40000 > 14679 und 2000 > 999). Wenn die Werte zu klein sind, kann Postgres die freien Speicherblöcke nicht mehr in Hauptspeicher verwalten, was die Sache natürlich erheblich verlangsamt. Man sollte das also des Öfteren kontrollieren.

Donnerstag Feb. 16, 2006

JMETER: Bad Call to remote host

Mit Apache's JMeter aus dem Jakarta Projekt, lassen sich ja schon mal ganz gut Lasttests erstellen für HTTP, FTP, JDBC, LDAP und noch Vieles mehr. Dazu kann man auch mehrere JMeter Server aufsetzen und dann von eine entfernten Client aus starten. Damit kann man dann richtig Last erzeugen. Nur leider funktioniert das auf Grund der benutzten Kommunikation per RMI hinter einer Firewall oder NAT nicht so wahnsinnig gut. Aber per X Protokoll kann man das ja auch auf einem entfernten Server starten und sich die GUI dann lokal anzeigen lassen.

Nun ich hatte also drei solcher JMeter Server aufgesetzt, hab die jmeter.properties angepaßt, JMeter gestartet und wollte dann mit dem Client darauf zugreifen... Und da kam sie dann wieder die blöde Meldung: Bad Call to remote host . Nun es stellte sich heraus, das in dem Skript jmeter-server rmiregistry ohne Pfadangabe gestartet wurde und das hat in diesem Fall dann rmiregistry unter /usr/bin gestartet und das war eine 1.3er Java VM. JMeter lief aber mit einer 1.5er. Tja und das passt nun gar nicht zusammen. Man muss also unbedingt dafür sorgen, das JMeter und rmiregistry die gleiche Java Version verwenden!

Mittwoch Feb. 08, 2006

SOLARIS: Wichtige Netzwerk Monitoring Tools

kstat - the Kernel Statistics framework.
nx.se - SE Toolkit's nx.se.
nicstat - nicstat for network interface utilisation.
SNMP - SNMP based tools include MRTG.
traceroute - timing hops to destination.
TTCP - creates test load between two hosts.
pathchar - traceroute with throughputs, an amazing tool.
ntop - comprhensive statistics for snooped traffic.
tcptop - TCP PID summary.
tcpsnoop - watch TCP traffic live with PID.

Dienstag Feb. 07, 2006

ORACLE: Welches Datenfile erzeugt am meisten I/O?

Dazu nimmt man folgende Query:

SELECT NAME,
        PHYRDS "Physical Reads",                                                                                        
        round((PHYRDS / PD.PHYS_READS)*100,2) "Read %",                                                                 
        PHYWRTS "Physical Writes",                                                                                      
        round(PHYWRTS * 100 / PD.PHYS_WRTS,2) "Write %",                                                                
        fs.PHYBLKRD+FS.PHYBLKWRT "Total Block I/O's"                                                                    
FROM (                                                                                                                  
        SELECT sum(PHYRDS) PHYS_READS,                                                                                 
                sum(PHYWRTS) PHYS_WRTS                                                                                  
        FROM v$filestat                                                                                              
        ) pd,                                                                                                           
        v$datafile df,                                                                                                  
        v$filestat fs                                                                                                   
WHERE df.FILE# = fs.FILE#                                                                                             
ORDER BY fs.PHYBLKRD+fs.PHYBLKWRT DESC;

Hier zahlt es sich mal wieder ganz besonders aus, wenn man die Tablespaces/Datenfiles verschiedenen Projekten zuordnert und nicht alles in eine Datei stopft. Denn dann sieht man mit dieser Query sofort das Projekt, das am meisten Festplatten-I/O verursacht.

Intranet/Internet Open Source Suchmaschinen

Wer auf der Suche nach einer Suchengine für seine eigenen Intranet/Internet Webseite ist, der kann mal folgende Engines ins Auge fassen:

Webglimpse
Nutch
Mnogosearch
Egothor
Dataparksearch
Swish-e

ORACLE: Füllgrad der Tablespaces feststellen

Wie findet man raus, wie voll die Tablespaces schon sind? Darüber gibt folgendes SQL-Skript Auskunft:

SELECT a.TABLESPACE_NAME,
        a.BYTES bytes_used,
        b.BYTES bytes_free,
        b.largest,
        round(((a.BYTES-b.BYTES)/a.BYTES)*100,2) percent_used
FROM
        (
                SELECT TABLESPACE_NAME,
                        sum(BYTES) BYTES
                FROM dba_data_files
                GROUP BY TABLESPACE_NAME
        )
        a,
        (
                SELECT TABLESPACE_NAME,
                        sum(BYTES) BYTES ,
                        max(BYTES) largest
                FROM dba_free_space
                GROUP BY TABLESPACE_NAME
        )
        b
WHERE a.TABLESPACE_NAME=b.TABLESPACE_NAME
ORDER BY ((a.BYTES-b.BYTES)/a.BYTES) DESC;

Freitag Feb. 03, 2006

MYSQL: Client does not support authentication protocol

Wenn man sich auf eine MySQL 5 z.B. mit PHP 4 oder einem mysql-Clientprogramm in Version 4 connecten möchte und die Meldung

Client does not support authentication protocol

bekommt, dann liegt das daran, das sich der Passworthashing-Algo in MySQL 5 geändert hat (was mal wieder typisch für MySQL ist...) In diesem Fall muss man das Passwort wie folgt behandeln:

SET PASSWORD FOR <USERNAME>@'<IRGENDWO.DE>' = OLD_PASSWORD('password');

Dann sollt's schon funken (<USERNAME> und <IRGENDWO.DE> natürlich ersetzen..

Freitag Jan. 20, 2006

LINUX: pktstat

Unter den vielen Debian Paketen habe ich letztens ein ganz interessantes entdeckt: pktstat. Wer schon immer mal wissen wollte, wer grad so mit seinem Computer connected ist und wieviel Traffic der so zieht, kommt mit dem Tool auf seine Kosten. Eine Art top nur eben nicht für Prozesse sondern für's Netzwerk. Zeigt auch an, was grad insgesamt so durch die Netzwerkkarten läuft.

pktstat -B -n

Zeigt beispielsweise alles in Bytes/sek. an und löst IP's nicht in DNS-Namen auf. Das geht schneller. Echt praktisch!

Montag Jan. 16, 2006

PostgreSQL: Sortiert die Datenbank auf der Festplatte?

Wenn eine Datenbank auf Festplatte sortieren muss, dann zieht das die Gesamtperformance u.U. ziemlich in den Boden, wenn viele dieser Sortieranfragen gleichzeitig laufen. Klassiker sind dabei Join's, die jeweils einige tausend Zeilen zurückliefern und der SQL-Programmierer die dann auch noch sortiert haben will (ORDER BY). Der Sysadmin sieht vielleicht blos, das plötzlich viel I/O Last auf der Maschine ist und weiß nicht, was los ist. Nun, wenn die hohe I/O Last von der Postgres durch solche komischen Query's erzeugt wird, dann findet man das relativ leicht. Man wechselt dazu in das Postgres-Datenverzeichnis (da wo Postgres seine Daten wie Tabellen, Indizies, usw. speichert) und sucht wie folgt:

[postgres@testrechner] # find . -name "pgsql_tmp" -ls
3188641    8 drwx------   2 postgres postgres     4096 Jan 16 18:19 ./base/17959969/pgsql_tmp

In dieses Verzeichnis wechselt man rein und läßt sich laufend den Inhalt anzeigen. Wenn ständig viele neue Dateien da drin erzeugt werden, dann sortiert die Datenbank auf der Festplatte, was eher ziemlich schlecht ist auf die Dauer. Man kann nun den entsprechenden Sortbuffer der Postgres erhöhen, aber man muss bedenken, das dieser Speicherwert PRO SORTIERUNG alloziert wird! Wenn man schon knapp bei Speicher ist oder der Wert ohnehin schon größer als 512 oder 1024 KByte ist, dann sollten die SQL-Programmierer schleunigst die Query optimieren...

Samstag Jan. 07, 2006

Tomcat Performance unter Windows und Linux

Webperformance hat in einem zweiteiligen Artikel Comparing Tomcat Performance Across Platforms die Tomcat Performance unter Windows und Linux verglichen. Die Ergebnisse sind ganz interessant. Hier Teil 1 und Teil 2.

Freitag Jan. 06, 2006

DEBIAN: Pakete auf Verwundbarkeit prüfen

Wenn man schnell wissen möchte, ob man Debian-Pakete installiert hat, die Sicherheitslöcher aufweisen, hilft debscan. Dieses kleine Python-Skript checkt, welche Pakete upgedatet werden müssen. Z.B.:

debsecan --suite sarge --only-fixed

Dieses Kommando listet alle Pakete auf, die ein Sicherheitsupdate benötigen. Mehr Info gibt's auf der Homepage von debscan.

Dienstag Jan. 03, 2006

UNIX: Wie misst man mit sar den Netzwerkdurchsatz?

So z.B.:

sar -n DEV 2 100

Dieser Befehl bringt alle zwei Sekunden den Datendurchsatz in Bytes/sec. (rxbyt/s und txbyt/s) und das Ganze hundert mal:

09:38:31        IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s
09:38:33           lo      0,00      0,00      0,00      0,00      0,00      0,00      0,00
09:38:33         eth0      4,00      1,50    291,00    195,00      0,00      0,00      0,00
09:38:33         eth1    211,50    248,00  82404,00 151176,00      0,00      0,00      0,00
09:38:33         sit0      0,00      0,00      0,00      0,00      0,00      0,00      0,00

Samstag Dez. 31, 2005

VoIP: Günstig einsteigen

Wer vor hat in VoIP einzusteigen und vielleicht nicht unbedingt seinen Provider wechseln will, der findet bei PC Welt ein gutes Angebot zusammen mit GMX. Dort gibt's die Voice over IP Flatrate (für Deutschland) von GMX für 6 Monate gratis (Mindestlaufzeit 12 Monate). Dann kost das Ganze 9,99 Euro im Monat. Dazu gibt's aber noch eine AVM Fritz! Fon Box 5010/5012 gratis. Man muss nur die Versandkosten zahlen. Das ist eigentlich ein ziemlich gutes Angebot. Die Fritz! Fon Box kost normalerweise schon 149 Euro. Wenn man den DSL Anschluss bei GMX noch dazubestellt, geht's sogar noch günstiger. Nur die Auslandstarife finde ich etwas teuer. Aber das ist nicht unbedingt ein Problem, da man ja nach wie vor über das Festnetz telefonieren kann. Die Fon Box läßt sich entsprechend konfigurieren. Hier geht's zum Angebot: PC Welt / GMX VoIP Aktion.