PostgreSQL

pgadmin3

Zur Administration von PostgreSQL bietet sich GUI Tool pgadmin3 an. Zur Zeit verwende ich auf Ubuntu oneric bereits die precise Version, da erst diese PostgreSQL 9.1 offiziell unterstützt.

Dump und Restore

Eine Hürde bei PostgreSQL ist, dass es für einen DB Dump 3 verschiedene Formate gibt:

Nur die ersten beiden lassen sich mit pg_restore auch wieder in die PostgreSQL Installation einlesen!

Restore plain dump

Der Trick ist in diesem Fall nicht pg_restore (oder das Wiederherstellen aus pgadmin) zu verwenden, da dies nur 'custom' und 'tar' DB Dumps unterstützt. Vielmehr führt die Verwendung von psql zum Ziel:

psql --host localhost --port 5432 --username "nuclos" --dbname "nuclosdb" </home/tpasch/dump/nuclosdb-330-20120103.backup

Wenn man nicht sicher ist, ob sich um einen DB Dump im 'plain' Format handel, kann man versuchen, ihn mit less anzuzeigen. Ein solcher Dump ist nämlich einfach eine Textdatei mit den (postgresql-spezifischen) SQL Befehlen...

Script für das automatische Sichern von Postgrsdumps unter Windows/Mac

backup.bat

MacScript.txt


Upgrade (z.B. 9.1 -> 9.2)

Für Ubuntu gibt es hier ein PPA mit Postgres 9.2 (Details unter Ubuntu). Der Trick ist, zunächst Postgres 9.2 zu installieren, aber Postgres 9.1 nicht zu deinstallieren. Der Upgrade erfolgt dann wie hierbeschrieben:

su postgres
pg_dropcluster --stop 9.2 main    
pg_upgradecluster 9.1 main

Ist man an Postgres 9.1 nicht mehr interessiert, kann man das entsprechende DEB Packet nun deinstallieren und die alte (gerade migrierte) Datenbank mittels:

pg_dropcluster 9.1 main

löschen.

Um unter Postgres 9.2 jetzt über das Netzwerk Zugriff auf die Datenbank zu erhalten (das ist für Java/JDBC stets notwendig), habe ich die Datei '/etc/postgresql/9.2/main/pg_hba.conf' wie folgt angepasst:

local           all             postgres        ident
host            all             postgres        127.0.0.1       255.255.255.255         md5
host            all             nuclos          127.0.0.1       255.255.255.255         md5

Das Format von pg_hba.conf wird hier erklärt.

Weitere Tipps zur Einrichtung von Postgres unter Linux finden sich hier.

Scripts zur Automatisierung

Scriptbeispiele, um das Sichern, Löschen, Initialisieren und Wiederherstellen von Postgresdatenbanken zu automatisieren finden sich hier.

Performance

Oracle DB

Datenbank starten

Grundvoraussetzung ist, dass die Umgebungsvariablen ORACLE_HOME und ORACLE_SID gesetzt sind:

# env | grep -i oracle
ORACLE_OWNER=oracle
ORACLE_SID=oracle
PATH=/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin:/u01/app/oracle/product/11.2.0/dbhome_1/bin
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1

Zunächst den Listener starten:

# /etc/init.d/oracledb start

Manchmal reicht das nicht. Der nächste Schritt ist nun die Verbindung zum Listener mittels sqlplus:

# sqlplus 'sys/sys as sysdba'

SQL*Plus: Release 11.2.0.1.0 Production on Mon Dec 15 12:00:23 2014

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to an idle instance.

In diesem Beispiel ist die Datenbank noch nicht gestartet, und die Meldung 'Connected to an idle instance' ein Hinweis darauf. Innerhalb von sqlplus geht es jetzt weiter mit:

SQL> startup
ORACLE instance started.
Total System Global Area  966709248 bytes
Fixed Size                  1340608 bytes
Variable Size             721423168 bytes
Database Buffers          239075328 bytes
Redo Buffers                4870144 bytes
Database mounted.
Database opened.
SQL> quit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Quelle , Quelle2

Für weitere Untersuchungen in sqlplus bietet sich z.B. an:

SQL> select status from v$instance;
STATUS
------------
OPEN

SQL> select status from dba_tablespaces;

STATUS
---------
ONLINE
[...]

SQL> select status from user_tablespaces;

STATUS
---------
ONLINE
[...]

Quelle , Quelle2

Constraints

Weitere Infomationen zu einem Constraint

Hat man den Namen eines Constraint, so erhält man tiefergehende Informationen mittels der folgenden SQL Abfrage:

 select * from user_constraints where constraint_name = 'XR_T_EO_DATENPAKETTYP___5CCMVM';

Performance

Performance Tuning

Siehe auch: NUCLOS-2924 Oracle Performance

DB Locks

Java JDBC Treiber für Oracle DB

http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html

Nuclos

Alle Passwörter zurücksetzen

update <schema>.t_md_user set strpassword = null, BLNLOCKED = 0, INTLOGINATTEMPTS = 0

User nuclos zum Superuser machen

update <schema>.t_md_user set BLNSUPERUSER = 1 where STRUSER = 'nuclos'

 

Nuclos User anlegen (falls User Tabelle komplett leer)

insert into <schema>.t_md_user (struser, struid, intversion, blnsuperuser, strfirstname, strlastname, datcreated, strcreated, datchanged, strchanged) 
   values ('nuclos', 'kskjsiunzaoahng', 1, true, 'the', 'master', '2014-06-01', 'nuclos', '2014-06-01', 'nuclos')