red orange yellow green blue pink

Oracle – Status abfragen und Dateien untersuchen

Februar 10th, 2015
lsnrctl status
lsnrctl status LISTENER_SCAN2
find /ora00 -name 'listener.ora'
find /ora00 -name 'tnsnames.ora'
find /ora00 -name 'endpoints_listener.ora'
olsnodes -i -s -n 
srvctl status listener
srvctl status scan
srvctl status vip -n node1
srvctl status vip -n node2
srvctl config vip -n node1
srvctl config vip -n node2
srvctl config scan
srvctl config scan_listener
srvctl config network
srvctl config nodeapps
srvctl config listener
srvctl config srvpool
srvctl config database -d db_name
srvctl config database -d db_name
select value from V$PARAMETER where name like '%service_names%';
select value from V$PARAMETER where name like '%remote_listener%';
select value from V$PARAMETER where name like '%db_unique_name%';
select value from V$PARAMETER where name like '%db_name%';

Cannot start InnoDB – MySQL-Server Fehler nach Strato Backup Restore

Oktober 16th, 2014

Hallo zusammen,

beim Restore des Backups wurde die Datenbank leider in einem Zustand hinterlassen, der nicht wiederhergestellt werden konnte.

Der Start von mysql schlug fehl. Der Grund ist leider nicht sofort ersichtlich. Erste Hilfe bietet an dieser Stelle die Log-Datei error.log unter “/var/log/mysql/error.log”.

Hieraus ging hervor, dass es ein Problem mit InnoDB gibt:


[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
[ERROR] Aborting

Sucht man nach einer Lösung für dieses Problem, dann wird man zunächst auf InnoDB-Log-Dateien aufmerksam gemacht. Wenn man diese löscht, startet die Datenbank wieder. Das Problem dabei ist nur, dass dann die gesamten Datenbanken weg sind. Grundsätzlich ist das kein Problem, wenn man eine Sicherung der Datenbank hat. In meinem Fall jedoch, war es bisher nicht notwendig eine tägliche Sicherung einzurichten. Ich dachte, dass ich mit dem Backup-Service von Strato schon auf der sicheren Seite wäre. Aber das war leider weit gefehlt. Hier einmal der Pfad und die Ansicht der Log-Dateien von InnoDB ls -al /var/lib/mysql/ib*:


-rw-rw---- 1 mysql mysql 79691776 Okt 16 16:00 /var/lib/mysql/ibdata1
-rw-rw---- 1 mysql mysql 50331648 Okt 16 16:00 /var/lib/mysql/ib_logfile0
-rw-rw---- 1 mysql mysql 50331648 Okt 16 14:23 /var/lib/mysql/ib_logfile1

Aber die Daten sind noch keineswegs verloren. Man kann die Datenbank in einem Read-Only-Modus starten. In diesem Modus kann man dann die bestehenden Datenbanken sichern und später wieder zurückspielen.

In der Datei my.cnf stehen die Optionen für den Datenbank-Start. Die Datei kann man im System suchen lassen mit: “find / -name ‘my.cnf'”. In meinem Fall lag die Datei unter /etc/mysql/my.cnf. In diese Datei habe ich die beiden folgenden Werte eingetragen:


innodb_force_recovery = 6
innodb_purge_thread = 1

Danach lässt sich die Datenbank zumindest wieder starten. Wie gesagt, im Read Only Modus. Jetzt konnte ich alle Datenbanken sichern:


mysqldump -u root -p schema_name > /home/user/db_backups/schema_name.sql

Anschließend habe ich die gesamte MySQL-Server-Installation deinstalliert und wieder installiert. Daraufhin konnte ich die Datenbanken in eine saubere Server-Installation importieren:


dpkg -l | grep mysql
apt-get purge mysql-server
rm -r /etc/mysql -r
rm -r /var/lib/mysql -r
apt-get install mysql-server

Der Schlüssel zu dem Ganzen sind jetzt nur noch die Daten selbst. Für den Import müssen die Datenbanken per create database Befehl angelegt werden. Anschließend können die Tabellen importiert werden:

 


mysql -u root -p schema_name < /home/user/db_backups/schema_name.sql

Damit die Zugriffe stimmen, muss man noch die alten Benutzer anlegen. Dabei muss darauf geachtet werden, dass der Zugriff stimmt bzw. das Passwort und die Lokation.

Danach ist wieder alles wie vorher.

Nützliche Tipps zum Arbeiten mit grep

Juli 11th, 2014

Der folgende Befehl greift alle Treffer zum Suchstring auf und grenzt die Ausgabe auf 1 zeichen vor und auf 8 Zeichen nach dem Suchtring ein.


grep --color=auto -o -P '.{0,1}Suchstring.{0,8}' /Pfad

Möchte man grep auf einer Reihe von Systemen ausführen, dann muss man darauf achten, dass bestimmte Zeichen wie Hochkommas und geschweifte Klammern escaped werden:


for S in `cat serverlist.txt`;do echo -n "$S : ";ssh $S grep -o -P \'.\{0,18\}Suchstring.\{0,7\}\' /Pfad/config.xml;done

Für die farbliche Gestaltung der Ausgabe von grep gibt es 3 Werte für den Parameter color:

–color=auto
–color=always
–color=never

Mit color=auto wird der Standard-Farbwert Rot verwendet.


$grep --color=auto xyz config.xml

xyz.conf

 

Nicht selten, möchte man die Ausgabe weiter verarbeiten.


$ grep --color=auto xyz config.xml |less
ESC[01;31mabcESC[00mdef
(END)

Less hat jedoch ein Problem mit den Steuerzeichen. Damit dieser Befehl funktioniert, muss man den Parameter – R mitgeben:

$ grep --color=auto xyz config.xml |less -R

Ein weiteres Problem tritt dann auf, wenn man die Ausgabe in eine Datei schreiben möchte. Da die Steuerzeichen in die Datei geschrieben werden.

Daher sollte man mit “auto” arbeiten. Denn “auto” kümmert sich darum, dass die Steuerzeichen weder gepiped noch in eine Datei geleitet werden.

Falls man standardmäßig damit arbeiten möchte, lohnt es sich die Umgebungsvariable von grep anzupassen:


$ export GREP_OPTIONS='--color=auto'

Quelle:http://linuxcommando.blogspot.de/2007/10/grep-with-color-output.html

Neu erstellte Dateien innerhalb der letzten 24 Stunden finden

Juli 3rd, 2014
find /-type f -ctime -1

VIM – Suchen und ersetzen

Juni 12th, 2014

# Einmalig
:%s/[Search]/[Replace]/

# Vollständig
:%s/[Search]/[Replace]/g

Powershell – Rekursiv Dateien und Verzeichnisse suchen und löschen

Juni 1st, 2014

Bei einer Projekt-Übergabe erhielt ich das Projekt inklusiver aller .svn-Ordner. Um die Subersion Dateien in einem Befehl unter Windows loszuwerden, kann man den folgenden Befehl verwenden:

get-childitem -Include .svn -Recurse -force | Remove-Item -Force –Recurse

Sonatype Nexus Installation unter Debian 7 hinter einem Apache als ReverseProxy

Mai 16th, 2014

Die Installation von Sonatype Nexus wird oft beschrieben. Jedoch hatte mir in jedem Beitrag etwas gefällt. Vieles mag daher zunächst doppelt erscheinen. Aber allein aus dem Grund, dass mein WordPress als Ablage für Installations-Anleitungen dienen soll, ist Anreiz genug diesen Artikel zu schreiben.

Voraussetzungen:

Java muss installiert sein (klingt einfach, ist es aber unter Umständen nicht). Wer kein Freund von OpenJDK-Installationen ist, muss sich die Mühe machen Java per Hand anstatt per Paket zu installieren.

 

Als Alternative kann man die “sources.list” erweitern und die dort bereitgestellten Pakete für Ubuntu auch unter Debian verwenden.

Daher zunächst eine kurze Anleitung zur Installation von JAVA:


echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee -a /etc/apt/sources.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee -a /etc/apt/sources.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886
apt-get update
apt-get install oracle-java7-installer
apt-get install oracle-java7-set-default

Als erstes laden wir die aktuelle Version von Nexus mit wget herunter.

wget http://download.sonatype.com/nexus/oss/nexus-2.8.0-05-bundle.tar.gz

Anschließend entpacken wir das Archiv. In dem Archiv werden ohne Angabe von Ziel-Parametern gleich zwei Ordner ausgepackt. Der zweite Ordner ist nicht zwingend notwendig, da er als Working Dir für Nexus verwendet wird. Statt dessen legen wir uns später ein eigenes Verzeichnis hierfür an.

tar xzvf nexus-2.8.0-05-bundle.tar.gz nexus-2.8.0-05

Die Anwendung legen wir laut FSH unter /usr/local/ an. Damit zukünftigere Aktualsierungen leichter durchgeführt werden können, legen wir einen Symlink für die Anwendung an.

cp nexus-2.8.0-05 /usr/local/ -R
ln -s /usr/local/nexus-2.8.0-05/ /usr/local/nexus

Das System sollte möglichst nicht mit root-Rechten ausgeführt werden. Daher legen wir einen neuen Benutzer an und aktualisieren die nötigen Dateirechte.

adduser nexus
chown nexus:nexus /usr/local/nexus -R

Als nächstes erstellen wir noch ein paar Verzeichnisse für nexus:

mkdir -p /srv/nexus/main-repo
mkdir /home/nexus/run
mkdir -p /var/log/nexus/apache2
chown nexus:nexus /srv/nexus/ -R
chown nexus:nexus /home/nexus/run/

Das Verzeichnis main-repo wird das working dir für Nexus.

 

In dem Verzeichnis /home/nexus/run wird die Datei für den laufenden Prozess abgelegt werden. Normalerweise ist das Verzeichnis hierfür /var/run. Das ist jedoch nur ein Symlink auf /run, worauf nur der root-Benutzer Schreibrechte hat. Daher benötigen wir ein Verzeichnis, auf das der Benutzer nexus zugreifen kann.

 

Das letzte Verzeichnis dienst für die Ablage der Log-Dateien von Apache.

 

Dienst erstellen

 

Als nächstes kopieren wir die ausführbare Datei zu den anderen Daemon-Skripten und tragen die Datei in die Runlevel ein:


cp /usr/local/nexus/bin/nexus /etc/init.d/nexus
update-rc.d nexus defaults

Bisher haben wir nur installiert. Kommen wir nun zur Konfiguration der Datei /etc/init.d/nexus

NEXUS_HOME="/usr/local/nexus/"
RUN_AS_USER=nexus
PIDDIR="/home/nexus/run/"
WRAPPER_CMD="$NEXUS_HOME/bin/jsw/linux-x86-32/wrapper"
WRAPPER_CONF="$NEXUS_HOME/bin/jsw/conf/wrapper.conf"

Die Konfiguration des Apache VHOST unter /etc/apache2/sites-enabled/sitename:

<VirtualHost *:80>
 ProxyPreserveHost On
 ProxyRequests Off
 ServerName subdomain.tld.de
 ServerAdmin postmaster@tld.de
 ProxyPass / http://www.tld.de:8081/nexus/
 ProxyPassReverse / http://www.tld.de:8081/nexus/
 ProxyPassReverseCookiePath /nexus /
 ProxyPassReverseCookieDomain localhost subdomain.tld.de
 ErrorLog /var/log/nexus/apache2/error.log
 CustomLog /var/log/nexus/apache2/access.log combined
</VirtualHost>

Die Konfiguration von Nexus /usr/local/nexus/conf/nexus.properties:

# Jetty section
application-port=8081
application-host=0.0.0.0
nexus-webapp=/usr/local/nexus/nexus-webapp
nexus-webapp-context-path=/nexus

# Nexus section
nexus-work=/srv/nexus/main-repo
runtime=/usr/local/nexus/nexus-webapp/WEB-INF

Damit die Konfiguration für Nexus funktioniert, muss noch ein Ordner umbenannt werden. Ich mag es nicht wenn derselbe Ordnername direkt hintereinander verwendet wird:


mv /usr/local/nexus/nexus /usr/local/nexus/nexus-webapp/

Dienst starten


service nexus start

Abschließend meine Quellen-Angabe:

http://books.sonatype.com/nexus-book/reference/_installing_nexus.html

http://books.sonatype.com/nexus-book/reference/install-sect-service.html

http://alexander.holbreich.org/2012/10/sonatype-nexus-setup/

http://stories.stefanocazzola.it/2011/08/installing-sonatype-nexus-on-linux.html

http://andrewelkins.com/linux/how-to-install-java-7-on-debian-oracle-sucks/

Farben von ls unter linux anpassen

Mai 15th, 2014

Der Kontrast von dunkelblauer Schrift auf schwarzem Grund ist nur sehr schwer zu lesen. Das ist leider der Standard-Wert für die Darstellung von Verzeichnissen mit ls.

Es gibt viele Möglichkeiten die Farbe zu ändern. Ich bevorzuge den folgenden Weg:

dircolors -p > ~/.dircolors

Dieser Befehl erstellt im Home-Verzeichnis eine Datei mit den aktuellen Einstellungen.

In der .bashrc gibt es eine Abfrage, ob die ausführbare Datei dircolors existiert. Ist die Datei vorhanden, dann wird im Home-Verzeichnis des Benutzers nach der Datei .dircolors gesucht.

In der Datei gibt es einen Eintrag für die Verzeichnisse: “DIR 01;36 # directory”.

Der erste Wert ist ein Attribut für die Farbe. Der zweite Wert ist für de Farbe selbst. Glücklicherweise sind die möglichen Werte direkt in der Datei .dircolors erklärt:

# Below are the color init strings for the basic file types. A color init
# string consists of one or more of the following numeric codes:
# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white

Nachdem man den Farb-Wert geändert hat, muss man sich entweder neu anmelden oder man führt die .bashrc erneut aus:

source ~/.bashrc

Anschließend entspricht die Darstellung euer Farbwahl.

Für den root-Benutzer fehlt der notwendige Eitnrag in der .bashrc. Den Eintrag könnt ihr noch hinzufügen:

# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval “$(dircolors -b ~/.dircolors)” || eval “$(dircolors -b)”
alias ls=’ls –color=auto’
#alias dir=’dir –color=auto’
#alias vdir=’vdir –color=auto’

#alias grep=’grep –color=auto’
#alias fgrep=’fgrep –color=auto’
#alias egrep=’egrep –color=auto’
fi

vServer im Vergleich

Oktober 16th, 2013

Die Angebote der Hosting-Dienstleister ändern sich stetig. Nur selten ist ein Vergleich noch aktuell. Auf der Suche nach einem günstigen vServer haben es drei Kandidaten in die engere Auswahl geschafft: Server4You, 1blue und Strato.

 

Damit meine Domain längerfristig ein geeignetes Heim hat, fiel mir diese Aufgabe schwerer als gedacht. Zudem hat jeder Anbieter seine eigenen Kriterien um das Produkt von der nächst höheren Preisstufe abzugrenzen. Das macht es nicht gerade einfacher die Angebote zu vergleichen. Ganz im Gegenteil. Man muss sich seine eigenen Kriterien schaffen und am Ende blieb es zumindest bei mir doch eher eine emotionale Entscheidung.

 

Server4You – PRO X5 1blue -1blu-vServer 2P Strato – V-Server-Linux Level 2
 CPU 2 vCores 2 1
 Webspace 100GB 100GB 100GB
 RAM 2-4GB 3-6GB 2-4GB
 Traffic unbegrenzt unbegrenzt unbegrenzt
 Service E-Mail, Telefon E-Mail, Telefon E-Mail, Telefon und Chat
 VPN Nein. Im Kernel deaktiviert. Ja Ja
 OS Debian 6, Ubuntu 12.04 Debian 6, Ubuntu 12.04 Debian 7
 kostenloses SSL-Zertifikat Nein Ja Nein
 IP-Adressen 1 3 2
 Anbieter-Internet-Auftritt modern und seriös altmodisch und unübersichtlich modern, seriös und übersichtlich
 Suche in Foren nach Erfahrungswerten eher negativ neutral neutral bis positiv
 Preis 8,85€ 12,90€ 14,90€

 

Entschieden habe ich mich unterm Strich für das Angebot von Strato. Die Möglichkeit mit dem neuesten Debian zu arbeiten wollte ich mir nicht nehmen lassen. Strato hat sehr viel Erfahrung in diesem Bereich und ich hoffe darauf, dass mir das zu Gute kommt.