Oracle Know-how

EPEL

Extra Packages for Enterprise Linux (EPEL) ist eine Special Interest Group von Fedora, die eine qualitativ hochwertige Reihe von zusätzlichen Paketen für Enterprise Linux verwaltet. EPEL eignet sich für alle RHEL Distributionen: Red Hat Enterprise Linux, CentOS und Scientific Linux(SL), Oracle Linux (OL).

EPEL-Pakete basieren in der Regel auf ihren Fedora-Pendants konfligieren aber nicht mit den Paketen in den Basis-Enterprise Linux-Distributionen (es werden auch keine ersetzt).:

sudo -H yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo -H yum update
$ sudo -H yum repolist

Geladene Plugins: langpacks, ulninfo
Repo-ID           Repo-Name:                                                      Status
epel/x86_64       Extra Packages for Enterprise Linux 7 - x86_64                  13.415
ol7_UEKR5/x86_64  Latest Unbreakable Enterprise Kernel Release 5 for Oracle Linux    169
ol7_latest/x86_64 Oracle Linux 7Server Latest (x86_64)                            15.441
repolist: 29.025

Schema anlegen (CREATE USER)

Bei einer CDB muss das Präfix c## im Namen des DB-Users (des Schemas) verwendet werden, bei einer PDB ist das nicht erforderlich. Die CDBs sind seit Oracle 12 in einer Standard Installation (CDB & PDB). Im folgenden Beispiel wird ein DB-Benutzer (ein Schema) mit dem Namen foo und mit Passwort bar eingerichtet (Anmeldung als sysdba).

CREATE USER c##foo IDENTIFIED BY bar
  DEFAULT TABLESPACE users
  TEMPORARY TABLESPACE temp
  QUOTA UNLIMITED ON users
  CONTAINER = ALL
  PROFILE default;

Gewähren von Rechten auf dem Schema c##foo.

GRANT CONNECT
  , CREATE TABLE, CREATE VIEW, CREATE SEQUENCE
  , CREATE SYNONYM, CREATE CLUSTER, CREATE DATABASE LINK
  , ALTER SESSION, CREATE TRIGGER, CREATE PROCEDURE
    TO c##foo;

Anlegen eines Schemas in einer PDB:

ALTER SESSION SET container=ORCLPDB;

CREATE USER foo IDENTIFIED BY bar
  DEFAULT TABLESPACE users
  TEMPORARY TABLESPACE temp
  QUOTA UNLIMITED ON users
  PROFILE default;

GRANT CONNECT
  , CREATE TABLE, CREATE VIEW, CREATE SEQUENCE
  , CREATE SYNONYM, CREATE CLUSTER, CREATE DATABASE LINK
  , ALTER SESSION, CREATE TRIGGER, CREATE PROCEDURE
  TO foo;

GRANT read, write
     ON DIRECTORY oracle_impexp
     TO foo;

Schema löschen

DROP USER c##foo CASCADE;

Löschen eines Schemas in einer PDB:

ALTER SESSION SET container=ORCLPDB;
DROP USER foo CASCADE;

Aus welcher Oracle Version wurde der DUMP erzeugt?

$ strings my_dump_file.dmp | head -n 5
"SYS"."SYS_EXPORT_SCHEMA_01"
IBMPC/WIN_NT64-9.1.0
...
AL32UTF8
11.02.00.00.00

Welches Schema ist im DUMP?

Es gibt keine direkte Lösung, aber der sysdba kann sich das Schema im DUMP mit der Option SHOW in eine SQL Datei ausgeben lassen:

impdp \"/ as sysdba\" \
 directory = DATA_PUMP_DIR \
 dumpfile  = my_dump_file.dmp \
 sqlfile   = my_dump_file.sql

Im DATA_PUMP_DIR liegt dann die my_dump_file.sql in der man die CREATE USER Anweisungen findet:

$ grep '^\s*CREATE USER' /opt/oracle/admin/ORCLCDB/dpdump/my_dump_file.sql
CREATE USER "TEST_USER" IDENTIFIED BY VALUES ...

Statistiken und Optimierung

Die Optimizer-Statistiken sind eine Sammlung von Daten, die weitere Details bzw. Informationen über die Datenbank und die Objekte der Datenbank beschreiben. Damit der Cost-Based-Optimizer (CBO) den effizientesten Ausführungsplan von einer SQL-Abfrage berechnen und auswählen kann, müssen Informationen über die Tabelle und Indizes, die in der SQL-Abfrage beteiligt sind, vorhanden sein. Der Rule-Based-Optimizer (RBO) verwendet dagegen keine Statistiken. [ref]

Die Neuberechnung der Statistiken kann U.A. Abhilfe bei Performanceproblemen bieten. Für das gesamte Benutzerschema kann sie wie folgt in sqlplus über eine Prozedur (GATHER_SCHEMA_STATS) angestoßen werden:

exec DBMS_STATS.GATHER_SCHEMA_STATS(
   ownname => NULL
   , no_invalidate => FALSE
   );