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.
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:
Ab Version 10g werden von Oracle alle unwichtigen Accounts automatisch bei der Installation über den grafischen Installer gesperrt.
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.
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
Sie können hierfür die folgenden Befehle in SQL*Plus benutzen:
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.
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.
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;
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;
Ü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:
Unter SQL*Plus/ SQL*Worksheet : set timing on
Ausführungspläne anzeigen unter SQL*PLUS: set autotrace on
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.
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.
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>;
Bitte nehmen Sie mich in den Verteiler der monatlichen Tipps & Tricks auf.