Oracle Database 11g Express Edition for Microsoft Windows:
Hinweise zur Deinstallation und Installation sowie erste Schritte

+ andere TechDocs
+ SQL-Beispiele
+ Vererbung
+ UTF8
+



Inhalt

  1. Oracle Database XE deinstallieren
  2. Oracle Database XE 11.2 unter 32-bit-Windows per "Silent Installation" installieren
  3. Oracle Database XE 11.2 unter 64-bit-Windows 7 per GUI installieren
  4. Weitere Hinweise zur Installation
  5. Weitere Hinweise
  6. Beispiel für das Anlegen eines Testusers
  7. Beispiel für ein einfaches Testprogramm zur Performance-Messung
  8. AWR-Reports erstellen


Oracle Database XE deinstallieren

Bevor Sie die Oracle Database XE installieren, müssen vorherige Oracle-Datenbankinstallationen entfernt werden.

  1. Falls noch eine Oracle-Datenbank in Betrieb ist: Mit der StopDB.bat stoppen, zum Beispiel für Oracle XE 11.2:

    C:\oraclexe\app\oracle\product\11.2.0\server\bin\StopDB.bat

  2. Standardmäßig werden Programme unter Windows folgendermaßen deinstalliert:

    Start | Systemsteuerung | Programm deinstallieren | Oracle Database 11g Express Edition | Deinstallieren.

  3. Falls das nicht funktioniert und falls es sich um eine Oracle XE 11.2 handelt:

    Downloaden Sie OracleXE112_Win32.zip, entzippen Sie in C:\OracleXE-Install und versuchen Sie:

    cd /D C:\OracleXE-Install\OracleXE112_Win32\DISK1

    setup.exe /s /f1"C:\OracleXE-Install\OracleXE112_Win32\DISK1\response\OracleXE-remove.iss" /f2"C:\OracleXE-Install\OracleXE-remove.log"

    Warten Sie bis C:\OracleXE-Install\OracleXE-remove.log geschrieben wurde.

  4. Überprüfen Sie über
    Start | Systemsteuerung | System und Sicherheit | Verwaltung | Dienste
    (oder alternativ: rechter Mausklick auf Computer bzw. Arbeitsplatz | Verwalten | Dienste und Anwendungen | Dienste),
    ob noch Oracle-DB-Dienste installiert sind, und stoppen und löschen Sie sie gegebenenfalls:

    sc delete OracleServiceXE

    sc delete OracleJobSchedulerXE

    sc delete OracleMTSRecoveryService

    sc delete OracleXEClrAgent

    sc delete OracleXETNSListener

    (Erläuterungen zum sc-Kommando finden Sie in der Windows Command-line Reference.)

  5. Löschen Sie das bisherige Oracle-Datenbankinstallationsverzeichnis, zum Beispiel so:

    rd /S /Q C:\oraclexe

    Falls das nicht möglich ist: Starten Sie den PC neu und versuchen es erneut.

  6. Falls es immer noch Probleme wegen vorheriger Oracle-DB-Installationen gibt, müssen eventuell Registry-Schlüssel gelöscht werden (machen Sie das nur, wenn es unbedingt notwendig ist und Sie sich auskennen):
    Start | Ausführen... | regedit.exe:

    HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE (z.B. KEY_XE)

    HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Ora*



Oracle Database XE 11.2 unter 32-bit-Windows per "Silent Installation" installieren

  1. Sehen Sie sich die Oracle-XE-Doku an: http://docs.oracle.com/cd/E17781_01/install.112/e18803/toc.htm

  2. Prüfen Sie, dass keine Reste vorheriger Oracle-DB-Installationen existieren, und entfernen Sie diese (siehe oben).

  3. Erstellen Sie das Verzeichnis C:\OracleXE-Install. Downloaden Sie OracleXE112_Win32.zip und entzippen Sie in C:\OracleXE-Install.

  4. Kopieren Sie die so genannte "Response-Datei" OracleXE-install.iss:

    copy C:\OracleXE-Install\OracleXE112_Win32\DISK1\response\OracleXE-install.iss C:\OracleXE-Install

    Passen Sie in der kopierten C:\OracleXE-Install\OracleXE-install.iss den HTTPPort und das SYSPassword an, zum Beispiel so:

    ****************************************************************************************
    **                                                                                    **
    **  Response file to perform silent install of Oracle Database 11g Express Edition    **
    **                                                                                    **
    **  Values for the following variables are configurable:                              **
    **  szDir - Provide a valid path                                                      **
    **  TNSPort - Provide any valid available port number                                 **
    **  MTSPort - Provide any valid available port number                                 **
    **  HTTPPort - Provide any valid available port number                                **
    **  SYSPassword - Provide a valid password string                                     **
    **                                                                                    **
    ****************************************************************************************
    
    [{05A7B662-80A3-4EB9-AE1D-89A62449431C}-DlgOrder]
    Dlg0={05A7B662-80A3-4EB9-AE1D-89A62449431C}-SdWelcome-0
    Count=7
    Dlg1={05A7B662-80A3-4EB9-AE1D-89A62449431C}-SdLicense2Rtf-0
    Dlg2={05A7B662-80A3-4EB9-AE1D-89A62449431C}-SdComponentDialog-0
    Dlg3={05A7B662-80A3-4EB9-AE1D-89A62449431C}-AskPort-13013
    Dlg4={05A7B662-80A3-4EB9-AE1D-89A62449431C}-AskSYSPassword-13011
    Dlg5={05A7B662-80A3-4EB9-AE1D-89A62449431C}-SdStartCopy-0
    Dlg6={05A7B662-80A3-4EB9-AE1D-89A62449431C}-SdFinish-0
    [{05A7B662-80A3-4EB9-AE1D-89A62449431C}-SdWelcome-0]
    Result=1
    [{05A7B662-80A3-4EB9-AE1D-89A62449431C}-SdLicense2Rtf-0]
    Result=1
    [{05A7B662-80A3-4EB9-AE1D-89A62449431C}-SdComponentDialog-0]
    szDir=C:\oraclexe\
    Component-type=string
    Component-count=1
    Component-0=DefaultFeature
    Result=1
    [{05A7B662-80A3-4EB9-AE1D-89A62449431C}-AskPort-13013]
    TNSPort=1521
    MTSPort=2031
    HTTPPort=2020
    Result=1
    [{05A7B662-80A3-4EB9-AE1D-89A62449431C}-AskSYSPassword-13011]
    SYSPassword=geheim
    Result=1
    [{05A7B662-80A3-4EB9-AE1D-89A62449431C}-SdStartCopy-0]
    Result=1
    [{05A7B662-80A3-4EB9-AE1D-89A62449431C}-SdFinish-0]
    Result=1
    bOpt1=0
    bOpt2=0
    

    Der Default-HTTPPort ist 8080. Da diese Portnummer auch von vielen anderen Anwendungen verwendet wird, sollten Sie eine andere wählen.

  5. Erstellen Sie für die "Silent Installation" folgende Batchdatei OracleXE-install.bat (verwenden Sie eine Batchdatei, weil es sonst bei direktem Aufruf schwieriger festzustellen wäre, wann setup.exe fertig ist):

    cd /D C:\OracleXE-Install
    if exist C:\WINDOWS\OracleDatabaseXEServerInstall.log del C:\WINDOWS\OracleDatabaseXEServerInstall.log
    if exist OracleXE-install.log del OracleXE-install.log
    cd /D C:\OracleXE-Install\OracleXE112_Win32\DISK1
    setup.exe /s /f1"C:\OracleXE-Install\OracleXE-install.iss" /f2"C:\OracleXE-Install\OracleXE-install.log"
    cd /D C:\OracleXE-Install
    if exist C:\WINDOWS\OracleDatabaseXEServerInstall.log type C:\WINDOWS\OracleDatabaseXEServerInstall.log
    type OracleXE-install.log
    

    Öffnen Sie ein Kommandozeilenfenster mit Administratorrechten, führen Sie die Batchdatei aus und warten Sie bis C:\OracleXE-Install\OracleXE-install.log geschrieben wurde.

    Es muss "ResultCode=0" eingetragen sein.

    Eventuell müssen Sie den Virenscanner temporär deaktivieren, weil sonst möglicherweise setup.exe in die Quarantäne verschoben wird.

  6. Fahren Sie fort mit Weitere Hinweise zur Installation.



Oracle Database XE 11.2 unter 64-bit-Windows 7 per GUI installieren

  1. Die oben beschriebene "Silent Installation" funktioniert mit OracleXE112_Win32.zip nicht unter Windows 7 64 bit.
    Und auch die Ausführung von setup.exe als GUI-Anwendung funktioniert nicht fehlerfrei (Stand Dezember 2011), Sie erhalten die Fehlermeldung:
    "The installer is unable to instantiate the file C:\Users\...\AppData\Local\Temp\{...}\KEY_XE.reg. The file does not appear to exist."
    Mit dem im Folgenden beschriebenen Trick funktioniert die Installation.

  2. Prüfen Sie, dass keine Reste vorheriger Oracle-DB-Installationen existieren, und entfernen Sie diese (siehe oben).

  3. Erstellen Sie das Verzeichnis C:\OracleXE-Install. Downloaden Sie OracleXE112_Win32.zip und entzippen Sie in C:\OracleXE-Install.

  4. Starten Sie setup.exe als GUI-Anwendung, aber betätigen Sie keine Schaltfläche:

    cd /D C:\OracleXE-Install\OracleXE112_Win32\DISK1

    setup.exe

  5. Sobald das Installationsprogramm auf eine Eingabe wartet, suchen Sie nach zwei neu entstandenen mit "{" beginnenden Temp-Verzeichnissen. Verzweigen Sie in das Verzeichnis, welches OracleMTSRecoveryService.reg enthält und führen Sie aus:

    cd /D C:\Users\%USERNAME%\AppData\Local\Temp

    dir {*

    cd /D C:\Users\%USERNAME%\AppData\Local\Temp\{...}   ["..." ersetzen!]

    copy OracleMTSRecoveryService.reg KEY_XE.reg

  6. Anschließend fahren Sie normal in der setup.exe-GUI-Anwendung fort.

  7. Fahren Sie fort mit Weitere Hinweise zur Installation.



Weitere Hinweise zur Installation

  1. Folgendermaßen können Sie eine Oracle-XE-Datenbank stoppen und wieder starten (mit Admin-Rechten):

    • C:\oraclexe\app\oracle\product\11.2.0\server\bin\StopDb.bat

    • C:\oraclexe\app\oracle\product\11.2.0\server\bin\StartDB.bat

  2. Testen Sie:

    tnsping XE

    Es muss "OK" erscheinen.

  3. Überprüfen Sie über
    Start | Systemsteuerung | System und Sicherheit | Verwaltung | Dienste
    (oder alternativ: rechter Mausklick auf Computer bzw. Arbeitsplatz | Verwalten | Dienste und Anwendungen | Dienste),
    ob die Oracle-DB-Dienste korrekt installiert sind:

    OracleXE-Dienste

  4. Sehen Sie sich mit dem path-Kommando den eingestellten Such-PATH an:

    path

    Wahrscheinlich hat sich Oracle an den Beginn des Such-PATH gesetzt (z.B. mit c:\oraclexe\app\oracle\product\11.2.0\server\bin). Überlegen Sie sich, ob diese Reihenfolge für Sie korrekt ist.

    Ändern können Sie dies über:
    Windows-Taste + Pause-Taste | Erweiterte Systemeinstellungen | Reiter Erweitert | Umgebungsvariablen...

    Sie können diesen PATH-Eintrag auch entfernen, allerdings müssen Sie dann die DB-Tools wie z.B. sqlplus mit vorangestelltem Pfad aufrufen.

  5. Beachten Sie, dass defaultmäßig die Ports 1521, 2030 und 8080 belegt werden (siehe Oracle-XE Installation Guide). Normalerweise empfiehlt es sich den HTTP-Port 8080 freizuhalten, da sehr viele andere Applikationen ebenfalls diesen Port verwenden. Sie können den Oracle-XE-HTTP-Port entweder während der Installation definieren oder folgendermaßen nachträglich ändern:

    • Erstellen Sie folgendes PL/SQL-Skript OracleXE-HTTP-Port-umstellen.sql (bitte die neu gewählte Portnummer anpassen) (Genaueres finden Sie unter Remote External Jobs und XML DB HTTP Server):

      select dbms_xdb.gethttpport as "HTTP-Port", dbms_xdb.getftpport as "FTP-Port" from dual;
      begin
        dbms_xdb.sethttpport('48080');
        dbms_xdb.setftpport('0');
      end;
      /
      select dbms_xdb.gethttpport as "HTTP-Port", dbms_xdb.getftpport as "FTP-Port" from dual;
      exit
    • Führen Sie das DB-Skript als SYSTEM-User aus. Sie können ein beliebiges SQL-Tool verwenden (wie z.B. SQuirreL). Oder Sie verwenden SQL*Plus:

      C:\oraclexe\app\oracle\product\11.2.0\server\bin\sqlplus system/geheim@XE @OracleXE-HTTP-Port-umstellen.sql

    • Falls Sie 48080 gesetzt haben, erreichen Sie die Oracle-XE-Webseite über:

      http://localhost:48080/apex

  6. Beachten Sie bei der Installation einer Oracle-Datenbank unbedingt die Hinweise unter:



Weitere Hinweise

  1. SYS, SYSTEM, SYSDBA:

    • "sys" ist ein Benutzer ("user") mit der Rolle "DBA" (mit Administratorrechten), der bei der Installation eingerichtet wird und die meisten Rechte hat ("Owner of the Database and Owner of the Data Dictionary"). "sys" kann sich mit "sysdba"-Privilegien mit der Datenbank verbinden ("connect sys/<password> as sysdba").

    • "system" ist ein Benutzer ("user") mit der Rolle "DBA" (mit Administratorrechten), der bei der Installation eingerichtet wird und die zweitmeisten Rechte hat. Administrative Aufgaben sollten bevorzugt als "system"-Benutzer ausgeführt werden.

    • "sysdba" ist weder ein Benutzer noch eine Rolle, sondern ist ein "Privileg" (also eine besondere Berechtigung). Wenn sich der "sys"-Benutzer "as sysdba" anmeldet, verfügt er über weitreichendste Rechte (z.B. Erzeugung der Datenbank, Herunterfahren, Backup und Recovery).

  2. Interessehalber können Sie sich ansehen:

    • Select * from Dba_Users;

    • Select * from User_Tablespaces;

    • Select * from Dba_Data_Files;

    • Select * from v$parameter;

    • Select * from v$sysstat; // where name = 'user commits' or name = 'user rollbacks';

    • Select * from v$system_event;

    • Select * from v$sysmetric_history order by End_Time desc, Value desc;

  3. Falls Sie die Größe Ihrer Datenbanktabellen ermitteln wollen:

    • -- MByte pro Tabelle/Index
      Select name as Tabellenname, sum(mb) as MByte
        from (
          Select nvl2(l.segment_name, l.table_name, s.segment_name) name, round(bytes / 1024 / 1024) mb
          from   user_segments s, user_lobs l
          where  s.segment_name = l.segment_name(+) and round(bytes / 1024 / 1024) > 0
          order  by 1, 2 )
        group by name order by MByte desc;



Beispiel für das Anlegen eines Testusers

  1. Für erste Versuche sollte ein eigener Benutzer angelegt werden.

    Folgendes Skript erstellen: Testuser-anlegen.sql

    CREATE ROLE TestRole;
    GRANT  CREATE session, CREATE table, CREATE view, CREATE procedure, CREATE synonym TO TestRole;
    CREATE USER TestUser IDENTIFIED BY TestUser
           DEFAULT TABLESPACE users
           TEMPORARY TABLESPACE temp
           QUOTA UNLIMITED ON users;
    GRANT  TestRole TO TestUser;
    exit;
    
  2. Skript ausführen (geheim durch das system-Passwort ersetzen):

    C:\oraclexe\app\oracle\product\11.2.0\server\bin\sqlplus system/geheim@XE @Testuser-anlegen.sql



Beispiel für ein einfaches Testprogramm zur Performance-Messung

  1. Obigen "Testuser" anlegen.

  2. Das Verzeichnis DbVieleCommitsTest anlegen und dort hinein den Oracle-JDBC-Treiber ojdbc6.jar kopieren.

  3. Im Verzeichnis DbVieleCommitsTest erzeugen: DbVieleCommits.java

    import java.sql.*;
    import java.text.SimpleDateFormat;
    
    public class DbVieleCommits
    {
       public static void main( String[] args ) throws ClassNotFoundException, SQLException
       {
          int    anzahl = 30000000;
          String dbTbl  = "MassenTest";
          String dbDrv  = "oracle.jdbc.OracleDriver";
          String dbUrl  = "jdbc:oracle:thin:@localhost:1521:XE";
          String dbUsr  = "TestUser";
          String dbPwd  = "TestUser";
          dropAndCreateDbTable( dbTbl, dbDrv, dbUrl, dbUsr, dbPwd );
          fillDbTable( anzahl, dbTbl, dbDrv, dbUrl, dbUsr, dbPwd );
       }
    
       static void dropAndCreateDbTable( String dbTbl, String dbDrv, String dbUrl, String dbUsr, String dbPwd )
             throws ClassNotFoundException, SQLException
       {
          Connection cn = null;
          Statement  st = null;
          try {
             Class.forName( dbDrv );
             cn = DriverManager.getConnection( dbUrl, dbUsr, dbPwd );
             st = cn.createStatement();
             try {
                st.execute( "DROP TABLE " + dbTbl );
             } catch( SQLSyntaxErrorException ex ) {
                if( !ex.getMessage().contains( "ORA-00942" ) && !ex.getMessage().contains( "Unknown table 'massentest'" ) ) {
                   throw ex;
                }
             }
             st.close();
             st = cn.createStatement();
             st.execute( "CREATE TABLE " + dbTbl + " ( id INT PRIMARY KEY, lastUpdate TIMESTAMP, meinText VARCHAR(100) )" );
          } finally {
             try { if( st != null ) { st.close(); } } catch( Exception ex ) {/* nothing to do */}
             try { if( cn != null ) { cn.close(); } } catch( Exception ex ) {/* nothing to do */}
          }
       }
    
       static void fillDbTable( int anzahl, String dbTbl, String dbDrv, String dbUrl, String dbUsr, String dbPwd )
             throws ClassNotFoundException, SQLException
       {
          SimpleDateFormat  df = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
          Connection        cn = null;
          PreparedStatement st = null;
          try {
             Class.forName( dbDrv );
             cn = DriverManager.getConnection( dbUrl, dbUsr, dbPwd );
             st = cn.prepareStatement( "INSERT INTO " + dbTbl + " VALUES ( ?, ?, ? )" );
             long anzahlZuletzt = 0;
             long time = System.currentTimeMillis();
             long nanoTimeZuletzt = System.nanoTime();
             for( int i = 0; i < anzahl; i++ ) {
                if( System.currentTimeMillis() >= time ) {
                   System.out.println( df.format( new java.util.Date() ) + ": " + i + " Commits, " + ((i - anzahlZuletzt + 5) / 10) + " Commits/Sekunde." );
                   time += 10000;
                   anzahlZuletzt = i;
                }
                long nanoTime = System.nanoTime();
                st.setLong(      1, i );
                st.setTimestamp( 2, new Timestamp( (new java.util.Date()).getTime() ) );
                st.setString(    3, i + ", " + nanoTime + ", " + ((nanoTime - nanoTimeZuletzt + 500) / 1000) + " Microsekunden" );
                st.execute();
                nanoTimeZuletzt = nanoTime;
             }
          } finally {
             try { if( st != null ) { st.close(); } } catch( Exception ex ) {/* nothing to do */}
             try { if( cn != null ) { cn.close(); } } catch( Exception ex ) {/* nothing to do */}
          }
       }
    }
    
  4. Test starten:

    cd DbVieleCommitsTest

    javac DbVieleCommits.java

    java -cp .;ojdbc6.jar DbVieleCommits

    Übliche Werte sind ca. 4000 Transaktionen pro Sekunde.



AWR-Reports erstellen

  1. Bei Problemen (z.B. Performanceproblemen langlaufender Applikationen) ist es häufig hilfreich, zu einem vorgebbaren Zeitraum die SQL-Kommandos zu analysieren. Hierfür sind die Reports des AWR (Automatic Workload Repository) hilfreich (siehe auch C:\oraclexe\app\oracle\product\11.2.0\server\RDBMS\ADMIN\awrrpt.sql).

  2. Falls zum Beispiel obiger Test genügend lange läuft oder wenn manuell Snapshots erzeugt werden, können AWR-Reports erzeugt werden. Dazu während des Testlaufs mit dem "EXEC DBMS_WORKLOAD_REPOSITORY.create_snapshot"-Kommando mehrere Snapshots erstellen, zum Beispiel alle 10 Minuten, und am Schluss mit dem awrrpt-Kommando einen AWR-Report erstellen (bitte sys/geheim@xe durch <sysdba-Benutzername>/<sysdba-Kennwort>@<sid> ersetzen):

    C:\oraclexe\app\oracle\product\11.2.0\server\bin\sqlplus sys/geheim@xe as sysdba

    EXEC DBMS_WORKLOAD_REPOSITORY.create_snapshot;

    @?/rdbms/admin/awrrpt

    html, 1, Start-Snap-ID, End-Snap-ID

  3. Beispielhafter Auszug aus AWR-Report

    Load Profile:

    Per Second
    Executes: 4,145.91
    Transactions: 3,994.74

    Top 5 Timed Events:

    EventWaitsTime(s)Avg Wait(ms)% Total Call TimeWait Class
    CPU time  419  65.6 
    log file sync 3,145,319 340 0 53.1Commit
    log file parallel write 3,154,928 264 0 41.2System I/O
    log file switch completion 66 57 869 9.0Configuration
    log file switch (checkpoint incomplete) 108 40 373 6.3Configuration




Weitere Themen: andere TechDocs | SQL-Beispiele | Vererbung | UTF8
© 1998-2008 Torsten Horn, Aachen