Oracle DBMS Setup

Folgend wird die (im Okt. 2019) aktuelle Oracle DB Version 19c installiert. Zuvor muss das Oracle Preinstallation RPM (19c) installiert werden:

sudo -H yum install oracle-database-preinstall-19c.x86_64
...
reboot

Bemerkung

Der Reboot wurde hier durchgeführt, weil das Oracle Preinstallation RPM u.A. einen Kernel Parameter ändert.

In dem Ordner /var/log/oracle-database-preinstall-19c/backup/ liegen (nach Datum sortiert) die Sicherungen die das Oracle Preinstallation RPM angelegt hat. Dort liegt auch das LOG zu den Änderungen (weitere Hinweise siehe auch Installing the Oracle Preinstallation RPM). Als nächstes kann dann das DBMS installiert werden (Installing Oracle Database Using RPM Packages).

RPM Installation

Wir haben uns bereits oben für die Version 19c entschieden und benötigen nun das RPM Paket für 19c (oracle-database-ee-19c-1.0-1.x86_64.rpm). Nachdem die Datei vollständig heruntergeladen wurde kann das Paket installiert werden.

[user@localhost ~]$ cd ~/Downloads
[user@localhost ~]$ sudo -H yum -y localinstall oracle-database-ee-19c-1.0-1.x86_64.rpm
...
[user@localhost ~]$ sudo -H passwd oracle

Bei der Installation des RPM wurde auch der Systembenutzer oracle angelegt, mit dem man die Oracle Administration vornimmt. Für diesen Benutzer wird noch das Passwort gesetzt.

Datenbank ORCLCDB

Einrichten der exemplarischen DB Instanz ORCLCDB (Creating and Configuring an Oracle Database):

[user@localhost ~]$ sudo -H /etc/init.d/oracledb_ORCLCDB-19c configure
... dauert etwas länger
Erstellen der Datenbank abgeschlossen ...
Datenbankinformationen:
Globaler Datenbankname:ORCLCDB
System-ID (SID):ORCLCDB

Database configuration completed successfully. The passwords were auto generated,
you must change them by connecting to the database using 'sqlplus / as sysdba'
as the oracle user.

Um die Passwörter in der DB Instanz zu ändern, meldet man sich mit dem oracle Benutzer am System an. Mit sqlplus als sysdba kann man dann die Passwörter wie folgt ändern. Die im Beispiel verwendeten Passwörter "sys" und "system" sollten gegen sinnvolle ausgetauscht werden!:

$ . oraenv
ORACLE_SID = [oracle] ? ORCLCDB
...
$ sqlplus / as sysdba
...
SQL> alter user sys identified by "sys";
...
SQL> alter user system identified by "system";

Die ‚so‘ eingerichtete DB Instanz lauscht auf localhost nach Verbindungen. Will man sich remote von einem anderen Host aus gegen die DB verbinden, so muss die IP oder Host-Name in der listener.ora eintragen.

oracle Benutzer

Bei der RPM Installation wurde der Systembenutzer oracle angelegt. Ist man bereits auf dem Rechner angemeldet, kann man in mit su den Benutzer wechseln oder sich via ssh mit diesem Account anmelden.

su - oracle

Die Option -X reicht das Display durch, womit dann auch die graphischen Tools wie dbca genutzt werden können.

[user@localhost ~]$ ssh -X oracle@localhost

Auswahl einer Umgebung

Die zur Verfügung stehen Umgebungen sind in der Datei /etc/oratab konfiguriert:

grep -o '^[^#]*' /etc/oratab
ORCLCDB:/opt/oracle/product/19c/dbhome_1:N
  • ORCLCDB ist die SID

  • /opt/oracle/product/19c/dbhome_1 ist der Ordner der DB Instanz

  • N oder Y: autostart der DB bei Systemstart

Nach dem Login muss mittels oraenv erst die DB Umgebung ausgewählt werden:

[oracle@localhost ~]$ source oraenv
ORACLE_SID = [oracle] ? ORCLCDB
The Oracle base has been changed from /home/oracle to /opt/oracle

Danach kann man dann die Tools aufrufen:

[oracle@localhost ~]$ dbca

Oder man meldet sich mit dem sqlplus als sysdba an:

[oracle@localhost ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Oct 11 13:48:23 2019
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle.  All rights reserved.
Verbunden mit:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL>

listener.ora

Damit der Listener Verbindungen von den Remotes annimmt, muss in der listener.ora der localhost gegen den HOST-Namen ausgetauscht werden (s.a. tnsnames.ora):

$ORACLE_HOME/network/admin/listener.ora
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = dbhost)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )

Um den Listner (die ganze DB) neu zu starten zu können müssen erst alle noch offenen DB Verbindungen geschlossenen werden.

$ sudo -H systemctl restart oracledb_XX

tnsnames.ora

Siehe auch listener.ora. Muss i.d.R. auf den Clients gesetzt werden. Auf dem Oracle Server gibt es die auch, dort in der Umgebung die mit source oraenv angezogen wurde:

$ORACLE_HOME/network/admin/tnsnames.ora
ORCLCDB =
  (DESCRIPTION =
     (ADDRESS = (PROTOCOL = TCP)(HOST = dbhost)(PORT = 1521))
     (CONNECT_DATA =
       (SERVER = DEDICATED)
       (SERVICE_NAME = ORCLCDB)
     )
  )

LISTENER_ORCLCDB =
  (ADDRESS = (PROTOCOL = TCP)(HOST = dbhost)(PORT = 1521))