Oracle DBMS – ein paar grundlegende Wartungsaufgaben

(Last Updated On: 6. September 2015)

Listener und TNSNames

Ein Listener ist ein Service, der auf einem bestimmten Socket nach eingehenden Verbindungen horcht. Wenn sie auf Ihrem Server nur eine IP-Adresse haben, haben Sie meist nur einen Listener. Wenn Sie jedoch mehrere Netzwerkkarten und somit mehrere IP-Adressen auf dem Server haben, um eine höhere Ausfallsicherheit zu gewährleisten, würden Sie für jede Adresse einen extra Listener konfigurieren.

Listener starten, stoppen und Status abfragen

lsnrctl start <listenername>
lsnrctl status <listenername>
lsnrctl stop <listenername>

konfigurieren können Sie Listener entweder über den oracle Net cofniguration Assistant oder über die Datei %ORACLE_HOME%\NETWORK\ADMIN\listener.ora

Listener Services anzegien

Wir können uns alle Services anzeigen lassen, mit denen ein Listener verbunden ist

lsnrctl services

 

Listener konfigurieren

ihr könnt den Lsitener einmal über den oracle net Manager über Oralc enet configuraiton / Local / Listeners konfigurieren.

Als allerletzten Ausweg können Sie die Datei %ORACLE_HOME%\network\admin\listener.ora mit einem Texteditor bearbeiten, um den Listener zu konfigurieren.

Hinweis: wenn Sie die Oracle-Datenbank für ein SAP-System betreiben, befindet sich die Datei listener.ora unter \\sapmnt\<SAPSID>\SYS\profile\oracle, sofern die umgebungsvariable %TNS_ADMIN% gesetzt ist. ohne getzte TNS_ADMIN befindet sich die listener.ora wieder im Standardordner.

Listener absichern

Unter Oracle 9i und älter können Sie den listener folgendermaßen mit einem Passwort belegen

lsnrctl
LSNRCTL>change_password
Old passwort: 
New password: <new password>
LSNRCTL> set password
passord: <neues Passswort>
LSNRCTL> save_config

Das passwort liegt dann in der listener.ora. mit 10g können Sie die Listener-kofngiruation über den Paramer ADMIN_RESTRICTIONS_LISTENER einstellen. Ist dieser parameter auf ein, wird geprüft, ob der benutzer Schreibrechtea uf die Datei listener.ora hat. Falls ja, erlaubt er einen Zugriff auf die Listener-Konfiguration.

tnsnames

auf Clientseite, also auf dem Rechner, von dem aus Sie auf die Oracle-Datenbank zugreifen (meistens der selbe Rechner), befindet sich eine Datei tnsnames.ora, welche die Verbindungsdatena uf Cleintseite konfiguriert, mit denen versucht wird, sich auf dei Oracle-instanz zu verbinden. Diese müssen natürlich identisch sein mit den Daten, die in der listener.ora auf serverseiitge konfiguriert worden sein, insbesondere

  • die Community
  • das Protokoll (meist TCP)
  • die System-ID der oracle-Instanz
  • und der Port (meist 1521 oder 1527)

Oracle Instanz

verbinden zu einer Instanz

Eine normale Verbindung zu einer laufenden Oracle-instanz machen Sie mit

sqlplus <username>/<passwort>@<DBSID>

Das funktioneirt antürlcih nur, wenn der roacle connection idnetifier in der datei tnsnames.ora entsprechend gesetzt wird.

Eine bessere Methode ist der sogenannte SYSDBA- oder SYSOPER-connect. Diese rerfolgt immer nur auf dem Datenbankserver selbst, also nicht auf einem fremden Host, der sich auf dei Datenbank verbnden möchte. eine Vebrindung von einem solchen fremden Host ist nur nach einer speziellen konfiguration möglihc.

hierbei authentifziert sich der Nutzer nicht büer Benutzernamen und APsswort, sondern anhand der zugehörigkeit zu einer Betriebssystemgruppe, die als Oracle-Datenbankadministratorgruppe gekennzeichent ist. Die Anemldugn erfolgt heirbei über das kommando

sqlplus / as sysdba
#bzw.
sqlplus / as sysoper

oracle prüft dann, ob der Betriebssystembenutzer zur Unix-gruppe dba bzw. zur Windows-Gruppe ORA_<DBSID>_DBA gehört bzw. ORA_<DBSID>_OPER.ist dies der fall, erhält der User ufmassende Rehcte und ist an der datnebank angemeldet.

Im Gegensatz zur Benutzername/Passwort-Anmeldugn weiter oben funktioniert diese Anmeldung auch, wenn die Oracle-Datenbank offline ist, da die Anmeldedaten somit nicht im Oracle Data Dictionary stehen. Somit kann man sich auch an einer Oracle-Instanz anmelden, die gestoppt ist, um sie beispielsweise neu durchzustarten.

als drittes Verfahren gibt es das sogenannte OPS$-Verfahren. hier muss es einen Oracle-Datenbankbenutzer namens OPS$<sid>adm geben, damit man sich als Betriebssystembenutzer <sid>adm an der Datenbank anmelden kann. Der Präfix OPS$ ist dabei nicht fix, sondern wird über die Umgebingsvariable os_authent_prefix bestimmt. Die Verbindung wird dann aufgebaut über

sqlplus /

Oralce sucht dann in der tabelle DBA_USERS nach einem OSP$-Benutzer. ist dieser vorhadnen, darf sich der Betriebssystembenutzer, der in dieses Schema passt, anmelden. Damit diese Art dder anmeldung auch von einem anderen Host funktioniert als auf dem, auf welchem die Oracle-Instanz läuft, msus die Umgebungsvairable remote_os_authent auf TRUE gesetzt sein.

die OPS$-Anmeldung funktioniert nur, wenn die Oracle-instanz online ist, da Informationen aus der Datenbank abgerufen werden müssen.

sie könenn alle OPS$-Benutzer einer Oracle-Instanz anzeigen lassen über

select USERNAME from DBA_USERS where USERNAME like 'OPS$%';

Einen OPS$-user können Sie ntsprechend so anlegen

cerate user "OPS$<OS-Username>" default tablespace <default_tablespace> temporary tablespace PSAPTEMP identified by externally;

 

welchen Status hat die datenbank?

Wenn sie nach dem Login über sqlplus die meldung bekommen

conntected to an idle instance

dann ist die Instanz gestoppt.

Wenn diese Meldung nicht kommen, läuft die Instanz. Um den Status der Datenbank abzufragen, führen Sei das SQL-Statement aus:

select status from v$instance;

Die Datenbank kann heirbei den Status nomount, mount oder open haben. Welche bedeutung der jeweilige Status hat, lernen Sie weiter unten.

Welche Version aht die datenbank?

select * from v$version;

 

instanz stoppen

Zum Stoppen einer instanz gibt es verschiedene Methoden

  • Normal. Die instanz bleibt bestehen,d bis alle bestehenden Verbindungen geschlossen sind. Sauberste, aber langsamste Methode, um eine Datenbank herunterzufahren
  • immediate. Killt alle bestehenden Verbindungen und rollt nicht durchgelaufene Transaktion einfach zurück
  • Transactional. Killt alle Verbindungen ohne lafuende Transkationen. Verbindungen mitlafuenden Transaktionen werden jedoch laufen gelassen, bis diese Transaktionen durchgelaufen sind. Erst dann wird die Instanz beendet.
  • Abort. Die dreckigste methode zum Stoppen. Kein Rollback und kein Beenden von Sessions, einfach „Strom aus“ sozusagen. Sollte wirklich die allerletzte Option sein, um die Datenbank-Instanz zu stoppen.
shutdown <Option>
#Beispiel
shutdown immediate

Alternativ können Sei die instanz unter Windows auch über die Oralce MMC stoppen, indem sie im Knoten Console Root / Oracle Managed objects / computers / <hostname>  / datbases / <Datenbankname> rechtsklicken und dort den Kontextmenüpunkt Startup/shutdown options wählen.

 

Instanz starten

Es gibt verscheidene Modi, um eien Oracle-Instanz zu starten

  • nomount. es wird nur die Instanz gestartet und der SGA-speichebreich wird zugeweisen und freigehalten.
  • mount es wird außerdem anhand des control files inklusive redo logs gemountet, aber nicht geöffnet. Das heißt die Datenbank kann beispielsweise für ein Datenbank-Recovery genutzt, aber nicht beschrieben oder gelesenw erden.
  • open. Die Datenbank wird zusätzlich geöffnet und kann produktiv genutzt werden.

Sie können eine Oracle-Datenbank entweder gleich in den einsatzbereiten Zustand bringen über

startup open

oder Schritt für Schritt, das ginge beispieslweise über

startup nomount
alter database mount;
alter database open;

Eine Weitere option ist startup force. startup force ist sozusagen ein sehr schneller, aber dreckiger neustart. startup force ist eine Kombination aus den beiden kommandos shutdown abort und startup open. Diesen Befehl soltlen Sie aber nur dann ausführen, wenn Sie sehr wenig Zeit haben.

Parameterwerte anzeigen

Wie Sie aus den theoretischen Grundlagen wissen, bedient sich eine Oracle-Instanz diverser Konfigurationsparameter, die sie entweder in der PFILE- oder in der SPFILE-Datei speichern können.

Es gibt verschiednee arten von Parametern

  • static initialization parameter. Änderungen an diesem APremater greifen nur, wenn man nach der Änderung die Oracle-instanz neu startet
  • dynamic initialization paremter. Änderungen an diesem Paramter greifen sofort, nachdem man ihn geändert hat und ie Oracle-instanz äluft
  • Basic Parameter. Diese sind die 30 wichtigsten Parameter, die jeder DBA kennen sollte
  • Advanced Parameter. sind abhängig von der Edition der Oracle Database, die installiert ist. sie sollten nur getweaked werden, wenn der oracle support oder der Support des Anwendungsssystems es empfiehlt.

Sie können scihd ie Werte von Parametern anzeigen lassen über

show parameter <parametername>;

Alternativ können Sie sich auch in den oracle enterprise Manager einloggen und dort im Menü navigieren nach Server / Database Configuration / initialzation Parameters. Dort können Sie dann in die Liste den Namen des Parameters eingeben und sich dessen Werte anzeigen lassen. In dem Bildschirm haben Sie zwei Regsiterakrten. Die Registerkarte Current zeigt Ihnen alle Parameter, die derzeit in der Arbeitsspeicherkopie des SPFILES gesetzt sind, und die Registerkarte SPFILE zeigt Ihnen die Parameter, die derzeit hart in das SPFILE auf der festplatte geschrieben sind.

Über die View V$PARAMETEr können Sie sich anzeigen lassen, welche Parameter statisch und welche dynamsich sind.

SQL>select ISSYS_MODIFIABLE, ISSSES_MODFIIABLE from V$PARAMETER where NAME='<Parametername>';
ISSYS-MODIFIABLEErklärung
FALSEParameter ist statisch
IMMEDIATEParameter ist dynamisch
DEFERREDParameter ist dynamisch, Änderung wird aber nur für neue Sessions aktiv, nciht für alte.

wenn die Spatle ISSES_MODIFIABLE auf FALSE steht, kann der Parameter nicht über eine einzelne Session gesetzt werden (siehe weiter unten).

Auch wenn Sei das SPFILE in eienm Texteditor ansehen können, sollten Sie im SPFIEL keien Änderungen vornehmen. Jede manuelle Änderung an der SPFILE-Datei führt dazu, dass diese nicht mehr gelesen werden kann.

Wenn die Paraemter desweiteren nicht über das SPFILE, sondern über das obsole PFILE im klartext gepflegt werden, können Sie das PFILE öffnen. Es nennt sich initOra<DBSID>.ora udn kann mit jedem beliebigen Texteditor geöffnet werden.

Parameter setzen

Wie Sie aus den theoretischen Grundlagen wissen, bedient sich eine Oracle-Instanz diverser Konfigurationsparameter, die sie entweder in der PFILE- oder in der SPFILE-Datei speichern können.

es gibt verschiedene Arten von Paraemtern

  • normale Parameter bestimmten Egienschaften der datenbank
  • underscore-Parameter beginnen mti einem Unterstrich. sie sind nur für notfälle gedacht und sollten nru auf explizite Anweisung von Oracle oder vom Hersteller der Anwendungssoftware gesetzt werden, die die oracle-Datenbank nutzt
  • events sind flags, die das Verhalten der Datenbank verändern oder Trace-/Debug-informationen sammeln, wenn ein bestimmtes Ereignis eintritt. Acuh sie soltlen nur bei expliziter Empfehlung gesetzt werden.

Das PFILE ist eine Textdatei und kann daher mit einem gewöhnlcihen Texteditor bearbeitet werden. Das SPFILE ist eine Binärdatei und kann nur noch mti dem SQLPlus-Kommando ALTER SYSTEM SET geändert werden. DAs ist auch gleichzeitig die zu bevorzugende Methode, da hier die Syntax der gesetzten Parameter auf Fehler überprüft wird und das SPFILE im Gegensatz zum PFILE einige angesprochene Vorteile hat.

Es gibt zwei Instanzen des SPFILES: Einaml die Version, die auf der festplatte gespeichert wird und einmal das Abbidl des SPFILES im Arbeitsspeicher. Sie können einen Parameter nur temporär setzen, dann wird dieser nur auf die Arbeitsspeicherkopie des SPFILES angewandt und verschwindet wieder, sobald die Oracle-Instanz das nächste mal neu gestartet wird. das empfiehlt sich beispielsweise zum Testen neuer Parameter. Wenn Sie einen parameter hingegen auch beim Neustart der oracle-Instanz behalten wollen, müssen Sie ihn auch auf die Festplatte schreiben.

Das temporäre Setzen im Arbeitsspeicher geht über

alter system set <parameter>=<wert> scope=mem;

Das permanente setzen geht über

alter system set <parameter>=<wert>;
#oder die beiden Befehle
alter system set <parameter>=<wert> scope=mem;
alter system set <parameter>=<wert> scope=[pfile|spfile];

Eventuell haben Sie früher nur ein PFILE über den Texteditor konfuguriert und möchten Ihre Datenbankparameter nun in das empfehlenswertere SPFILE umziehen. Das geht über folgendes Kommando

CREATE SPFILE FROM PFILE;

umgekehrt können sie natürlich auch zurückkonvertieren.

CREATE PFILE FROM SPFILE;

Sie können überprüfen, ob die oracle instanz mit dem PFILE oder SPFILE startet über

select decode(value, NULL, 'PFILE', 'SPFILE')
"Init File Type"
FROM v$parameter
where name = 'spfile'
#oder
SQL>show parameter spfile

eine Besonderheit: Parameter, die mit einem Unterstrich beginnen, setzen Sie folgendermaßen (Beispiel):

alter system set "_ktb_debug_flags"=8

sogenannte FIX-Control Parameter setzen Sie so:

alter system set "_fix_control"='<bug_number>:ON|OFF'

Einen Parameter löschen/reseten können Sie über

alter system reset <parametername>

einen APrametr nur für die aktuelle Session setzen:

alter session set <Paramter>=<Wert>

Events setzen

alter system set events '<Nummer>';

Editor definieren

Es macht sinn, einen Editor für eure SQLPlus-Statements festzulegen.

für Windows nehmt ihr beispielsweise

define_editor=notepad
#oder
define_editor=wordpad

und für Linux etwas wie beispielsweise

define_editor=vi
#oder
define_editor=vim
#oder
define_editor=nano
#oder
define_editor=sublime
#oder
define_editor=emacs

nachdem ihr diesen Befehl eignebgen habt, könnt ihr den Befehl

SQL> edit

engeben und es öffnet sich der Editor mit dem aktuellen Buffer-Inhalt. ihr könnt mit dem Editor nun euer SQL-Statement speichern und sobald ihr den Editor schließt wird das SQL-Statement aktualisiert mit dem inhalt des Editors,d as könnt ihr prüfen mit

SQL>l

Theoretisch müsstet ihr den Befehl define_editor nach ejder sqlplus-Anmeldung eingeben. Damit das jedes mal automatisch passiert, könnt ihr die Datei ORACLe_HOME\sqlplus\admin\glogin.sql bearbeiten und dort den entsprechenden Befehl eingeben.

Den inhalt des Buffers könnt ihr nun ausführen lassen über

SQL>run
#oder
SQL>/

Pagesize ändern

Wenn ihr eine Query startet, werdet ihr manchmal feststellen, dass zusammengehörige Ergebnisse meist folgendermaßén abgetrennt werden

SPALTENNAME1
----------------
Wert1
Wert2
Wert3
Wert4

SPALTENNAME1
----------------
Wert5
Wert6
Wert7
WErt8

Der Grund ist, dass Oracle die Ergebnsiausgabe in mehrere Seiten unterteilt. Oracle denkt, dass ihr nach einer bestimmten Anzahl von Zeilen wieder erneut den Spaltennamen sehen wollt, damit ihr nicht hochscrollen und nachsehen müsst, welcher Spaltenname das nochmal war. Meistens ist dies jedoch eher störend und hinderlich als nützlich. Ihr könnt das abschalten, indem ihr die Pagesize auf 0 stellt, dann kommen die Spaltennamen nur einmal. Schreibt auch dazu den Befehl

set pagesize 0

in eure glogin.sql.

Linesize ändern

Wenn ihr merkt, dass viele Abfrageergbenisse ungünstig umbrochen werden, weil SQLPlus enien automatischen zeilenumbruch einfügt, könnt ihr dies unterbinden, indem ihr die Linesize ändert

set linesize 1000

 Logdateien

Um zu sehen, ob sie derzeit vollgelaufende Redo-Logs archivieren (ide datnebankinstanz im ArchiveLog-Modus läuft), geben Sie ein

archive log list;

Um den ARchiveLog-mode anzsuchalten

shutdown normal
startup mount
alter datbaase arhcivelog;
alter databsae open;
alter system archive log start;

Danach müssen Sie noch in den profildateien, den Archiver-prozess für die zukunft permanent anschalten über die Parameter

  • log_archive_start = true
  • log_archive_desto = <directory>/<file_prefix>
  • log_archive_format=  <Oracle default>

Um den Status Ihrer  logfiles einzusehen, geben Sie ein

select * from v$logfile;
select * from v$log;

um archivierte Offline-Redo-log-Dateien aufzuspüren, können Sie den View V$ARCHIVED_LOG verwenden.

Kontrolldateien

Kontrolldateien multiplexen

erstmal prüfen, wo die Control Files derzeit liegen

SQL>show parameter control_files;

Ihnen wir nun ausgespuckt, wo die beiden control Files gehalten werden. Eventuell werdne sie ehrausfinden, dass beide control Files auf dem selben Datenträger leigen, das wollen sie natürlich nicht.

Um die cnotrol Files nun umzusetzen, müssen Sie erst die Datenbank runterfahren.

SQL>shutdown normal

Jetzt gehen Sie zum Standort der Control Fiels, normalerwiese %ORACLE_BASE%\oradata\orcl und verschieben eines der Control Files zu einem anderen Datenträger.

Jetzt müssen Sie den Standort des zweiten Control Files umsetzen. Dazu müssen Sie de Parameter control_files im PFILE InitOra<DBSID>.ora so abändern, dass der Pafad der zweiten Datei auf den neuen Standort zeigt.

Da die Datenbank-Instanz nicht up war, mussten wir den Parameter im PFILE setzen. Wenn ihre Oracle-insatnz jedoch so konfiguriert ist, dass sie die Datenbankparameter nicht vom klartext-PFILE, sondern vom binären SPFILE liest, müssen Sei den Parameter erst noch vom PFILE in das SPFILE bekommen. Das können Sie beispeislweise machen, indem sie sich an sqlplus anmelden

$>sqlplus / as sysdba

dann das SPFILE aus dem PFILE erstellen

SQL>create spfile from pfile;

jetzt können wir die Instanz komplett neu durchstarten

SQL>startup

Datendateien der Tablespaces sowie Kontrolldateien anzeigen

Der obere zeigt alle Tablespaces und deren Data Files an, der untere die kontrolldateien

select t.name, d.name, d.bytes from v$tablespace t join v$datafile d on t.ts# = d.ts# order by t.name
select * from v$controlfile;

 Oracle Managed Files

Oracle Managed Files bedeutet, dass sich die Oracle-Instanz selbst darum kümmern, die Speicherorte und die Verwlatung der Betriebssystemdateien wie beispielsweise Datendateien, Control Files usw. zu übernehmen. Sie können jedoch weiterhin die Operationen durchführen, um diese autoamtisch gepflegten Dateien an ihre individuellen Bedürfnisse anzupassen.

Sie können prüfen, ob OMF derzeit angeschaltet ist, über

show parameter db_create

Wenn im Result keiner der Parameter mit einem Wert befüllt ist, ist OMF deaktiviert.

Anschalten über

alter system set db_create_file_dest='ORALCE_BASE\oradata\<DBSID>'

wenn Sie jetzt beispeislweise einen neuen TAbelsapce erstellen ohne einen Pfad für das Datafile anzugeben, wird unter dem oben angegeben Pfad automatisch eine neue .dbf-Datendatei erstellt.

 

Client

wenn von anderen Rechnern als dem System, auf dem die Oracle-Isntanz läuft, auf die instanz zugegriffen werden soll, muss die Oralce Client-Software heruntergeladen und installiert werden.

 Tablespaces und Datendateien

Zunächst einmal gilt es die Frage zu beantworten, warum man denn überhaupt potentiell eigene Tablespaces erstellen möchte, schließlich bringt Oracle ja bereits vordefinierte Tablespaces mit, in denen man die Daten speichern könnte. Mögliche Gründe sind etwa

  • Organisation. Wenn es mehrere Tablespaces gibt, kann es sein, dass nur einer der tablespaces ansteigt und sich bei vielen anderen die Dateninhalte nicht ndern. Das führt dazu, dass man seine Backupskripte etwa so schreiben kann, dass Tabelsapecs nur gebackupt werden, wenn sich die Datafiles geändert haben. Wenn man mehrere Tablespaces hat, muss nicht immer die gesamte Datenbank gebackupt werden, sondern nur der Tablesapce, der sich seit dem letzten Backup geändert hat. Das verringert die Zeit und die Performance, die ein Backup in Anspruch nimmt.
  • Performance. Sie können unterschiedliche Tablespaces auf unterschiedlichen Datenträgern abspeichern lassen, um die Schreib-/Lesegeschwindigkeit beider datenträger nutzen zu können.
  • sicherheit und Verwaltung. Man kann zu Tablespaces Quotas zuweisen, die bestimmte Beschränkungen zuweisen.

Beim Anlegen eines Tablespaces muss man entscheiden, ob ein temporärer oder permanenter Tablespace erstellt werden muss. temporäre Tablespaces haben eigentlich nur sinn, wenn man einen vorübergehnden arbeitsplatz braucht, auf dem man Daten zwsicehnspeichern kann.

Dann muss man noch entscheiden, ob man den Tablesapace als beschreibbar (r/w) oder als read only (r/o)  erstellen möchte. Letzteres macht beispieslweise sinn für Archivierungs-Tabelspaces.

Es gibt desweiteren verschiedene Tablespace-typen

TypExtent-VerwaltungInhaltAllokationsverwaltungSegmentverwaltung
1DictionaryPermanentUSERMANUAL
2DictionarytemporärUSERMANUAL
3LMTSPemranentSYSTEM(autoÄ) / UNIFORMMANUAL
4LMTSpmeranentSYSTEM(auto)/UNIFORMAUTO
5LMTStemporärUNIFORMMANUAL

Tablespace-Typ prüfen

SQL>select tablespace_name, extent_management, allocation_type, segment_space_management from dba_tablespaces;

Tablespace erstellen

CREATE SMALLFILE TABLESPACE "<tablespacename>" DATFILE '/pfad/zum/datafile.dbf' SIZE 100M
LOGGING
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO

 

Tablespace offline / online nehmen

einen Tablesapce offline zu nehmen kann beispielsweise sinnvoll sein, wenn der tablesapce nur ein Archiv sein soll und nur sehr sehr selten abgefragt wird.

Einen Tablespace kann man unter anderem über den Enterprise Manager offline nehmen. Wählen Sie den betreffenden Tablesapce aus, gehen Sie auf Edit und wählen Sie bei Status den Status Offline aus und klicken auf Apply.

Tablespace Größe vergrößern

Das geht einmal über den Oracle Enterprise manager. einfach den entsprechenden Tabelspace ausählen und auf Edit gehen. Ihr könnt im darauffolgenden Fenster nun entweder ein Data File auswählen und auf Edit gehen und dort die Fil e Size hoch stellen, oder einfach ein neues Data File hinzufügen. Nach dieser Änderung dann im Enterprise Manager noch Apply drücken, um die Änderungen wirksam zu machen.

Alternativ kann man Datafiles folgendermaßen vergrößern

ALTER DATABASE DATAFILE '/pfad/zum/datafile.dbf' RESIZE <xxx>M;

Ein neues Datafile fügen Sie folgendermaßen hinzu.

ALTER TABLESPACE "<tablespacename>" ADD DATAFILE '/pfad/zum/neuen/datafile.dbf' SIZE 600M;

Man kann auch Autoextend anschalten, damit die Datafiles sich autoamtisch vergrößern, wenn sie volllaufen.  Der folgende Befehl vergörßert ein volles Datafile immer um 20 MegaByte.

ALTER DATABASE DATAFILE '/pfad/zum/datafile.dbf' AUTOEXTEND ON NEXT 20M

den Status der Tablespaces fragen Sie folgendermaßen ab

select * from v$tablespace;

Ist z. B. nützlich, wenn man ein Backup auf das Datafile gestartet hat und das Backup nicht beendet wurde, also der tablespace nicht in aus dem Backup-status zurückversetzt wurde.

TAblespace-status abfragen

select * from v$tablespace;

Datendateien-Status abfragen

select * from v$datafile;

Tablespace umbenennen

alter tablespace <alter Name> rename to <neuer name>

Reorganisation

Bei der reorgnaistiaon werden Tabellen neu organisiert, also von Grund auf neu erstellt und verschoben. Der Hauptgrund für eine Reorganisation ist die rückgewinnung von Festplattenspeicher, wenn es beispieslweise viele nicht ganz vollgeschriebene Extents gibt, da einige Datensätze aus den TAbellen gelöscht wurden, oder durhcd ei simple Reduzierung der Größe von Datendateien, wenn diese nach einer Archivierung nicht mehr so groß sein müssen. Ein weiterer Grund könnt die Umstellung des Tablespace-Typs, oder nach einer migration / nach einem Datenbank-Upgrade, falls sich technologische Ansätze in der neuen Datnebank unterscheiden.

Bei einer Online-Reorganisation werden die Segmente innerhalb der datnebank vershcoben, ohne dass es heirbei zu Locks kommt. Man kann also weiterhin auf die Objekte in der Datenbank zugreifen und mit ihr arbieten. Bei einer Offline-Reorganisation wird das Objekt jedocha us der datnebank exportier,t gelöscht und dann wieder neu importiert. DEer anchteil bei einer Online-Reorganisation ist, dass alle zu reorganisierten bojekte während der reorganiastion zweimal vorhanden sein müssen, was einen hohen platzbefdarf ausmacht.

Alerting

Das Oracle AlterLog leigt unter ORACLE_BASE\diag\rdbms\dbname\<dbsid>\trace\alert_<DBSID>.log

Das Log liegt im .xml-Format vor.

Das Oracle Atuoamtic diagnostic Repository liegt in dem parameter DIAGNOSTIC_DEST.  Meistens liegen wichtige Alerts unter ORACLE_BASE\dia\rdbms\orcl\orcl\alert sowie ORACLE_BASE\dia\rdbms\orcl\orcl\trace.

Sie finden Alert messages außerdem im enterprise Manager unter Home, wenn Sei anch unten scrollen bis zum Alerts-Punkt.

Sie können acuh in sqlplus das diagnostic repository abfragen.

select * from v$diag_info

 User Management

Eigentlich sollte es äußerst selten vorkommen, dass Sie als DBA irgendwas mit Usern zu tun haben werden. Denn meistens läuft die Datenbank ja als Datenhaltungskomponenten für einen anwendungsserver, der seine eigene Userverwaltung mitbringt und selbst immer den selben Datenbankuser benutzt, um mit der Datenbank zu kommunizieren. Dennoch schadet es nicht, sich mit den Tätigkeiten auseinander zu setzen.

Alle User anzeigen, die online sind.

select username, account_status from dba_users where account_status like 'OPEN%';

den Status der useraccounts anzeigen, z. B. ob ihr konto expired & locked ist

select * from dba_users;

 Netzwerkkonfiguration

Im Dedidacted Server Mode bekommt jeder User einen eigenen Hintergrundprozess mit einem PGA-Speicherbereich. Im Shared Server mode gibt es nur einen einzigen Prozess und es laufen alle User-Environments nicht in enem extra PGA-Bereich, sondern alle User-Environments liegen im SGA.

Vorteile an Shared:

 

Nachteile an Shared:

  • der Oracle RMAN braucht dedizierte Verbindungen pro User, die ja im shared User Modus fehlen.

tnsnames

tnsnames.ora ist eine Datei, welche die Verbindungseinstellungen für das SQL*Plus Skript auf Clientseite konfiguriert. das heißt diese Datei konfiguriert die verbindungen des Kommandozeilentools SQL*Plus, mit dem wir uns auf eine Oracle-Instanz aufschalten können. Die Einstellungen in dieser Datei sind im klartext beschrieben und können auch mit einem Texteditor gesetzt werden. die einfache Möglichkeit diese einstellungen zu setzen ist aber der oracle Network Configuration Assistant.

EZ Connect

EZ Connect is tein roacle-eigenes produkt, nach dessen installation man sich sehr einfach auf eine Oracle-Instanz verbinden kann

CONNECT username/<pw>@<hostname>:<port>/<dbname>

SQL-Skripte

Man kann vordefinierte SQL-Befehle in einer .sql-Datei abspeichern und diese dann über sql-plus so ausführen, als würde man sie gerade hintereinander über die Tastatur eingeben.

Zum ausführen von .sql-Skripten geben Sie ein

@<Pfad zur .sql-Datei>

 

Optimizer Statistics

Die Statistiken des Optimizers werden vom oralce Query Optimizer genutzt, um Ablaufpläne für SQL-Queries zu optimieren, so dass der optimalste ablaufplan für verschiedene SQL-Operationen genutzt wird. Es empfiehlt sich also aus perofrmancegründen, den optimizer zu pflegen.

ein wesentlicher Datenbankparameter für die Statisitiken ist der APrmeter STATISTICS_LEVEL. Dieser steht standardmäßig auf TYPICAL.

Um  Statistiken über objekte zu sammeln, führen wir beispielsweise einen Befehl aus wie

analyze table <user>.<tabelle> compute statistics;

Jetzt haben wir statistische Werte über diese Tabelle gesammelt. Beispielsweise können wri uns jetzt die Anzahl der Datensätze / Zeilen in dieser tabelle anzeigen lassen über

select num_rows from dba_tables where table_name='<TABELLE>';

Da jetzt über diese Tabelle ständig die Anzahl der Datensätze verfügbar ist, kann Oracle besser entscheiden, welchen Ausführungsplan es verwenden soll,w enn auf diese Tabelle beispielsweise ein SELECt-Statement ausgeführt wird. Wenn ein neuer Datensatz in die Tabelle eingefügt wird, werden die Statistiken leider nicht gleich autoamtishc aktualsiiert.

execute dbms_stats.gather_table_stats('<username>'.'<tabelle>');)

Erst jetzt ist die Anzahl der Datensätze aktualisiert.

Diese Gathering-Methode sollte nun regelmäßig ausgefüjhrt werden, damit die Statistiken ohne unser Zutun automatisch aktualsieirt werden. Das geschieht über einen Atuaomted maintenance Task frü das optimizer Statistiscs gathering.

Automatic workload Repository AWR  MMON, Baselines und Snapshots udn ADDM

Mit dem Automatic Wrokload repository können wir Snapshots oderBaselines erstellen. Snapshots sind Statistiken der Oracle-Instanz zu einem bestimmten Zeitpuinkt. Diese Statistiken entahtlen beispielsweise die aktuelle Wartezeit auf eien Atnwort zu einen SQL-Befehl, die Nutzung von CPU und Arbeitsspeicher durchd ie Oracle-Instanz, den Speicherverbrauch und die Größe der einzlenen Caches im Arbeitsspeicher der Oracle-Isntanz usw.

Eine Baseline ist ein paar von Snapshots, welches der Administrator als „NOrmalwert“ ausgewählt hat. Das bedeutet diese beiden Snapshots zeigen an, wie sich die Oracle Datenbank normalerweise im Zeitraum zwischen zwei Snapshots verhält. Es ist möglich, alle zukünftigen Snapshots dieser Baseline gegenüberzustellen, um daraufhin zu erkennen, welche Werte sich im Vergleich zur Baseline verschlechtert bzw. verbessert haben. Mit den Snapshots des AWRs ist es also möglich, perofrmanceanalysen über die Oralce-Instanz zu machen.

wir wollen jetzt mal eine AWR Baseline erstellen

exec dbms_workload_repository.create_snapshot;

Im Enterprise Manager können wri einen Snapshot erstellen über Server / Staitsitsc amnagement /( automatic workload Repository / Snapshots / Create.

Das AWR ist sozusagen der Statistiklieferant einer Oracle-Instanz. Wenn der AWR das Messgerät ist, dann ist der ADDM der Doktor der Oracle-Instanz. Der ADDM nimmt einen Snapshot aus dem AWR und führt automatische Analysen durch. Beispielsweise sucht er nach Verantwortlichen SQL-Statements, die für eine möglciherweise hohe Auslastung der Oracle-Instanz verantwortlich sind, und gibt Vorschläge für ein sauberes Memory Sizing für die Oracle-Instanz.

Oracle Scheduler

Der Oracle Scheduler ermöglicht es uns, verschiedene Wartungsaufgaben zu automatisieren und für verschiedene Zeitpunkte zu planen.

MMOn

MMON ist zuständig für die alarmierung.

Der erste Task, um Warnungen und Alerts auch per E-Mail zu empfangen, sit Oracle auf einen SMTP-Server zu verweisen. DAs geht im Oralce enterprise Manager rechts oben über Setup / Notification methods. Hier können  wir dann die Daten des SMTP-Servers hinterlegen.

Indexes

einen index erstellen

Ein Index wird für eine Tabelle erstellen, also msus zuerst eine Tabelle erstellt sein, auf die der Index aufbaut. Danach kann man den index erstellen über

create index test_index on <tabellenname>(<spaltenname primärschlüssel>);

Wenn ein Index invalid ist und repariert werden muss

select objecT_name, object_type from dba_objects where status = 'INVALID';

Indexes neu bauen

alter index <name> rebuild;

Views

Zum erstellen einer View brauchen wir natürlich erstmal eine Tabelle. Views sidn ja, wie wir aus dem Theorieteil bereits wissen, nichts anderes, als abgespeicherte SQL-Statements. Deswegen müssen Sie auch das SQL-Statement parat haben, mit der Sie die View erstellen wollen. DAnach können Sie die Viwe erstellen über

create view <name> as <SQL-Statement>;

 

Wenn eine View invalid ist und repariert werden muss

select objecT_name, object_type from dba_objects where status = 'INVALID';

Views reparieren

alter view <name> compile;

Procedures

euine Prozedur kann man erstellen über

create procedure <name> as 
begin
<Code>
end;

Wenn eine Procedure invalid ist und repariert werden muss

select objecT_name, object_type from dba_objects where status = 'INVALID';

Procedurs reparieren

alter procedure nl_add_emp compile;

 Oracle Patchen

Es gibt zwei verschiedene Arten von Patches

  • interm. Ein Hotfix, der oft auf eine sehr spezielle Version von Oracle zugeschnitten ist, also meistens nicht auf eine weite Reichweite von Oracle-Versionen anwendbar ist. Behebt meistens nur eines oder wenige Probleme. Die Hotfixes werden meistens nicht voll getestet udn können ab und zu auch zu Fehlern führen, weshalb nach dem anwendnen eines Hotfixes erst getetstet werden sollte, bevor man ihn auf das produktivsystem anwendet.
  • Ciritical Patch Update (CPU): werden alle drei Monate released, können auf eine weite Reichweite von verschiedenen Oracle-Versionen angewendet werden und adressieren viele Probleme.

Zunächst können Sie einen Patch Advisor ausführen. Dieser führt vorher einige Abhängigkeitschecks durch um sicherzustellen, dass das System dazu in der Lage ist, den Patch überhaupt anzunehmen.

Sie könne den Patch Advisor über den Oralce Enteprrise manager mittels software and Support / aptch Advisor ausführen. Dies funktioniert natürlcih nur, wenn Sie ienen Oracle Supportvertrag abgeschlossen haben und daher Support von Oracle bekommen.

Patchen mit gleichbleibendem Oracle Home

Als erstes invoken wir Opatch mit

cd ORACLE_HOME\OPatch
SQL>opatch lsinventory

Wir wenden den APtch an

SQL>opatch <Pfad zur Patchdatei>

sie könen einen APtch auch über den ROacle Enterprise Manager über Software and Supportt / Apply Patch anwnenden.

Characterset

Den aktuellen Cahraceterset einer Datenbank kann man folgendermaßen überprüfen

select VALUE from V$NLS_PARAMETERS where PARAMETER='NLS_CHARACTERSET';

Bei Non-Unicode SAP-Systemen unter einer Oracle Datenbank Version 8 oder neuer wird immer WE8DEC eingesetzt, auf einem unicode-System wird immer UTF8 verwendet.

Troubleshooting

Die erste Maßnahme ist immer

tnsping <servicename bzw. dbname>

dies testet die verbindung auf die Oracle instanz / DB und zeigt einige Parameter an.

 

 

 

 

Andreas Loibl ist SAP-Berater, Ethical Hacker und Online Marketing Manager und schreibt auf seinem Blog DaFRK Blog über verschiedene Themen in den Sektoren Projektmanagement, Informationstechnik, Persönlichkeitsentwicklung, Finanzen und Zeitmanagement.

DaFRK

Andreas Loibl ist SAP-Berater, Ethical Hacker und Online Marketing Manager und schreibt auf seinem Blog DaFRK Blog über verschiedene Themen in den Sektoren Projektmanagement, Informationstechnik, Persönlichkeitsentwicklung, Finanzen und Zeitmanagement.

Das könnte Dich auch interessieren …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.