dok:ora19oln7

Oracle 19c Server auf Oracle Linux 7

Oracle Linux (OL, früher bekannt als Oracle Enterprise Linux) ist eine Linux-Distribution, die von Oracle gepackt und frei vertrieben wird. Es wurde aus dem RHEL-Quellcode (Red Hat Enterprise Linux) kompiliert und ersetzt das Red Hat-Branding durch das von Oracle. Benutzer können Oracle Linux kostenlos über den E-Delivery-Service von Oracle (Oracle Software Delivery Cloud) oder von verschiedenen Mirror-Sites herunterladen und kostenlos bereitstellen und verteilen.

Oracle Database 19c ist die langfristige Support-Version der Oracle Database 12c- und 18c-Produktfamilie und bietet Kunden Premier- und Extended Support bis März 2023 bzw. März 2026. In diesem Tutorial wird die Enterprise Edition installiert, aber auch die Standard Edition funktioniert.

In diesem Tutorial werden Linux und Oracle in einer virtuellen Maschine unter Proxmox installiert. Andere Virtualisierungslösungen wie VMware oder VirtualBox gehen natürlich genauso gut.

Linux ISO herunterladen

Nehmen sie die neuste Version von Oracle Linux 7. Zum Zeitpunkt da diese Anleitung entstand war das 7.7, wenn eine neuere Ausgabe der 7er Version vorhanden ist können sie ruhig jene nehmen.

Oracle Linux 8 sollten sie jedoch nicht nehmen, derzeit ist die Datenbank 19c jedenfalls noch nicht dafür freigegeben und die Installaton scheitert.

Holen sie Oracle Linux von https://edelivery.oracle.com:

  • Melden sie sich mit ihrem Oracle Konto an (ggf. kostenlose Registrierung möglich)
  • Suchen sie nach „Oracle Linux“
  • Fügen sie „DLP: Oracle Linux 7.7.0.0.0 (Oracle Linux)“ zum Warenkorb hinzu
  • Wählen sie beim Checkout „x86 64 bit“ als Plattform
  • Akzeptieren sie die Lizenzvereinbarung
  • Laden sie „VV983339-01.iso Oracle Linux Release 7 Update 7 for x86 (64 bit), 4.4 GB“ herunter

Beispielvorschlag für eine brauchbare Entwicklungsdatenbank:

  • Installations-Disk Image Datei (iso): V1004253-01.iso
  • Name der virtuellen Maschine: ora19
  • Maximale Festplattengrösse: 100 GB
  • Virtuelle Festplatte als eine einzige Datei speichern
  • Arbeitsspeicher: 3 GB
  • Prozessoren: 2
  • Netzwerk-Adapter: Bridged

Für eine Produktionsdatenbank sollten sie je nach Anzahl Benutzern natürlich mehr Arbeitsspeicher und Prozessoren vorsehen.

Zeige alle Installationsschritte

An diesem Punkt des grafischen Setups halten wir inne. Vor der Fortsetzung muss das Paket „Oracle 19c preinstall“ installiert werden welches benötigte Komponenten hinzufügt und den Benutzer „oracle“ anlegt den wir im GUI verwenden wollen.

Öffnen sie mit PuTTY eine SSH Terminalverbindung zu „vmora19“ und melden sie sich als root mit dem oben festgelegten Passwort an.

Software aktualisieren:

# yum -y update

„Oracle 19c preinstall“ installieren:

# yum install -y oracle-database-preinstall-19c

Definieren eines Passworts für Benutzer „oracle“ damit wir uns anmelden können:

# passwd oracle

Neustart:

# reboot

Verzeichnis ~/.ssh und Schlüssel generieren:

# ssh-keygen -t rsa -b 4096
    <enter>
    <enter>
    <enter>

Persönlichen Schlüssel in PuTTYgen laden, und den Public Key ins die Zwischenablage kopieren:


Public Key des persönlichen Schlüssels zu authorized_keys hinzufügen:

# nano ~/.ssh/authorized_keys
<paste>

Passwortanmeldung für SSH Verbindungen ausschalten:

# nano /etc/ssh/sshd_config
...
PasswordAuthentication no
...

SSH neu starten:

# service sshd restart

Aktuelles PuTTY Terminal zur Sicherheit noch offen lassen.

In PuTTY eine Session für root erzeugen und testen:

  • Session
    • Host Name: ora19
    • Port: 22 / SSH
  • Connection
    • Data
      • Auto-login username: root
    • SSH
      • Auth
        • Private key file: (Speicherort meiner ppk Datei)
  • Session
    • Saved sessions: ora19 - root
    • Save

Testen ob das Autologin funktioniert:


Logo erzeugen bei http://www.network-science.de/ascii/

  • Text: vmora19
  • Font: slant
  • Reflection: no
  • Adjustment: center
  • Stretch: no
  • Width: 80
  • do it!

Logo in Zwischenablage kopieren und in motd einfügen

# nano /etc/motd
<paste>
# wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# rpm -ivh epel-release-latest-7.noarch.rpm
# yum -y install rlwrap
# nano /etc/selinux/config
SELINUX=permissive
# setenforce permissive
# systemctl stop firewalld
# systemctl disable firewalld
# mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1
# mkdir -p /u02/oradata
# mkdir -p /u02/orafra
# chown -R oracle:oinstall /u01 /u02
# chmod -R 775 /u01 /u02

Analog wie bei root:

# su oracle
$ ssh-keygen -t rsa -b 4096
    <enter>
    <enter>
    <enter>
$ nano ~/.ssh/authorized_keys
<paste des eigenen Public Key>

PuTTY Session anlegen

  • Session „vmora19 - root“ laden
  • Auto-login username ändern auf: oracle
  • Session speichern als „vmora19 - oracle“

Testen ob es funktioniert:


$ exit
# reboot

Download von https://www.oracle.com/database/technologies/oracle19c-linux-downloads.html

  • Auswählen: LINUX.X64_193000_db_home.zip
  • Lizenzvereinbarung akzeptieren
  • Auf „Download“ klicken
  • Mit eigenem Oracle Konto anmelden (ggf. kostenlose Registrierung möglich)
  • Datei auf eigenem Arbeitsplatz-PC abspeichern

Filezilla verwenden um sich als oracle per SFTP/SSH zu verbinden, dann LINUX.X64_193000_db_home.zip hochladen nach /home/oracle

Skripte erzeugen

$ mkdir ~/scripts
$ nano ~/scripts/setEnv.sh
~/scripts/setEnv.sh
# Oracle Settings
export TMP=/tmp
export TMPDIR=$TMP
 
export ORACLE_HOSTNAME=ora19
export ORACLE_UNQNAME=cdb1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1
export ORA_INVENTORY=/u01/app/oraInventory
export ORACLE_SID=cdb1
export PDB_NAME=pdb1
export DATA_DIR=/u02/oradata
 
export PATH=/usr/sbin:/usr/local/bin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
 
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
$ nano ~/scripts/start_all.sh
~/scripts/start_all.sh
#!/bin/bash
. /home/oracle/scripts/setEnv.sh
 
export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES
 
dbstart $ORACLE_HOME
$ nano ~/scripts/stop_all.sh
~/scripts/stop_all.sh
#!/bin/bash
. /home/oracle/scripts/setEnv.sh
 
export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES
 
dbshut $ORACLE_HOME

Skripte ausführbar machen:

$ chmod u+x ~/scripts/*.sh

An Datei .bash_profile anhängen:

$ nano ~/.bash_profile
~/.bash_profile
. /home/oracle/scripts/setEnv.sh
alias sqlplus="rlwrap sqlplus"

Abmelden, und erneut als oracle anmelden, dann:

$ cd $ORACLE_HOME
$ unzip -oq ~/LINUX.X64_193000_db_home.zip

Im GUI als oracle anmelden und ein Terminal-Fenster öffnen.

Ins ORACLE_HOME Verzeichnis wechseln und das Installationsprogramm starten:

$ cd $ORACLE_HOME
$ ./runInstaller

Setzen sie zunächst nur die Software auf, die Datenbank wird später mit dem DBCA erstellt.

Zeige alle Schritte

Im GUI als oracle anmelden und ein Terminalfenster öffnen.

Den Listener aufstarten und DCBA ausführen:

$ lsnrctl start
$ dbca

Zeige alle Schritte

Server neu starten

Als root

Datei /etc/oratab bearbeiten und das restart Flag auf 'Y' setzen damit die cdb1 beim DB Start ebenfalls automatisch startet:

# nano /etc/oratab
...
cdb1:/u01/app/oracle/product/19.3.0/dbhome_1:Y
...

Als oracle

Den Listener und die DB aufstarten:

$ lsnrctl start
 ~/scripts/start_all.sh

Oracle Managed Files (OMF) aktivieren einstellen dass die PDB ebenfalls startet wenn die Instanz gestartet wird.

$ sqlplus / as sysdba
--
alter system set db_create_file_dest='/u02/oradata';
alter pluggable database pdb1 open;
alter pluggable database pdb1 save state;

Folgendes ist als root auszuführen:

Datei /etc/init.d/dbora erzeugen:

# nano /etc/init.d/dbora
/etc/init.d/dbora
#!/bin/sh
# chkconfig: 345 99 10
# description: Oracle auto start-stop script.
#
# Set ORA_OWNER to the user id of the owner of the 
# Oracle database software.
 
ORA_OWNER=oracle
 
case "$1" in
    'start')
        # Start the Oracle databases:
        # The following command assumes that the oracle login 
        # will not prompt the user for any values
        # Remove "&" if you don't want startup as a background process.
        su $ORA_OWNER -c "/home/oracle/scripts/start_all.sh >> /home/oracle/scripts/startup_shutdown.log 2>&1" &
 
        touch /var/lock/subsys/dbora
        ;;
    'stop')
        # Stop the Oracle databases:
        # The following command assumes that the oracle login 
        # will not prompt the user for any values
        su $ORA_OWNER -c "/home/oracle/scripts/stop_all.sh >> /home/oracle/scripts/startup_shutdown.log 2>&1"
        rm -f /var/lock/subsys/dbora
        ;;
esac

Die Skript-Berechtigungen auf 750 einstellen

# chmod 750 /etc/init.d/dbora

Den „dbora“ Dienst mit passenden Runlevels assiziieren und auf Auto-start einstellen

# chkconfig --add dbora

Sie können die Datenbank als root mit dem Dienst starten und herunterfahren, was genau das ist das beim Neustart des Systems geschieht:

# service dbora stop
# service dbora start

Diesen Teil bezeichne ich als optional, da der Web-basierte Enterprise Manager Express von Oracle 19c nur noch ein müder Abklatsch der früheren Enterprise Manager ist (deshalb nennen sie ihn wohl auch „Express“). Er taugt nur noch dazu denStatus der DB grob zu beobachten, alle echten Management-Funktionen fehlen jedoch völlig. Der Nutzen ist deshalb äusserst fraglich.

Als oracle:

$ sqlplus / as sysdba
--
exec dbms_xdb_config.sethttpsport(5500);

Test im Browser

Sie denken vielleicht, dass es eine gute Idee ist, die Tablespaces unter den Verzeichnissen /u01 oder /u02 zu speichern, auch weil die Oracle-Dokumente über „optimale flexible Architektur“ dies zu suggerieren scheinen. Wenn Sie diese Anleitung befolgt haben, wird jedoch beim Überprüfen der verfügbaren Festplattengröße ein Problem angezeigt:

$ df -h

Filesystem                   Size  Used Avail Use% Mounted on
devtmpfs                     1.8G     0  1.8G   0% /dev
tmpfs                        1.8G  960M  879M  53% /dev/shm
tmpfs                        1.8G  9.5M  1.8G   1% /run
tmpfs                        1.8G     0  1.8G   0% /sys/fs/cgroup
/dev/mapper/ol_vmora19-root   50G   28G   23G  55% /
/dev/sda1                   1014M  331M  684M  33% /boot
/dev/mapper/ol_vmora19-home  445G   36G  409G   9% /home
tmpfs                        368M     0  368M   0% /run/user/54321
tmpfs                        368M   12K  368M   1% /run/user/42

Wie Sie sehen können, befinden sich /u01 und /u02 unter /dev/mapper/ol_vmora19-root, was 50 GB gross ist. Der grösste Teil des Laufwerks ist jedoch unter /home verfügbar, nämlich 445 GB. Deshalb platziere ich meine Anwendungs-Tablespaces jeweils unter /home/oracle:

$ mkdir /home/oracle/pdb1
$ chmod 750 /home/oracle/pdb1
$ sqlplus / as sysdba

Tablespaces kreieren und auflisten:

SQL> ALTER SESSION SET CONTAINER = pdb1;
SQL> CREATE TABLESPACE lu_agrar_dat  DATAFILE '/home/oracle/pdb1/lu_agrar_dat.dbf' SIZE 100M  AUTOEXTEND ON NEXT 100M;
SQL> CREATE TABLESPACE lu_agrar_inx  DATAFILE '/home/oracle/pdb1/lu_agrar_inx.dbf' SIZE 100M  AUTOEXTEND ON NEXT 100M;
SQL> SELECT TABLESPACE_NAME, STATUS, CONTENTS FROM DBA_TABLESPACES;

TABLESPACE_NAME                STATUS    CONTENTS
------------------------------ --------- ---------------------
SYSTEM                         ONLINE    PERMANENT
SYSAUX                         ONLINE    PERMANENT
UNDOTBS1                       ONLINE    UNDO
TEMP                           ONLINE    TEMPORARY
USERS                          ONLINE    PERMANENT
LU_AGRAR_DAT                   ONLINE    PERMANENT
LU_AGRAR_INX                   ONLINE    PERMANENT
7 rows selected.

Überprüfen dass die neuen Tablespaces tatsächlich nur in pdb1 verfügbar sind:

SQL> ALTER SESSION SET CONTAINER = CDB$ROOT;
SQL> SELECT TABLESPACE_NAME, STATUS, CONTENTS FROM DBA_TABLESPACES;

TABLESPACE_NAME                STATUS    CONTENTS
------------------------------ --------- ---------------------
SYSTEM                         ONLINE    PERMANENT
SYSAUX                         ONLINE    PERMANENT
UNDOTBS1                       ONLINE    UNDO
TEMP                           ONLINE    TEMPORARY
USERS                          ONLINE    PERMANENT
$ sqlplus / as sysdba

Tablespaces anzeigen und löschen:

SQL> ALTER SESSION SET CONTAINER = pdb1;
SQL> SELECT TABLESPACE_NAME, STATUS, CONTENTS FROM DBA_TABLESPACES;
SQL> DROP TABLESPACE lu_agrar INCLUDING CONTENTS AND DATAFILES;
$ sqlplus / as sysdba

Speicherverbrauch pro Tablespace überwachen:

SQL> select tablespace_name, round(bytes/1024/1024) MB, round(bytes/1024/1024/1024,3) GB from cdb_data_files;

Beispielausgabe:

TABLESPACE_NAME                        MB         GB
------------------------------ ---------- ----------
USERS                                   5       .005
UNDOTBS1                               65       .063
SYSTEM                                840        .82
SYSAUX                                580       .566
SYSTEM                                290       .283
SYSAUX                                430        .42
UNDOTBS1                              220       .215
USERS                                   5       .005
LU_AGRAR_DAT                           50       .049
LU_AGRAR_INX                           50       .049

Wenn sie nur die Summe aller Benutzer-Daten wollen:

SQL> select round(sum(bytes)/1024/1024) MB, round(sum(bytes)/1024/1024/1024,3) GB from cdb_data_files -
   > where tablespace_name not like 'SYS%' and tablespace_name not like 'UNDO%';

Beispielausgabe:

        MB         GB
---------- ----------
      2535      2.476
VMORA19 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = vmora19)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pdb1)
    )
  )
  

Möglicherweise möchten Sie das Ablaufen des Kennworts zumindest für SYSTEM und die BPS-Superuser deaktivieren.

$ sqlplus / as sysdba

Die Profile kontrollieren:

SQL> alter session set container = pdb1;
SQL> select profile from DBA_USERS where username = 'SYSTEM';
SQL> select profile from DBA_USERS where username = 'LU_AGRAR';

Einstellungen in den Profilen kontrollieren, z.B. im DEFAULT Profil:

SQL> select resource_name, limit from dba_profiles where profile='DEFAULT';

Auf unlimitiert ändern:

SQL> alter profile DEFAULT limit password_life_time UNLIMITED;

Einen Benutzer wieder entsperren:

SQL> alter user LU_AGRAR identified by lu_a****** account unlock;
  • dok/ora19oln7.txt
  • Zuletzt geändert: 05.01.2022 15:30
  • von ibk