===== Erste Schritte mit dtrace unter Linux 7 =====
Nach dem meine 12c Cluster Installation beim Anlegen des Cluster Service mit einem unbekannten Fehler scheitert, muss ich nun wohl oder übel tiefer das System untersuchen.
Dtrace soll sich dafür ideal eignen.
Mehr dazu:
* https://blogs.oracle.com/wim/entry/trying_out_dtrace
* http://www.tablespace.net/quicksheet/dtrace-quickstart.html
* http://www.oracle.com/technetwork/articles/servers-storage-dev/dtrace-on-linux-1956556.html
* http://www.hhutzler.de/blog/using-dtrace/
* http://www.hhutzler.de/blog/troubleshooting-clusterware-startup-problems-dtrace/#first-dtrace-steps
====Oracle Linux und dtrace====
In einen ersten Test pürfen ob im Public Yum von Oracle Linux 7 evlt. in der Version 7 ein dtrace enthalten ist:
Oracle Linux 7:
#was ist bereits installiert:
yum list | grep dtrace
...
dtrace-modules-3.8.13-35.3.1.el7uek.x86_64
...
#Tools installieren
yum install dtrace-utils
#nicht gefunden .-(
## leider => aus der Doku:
# The DTrace dtrace-utils package is available from ULN.
# Your system must be registered with ULN and be
# installed with or be updated to Oracle Linux Release 6 Update 4 or later or Oracle Linux 7.
Doku:
* http://docs.oracle.com/cd/E37670_01/E50705/E50705.pdf
* http://docs.oracle.com/cd/E37670_01/E50705/html/ol_config_dtrace.html
Leider ist dtrace in der Standard Variante von Oracle Linux nicht verfügbar!
==== dtrace für Linux in der freien Variante unter Oracle Linux einsetzen ====
Alternativ gibt es die freie Version hier:
* https://github.com/dtrace4linux/linux
#alles als der user root
#OS update, damit später die nachzuinstallierenden Libs dazupassen
yum update
#Reboot falls eine neuer Kernel eingepielt wird!
#########
mkdir /srv/dtrace
yum install git
cd /srv
git clone "https://github.com/dtrace4linux/linux.git" dtrace
cd dtrace
./get-deps-fedora.sh
Nachinstalliert wird bei meinem System:
binutils-devel
bison
crash
elfutils-devel
elfutils-libelf-devel
flex
kernel-devel
libdwarf
zlib-devel
m4
####
cd /srv/dtrace
make all
=> Bricht leider gleich mal mit einem Fehler ab ....
=================================================================
=== You need /usr/lib/libdwarf.a or /usr/lib64/libdwarf.a
=== (libdw is not yet supported) to build.
===
=== apt-get install binutils-dev
=== apt-get install libdw-dev
...
/lib/modules/3.8.13-55.1.5.el7uek.x86_64/build does not exist
yum install binutils-devel
Package binutils-devel-2.23.52.0.1-30.el7.x86_64 already installed and latest version
yum install libdwarf
Package libdwarf-20130207-4.el7.x86_64 already installed and latest version
#hmm
yum install kernel-uek-devel
yum install dtrace-modules
make all
# ein Schritt weiter nächster Fehler:
/srv/dtrace/build-3.8.13-55.1.8.el7uek.x86_64/driver/../../uts/common/sys/sdt.h:209:16: error: redefinition of 'struct sdt_probedesc'
typedef struct sdt_probedesc {
In file included from /srv/dtrace/build-3.8.13-55.1.8.el7uek.x86_64/driver/sdt_linux.c:42:0:
/srv/dtrace/build-3.8.13-55.1.8.el7uek.x86_64/driver/../../uts/common/sys/sdt.h:213:3: error: conflicting types for 'sdt_probedesc_t'
} sdt_probedesc_t;
# Da passt wohl etwas nicht so recht zusammen .....
make install
make load
Leider läßt sich das so nicht mit dem Oracle Kernel übersetzen ...
=====Alternative SystemTap=====
Bei Fedora und RedHat Linux als RPM verfügbar
Vergleich zu dtrace
* https://sourceware.org/systemtap/wiki/SystemtapDtraceComparison
* https://blogs.oracle.com/ahl/entry/dtrace_knockoffs
Overview und Einsatz:
* https://sourceware.org/systemtap/index.html
* http://neependra.net/kernel/Systemtap-I.pdf
* http://www.linuxtopia.org/online_books/rhel6/rhel_6_systemtap_guide/
* http://dtrace.org/blogs/brendan/2011/10/15/using-systemtap/
Oracle and SystemTap:
* http://db-blog.web.cern.ch/blog/luca-canali/2014-09-systemtap-oracle
* http://www.pythian.com/blog/troubleshooting-ora-27090-async-io-errors/