Oracle

Aus Geisterle wiki
Wechseln zu: Navigation, Suche

Allgemein

Mein gesammelter Spickzettel zu Infos über die Oracle DB.

Datenbankabhängige Transaktionen der SAP findet man unter SAP_Transaktionen

Ein Oracle Server ist ein RDBMS System, ein Server der relationale Daten verwaltet.

Sehr hilfreich mit vielen kleinen Befehlen für Oracle DB Administratoren: [1]


Datenbankstart

Wenn die Datenbank startet muss ein zusätzlicher Betriebssystemprozesse, genannt listener, laufen. Der Listener stellt die Verbindung zwischen Datenbankclients und der DB Instanz her.

Wenn die Oracle Datenbank startet durchläuft sie mehrere Phasen:

  • NOMOUNT - parameter File wird geöffnet und ausgewertet, speicher wird allokiert und die Instanz gestartet

Dieser Status ist wichtig für das erstellen einer neuen DB und für die Wiederherstellung von verlorenen control files

  • MOUNT - In der mount Phase wird das control File geöffnet (dafür werden die Parameter aus dem parameter file benutzt). Das System ließt die Informationen über die physikalische Struktur der DB. Data Files und Logs sind verfügbar. Die V$ Views sind lesbar. Wenn eine der Informationen im control File nicht gelesen werden kann oder nicht Verfügbar ist gibt es an dieser Stelle Fehlermeldungen und es kann nicht in den mount Zustand gewechselt werden.

Dieser Status ist wichtig für das Wiederherstellen (recover) der DB, um in den ARCHIVELOG Mode umzuschalten, um Datafiles umzubennen oder zu verschieben und um online redo log Files umzubennen, zu löschen oder hinzuzufügen

  • OPEN - Nun werden die restlichen Dateien der Datenbank geöffnet und stehen den Usern zur Verfügung. Erst in der mount Phase können sich User überhaupt anmelden an die DB.


Datenbankstop

Um die Datenbank herunterzufahren gibt es verschiedene Optionen:

  • NORMAL - Es werden keine neue Verbindungen erlaubt. Oracle wartet bis alle derzeitigen User sich von der Datenbank disconnectet haben. Erst nachdem sich alle User (Für ein SAP System, alle Workprozesse) sichvon der Datenbank abgemeldet haben wird die DB heruntergefahren. Alle Dateien werden geschlossen, die DB wird unmounted und die Instanz wird heruntergefahren.
  • TRANSACTIONAL - Keine neuen Verbindungen werden erlaubt und keine neue Transaktion wird nach dem Absetzen dieses Befehls erlaubt. ORACLE wartet das alle offenen Transaktionen sich beenden, dann werden alle User deisconnectet (WP in SAP) und die DB heruntergefahren.
  • IMMEDIATE - Keine neuen Verbindungen werden erlaubt und keine neue Transaktion wird nach dem Absetzen dieses Befehls erlaubt. Der PMON Prozess beendet alle laufenden Sitzungen und fährt einen rollback aller geöffneten Transaktionen. Anschließend wir die DB heruntergefahren.
  • ABORT - Keine neuen Verbindungen werden erlaubt und keine neuen Transationen werden nach dem Absetzen dieses Befehls erlaubt. Alle client SQL Anweisungen werden terminiert, ohne zurückrollen der offenen Transaktionen. User werden von der DB abgemeldet und alle ORACLE Prozesse gestoppt.

In den ersten drei Methoden ist die Datenbank nach dem herunterfahren in einem konsistenten Zustand! Man braucht kein recovery beim nächsten starten. Nach einem SHUTDOWN ABORT können Dateninkonsistenten existieren falls Transaktionen einfach abgebrochen wurden ohne zurückgerollt zu werden. Die Datenbank braucht einen Instanz recovery beim nächsten start, welcher Automatisiert gestartet wird. Diese Methode sollte nur in Ausnahmefällen angewandt werden, z.b. wenn der Oracle Hintergrundprozess sich unnormal beendet.


Während beim SHUTDOWN Befehl per default ein SHUTDOWN NORMAL ausgeführt wird, benutzt BRSPACE per default ein SHUTDOWN IMMEDIATE.


Umgebungsvariablen Oracle

Wichtige Umgebungsvariablen auf einem Oracle Server


Laufzeit Parameter Oracle

Ein paar Beispiele von Oracle Parametern


Oracle 12 Benutzerkonzepte

Mit Einführung von Oracle 12 (Stand August 2015) haben SAP Administratoren die Wahl zwischen dem "SAP Classic" Benutzerkonzept oder dem "SAP Standard" Benutzerkonzept. Von SAP empfohlen wird aktuell das "Oracle Standard" Benutzerkonzept welches für Unix/Linux Administratoren allerdings einen nicht zu verachtenden Aufwand bedeutet auf das neue Benutzerkonzept zu wechseln. Falls auf das neue Oracle Standard Benutzerkonzept gewechselt wird sind in den Umgebungsvariablen des Oracle Users keine SAP oder Oracle Spezifika enthalten. Nach dem Anmelden des Users muss das Shellbezogene Skript "oraenv" (bash) oder "coraenv" (csh) "gesourced" werden. Je nach Konfiguration in der /etc/oratab werden nach Eingabe der DBSID die Umgebungsvariablen an das Oracle Home angepasst.

Mit dem sourcen eines Skripts werden die Umgebungsvariablen in der aktuellen Shell je nach Skriptkonfiguration neu gesetzt. Beispiel bash shell für Oracle User:

 # su - oracle
 $> . oraenv
 $> Bestätigen Sie die DBSID: T01

Beispiel csh für Oracle User:

 # su - oracle
 > source /usr/local/bin/coraenv
 > Bestätigen Sie die DBSID: T01


Oracle Benutzer gesperrt

Mit Oracle 11g wurde ein neues "Feature" eingeführt und alle DB Benutzer werden gezwungen, nach 180 Tagen das Passwort zu änderen. Tun sie das nicht, wird der Benutzer gesperrt.

Da dies für Applikationsbenutzer keinen Sinn macht, liefert SAP mit den BR*Tools ein Script aus, dass dies wieder rückgängig macht: sapuprof_profile.sql. Das Script liegt dort, wo auch die anderen SAP Executables liegen.

Beim Upgrade wird das Script durch den dbua ausgeführt.

Bei einer Neuinstallation wird das Script _nicht_ ausgeführt (obwohl man ja einen speziell für Oracle 11g angepassten SAPINST benutzen muss).

Wenn nach 180 Tagen ein Benutzer gesperrt wurde und daher SAP spinnt oder nicht mehr startet muss man folgendes machen:

1. Passwort der betroffenen Benutzer ändern

  für SAP<SCHEMA-ID>: brconnect -u / -f chpass
  für alle anderen User: SQL> alter user <username> identified by <password>;

2. Betroffene Benutzer entsperren

  SQL> alter user <username> account unlock;

3. schauen dass das nicht mehr passiert:

  sqlplus / as sysdba @sapuprof_profile

Entsprechende SAP Hinweise:

https://service.sap.com/sap/support/notes/1519872

https://service.sap.com/sap/support/notes/951167


Verbinden zur Oracle Instanz:

 sqlplus / as sysdba

Angemeldet als Oracle Administrator am OS führt dies zum "schnellsten" Login an der DB

 connect <DB_user>/<PW>[@<DBSID>]

User authentifizierung erfolgt durch Oracle

 connect /[@<DBSID]

Authentifizierung erfolgt durch den Betriebssystem

 connect <DB_user>/<PW>[@<DBSID>] AS SYSDBA
 connect /[@<DBSID>]AS SYSDBA

Authentifizierung erfolgt über das Betriebssystem. Betriebssystemuser connectiert sich zur Datenbank durch den OPS$ Mechanismus als User SYS mit administrativen Rechten

 connect <DB_user>/<PW>[@<DBSID>] AS SYSOPER
 connect /[@<DBSID>] AS SYSOPER

Authentifizierung erfolgt über das Betriebssystem. Betriebssystemuser verbindet sich zur Datenbank mit dem Schema PUBLIC mit administrativen Rechten von SYSOPER.

Oracle Statistiken bei SAP Systemen aktualisieren

Aktuallisiert alle Statistiken neu und verwirft die alten (force) auf jeden Fall. Ist kein Ersatz für DB13 -> update der Statistiken. Sollte in regelmäßigen Abständen ausgeführt werden, auf jeden Fall aber nach Upgrade/Migrationen. (-p 8 -> 8 parallele Prozesse)

  brconnect -u / -c -f stats -t all -f collect -p 8


Administrations Tools

SQL*Plus

Interaktives Tool, auch skripts sind möglich um auf die Oracle RDBMS über das command-line user interface zuzugreifen.

Verbinden zur Oracle DB:

 D:\oracle\<SID>sqlplus - um sich anschließend zu authentifizieren
 sqlplus system/manager - man kann auch User + PW gleich mitgeben
  CONNECT / AS SYSDBA - um zur DB mit SYSDBA Rechten zu connectieren, Authentifizierung hier bereits auf OS Ebene


BR*Tools von SAP

Pfad auf dem Oracle Server: /usr/sap/<SID>/SYS/exe/run Vorteil: Durch eine einfach telnet/ssh Sitzung kann man die Datenbank auf der Commandozeile administrieren. Natürlich existiert auch ein GUI: BRGUI mit dem die Administration in graphischem Modus erfolgen kann.

  • BRBACKUP - Backup von data files, control files und online redo log files
  • BRARCHIVE - Backup von offline log files
  • BRRESTORE - Wiederherstellen von data files, control files, online redo log files und offline redo log files
  • BRRECOVER - Interaktives tool für datenbank restore und recovery
  • BRSPACE - Datenbank Administration, instance management, space management und reorganisation
  • BRCONNECT - Datenbank Administration, Datenbank check, update von statistiken, user pw Änderungen usw. Hinweis: 403704 - Zusätzliche Funktionalitäten von BRCONNECT
  • BRTOOLS - interaktives Programm zu Administration welches auf die Funktionalitäten der anderen BR* Tools zugreift

'Hilfreich: Jedes BR* Tool hat die Option -h / -help eingebaut um die zusätzlichen Optionen anzeigen zu lassen

Datenbank User Passwort ändern

Aus Sicherheitsgründen sollte das PW für r SAPR3 oder SAP<SCHEMA-ID> regelmäßig geändert werden.

Im Tool BRCONNECT ist die Funktion

 chpass 

mit eingebaut welches das Passwort sowohl in der Oracle Systemtabelle als auch in der Tabelle SAPUSER ändert!

Um die User SYSTEM, SYS und SAPSR3 zu ändern bevorzuge ich die Nutzung der brtools. Mit den folgenden Befehlen lassen sich die Passwörter direkt anpassen. Für SAPSR3 empfehle ich das SAP System zu stoppen.

 brconnect -c -u / -p init%ORACLE_SID%.sap -f chpass -o SAPSR3 -password <neuesPW>
 brconnect -c -u / -p init%ORACLE_SID%.sap -f chpass -o SYSTEM -password <neuesPW>
 brconnect -c -u / -p init%ORACLE_SID%.sap -f chpass -o SYS -password <neuesPW>

Oracle Parameter anpassen

Eine einfache und schnelle Möglichkeit Massenänderungen an den Oracle Parametern (z.b. nach einer Migration) durchzuführen ist mit einem Editor.

Hierfür muss man wissen das Oracle >=10 beim starten aus einer Binärdatei <ORACLE>\dbs\SPFILE.ORA seine Parameter zieht. Dieses SPFILE.ORA ist allerdings eine Binärdatei, kann allerdings mit Oracle Mitteln wieder als Textdatei zurückgeschrieben werden:

 # sqlplus /nolog
 # connect / as sysdba
 sql> create pfile from spfile;

Anschließend findet man im <ORACLE>\dbs Verzeichnis eine Datei init<SID>.ora welche mit einem Editor bearbeitet werden kann. Fehlende Parameter hinein, falsche Parameter raus. Nach den SAP Empfehlungen für 10g, Hinweis: [830576 - Parameterempfehlungen für Oracle 10g] oder [1431798 - Parameterempfehlungen für Oracle 11.2]

Anschließend benennen wir das SPFILE.ORA um, starten die Datenbank durch und schauen ob sie ohne Probleme hochkommt. Falls alle Parameter übernommen wurden ohne Probleme, nocheinmal verbinden zur Datenbank mit:

 # sqlplus /nolog
 # connect / as sysdba
 sql> create spfile from pfile;

Damit wird die neue Binärdatei aus der veränderten Textdatei neu erstellt. Ein erneuter Datenbankstart und die Datenbank zieht automatisch die neu vorhandene <ORACLE>\dbs\SPFILE.ORA mit den veränderten Parametern.

PSAPTEMP vergrößern / verkleinern

Wir können innerhalb des SQLPLUS uns anschauen aus wie vielen Dateien das PSAPTEMP aufgebaut ist bzw. wo es liegt:

 # sqlplus / as sysdba
 sql> select file_name from dba_temp_files;

Hinzufügen von PSAPTEMP innerhalb des SQLPLUS um unter dem Pfad ein neues 10GB anzulegen, evtl vorher den Unterordner "temp_2" anlegen:

 sql> ALTER TABLESPACE PSAPTEMP ADD TEMPFILE '/oracle/SID/sapdata1/temp_2/temp.data2' SIZE 10000M REUSE;

Um das PSAPTEMP wieder zu verkleinern muss man einen alternativen PSAPTEMP (z.b. Name PSAPTEMP1) aufgebaut und der bisherige PSAPTEMP wieder gelöscht:

 sql> CREATE TEMPORARY TABLESPACE "PSAPTEMP1" TEMPFILE '/oracle/SID/sapdata1/temp_1/temp.data10' SIZE 10000M REUSE AUTOEXTEND OFF;
 sql> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE PSAPTEMP1;

Anschließend wird der bisherige PSAPTEMP gelöscht:

 sql> DROP TABLESPACE PSAPTEMP INCLUDING CONTENTS;

Damit es richtig sauber ist muss man anschließend natürlich den PSAPTEMP wieder mit Originalnamen anlegen und den PSAPTEMP1 wiederrum löschen. Kontrollieren lässt sich die am schluss wieder mit dem bekannten select Befehl:

 sql> select file_name from dba_temp_files;

File Positionen ändern in der Datenbank

Zum Beispiel das Verzeichnis von origlogA auf Windows Rechnern von F:\oracle\<SID>\origlogA\... auf G:\oracle\<SID>\origlogA\... ändern.

 1. startup mount
 2. ALTER DATABASE RENAME FILE
 'F:\oracle\<DBSID>\origlogA\LOG_G11M1.DBF' TO
 'E:\oracle\<DBSID>\origlogA\LOG_G11M1.DBF';
 3. ALTER DATABASE OPEN;

etc...

Oracle User Passwort ändern mit SQLplus

Mit SQPplus mitteln ändern:

 sql> alter user <username> identified by <NEUESPW>;


Oracle User entsperren mit SQLplus

Zu oft mit dem falschen PW angemeldet? User wird gesperrt... Mit SQPplus Mitteln und den richtigen Berechtigungen lässt sich ein User wieder unlocken:

 sql> alter user <username> account unlock;


Oracle logrotate (archive log wird geschrieben

Anmelden mit SQLPlus, anschließend mit:

 alter system switch logfile

Oracle Standby Datenbank

Auch gerne als Schattendatenbank bezeichnet stellt eine Standby Datenbank ein Ausfallkonzept der primären Oracle Datenbank dar. Es werden zeitversetzt die Oracle Logfiles in der Schattendatenbank nachgefahren die sich dauerhaft im Recovery Modus hält. Doku dazu gibt es u.a. unter der URL https://help.sap.com/saphelp_nw70/helpdata/en/45/12fab47a447204e10000000a155369/content.htm


Backup

Offline Backup

Die Datenbank muss heruntergefahren werden bevor das Backup startet. Während dem Offline Backup werden die datafiles zum backup Medium kopiert während sie geschlossen sind. Wenn die Datenbank sicher heruntergefahren wurde ist sie in einem konsistenten Zustand und kann ohne bis zu diesem Stand auch ohne redo log files wiederhergestellt werden.


Online Backup

Die Datenbank bleibt online und geöffnet während dem Backup und kann weiter benutzt werden. Gleichzeitig werden die data blocks zum Backup Medium kopiert. Um einen konsistenten Datenbank Stand wiederherzustellen von so einem Backup braucht man zusätzlich die redo Informationen die während des Backup Prozesses geschieben wurden. Mit dem Ziel das alle Blocks in der wiederhergestellten Datenkbank bis zum gleichen Zeitpunkt bei dem die Datenbank gesichert wurde wiederhergestellt werden konnten.


Komplettes Backup (Vollbackup)

Alle Daten der Datenbank werden gesichert. Nachdem ein full backup geschrieben wurde wird eine zusätzliche Information (die "catalog information") in dem control files hinterlegt. Diese werden durch RMAN (Recovery Manager) in das Control File geschrieben. Mit Hilfe dieser Informationen im Control File ist ein incrementelles backup später erst möglich. Im Backup Modus "all" wird RMAN nicht angestoßen, so ist eben kein Eintrag in den control files vorhanden und auch keinen incrementellen Backups möglich. Zwichen dem Backup Modus "all" und "full" in den BR*Tools gibt es ansonsten keinen Unterschied!


Incrementelles Backup

Ein incrementelles Backup setzt auf ein Komplettes Backup auf. Nur Datenblöcke die sich verändert haben werden gesichert. Das verringert natürlich die Datenmenge des neuerlichen Backups, allerdings nicht signifikant die Laufzeit des incrementellen Backups, denn die Datenblöcke müssen noch getestet werden ob es eine Veränderung gab und dafür muss der Datenblock gelesen werden.

  • kann nur auf ein vorangegangenes Vollbackup geschehen
  • wie ein Vollbackup wird auch ein incrementelles Backup von RMAN gesteuert, denn dieser nutzt das control file
  • Mit den SAP Tools werden nur cumulative incrementelle Backups unterstützt. Das bedeutet nur veränderte Daten seit des letzten Vollbackups werden gesichert, nicht die veränderten Daten seit des letzten incrementellen Backups.
  • ein incrementelles Backup mit SAP Tools ist immer ein Backup der kompletten DB, man kann nicht einzelne data files auswählen die gesichert werden sollen