Samstag, 30. Juli 2011

Oracle 10gR2 auf OEL Part 2: installation

Nachdem die Virtuelle Maschine nun endlich so weit ist, kann die Installation der Datenbank starten. Prinzipiell gibt es den Installation Guide in der Dokumentation; es kursieren allerdings auch tonnenweise andere Installationsanleitungen im Internet. Ich habe mich ziemlich an diese da gehalten, und es hat reibungslos geklappt.

Es gibt allerdings noch ein paar Dinge die noch erledigt werden wollen.
Zunächst einmal soll die Datenbank beim Start der VM auch mit gestartet werden. Dazu benötigt man ein Startscript; ich habe dieses hier verwendet; es muss nur noch der Oracle User und das Oracle Home angepasst werden. Danach muss das Script noch im richtigen Runlevel aufgerufen werden; das aktuelle Runlevel findet man mit

who -r

Dann sind nur noch die Symbolischen Links anzulegen:

ln -s /etc/init.d/oracle /etc/init.d/S91oracle
ln -s /etc/init.d/oracle /etc/init.d/K91oracle

Die Datebank wird nun beim Start der VM gestartet.

Man wird man schnell bemerken, dass SQL*Plus unter Linux eine ziemliche Landplage ist; es funktionieren die Pfeiltasten nicht, und ohne Commandhistory ist es ziemlich lästig zu bedienen.
Abhilfe schafft hier rlwrap.
Um es unter OEL zu installieren muss das EPEL Repository (Extra Packages for Enterprise Linux) hinzugefügt werden; eine Anleitung dazu findet sich hier

Danach kann rlwrap installiert werden:

yum install rlwrap

Danach kann SQL*Plus bereits mit rlwrap gestartet werden:

rlwrap sqlplus

Soll rlwrap permanent für SQL*Plus verwendet werden, so kann ein Alias in der Date ~/.bashrc hinzugefügt werden:

alias sqlplus="rlwrap sqlplus"

Will man das "Ursprüngliche" SQL*Plus beibehalten kann natürlich jeder beliebige Name vergeben werden.

Danach sollte man die neuesten Patches einspielen. Zunächst wäre das das Patchset 10.2.0.5. Dazu benötigt man einen Support Vertrag; hier ist eine Anleitung, wie man billig zu einem Support Vertrag mit Oracle kommt.

Im Support Portal können die benötigten Patches Heruntergeladen. Die Patchnummern sind #8202632 (Patchset 10.2.0.5) bzw. der letzte PSU Patch #11724962. Damit der PSU Patch eingespielt werden kann ist auch die letze OPatch Version notwendig; diese hat die Nummer #6880880.

Zunächst ist das Patchset einzuspielen; dazu ist die Datenbank zunächst mit dbshut niederzufahren, und runInstaller im Disk1 Verzeichnis des extrahierten Patches auszuführen. Der Universal Installer führt dann durch die Installation des Patchsets. Sind die Programmdateien installiert, muss noch der Catalog upgedatet werden. Dazu startet man die Datenbank wieder mittels dbstart. Danach muss die Instanz mit dem SYS User im upgrade modus gestartet werden:

startup upgrade

Nun führt man das Catalog upgrade Script aus (ebenfalls SYS):

@?/rdbms/admin/catupgrd.sql

Nachdem der Catalog upgedatet wurde, kann die Instanz neu gestartet werden:

shutdown immediate
startup

Um den letzten PSU Patch einspielen zu können, benötigt man die letze OPatch Version (#6880880); einfach das Zip File in ein beliebiges Verzeichnis extrahieren, und fertig. Danach den PSU Patch extrahieren, und mit OPatch einspielen (die Datebank muss natürlich wieder niedergefahren werden). Einfach in das Verzeichnis des Patches stellen, und OPatch aufrufen:

export ORACLE_HOME=<pfad_zu_oracle_home>
/u01/OPatch/opatch apply

Danach ist die Datebank zu Starten, und mit dem SYS User das Catalog Upgrade Script einzuspielen:

@?/psu/10.2.0.5.3/catpsu.sql

Ist dieses Script durchgelaufen, ist man im Besitz einer Oracle 10gR2 Datenbank am letzten Patchstand ;-)

Donnerstag, 28. Juli 2011

Oracle 10gR2 auf OEL Part 1: Virtualbox config

Diesesmal wollen wir eine Oracle 10.2 Datenbank auf Linux installieren. Die aktuellste Variante der Datenbank wäre zwar 11gR2; Oracle stellt allerdings hier eine fertige 11gR2 VMs zum Spielen an; ausserdem trifft man durchaus noch auf 10gR2 Datenbanken. Die genaue Installationsanleitung findet sich natürlich in der Dokumentation ;).

Will man eine vollständige Oracle Datenbank auf Linux installieren, so hat man die Qual der Wahl zwischen RedHat Enterprise Linux oder Suse Linux Enterprise Server. Natürlich könnte man mit ein paar Untergriffe den Universal Installer auch dazu bewegen, auf Ubuntu/Debian zu installieren; allerdings sind derartige Kombinationen auch in der realen Welt kaum in der Produktion anzutreffen. Man sollte sich eher an die zertifizierten Kombinationen halten.

Somit hat man wie bereits erwähnt die Wahl zischen RHEL und SLES; beide kostenpflichtige Betriebssysteme. Oracle bietet um dieses Problem zu umgehen eine kostenfreie Variante von RHEL an: Oracle Enterprise Linux. Oracle stellt diese distro auf EDelivery zur Verfügung; alles was man benötigt ist ein OTN Account.

Das ganze installiere ich auf einer Virtuellen Maschine in Virtualbox.
Auch dabei handelt es sich um eine nicht zu 100% zertifizierte Konfiguration; Oracle zertifiziert nur auf richtiger Hardware oder der Hauseigenen OracleVM (im Endeffekt steckt hier XEN dahinter). Für meine Zwecke tut es Virtualbox allemal.

Die prinzipielle Installation des Betriebssystem ist relativ simpel, weswegen ich das jetzt auch mal übergehe.
Als nächstes installieren wir die Gasterweiterungen für VirtualBox, damit der Mauszeiger nicht dauernd gefangen wird und auch copy&paste zwischen dem Host und dem Gast funktioniert und ähnliche nette Features. Dazu müssen ein paar Pakete installiert werden. Standardmässig ist allerdings kein YUM Repository konfiguriert; ich werde also zunächst Installations CD als Repository hinzufügen.

Dazu lege ich im verzeichnis /etc/yum.repos.d ein neues File oel.conf an (Alle befehle müssen (natürlich) mit dem root user ausgeführt werden)

[oel]
baseurl=file:///media/oel/Server
enabled=1

Danach importiere ich noch die Public Keys der Repositories:

rpm --import /media/oel/RPM-GPG-KEY
rpm --import /media/oel/RPM-GPG-KEY-oracle

Danach installiere ich die Pakete die für die Gasterweiterungen nötig sind:

yum update kernel
yum install gcc
yum install kernel-devel

Danach kann das Image für die Gasterweiterungen gemountet werden. Dazu einfach im Menü Geräte => Gasterweiterungen installieren... wählen, und das Image wird gemountet.

Danach muss nur noch das Installationsscript aufgerufen werden:

sh ./VBoxLinuxAdditions.sh

Danach sollten die Guest Addons problemlos funktionieren.

Ein sehr nettes Feature sind shared folders; Man kann am Gast System einen Ordner des Host Systems einbinden. Das ist sehr nützlich, da dann Files nicht mehr mühselig hin-und-her kopiert werden müssen.

Dazu wählt man im Menü Geräte => Gemeinsame Ordner..., und legt dort einen neuen Ordner an. Diesen Ordner benenne ich der Einfachheit halber oracle; es kann ein Beliebiger Pfad am Host System angegeben werden.
Danach kann der Order im Gast System eingebunden werden:

mount -t vboxsf oracle /home/oracle/share

Dabei gebe ich den Namen des vorhin erstellten Ordners (oracle) an, und den Pfad am Gastsystem.
Möchte ich den Ordner permanent einbinden, so kann ich dies indem ich obige Zeile in /etc/rc.local hinzufüge. Dieses Script wird ausgeführt, nachdem alle init Scripts durchgeführt wurden; somit wurden auch die Gasterweiterungen gestartet.
Eine detaillierte Ausführung über Shared Folders findet sich hier.

Da ich ein YUM Repository für die Install DVD eingerichtet habe, das Image aber beim Starten nicht ins Laufwerk einlegen kann da sonst der Installer wieder startet, lege ich das ISO image auch in den Shared Folder auf meinem Host, und füge eine weitere Zeile an rc.local an:

mount /home/oracle/share/Enterprise-R5-U3-Server-i386-dvd.iso /media/oel -t iso9660 -o ro,loop=/dev/loop0

Das ISO Image das ich vorher in die VM eingebunden habe liegt dem Gastsystem nun als ISO vor, das ich nun einfach mounte.

Somit bin ich mit der Basiskonfiguration von Oracle Enterprise Linux unter Virtualbox fertig, und die Installation kann beginnen ;).

Sonntag, 10. Juli 2011

Hols der Torrentflux!

Eigentlich hab ich ihn ja schon länger in Betrieb, und gerade deshalb wird es mal Zeit ein paar Worte über ihn zu verlieren: Torrentflux.

Wer kennt das nicht: Torrents die entweder groß sind oder nicht gerade viel Seeds haben (oder beides) können ganz schön lange dauern. Was also tun? PC durchlaufen lassen.
Wenn aber so wie bei mir mehrere Leute mit ihren PCs unter einem Dach wohnen so kann es durchaus sein dass mehr als einer Torrents downloaded, und mehrere PCs durchlaufen. Da die downgeloadeten Files ja auch geteilt werden wollen gibt es bei uns einen Server der (unter anderem) auch Fileserver spielt. Das ganze wird nun noch lästiger: Files müssen auch noch quer übers Netzwerk verschoben werden. Und als ob das noch nicht genug wäre kommt man nachdem man einen torrent erfolgreich nach 4 tagen downgeloadet hat drauf, dass vorgestern ein Kollega den selben torrent bereits auf den Server gestellt hat. 4 Tage fürn Arsch. Was also tun? Eine Zentrale Lösung muss her.
Nach langem hin und her fiel mein Auge auf Torrentflux
Apache/PHP/MySQL und Python lief sowieso schon am Server, also im Endeffekt kein Problem mehr. Und wirklich: Torrentflux hielt was er versprach. Kleines Manko war, dass kein globales upload/downloadlimit gesetzt werden konnte da jeder Torrent seinen eigenen Torrentclient hatte. Aber das war eher zu verkraften.

Nach ein paar Jahren betrieb fing er allerdings zu zicken an. Diverse torrents legten den kommpletten Torrentflux lahm, oder downloads wollten einfach nicht mehr starten. Leider wird Torrentflux seit 2008 nicht mehr weiterentwickelt, und ich war ziemlich auf mich alleine gestellt. Nach diversen debug-orgien wollte ich nicht mehr, und ich begab mich auf die Suche nach einem Nachfolger. Glücklicherweise gibt es ein paar Forks von Torrentflux; z.B. Torrentflux B4rt oder Torrentflux NG
Bei ersterem stellte sich heraus, dass es sich dabei um ziemlich genau die gleiche Version von Torrentflux handelte, die ich laufen hatte. Torrentflux NG allerdings war dann wirklich wie der Name schon sagt die NextGeneration von Torrentflux. Die Homepage stellte sich zwar als Forum heraus; downloads von TorrentfluxNG sind hier zu finden.
Die Installation war ziemlich simpel; den Tarball ins webserver Verzeichnis extrahieren, dann das Installscript aufrufen, und ab dafür.

Ein paar Features wie z.B. eine eingebaute Torrentsuche (hatte der alte Torrentflux auch, sie funktionierte nur nicht) oder auch die Option per wget Files runterzuladen sind auch sehr nützlich. Auch optisch hat sich vieles getan; so werden die Downloadraten nun nicht mehr per kompletten pagerefresh erneuert sondern per AJAX. Leider funktionierts zwar nicht immer, aber was solls. Hauptsache er lädt wieder Torrents ;-)