Benutzer-Werkzeuge

Webseiten-Werkzeuge


se:datenbankentwicklung

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung Beide Seiten der Revision
se:datenbankentwicklung [2008-09-14 16:52]
stefan
se:datenbankentwicklung [2008-09-14 16:57]
stefan
Zeile 20: Zeile 20:
     * Data Buffer Cache: Abgefragte oder modifizierte Daten, vermeidet physikalischen Zugriff auf Dateien, zuletzt bearbeitete Blöcke ​     * Data Buffer Cache: Abgefragte oder modifizierte Daten, vermeidet physikalischen Zugriff auf Dateien, zuletzt bearbeitete Blöcke ​
     * Redo Log Buffer: Redo-Informationen werden zwischengespeichert bis sie physikalisch geschrieben werden     * Redo Log Buffer: Redo-Informationen werden zwischengespeichert bis sie physikalisch geschrieben werden
-    * Dictionary Cache: Data Dictionary Informationen  +    * Dictionary Cache: Data Dictionary Informationen ​
     * Shared SQL Pool: Benutzerübergreifende Informationen (übersetzte SQL-Statements,​ Tabellenbeschreibungen,​ Stored Procedures) ​     * Shared SQL Pool: Benutzerübergreifende Informationen (übersetzte SQL-Statements,​ Tabellenbeschreibungen,​ Stored Procedures) ​
     * Large Pool: Optionaler Bereich zum Puffern von größeren I/​O-Operationen     * Large Pool: Optionaler Bereich zum Puffern von größeren I/​O-Operationen
Zeile 26: Zeile 26:
     * Mögliche Fehler: ''​unable to allocate shared memory, no free buffers in buffer pool'' ​   ​     * Mögliche Fehler: ''​unable to allocate shared memory, no free buffers in buffer pool'' ​   ​
     * Prozesskommunikation über Speicherbereiche     * Prozesskommunikation über Speicherbereiche
-    * speichert permanente Verwaltungsinformationen       ​+    * speichert permanente Verwaltungsinformationen ​     
   * Program Global Area: Speicher für jede Session (Prozess) individuell   * Program Global Area: Speicher für jede Session (Prozess) individuell
     * Größe wird bei Installation gesetzt: PGA-Aggregat-Größe kann angepasst werden, individuelle PGA-Größen werden automatisch angepasst     * Größe wird bei Installation gesetzt: PGA-Aggregat-Größe kann angepasst werden, individuelle PGA-Größen werden automatisch angepasst
Zeile 36: Zeile 36:
     * **Logische Strukturen** sind nur der DB bekannt     * **Logische Strukturen** sind nur der DB bekannt
     * **Physikalische Strukturen** sind die Dateien auf der Festplatte     * **Physikalische Strukturen** sind die Dateien auf der Festplatte
-    * **Recovery-bezogene Strukturen** (z.B. Redo-Logs und Backups) dienen der Wiederherstellung des Systems (z.B. nach Betriebssystemausfällen),​ werden in der Flash Recovery Area abgelegt      +    * **Recovery-bezogene Strukturen** (z.B. Redo-Logs und Backups) dienen der Wiederherstellung des Systems (z.B. nach Betriebssystemausfällen),​ werden in der Flash Recovery Area abgelegt ​    ​
   * Tablespaces   * Tablespaces
     * System- und Nutzdaten liegen im permanenten Tablespace     * System- und Nutzdaten liegen im permanenten Tablespace
-    * SYS hat SYSTEM als permanenten Tablespace, alle übrigen Benutzer USERS    ​+    * SYS hat SYSTEM als permanenten Tablespace, alle übrigen Benutzer USERS  
     * SYSTEM     * SYSTEM
       * Data Dictionary, Tabellen mit administrativen Informationen über die DB (in Schema SYS)            * Data Dictionary, Tabellen mit administrativen Informationen über die DB (in Schema SYS)     
Zeile 85: Zeile 85:
     * Sind einem User zugeordnet     * Sind einem User zugeordnet
     * Datenbankobjekt = Schemaobjekt     * Datenbankobjekt = Schemaobjekt
-  * Privilegien:​ System-/​Objekt-Privilegien   ​+  * Privilegien:​ System-/​Objekt-Privilegien ​ 
     * Rollen: CONNECT (verbinden und abfragen), RESOURCE (Objekte erzeugen), DBA (alles außer STARTUP und SHUTDOWN)     * Rollen: CONNECT (verbinden und abfragen), RESOURCE (Objekte erzeugen), DBA (alles außer STARTUP und SHUTDOWN)
   * Benutzer: interne (z.B. SYS, SYSTEM) und Datenbankbenutzer   * Benutzer: interne (z.B. SYS, SYSTEM) und Datenbankbenutzer
Zeile 97: Zeile 97:
     * SQL*Loader     * SQL*Loader
       * Methoden: conventional,​ direct, external tables       * Methoden: conventional,​ direct, external tables
-      * ''​sqlldr hr/hr DATA=dependents.dat CONTROL=dependents.ctl LOG=dependents.log''​       ​+      * ''​sqlldr hr/hr DATA=dependents.dat CONTROL=dependents.ctl LOG=dependents.log'' ​     
     * Dump     * Dump
       * ''​sqlplus SYSTEM/​password'' ​   ​       * ''​sqlplus SYSTEM/​password'' ​   ​
Zeile 104: Zeile 104:
         * ''​ALTER USER hrdev IDENTIFIED BY hrdev;'' ​     ​         * ''​ALTER USER hrdev IDENTIFIED BY hrdev;'' ​     ​
       * ''​expdp SYSTEM/​password SCHEMAS=hr DIRECTORY=dmpdir DUMPFILE=schema.dmp LOGFILE=expschema.log''​       * ''​expdp SYSTEM/​password SCHEMAS=hr DIRECTORY=dmpdir DUMPFILE=schema.dmp LOGFILE=expschema.log''​
-      * ''​impdp SYSTEM/​password SCHEMAS=hr DIRECTORY=dmpdir DUMPFILE=schema.dmp REMAP_SCHEMA=hr:​hrdev EXCLUDE=constraint,​ ref_constraint,​ index TABLE_EXISTS_ACTION=replace LOGFILE=impschema.log''​           ​+      * ''​impdp SYSTEM/​password SCHEMAS=hr DIRECTORY=dmpdir DUMPFILE=schema.dmp REMAP_SCHEMA=hr:​hrdev EXCLUDE=constraint,​ ref_constraint,​ index TABLE_EXISTS_ACTION=replace LOGFILE=impschema.log'' ​         
   * Backup und Recovery   * Backup und Recovery
     * Schützen aller DB-Dateien (Daten, Control, SPFILE, REDO LOG)     * Schützen aller DB-Dateien (Daten, Control, SPFILE, REDO LOG)
     * Sicherung der gesamten Datenbank in der Flash Recovery Area    ​     * Sicherung der gesamten Datenbank in der Flash Recovery Area    ​
-    * Recovery Manager (RMAN) bedienbar über Kommandozeile/​Script   ​+    * Recovery Manager (RMAN) bedienbar über Kommandozeile/​Script ​ 
     * Backup Retention Policy: Zwei vollständige Backups müssen vorgehalten werden, ARCHIVELOG: zusätzlich alle Logs für media recovery     * Backup Retention Policy: Zwei vollständige Backups müssen vorgehalten werden, ARCHIVELOG: zusätzlich alle Logs für media recovery
     * ARCHIVELOG schützt gegen Fehler des BS, der Oracle Instanz und der Media Disk     * ARCHIVELOG schützt gegen Fehler des BS, der Oracle Instanz und der Media Disk
Zeile 117: Zeile 117:
       * STARTUP MOUNT       * STARTUP MOUNT
       * ALTER DATABASE [NO]ARCHIVELOG;​       * ALTER DATABASE [NO]ARCHIVELOG;​
-      * ALTER DATABASE OPEN;       ​+      * ALTER DATABASE OPEN;      
     * Flashback Queries (Anzeige historischer Daten)     * Flashback Queries (Anzeige historischer Daten)
       * ''​SELECT * FROM employees AS OF TIMESTAMP TO_TIMESTAMP('​2005-04-04 09:​30:​00',​ '​YYYY-MM-DD HH:​MI:​SS'​) WHERE last_name = '​Chung';''​       * ''​SELECT * FROM employees AS OF TIMESTAMP TO_TIMESTAMP('​2005-04-04 09:​30:​00',​ '​YYYY-MM-DD HH:​MI:​SS'​) WHERE last_name = '​Chung';''​
Zeile 140: Zeile 140:
     * ''​DROP TABLESPACE TA [INCLUDING CONTENTS];''​     * ''​DROP TABLESPACE TA [INCLUDING CONTENTS];''​
     * Modi: Online/​Offline:​ ''​ALTER TABLESPACE TA [ONLINE | OFFLINE] [NORMAL | TEMPORARY | IMMEDIATE];''​     * Modi: Online/​Offline:​ ''​ALTER TABLESPACE TA [ONLINE | OFFLINE] [NORMAL | TEMPORARY | IMMEDIATE];''​
-      * {{:​se:​tablespacemodi.jpg|}}   ​+      * {{:​se:​tablespacemodi.jpg|}} ​ 
   * Datenbankobjekte/​Segmente:​ Tabellen, Indizes, Recovery-Informationen   * Datenbankobjekte/​Segmente:​ Tabellen, Indizes, Recovery-Informationen
     * Tablespaces sind in Segmente (Daten, Index, Rollback, temporär) unterteilt     * Tablespaces sind in Segmente (Daten, Index, Rollback, temporär) unterteilt
Zeile 146: Zeile 146:
     * Problem: Fragmentierung     * Problem: Fragmentierung
     * Segmente bestehen aus Extents (unteschiedlicher Größe)     * Segmente bestehen aus Extents (unteschiedlicher Größe)
-      * Anfangs-/​Folge-Extent     ​+      * Anfangs-/​Folge-Extent ​   
       * Die Festlegung der Anfangs-Extent-Größe erfolgt über den Parameter initial       * Die Festlegung der Anfangs-Extent-Größe erfolgt über den Parameter initial
       * Die Anzahl der bei der Erstellung eines Segments mit angelegten Folge-Extents wird mit dem Parameter minextents definiert.       * Die Anzahl der bei der Erstellung eines Segments mit angelegten Folge-Extents wird mit dem Parameter minextents definiert.
Zeile 154: Zeile 154:
       * ''​TRUNC TABLE''​ bewirkt Zurücksetzen des belegten Speichers (<> ''​DELETE FROM TABLE''​)       * ''​TRUNC TABLE''​ bewirkt Zurücksetzen des belegten Speichers (<> ''​DELETE FROM TABLE''​)
       * Festlegung der Parameter bei Erstellung des Tablespaces oder der DB-Objekte       * Festlegung der Parameter bei Erstellung des Tablespaces oder der DB-Objekte
-        * {{:​se:​storageclause.jpg|}}      +        * {{:​se:​storageclause.jpg|}} ​    ​
     * Extents bestehen aus Oracle-Datenblöcken (2KB)     * Extents bestehen aus Oracle-Datenblöcken (2KB)
       * Block-Kopf       * Block-Kopf
Zeile 161: Zeile 161:
         * Transaktionsdirectory (23 Byte pro Eintrag)         * Transaktionsdirectory (23 Byte pro Eintrag)
           * initrans (1 (default) - 255)           * initrans (1 (default) - 255)
-          * maxtrans         ​+          * maxtrans ​       
       * Block-Datenbereich       * Block-Datenbereich
         * Freibereich (Speicher für sich vergrößernde Datensätze)         * Freibereich (Speicher für sich vergrößernde Datensätze)
Zeile 185: Zeile 185:
       * Rumpf (Daten)       * Rumpf (Daten)
         * Spaltenlänge:​ 1 Byte (NUMBER, CHAR, DATE), 3 Byte (VARCHAR, VARCHAR2, LONG, RAW, LONG RAW)         * Spaltenlänge:​ 1 Byte (NUMBER, CHAR, DATE), 3 Byte (VARCHAR, VARCHAR2, LONG, RAW, LONG RAW)
-        * Spaltendaten           ​+        * Spaltendaten ​         
   * Dictionary Views: DBA_FREE_SPACE,​ USER_TABLESPACES,​ USER_SEGMENTS,​ USER_EXTENTS,​ USER_TABLES,​ USER_TS_QUOTAS ​   * Dictionary Views: DBA_FREE_SPACE,​ USER_TABLESPACES,​ USER_SEGMENTS,​ USER_EXTENTS,​ USER_TABLES,​ USER_TS_QUOTAS ​
   * Architektur   * Architektur
Zeile 191: Zeile 191:
       * SGA, PGA, Hintergrundprozesse       * SGA, PGA, Hintergrundprozesse
       * Definiert durch SGA, Files und DB-Prozesse       * Definiert durch SGA, Files und DB-Prozesse
-   ​* Hat eindeutige SID+      ​* Hat eindeutige SID
     * Orace Server-Prozesse     * Orace Server-Prozesse
       * Parsen und Ausführen von SQL, Lesen von DB-Blöcken aus Files            * Parsen und Ausführen von SQL, Lesen von DB-Blöcken aus Files     
Zeile 224: Zeile 224:
       * Modularisierte Anwendungsentwicklung       * Modularisierte Anwendungsentwicklung
       * Portabilität des PL/​SQL-Codes       * Portabilität des PL/​SQL-Codes
-      * Exception Handling        ​  ​   ​+      * Exception Handling ​          ​
   * PL/​SQL-Blöcke   * PL/​SQL-Blöcke
     * Aufbau     * Aufbau
Zeile 234: Zeile 234:
       * Anonymous       * Anonymous
       * Procedure       * Procedure
-      * Function      ​  ​+      * Function ​     
     * Speicherort:​ Server oder Anwendung     * Speicherort:​ Server oder Anwendung
   * Variablen   * Variablen
Zeile 252: Zeile 252:
         * referenziert mit führendem ''&'':​ Eingabe zur Laufzeit         * referenziert mit führendem ''&'':​ Eingabe zur Laufzeit
         * ''​ACCEPT varname PROMPT '​Text'''​         * ''​ACCEPT varname PROMPT '​Text'''​
-      * User Variable: deklariert mit ''​DEFINE'',​ referenziert mit ''&''​         ​+      * User Variable: deklariert mit ''​DEFINE'',​ referenziert mit ''&'' ​        ​
     * ''​%TYPE''​-Attribut:​ Datentyp einer Spalte/​Variable übernehmen (''​identifier table.column_name%TYPE;''​)     * ''​%TYPE''​-Attribut:​ Datentyp einer Spalte/​Variable übernehmen (''​identifier table.column_name%TYPE;''​)
-    * Mögliche Boolean-Werte:​ ''​TRUE,​ FALSE, NULL''​ (!)         ​+    * Mögliche Boolean-Werte:​ ''​TRUE,​ FALSE, NULL''​ (!)         ​
   * Lexikalische Einheiten   * Lexikalische Einheiten
     * Folgen von Zeichen, Zahlen, Whitespace und Symbolen     * Folgen von Zeichen, Zahlen, Whitespace und Symbolen
-    * Typen: Identifier, Delimiter, Literals, Comments ​     ​+    * Typen: Identifier, Delimiter, Literals, Comments ​    ​
   * SQL-Funktionen   * SQL-Funktionen
     * Nicht in PL/SQL verfügbar: ''​DECODE'',​ ''​GROUP''​-Funktionen ​   ​     * Nicht in PL/SQL verfügbar: ''​DECODE'',​ ''​GROUP''​-Funktionen ​   ​
Zeile 263: Zeile 263:
     * ''​INTO''​ wird benötigt     * ''​INTO''​ wird benötigt
     * Abfragen müssen genaue eine Zeile zurückliefern     * Abfragen müssen genaue eine Zeile zurückliefern
-    * Variablenpriorität:​ Spaltennamen -> lokale Variablen/​Parameter -> Tabellennamen     ​+    * Variablenpriorität:​ Spaltennamen -> lokale Variablen/​Parameter -> Tabellennamen ​   
   * Cursor   * Cursor
     * Zeiger auf den privaten Speicherplatz des Oracle-Servers     * Zeiger auf den privaten Speicherplatz des Oracle-Servers
     * Implizit: werden intern vom Oracle-Server erzeugt und verwendet (z.B. bei SQL-Statements)     * Implizit: werden intern vom Oracle-Server erzeugt und verwendet (z.B. bei SQL-Statements)
       * Attributes: ''​SQL%FOUND'',​ ''​SQL%NOTFOUND'',​ ''​SQL%ROWCOUNT'' ​   ​       * Attributes: ''​SQL%FOUND'',​ ''​SQL%NOTFOUND'',​ ''​SQL%ROWCOUNT'' ​   ​
-    * Explizit: werden vom Programmierer definiert und verwendet    +    * Explizit: werden vom Programmierer definiert und verwendet ​  ​
   * Kontrollstrukturen   * Kontrollstrukturen
     * ''​IF THEN - ELSIF - ELSE'''  ​     * ''​IF THEN - ELSIF - ELSE'''  ​
Zeile 289: Zeile 289:
         * dynamische Länge         * dynamische Länge
         * Zugriff über Index ''​table(1)''​         * Zugriff über Index ''​table(1)''​
-        * verfügbare Methoden: ''​EXISTS,​ COUNT, FIRST, LAST, PRIOR, NEXT, DELETE''​         ​+        * verfügbare Methoden: ''​EXISTS,​ COUNT, FIRST, LAST, PRIOR, NEXT, DELETE'' ​       
       * VARRAYs und Nested Tables       * VARRAYs und Nested Tables
   * Cursors   * Cursors
Zeile 297: Zeile 297:
     * entsprechen Pointern aus C (Referenz auf Speicherbereich)     * entsprechen Pointern aus C (Referenz auf Speicherbereich)
     * Datentyp der Curosr-Variablen ist ''​REF CURSOR''​     * Datentyp der Curosr-Variablen ist ''​REF CURSOR''​
-    * Cursor sind statisch, Cursor-Variablen sind dynamisch  +    * Cursor sind statisch, Cursor-Variablen sind dynamisch ​
   * Exceptions   * Exceptions
     * Exceptions sind Fehler, die während der Programmausführung auftreten     * Exceptions sind Fehler, die während der Programmausführung auftreten
Zeile 303: Zeile 303:
     * Behandlung: Handler oder weiterwerfen     * Behandlung: Handler oder weiterwerfen
     * Es sind mehrere Handler pro Block erlaubt, aber lediglich einer wird abgearbeitet.     * Es sind mehrere Handler pro Block erlaubt, aber lediglich einer wird abgearbeitet.
-    * Vorhandene Exceptions: z.B. ''​NO_DATA_FOUND,​ TOO_MANY_ROWS,​ ZERO_DIVIDE''​    +    * Vorhandene Exceptions: z.B. ''​NO_DATA_FOUND,​ TOO_MANY_ROWS,​ ZERO_DIVIDE'' ​  ​
     * nicht vordefinierte Exceptions behandeln: ''​PRAGMA EXCEPTION_INIT''​     * nicht vordefinierte Exceptions behandeln: ''​PRAGMA EXCEPTION_INIT''​
     * Funktionen: ''​SQLCODE,​ SQLERRM''​     * Funktionen: ''​SQLCODE,​ SQLERRM''​
     * Eigene Exceptions werfen: ''​RAISE''​     * Eigene Exceptions werfen: ''​RAISE''​
-    * Eigene Fehlermeldungen analog zum Oracle-Server ausgeben: ''​RAISE_APPLICATION_ERROR''​ (nur mit Nummer -20000 bis -20999)     ​+    * Eigene Fehlermeldungen analog zum Oracle-Server ausgeben: ''​RAISE_APPLICATION_ERROR''​ (nur mit Nummer -20000 bis -20999) ​   
   * Prozeduren und Funktionen   * Prozeduren und Funktionen
     * {{:​se:​proceduresvsfunctions.jpg|}}     * {{:​se:​proceduresvsfunctions.jpg|}}
Zeile 313: Zeile 313:
     * {{:​se:​anonymousblockssubprograms.jpg|}} ​   ​     * {{:​se:​anonymousblockssubprograms.jpg|}} ​   ​
     * Parameter     * Parameter
-   ​* Formal <> actual Parameters+      ​* Formal <> actual Parameters
       * Parameter Modes: ''​IN,​ OUT, IN OUT''​       * Parameter Modes: ''​IN,​ OUT, IN OUT''​
-      * {{:​se:​subprogramparameters.jpg|}}         ​+      * {{:​se:​subprogramparameters.jpg|}} ​       
       * Passing: positional, named, combination       * Passing: positional, named, combination
     * Kein Zugriff auf Host-Variablem ​   ​     * Kein Zugriff auf Host-Variablem ​   ​
Zeile 328: Zeile 328:
     * Vorteile: Modularisierung,​ einfachere Verwaltung, einfacheres Anwendungsdesign,​ Information Hiding, bessere Performance (Package wird komplett und nur einmal in den Speicher geladen), Overloading     * Vorteile: Modularisierung,​ einfachere Verwaltung, einfacheres Anwendungsdesign,​ Information Hiding, bessere Performance (Package wird komplett und nur einmal in den Speicher geladen), Overloading
     * Overloading:​ Beispiele im ''​STANDARD''​-Package (z.B. ''​TO_CHAR''​)     * Overloading:​ Beispiele im ''​STANDARD''​-Package (z.B. ''​TO_CHAR''​)
-    * Forward Declaration:​ Spezifikation eines Subprograms mit Semikolon abgeschlossen. Wird zu Beginn eines Blocks gemacht, damit Prozeduren auf die möglicherweise weiter unten im Quelltext implementierten Prozeduren zugreifen können.     ​+    * Forward Declaration:​ Spezifikation eines Subprograms mit Semikolon abgeschlossen. Wird zu Beginn eines Blocks gemacht, damit Prozeduren auf die möglicherweise weiter unten im Quelltext implementierten Prozeduren zugreifen können. ​   
     * Package Initialization Block: ''​BEGIN''​-Teil am Ende des package body zur Initialisierung von Variablen.     * Package Initialization Block: ''​BEGIN''​-Teil am Ende des package body zur Initialisierung von Variablen.
     * Package State     * Package State
Zeile 337: Zeile 337:
     * Execution Flow: parse (compile time), bind (compile time), execute, fetch     * Execution Flow: parse (compile time), bind (compile time), execute, fetch
     * Dynamic SQL ist ein String     * Dynamic SQL ist ein String
-    * ''​EXECUTE IMMEDIATE .. INTO .. USING''​     ​+    * ''​EXECUTE IMMEDIATE .. INTO .. USING'' ​   
   * Triggers   * Triggers
     * PL/​SQL-Block,​ der einer Tabelle, einem View, einem Schema oder einer Datenbank zugeordnet ist     * PL/​SQL-Block,​ der einer Tabelle, einem View, einem Schema oder einer Datenbank zugeordnet ist
Zeile 344: Zeile 344:
     * Trigger Events: ''​INSERT,​ UPDATE [OF], DELETE''​     * Trigger Events: ''​INSERT,​ UPDATE [OF], DELETE''​
     * Row Trigger: ''​FOR EACH ROW, :NEW, :​OLD''​     * Row Trigger: ''​FOR EACH ROW, :NEW, :​OLD''​
-    * {{:​se:​triggersvsprocedures.jpg|}}     ​+    * {{:​se:​triggersvsprocedures.jpg|}} ​   
  
 ===== Web ===== ===== Web =====
se/datenbankentwicklung.txt · Zuletzt geändert: 2014-04-05 11:42 (Externe Bearbeitung)