Zu Oracle

Bereich:
Versionsinfo:
DBA
7.3-10.2
Erstellung:
Letzte Überarbeitung:
01/2003
06/2009 MP
 Als PDF Downloaden!

Oracle FAQ

Diese Liste soll Ihnen zu den wichtigsten täglichen Fragen eines Datenbank Administrators schnell prägnante Antworten liefern. Für ausführlichere Informationen zum jeweiligen Thema verwenden Sie bitte die Ihnen zur Verfügung stehende Oracle Dokumentation [Hinweise hierzu stehen immer in eckigen Klammern].

Für eine genauere Besprechung empfehlen wir Ihnen natürlich eine unserer Schulungen.

Sicherheit

Geben Sie den Oracle Benutzern SYS (Default bis 9.2: CHANGE_ON_INSTALL) und SYSTEM (Default bis 9.2: MANAGER) sofort nach der Installation einer neuen Datenbank neue Paßwörter:

ALTER USER SYS IDENTIFIED BY <password>;
ALTER USER SYSTEM IDENTIFIED BY <password>;

Je nach Installation sind auch folgende Benutzer in der Datenbank zusätzlich eingerichtet:

  • DBSNMP/<userdef>
  • MDSYS/MDSYS
  • ORDSYS/ORDSYS
  • OUTLN/OUTLN
  • SYSMAN/<userdef>

Ab Version 10g werden von Oracle alle unwichtigen Accounts automatisch bei der Installation über den grafischen Installer gesperrt.

Netzwerk

Tragen Sie auf jedem Client die entsprechenden Parameter in die Datei ORACLE_HOME\Network\Admin\Tnsnames.ora ein.

   <tns_alias>.world =
      (DESCRIPTION =
         (ADDRESS_LIST =
            (ADDRESS =
               (PROTOCOL = TCP)
               (Host = <host_name>)
               (Port = 1521))
            (ADDRESS =
               (PROTOCOL = TCP)
               (Host = <host_name>)
               (Port = 1526)))
       (CONNECT_DATA = (SID = <sid_name>)))

Anmerkung: Ab Version 8.1.x kann der Parameter SID durch SERVICE_NAME ersetzt werden.

Im Beispiel kann sich der Client sowohl über den Port 1521 als auch über den Port 1526 anmelden.

Ändern Sie auf dem Server die Datei Listener.ora (im Verzeichnis ORACLE_HOME\Network\Admin ebenfalls entsprechend ab:


   <listener_name> =
      (ADDRESS_LIST =   
         (ADDRESS=
            (PROTOCOL= IPC)
            (KEY= <sid_name>.world))
         (ADDRESS=
            (PROTOCOL= IPC)
            (KEY= <sid_name>))
         (ADDRESS=
            (COMMUNITY= TCP.world)
            (PROTOCOL= TCP)
            (HOST= <host_name>)
            (PORT= 1521))
         (ADDRESS=
            (COMMUNITY= TCP.world)
            (PROTOCOL= TCP)
            (HOST= <host_name>)
            (PORT= 1526))
      )
      SID_LIST_<listener_name>=
         (SID_LIST=
            (SID_DESC = (SID_NAME = <sid_name>))
         )

TIPP: Starten Sie den Listener aus einem MS-DOS Fenster heraus mit dem Programm lsnrctl.exe und nicht über das Dienstefenster von Windows, da hier die Übersicht besser ist.

Mehrere Instanzen auf einem Rechner starten

Setzen Sie die Umgebungsvariable ORACLE_SID entsprechend (z. B. im MS-DOS Fenster mit set ORACLE_SID=<sid>') und starten Sie anschließend die Datenbank mit folgendem Kommando:

Dos> SET ORACLE_SID=<sid>
Dos> sqlplus / as sysdba
SQL> startup -pfile=<ORACLE_HOME>\Database\init<sid> .ora

Wenn ein Spfile (ab 9i) im Einsatz ist, kann folgende Syntax verwendet werden:

Dos> SET ORACLE_SID=<sid>
Dos> sqlplus / as sysdba
SQL> startup

Für Unix verwenden Sie bitte folgende Syntax:

UNIX$> export ORACLE_SID=<sid>
UNIX$> sqlplus / as sysdba
SQL> startup -pfile=<ORACLE_HOME>\dbs\init<sid> .ora

Wenn ein Spfile (ab 9i) im Einsatz ist, kann folgende Syntax verwendet werden:

UNIX$> export ORACLE_SID=<sid>
UNIX$> sqlplus / as sysdba
SQL> startup

Datenbank Instanz starten/stoppen

Sie können hierfür die folgenden Befehle in SQL*Plus benutzen:

  • startup -- startet eine Datenbank Instanz.
  • startup force -- fährt eine DB Instanz zuerst mit shutdown abort runter und startet dann erneut.
  • shutdown abort -- die Datenbank Instanz wird augenblicklich heruntergefahren. Möglichst vermeiden, da eventuell ein Datenverlust möglich ist. TIPP: Jedoch sinnvoll für nächtliche Backups, wenn ein shutdown immediate nicht rechtzeitig zum Erfolg führt - aber nur im Zusammenspiel mit anschließendem  startup und shutdown normal!
  • shutdown immediate -- die Datenbank Instanz wird heruntergefahren, wenn alle aktiven Kommandos beendet sind.
  • shutdown normal -- die Datenbank Instanz wird heruntergefahren, wenn alle aktiven Transaktionen beendet und alle Benutzer ausgeloggt sind. 

Datei init<sid>ora

Wird im Verzeichnis ORACLE_HOME\Database für Windows und ORACLE_HOME/dbs für UNIX erwartet.

Alle Parameter, die in der Datenbank gesetzt sind, können in Data Dictionary Tabellen angesehen werden (SELECT * FROM V$PARAMETER). In den Spalten ISSYS_MODIFIABLE und ISSES_MODIFIABLE steht, ob die Parameter zur Laufzeit mit ALTER SYSTEM bzw. ALTER SESSION geändert werden können. Für Parameter, bei denen in beiden Spalten FALSE steht, muss die Datenbank Instanz bei Änderungen neu gestartet werden.

Control Datei

Diese dient zur internen Verwaltung der Oracle Datenbank. Sie muss auf jeden Fall immer verfügbar sein. Die Control Datei mindestens zweimal auf eine andere Platte spiegeln (Eintrag mit Parameter 'control_files' in der Datei init<sid>.ora). Nach Änderungen am Oracle System sollte eine Trace Kopie gemacht und gesichert (!) werden:

ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS '<pfad>/<dateiname>';

Damit kann trotz Ausfall aller Controlfiles die Datenbank eventuell gerettet werden.

Redolog Datei

Idealerweise drei bis vier Gruppen à zwei bis drei Mitglieder einrichten. Die Größe kann nach der Anzahl der Log-Switches bestimmt werden. Bei aktiven Anwendungen sind ca. 30 pro Tag ok. Dateien auf Platten mit hohem I/O und getrennt von Datendateien anlegen.

ALTER DATABASE ADD LOGFILE [GROUP n]
      ('<ORACLE_BASE>\oradata\<sid>\<dateiname>',
       '<ORACLE_BASE>\ oradata\<sid>\<dateiname>')
SIZE <n>M;

Beispiel:

ALTER DATABASE ADD LOGFILE [GROUP n]
      ('c:\oracle\oradata\orcl\log1a_orcl.rdo',
       'c:\oracle oradata\orcl\log1b_orcl.rdo') SIZE 64M;

Tablespaces

Daten Tablespace werden angelegt z.B. durch:

CREATE TABLESPACE daten
DATAFILE 'c:\oracle\oradata\orcl\daten_tbs01.dbf>'
SIZE 256M NEXT 64M MAXSIZE 1024M;

INDEX-Daten/LOB-Tabellen, Rollbackdaten & Anwendungsdaten sollten in getrennten Tablespaces angelegt werden.

Allen Benutzern außer SYS einen anderen als den SYSTEM-Tablespace zuweisen.

ALTER USER <user_name>
DEFAULT TABLESPACE <tbs_name>
TEMPORARY TABLESPACE <tbs_name>; -- Das gilt auch für User SYSTEM

Beispiel:

ALTER USER marco
DEFAULT TABLESPACE daten
TEMPORARY TABLESPACE temp;

Data Dictionary Tabellen/Views

Übersicht aller Verwaltungs-Tabellen:

SELECT * FROM DICT;

bzw. gefiltert:

SELECT * FROM DICT WHERE TABLE_NAME LIKE upper('%tab_name%');

Es dürfen keine DML-Operationen auf DD-Tabellen angewendet werden.
Folgende Views stehen zur Verfügung:

  • USER_..., -- Beinhaltet die jeweiligen Daten, die das Schema des Benutzers betreffen.
  • ALL_..., -- Beinhaltet die Daten von USER_.. und die Daten ausserhalb des Schemas, auf die der Benutzer Rechte hat.
  • DBA_... -- Beinhaltet alle Daten aller Benutzer (nur mit DBA-Privileg sichtbar).
  • V$.. – Performance Views, die Ihren Inhalt aus dem Speicher oder Controlfile beziehen.
  • GV$.. – Wie V$ Performance Views für RAC

Performance Messungen

Unter SQL*Plus/ SQL*Worksheet : set timing on

Ausführungspläne anzeigen unter SQL*PLUS: set autotrace on  

Indizes

Indizes möglichst nur auf Spalten legen, die in der WHERE-Bedingung genutzt werden. Zuviele Indizes können schlecht für die Performance sein, wenn bei häufigen DML-Operationen auf eine Tabelle der Index mit geändert werden muss.  

Offline Backup

  • Datenbank runterfahren (nicht mit shutdown abort)
  • Sämtliche Datendateien, Controldateien & aktuellen Redologdateien incl. init<sid>.ora, spfile<sid>.ora und Passwort-Datei sichern
  • Datenbank wieder hochfahren

Online Backup

Datenbank kann normal weiterlaufen, auch Tablespaces sind jederzeit verfügbar. Jeden Tablespace vorbereiten mit:

ALTER TABLESPACE <tbs_name> BEGIN BACKUP;

Die zum Tablespace gehörenden Dateien wegsichern (mit OCOPY)
Auch alle aktuellen Redologfiles wegsichern.

Tablespace in Normal-Modus setzen mit:

ALTER TABLESPACE <tbs_name> END BACKUP;

Diese Prozedur mit jedem Tablespace durchführen.

Benutzerverwaltung

Anlegen eines Benutzers mit:

CREATE USER <user_name> IDENTIFIED BY <pwd> DEFAULT TABLESPACE
<user_tbs> TEMPORARY TABLESPACE <temp_tbs>
QUOTA <x>M on <user_tbs>
DEFAULT ROLE <rollen_name> PROFILE <profil_name>;

Beispiel:

CREATE USER marco IDENTIFIED BY marco
DEFAULT TABLESPACE daten
TEMPORARY TABLESPACE temp
QUOTA 100M on daten;

Danach müssen dem Benutzer noch die entsprechenden Rechte über Rollen oder direkt zugewiesen werden.
z. B. mit:

GRANT CREATE SESSION, CREATE TABLE TO <user_name1>,<user_name2>
[WITH ADMIN OPTION];

Entziehen der Rechte mit:

REVOKE CREATE SESSION FROM <user_name>;

Suche

Kontakt

Telefon:
  089 6228 6789-0

Telefon (noch gültig):
  089 679090-40

E-Mail Verteiler Monatstipps

Bitte nehmen Sie mich in den Verteiler der monatlichen Tipps & Tricks auf.