Hostname in CentOS ändern

Der Hostname wird in der Datei /etc/sysconfig/network unter dem Eintrag HOSTNAME gepflegt.

Netzwerkänderung eines RHEL 6 nach klonen einer VM (VMWare vSphere 5)

Nachdem man eine Linux-VM geklont hat, muss man ggf. noch die Netzwerkkarte wieder in Betrieb nehmen.

  1. Nach dem Klonen die neue VM anwerfen
  2. In der Datei /etc/udev/rules.d/70-persistent-net.rules die ursprüngliche eth0-Schnittstelle deaktivieren/auskommentieren und anschließend di eSchnittstelle eth1 in eth0 umbenennen

  3. In der Datei /etc/sysconfig/network-scripts/ifcfg-eth0 die MAC-Adresse sowie ggf. die IP-Adresse anpassen
  4. Jetzt nur noch das System einmal durchstarten (ist zwar nicht unbedingt notwendig… aber zur Sicherheit)

Securitynotes im SAP-System

Wenn man überprüfen möchte, welche SAP-Securitynotes im System eingespielt sind bzw. noch eingespielt werden müssen, startet man in der SE38 den Report RSECNOTE. Leider muss man dann die einzelnen Notes im Detail prüfen, da die angezeigten Hinweise ggf. für das installierte System gar nicht relevant sind.

Zeichensatz in Dateien unter Linux konvertieren

Dateien konvertiert man am besten unter Linux mit dem Tool iconv.

Um eine Datei z.B. von UTF-8 in ISO-8859-1 zu konvertieren, gibt es folgendes Kommando:

iconv --to-code=ISO-8859-1 --from-code=UTF-8 /tmp/test.csv > /tmp/test2.csv

SM37 Jobs mit SQL-Mitteln ausgeben

Um Jobs die in der Transaktion SM37 eingeplant sind auszugeben, kann man auf DB-Ebene folgendes Kommando eingeben:

SELECT jobname,
         sdluname,
         TO_DATE (SDLDATE || SDLTIME, 'yyyymmddhh24miss') "PLANZEITPUNKT",
         strtdate,
         strttime,
         enddate,
         endtime,
         CASE
            WHEN STATUS = 'R' THEN 'Aktiv'
            WHEN STATUS = 'Y' THEN 'Bereit'
            WHEN STATUS = 'P' THEN 'Geplant'
            WHEN STATUS = 'S' THEN 'Freigegeben'
            WHEN STATUS = 'A' THEN 'Abgebrochen'
            WHEN STATUS = 'F' THEN 'Fertig'
            WHEN STATUS = 'Z' THEN 'freig./susp.'
            WHEN STATUS = 'X' THEN 'Unbekannt'
            ELSE 'Unbekannt'
         END
            "STATUS"
    FROM tbtco
   WHERE TO_DATE (SDLSTRTDT || SDLSTRTTM, 'yyyymmddhh24miss') > SYSDATE - 1
ORDER BY TO_DATE (SDLSTRTDT || SDLSTRTTM, 'yyyymmddhh24miss')

Hierbei werden alle Jobs der letzten 24 Stunden sortiert nach Einplanzeit ausgegeben.

Fehlende User für neuen Mandanten im SAP-System

Wenn ein Mandant (ohne dass ein Customizing kopiert wird) neu erstellt wird, fehlen auch sämtliche User im Mandanten. Man kann sich allerdings trotzdem mit dem User SAP* und Passwort PASS anmelden. Voraussetzung dafür ist jedoch das der Profile-Parameter login/no_automatic_user_sapstar auf Wert 0 gesetzt ist.

Oracle Sequences sichern/wiedereinspielen

Für einen Export (zur Datensicherung) kann es wichtig sein, dass Sequenzes gesichert und nach einem Restore wieder eingespielt werden müssen. Dazu habe ich ein kleines Shell-Script geschrieben:

#!/bin/bash
 
sqlplus -SM <<- DOK
system/<passwort>
 
set lines 1000;
set pages 2000;
SET ECHO OFF
SET FEEDBACK OFF
SET HEADING OFF
SET AUTOPRINT OFF
SET AUTOTRACE OFF
SET SHOW OFF
SET VERIFY OFF
 
 
 
select * from 
(select 'drop sequence '||'${1}'||'.'||Sequence_name||';' befehl 
from all_sequences 
where sequence_owner=upper('${1}') and Sequence_name=upper('${2}')
union
select 'create sequence '||'${1}'||'.'||Sequence_name||
' minvalue '||Min_value||
' maxvalue '||max_value||
' start with '||last_number ||
' increment by '||increment_by||
case when cache_size = 0 then ' nocache ' else ' cache ' || 
cache_size end ||' '||
case when order_flag = 'Y' then 'order' end ||' '||
case when cycle_flag = 'Y' then 'cycle' end ||';'
from all_sequences 
where sequence_owner=upper('${1}') and 
Sequence_name=upper('${2}'))
order by substr(befehl,8,319);
 
exit;
DOK

Dieses Script wird auf OS-Ebene mit zwei Parametern aufgerufen:
$1: Schemaname
$2: Sequenzname

Um die Sequenzes wieder ein zu spielen, muss man nur die Ausgaben des Scripts mit dem SQL-Editor (z.B. sqlplus) ausführen.

Anzahl der SAP-Workprozesse eintragen

Die Workprozesse werden im Instanzprofil der SAP-Systeme mit der Transaktion RZ10. Dazu wählt man unter dem Punkt Profil, das entsprechende Instanzprofil aus und klickt auf den Radiobutten „Erweiterte Pflege“ um die Parameter zu ändern bzw. anzuzeigen.

Im darauf folgenden Bildschirm sucht man sich nun die Parameter rdisp/wp* heraus und kann diese entsprechend bearbeiten.

Folgendes ist noch zu beachten:

  • Die Parameter bekommen erst Wirkung nach einem Neustart.
  • Durch die Betriebsartenumschaltung (Transaktion RZ03/RZ04) werden ggf. nach einem Neustart der Anwendung die Workprozesse einige Minuten später geändert. Daher unbedingt auch diese Transaktionen anpassen und beachten!
  • Alle Workprozesse im Instanzprofil addiert ergeben die Anzahl der maximal eingestellten Prozesse für die Betriebsartenumschaltung.

Oracle Datapump

Der alte Export/Import hat ausgedient. Oracle stellt seit einiger Zeit Datapump zur Verfügung. Um Datapump nutzen zu können muss zuvor ein Verzeichnis auf OS-Ebene (sollte klar sein) und ein Oracle Directory erstellt werden (ggf. Berechtigungen dafür erteilen):

-- Directory erstellen
CREATE OR REPLACE DIRECTORY
<DumpDirectory> AS
'<OS-Verzeichnis>';
 
-- Berechtigungen erteilen
GRANT EXECUTE, READ, WRITE ON DIRECTORY <OS-Verzeichnis> 
TO <USER> WITH GRANT OPTION;

Anschließend kann man mit dem OS-Befehl expdp Schemas oder auch Tabellen (etc.) exportieren:

expdp <USER>/<PW> DUMPFILE=<dumpfile.dmp> DIRECTORY=<Oracle-Directory> LOGFILE=<logfile.log> TABLES=<Tabellen>

Hier auch mal ein Beispiel für einen Export mit FlashBack:

expdp system/geheim dumpfile=Dump_01032014_0700.dmp logfile=Dump_01032014_0700.log directory=DATA_PUMP_DIR schemas=TEST flashback_time=\"to_timestamp\(\'01-03-2014 07:00:00\', \'DD-MM-YYYY HH24:MI:SS\'\)\"

Leider werden ggf. genutzte Sequenzes dabei nicht exportiert. Dieses ist nur bei einem Schemaexport möglich bzw. über die Option Include (ebenfalls nur für Schemaexport).

Ein Import der Daten erfolgt mit dem Programm impdp. Zu beachte ist dabei, dass falls die Daten auf einer anderen Oracle-Instanz eingespielt werden sollen, auch dort ein Oracle-Directory vorhanden sein muss.

impdp <USER>/<PW> DUMPFILE=<dumpfile.dmp> DIRECTORY=<Oracle-Directory> TABLE_EXISTS_ACTION=REPLACE LOGFILE=<logfile.log> TABLES=<Tabellen>

Wichtig ist hierbei der Parameter TABLE_EXISTS_ACTION. Wenn er auf REPLACE gesetzt wird, wird erst die Tabelle gelöscht und anschließend neu importiert.

Plattenplatzprobleme im Filesystem der PI

Im Verzeichnis /usr/sap/[SID]/DVEBMGS[INST.Nr.]/data werden Daten gesammelt, die zu Statistikzwecken aufbewahrt werden (z.B. CPU-Statistiken). Die Dateien die verwendet werden hießen astat*und stat*. Man kann diese Daten löschen, sollte aber darauf achten, dass nur die Dateien mit angehängter Nummer gelöscht werden. Die Dateien astat und stat werden aktuell beschrieben.