• Index
  • Visitenkarte
  • Kontakt
  • Impressum
Patrick Wessel

grep -i stuff /dev/brain | weblog

Statistik

BDLS und die nervige Laufzeit – Ein Akt in 3 Teilen.

9. Juni 2012 by Patrick

Nach einer Systemkopie müssen in der Regel die logischen Systemnamen umgesetzt werden. Und auch unter Netweaver 7.4 lässt die SAP den Kunden ganz schön im Regen stehen. Nicht einmal Standard Indizes für die Felder mit den logischen Systemnamen werden ausgefliefert. Also muss der Kunde hier wieder selbst Hand anlegen.

Eine schnelle und einfache Möglichkeit die Indizes anzulegen habe ich mir mit folgendem Script geschaffen. Der geneigte Admin kann mit dem Script schnell und direkt auf Datenbank-ebene die notwendigen Indizes nach einem Systemrefresh anlegen. Ganz ohne die zeitraubenden brtools.

Das Script lässt sich einfach anpassen und erweitern. Entfernt man zum Beispiel den manuellen vi-Part kann man es mit einem Wrapper versehen und für einen Massenverarbeitung nutzen. Da es eigenständige Logfiles pro Tabelle und Aufruf anlegt kann dies sogar parallelisiert passieren. Das Script an sich ist recht simpel gehalten und sieht so aus:

 

#!/usr/bin/ksh
#Script zum Anlegen von Indizes
#Patrick Wessel, Juni 2012

#Variablen deklarieren
TABELLE=$1 #Uebergebener Tabellennname
FELDER=$2 #Uebergebene Feldnamen
RC=1 #Returncode Pruefung sqlplus Lauf
SUCHRC=1 #Returncode Pruefung Feldpruefung

#Konstanten deklarieren
DATUM=`date ‚+%d%m%Y_%H%M%S’` #Datum fuer die Logfiles
SCHEMA=$dbs_ora_schema #Schema fuer die Indizes
SQLGETTABINFO=get_$(echo $TABELLE | tr ‚/‘ ‚_‘)_info_${DATUM}.sql #SQL Script zum Ermitteln der Tabellenfelder
SQLGETTABINFOLOG=$SQLGETTABINFO.log #Logfile fuer SQL Script zum Ermitteln der Tabellenfelder
SQLCREATEINDEX=create_$(echo $TABELLE | tr ‚/‘ ‚_‘)_${DATUM}.sql #SQL Script zum Erstellen der Indizes
SQLCREATEINDEXLOG=$SQLCREATEINDEX.log #Logfile fuer SQL Script zum der Indizes
PROZENT=10 #Samplesize fuer die Analyse des DB Objects
ZEILEN=5 #Mindestanzahl an Zeilen in den SQL Script Dateien bevor diese ausgeführt werden.

#Uebergabe Parameter pruefen
[ „$TABELLE“ == „“ ] && echo „\n*** Fehler: Es wurde keine Tabelle angegeben“ && exit 1
[ „$FELDER“ == „“ ] && echo „\n*** Fehler: Es wurden keine Felder fuer den Index angeben“ && exit 1

#Bestehende SQL Scripts und Logfiles umbennen
[ -f $SQLCREATEINDEX ] && mv $SQLCREATEINDEX $SQLCREATEINDEX.bak
[ -f $SQLGETTABINFO ] && mv $SQLGETTABINFO $SQLGETTABINFO.bak
[ -f $SQLCREATEINDEXLOG ] && mv $SQLCREATEINDEXLOG $SQLCREATEINDEXLOG.bak
[ -f $SQLGETTABINFOLOG ] && mv $SQLGETTABINFOLOG $SQLGETTABINFOLOG.bak

#Uebergebene Felder aufbereiten
FELDER=$(echo „\“$(echo $FELDER | sed s/,/\“,\“/g)\““)

#Beschreibung fuer die Tabelle auslesen
echo „\nLade Tabellenbeschreibung fuer Tabelle ${SCHEMA}.\“${TABELLE}\“ :“
echo „set echo off;“ | tee -a $SQLGETTABINFO
echo „set termout off;“ | tee -a $SQLGETTABINFO
echo „spool $SQLGETTABINFOLOG“ | tee -a $SQLGETTABINFO
echo „whenever sqlerror exit sql.sqlcode“ | tee -a $SQLGETTABINFO
echo „connect / as sysdba;“ | tee -a $SQLGETTABINFO
echo „desc ${SCHEMA}.\“${TABELLE}\“;“ | tee -a $SQLGETTABINFO
echo „exit;“ | tee -a $SQLGETTABINFO

#Attribute der Erstellten SQL Script Datei ausgeben
ls -al $SQLGETTABINFO

#SQL Script rudimentaer auf Inhalt pruefen und ausfuehren
[ „$(cat ${SQLGETTABINFO} | wc -l)“ -lt $ZEILEN ] && echo „\n**** Die Ausfuehrung wird nicht vorgenommen.\nDas SQL Script hat weniger als $ZEILEN Zeilen.\nAbbruch.“ && exit 0
sqlplus /NOLOG @${SQLGETTABINFO}
RC=$?
[ „$RC“ -eq 0 ] && echo „\nDie Tabellenbeschreibungi fuer ${SCHEMA}.\“${TABELLE}\“ wurde erfolgreich geladen“
[ „$RC“ -ne 0 ] && echo „*** Fehler: sqlplus wurde mit Fehlern beendet.\nDie Tabellenbeschreibung konnte nicht geladen werden\nBitte pruefen!\niGGf. existiert die Tabelle ${SCHEMA}.\“${TABELLE}\“ nicht.\n$(cat $SQLGETTABINFOLOG)“ && exit 1

#Uebergebene Felder pruefen ob diese auch in der Tabelle existieren.
echo „\nPruefe die angegebenen Felder auf Existenz:“
for i in $(echo „${FELDER}“ | sed s/‘,’/‘ ‚/g | sed s/'“‚//g )
do
grep $i $SQLGETTABINFOLOG >/dev/null
SUCHRC=$?
[ „$SUCHRC“ -ne 0 ] && echo „\n**** Das Feld $i konnte in der Tabelle ${SCHEMA}.\“${TABELLE}\“ nicht gefundden werden! ****\nDer Index kann nicht erstellt werden. Das Script wird abgebrochen!“ && exit 1
[ „$SUCHRC“ -eq 0 ] && echo „Feld: $i gefunden“
done

#Script fuer die Index Erstellung zusammen setzen
echo „\nErstelle Indizies fuer Tabelle ${SCHEMA}.\“${TABELLE}\“ :“
#Informationen zu der Tabelle und den Feldern als Kommentar in das Script schreiben um die Informationen fuer eine Scriptmodifikation direkt im Editor zu sehen.
echo „– Die Tabelle mit den Vorhandenen Feldern:“ | tee -a $SQLCREATEINDEX
grep -v „Connected.“ $SQLGETTABINFOLOG | sed ’s/^/– /‘ | tee -a $SQLCREATEINDEX
echo „set echo off;“ | tee -a $SQLCREATEINDEX
echo „set termout off;“ | tee -a $SQLCREATEINDEX
echo „spool $SQLCREATEINDEXLOG“ | tee -a $SQLCREATEINDEX
echo „whenever sqlerror exit sql.sqlcode“ | tee -a $SQLCREATEINDEX
echo „connect / as sysdba;“ | tee -a $SQLCREATEINDEX
echo „CREATE Index ${SCHEMA}.\“${TABELLE}~BDLS\“ on ${SCHEMA}.\“${TABELLE}\“ (${FELDER}) NOLOGGING TABLESPACE P${SCHEMA} PARALLEL;“ | tee -a $SQLCREATEINDEX
echo „ALTER INDEX ${SCHEMA}.\“${TABELLE}~BDLS\“ NOPARALLEL;“ | tee -a $SQLCREATEINDEX
echo „ANALYZE INDEX ${SCHEMA}.\“${TABELLE}~BDLS\“ ESTIMATE STATISTICS SAMPLE ${PROZENT} PERCENT;“ | tee -a $SQLCREATEINDEX
echo „exit;“ | tee -a $SQLCREATEINDEX

#Attribute der Erstellten SQL Script Datei ausgeben
ls -al $SQLCREATEINDEX

#Anpassung des erstellten SQL Scriptes ermöglichen
echo „\n… Datei kann jetzt editiert werden.\nDer Inhalt wird im Anschluss ausgefuehrt\nWenn nicht gewuenscht Dateiinhalt komplett loeschen!“
sleep 3
vi $SQLCREATEINDEX

#Pruefen ob der Inhalt des SQL Scripts geloescht worden ist (dann nicht ausfuehren) ansonsten ausfuehren und Returncode abfragen
[ „$(cat ${SQLCREATEINDEX} | wc -l)“ -lt $ZEILEN ] && echo „\n**** Die Ausfuehrung wird nicht vorgenommen.\nDas SQL Script hat weniger als $ZEILEN Zeilen.\nAbbruch.“ && exit 0
sqlplus /NOLOG @${SQLCREATEINDEX}
RC=$?
[ „$RC“ -eq 0 ] && echo „\nOK: sqlplus wurde erfolgreich ausgefuehrt:\n$(cat $SQLCREATEINDEXLOG)“
[ „$RC“ -ne 0 ] && echo „\n*** Fehler: sqlplus wurde mit Fehlern beendet.\nBitte pruefen!\n$(cat $SQLCREATEINDEXLOG)“ && exit 1

#Das Script wird sauber beendet. Bei Fehlern setzen vorherige Exits entsprechende Returncodes
exit 0


[Read more…]

Posted in: SAP Tagged: ABAP, analysieren, analyze, anlegegen, BDLS, bdlss, brtools, client, create, database, Databaserefersh, DataDictionary, Datenbank, Datenbankkopie, Datenbankrefresh, DD, direct, direkt, Download, Drop, drop index, estimate, fast, Feld, INDEX; INDIZES, Indices, Löschen, Logging, logsys, mand, nologging, noparallel, Oracle, parallel, percent, Prozent, rclient, Refresh, sample, SAP, schnell, Script, sh, SQL, statistics, Statistik, Systemkopie, Tabelle, Tablsespace

Und noch ein Nachschlag

4. Juli 2007 by Patrick

Ich habe mir heute mal wieder die Zeit genommen das WordPress anzupassen. Leider ist es dabei wieder viel zu spät geworden 🙁 Das Blog verfügt jetzt endlich auch über eine richtige Sitemap. Vielleicht hilft es dem einen oder anderen bei der Orientierung.

Neu hinzugekommen sind auch viele Plugins und neue Helferlein. Das meiste werkelt vom Nutzer unerkannt im Hintergrund. So zum Beispiel die erweiterte Trackback-Prüfung oder der IP Banner. Außerdem gab’s ein neues Admininterface. Das sieht irgendwie schöner aus als das, was standardmäßig von WordPress mitgeliefert wird.

[Read more…]

Tagged: Artikel, Blog, Homepage, IP, Plugin, Sitemap, Statistik, Wesselonline

Systemupdate

9. Juni 2007 by Patrick

Jetzt bin ich fast fertig mit der Umstellung des Servers. Die wichtigsten Dinge funktionieren nun schon wieder. Der Mailserver läuft wieder, inkl. Verschlüsselung, Antispam und Virenfilter sowie dem Imap(s) und Pop Server. Außerdem sind die Fileshares (per samaba) und das Drucken über samba/cups jetzt wieder aktiv. Als nettes Gimik gab’s für meine Frau noch einen virtuellen PDF Drucker. Fernadministration ist per Webmin über SSL möglich und es gibt noch einige zusätzliche Informationsdienste. Unter anderem auch eine Statistik über den einlaufenden SPAM. Fetchmail holt gesichert bei diversen Konten Emails ab und der ddclient aktualisiert alle 6 Minuten den Dyndns-Account inkl. MX-Record und Wildcart.

Auch wenn meine Frau das wahrscheinlich wieder ganz anders sieht 🙁 – war halt eine Menge Zeit, die ich investiert habe. Was mir jetzt noch fehlt ist das Backup der Maschine einzurichten. Wird wohl morgen im Laufe des Tages gemacht.

…

Hier sieht man mal eine schöne Übersicht über den Mailverkehr (Anteil Spam/Viren etc.) – wobei hier gesagt werden muss, dass ich den postfix so konfiguriert habe, dass er schon einige Spamchecks während der Annahme der Email macht bzw. die Annahme dann verweigert. Ebenfalls blockt der Postfix ohne Prüfung bestimmte Dateiendungen wie exe, com, vbs etc. Hier braucht sich Amavis gar nicht erst zu bemühen. Das sparrt nicht nur Rechenzeit auf der Maschine, sondern letztendlich auch Speicherplatz, da die Mails ja nicht aufgehoben werden. Mehr dazu im Server-bau-Howto.

Posted in: Allgemein Tagged: Backup, Email, Server, Speicher, SSL, Statistik

Mein kleines Weblog bloggt sich um die Welt…

9. Januar 2007 by Patrick

Man kann es ja kaum glauben wer sich alles für meine kleine Website interessiert bzw. wer sich hierhin verläuft 😉
Zugriffe im Dezember 2006:

Grafik Zugriffe Dezember 2006

[Read more…]

Posted in: Allgemein Tagged: Blog, Global, Google, Homepage, http, Statistik, Wesselonline

Links von Wesselonline

14. September 2006 by Patrick
  • Fotogalerie
  • Webmail
  • Download

Die Links werden von Zeit zu Zeit ergänzt. Webmail steht nur priviligierten Benutzern zur Verfügung. Unter Statistik findet man die Zugriffsstatistiken von Wesselonline. Viel Spaß damit!

Posted in: Allgemein Tagged: Blog, Download, Fotogalerie, Homepage, Links, Statistik, Webmail, Wesselonline

Kategorien

  • Allgemein
  • Politik und Soziales
  • Projekt Linux Server
  • SAP

Verschiedenes

Spaß Windows Download PHP Webserver Artikel Homepage Script Howto select. Tabelle postfix Installation User Verbindung sqlplus Speicher sid Blog Backup Wesselonline Debian Datenbank IP Email Problem Linux Oracle SAP Server

Zu den Kommentaren:

Die Kommentare auf der Seite werden erst nach manueller Prüfung freigeschaltet. Es kann daher mehrere Stunden dauern, bis der entsprechende Kommentar auf der Seite veröffentlicht ist. Bitte nicht mehrfach posten.

Archive

  • Juni 2013
  • Mai 2013
  • April 2013
  • März 2013
  • Februar 2013
  • Januar 2013
  • Dezember 2012
  • November 2012
  • Oktober 2012
  • September 2012
  • August 2012
  • Juli 2012
  • Juni 2012
  • Mai 2012
  • Januar 2012
  • Mai 2011
  • April 2011
  • März 2011
  • Januar 2011
  • Dezember 2010
  • November 2010
  • Oktober 2010
  • September 2010
  • August 2010
  • Juli 2010
  • Juni 2010
  • Juli 2009
  • Juni 2009
  • Mai 2009
  • Februar 2009
  • Januar 2009
  • Dezember 2008
  • August 2008
  • Juli 2008
  • Mai 2008
  • April 2008
  • August 2007
  • Juli 2007
  • Juni 2007
  • Mai 2007
  • April 2007
  • März 2007
  • Februar 2007
  • Januar 2007
  • Dezember 2006
  • Oktober 2006
  • September 2006
  • August 2006

Administration

  • Anmelden
  • Beitrags-Feed (RSS)
  • Kommentare als RSS
  • WordPress.org

Copyright © 2018 Patrick Wessel.

Omega WordPress Theme by ThemeHall