Oracle 12c Multi-Tenant Fragen

Die Einführung von Oracle 12c Multitenant führt zu einem Umdenken gegenüber traditionellen Oracle Datenbanken. Ich habe hier die wichtigsten Punkte bei denen Fragen aufkommen können einmal herausgearbeitet.

Q. Was sind die wichtigsten Änderungen in der Architektur für 12c?

Ab 12c wird die Instanz für mehrere Datenbanken freigegeben.

Diese unabhängigen Datenbanken sind in sich geschlossen und können von einer Datenbank an eine andere Datenbank gesteckt werden. Dies ist eine sehr nützliche Methode, bei der die Datenbankkonsolidierung erfolgt.

Kurz gesagt, ein einzelner SGA- und background-Prozess wird für mehrere Datenbanken freigegeben, die Datenbanken können spontan erstellt und gelöscht oder angefügt und von einem Server an einen anderen Server abgelöst werden.

Q. Was ist eine steckbare(pluggable) Datenbank (PDB) in der Multitenant Architektur?

Pluggable Databases (PDBs) sind neu in Oracle Database 12c Release 1 (12.1). Sie können viele steckbare Datenbanken in einer einzelnen Oracle-Datenbank haben. Steckbare Datenbanken sind immer Teil einer Containerdatenbank (Container Database, CDB), aber eine PDB sieht aus wie eine normale eigenständige Datenbank für die Outside-Welt.

Q. Benötigt In-Memory separate Lizenzkosten?

Ja, In-Memory erfordert separate Lizenzkosten.

Q. Warum sollte ich die Option Multitenant verwenden?

Sie sollten die folgenden Datenbankkonsolidierungsziele in Betracht ziehen, um Folgendes zu erreichen:

  • Reduzierung der Totalen Betriebskosten
  • Verwaltungskosten
  • Betriebskosten
  • Rechenzentrumskosten
  • Lagerkosten
  • Eventualkosten
  • Verbesserung der Funktionalitäten
  • Ressourcennutzung
  • Verwaltbarkeit
  • Integration
  • Service-Management
  • Es muss keine Anwendung geändert werden
  • Darf der Leistung nicht schaden
  • Ressourcenmanagement und Isolierung zwischen Anwendungen
  • Patchen und Upgrade von Oracle Database

Q. Was sind die gängigen Konzepte der mehrinstanzenfähigen Datenbank?

Die mehrinstanzenfähige Datenbank besteht aus:

  1. CDB ist eine Containerdatenbank, die sich ähnlich wie eine eigenständige Datenbank verhält. Genannt wird Sie CDB$ROOT
  2. PDB$SEED ist eine Vorlagendatenbank zum Erstellen einer Datenbank innerhalb der CDB-Datenbanken
  3. PDB<n> sind Einzel- oder Anwendungsdatenbanken
  4. Das Data Dictionary zwischen diesen Datenbanken wird über interne Links, die als Objektverknüpfung und Datenverknüpfung bezeichnet werden, freigegeben.
  5. Die Benutzer zwischen CDB und PDB sind unterschiedlich, es gibt häufige Benutzer (beginnt mit C-Code) und lokale Benutzer
  6. Wenn das CDB gestartet wird, befindet sich die PDB im Mount-Zustand, Sie müssen sie ausschließlich öffnen.

Q. Wird CDB die Zukunft sein?

Ja, Oracle hat die eigenständige Datenbankentwicklung bereits abgeschrieben. Für eigenständige Datenbanken werden in Zukunft keine weiteren Verbesserungen mehr veröffentlicht.

Q. Wie viele PDBs können Sie erstellen?

12cR1 –> 252 PDBs
12cR2 –> 4096 PDBs
19C -> 3 ohne eine weitere Multitenant Lizenz zu erwerben.
19C -> 252 mit Multitenant EE Lizenz
19C -> 4096 mit Multitenant EE-ES Lizenz

Q. Können mehrere CDBs auf demselben Server ausgeführt werden?

Ja!

Q. Können mehrere CDBs in der gleichen ORACLE_HOME Installation laufen?

Ja, Sie können den DBCA aufrufen und neue CDBs im demselben Oracle_Home erstellen.

Q. Was sind die Methoden zum Erstellen von Multitenant-Datenbanken?

  • DBCA-Methode
  • DBCA Silent-Methode
  • Manuelle Methode mit CREATE DATABASE-Anweisung

Q. Was ist der Grenzwert für Containerdatenbanken (CDBs) auf einem Server?

Keine Begrenzung. Es muss lediglich der Server für größere Migrationsprojekte vorher gut kalkuliert und gesized werden.

Q. Woher weiß ich, ob meine Datenbank Multitenant ist oder nicht?

Sie können die folgende Abfrage verwenden, um eine CDB-Datenbank zu identifizieren:

SELECT NAME, OPEN_MODE, CDB VON V$DATABASE;

SHOW CON_ID;

SHOW CON_NAME;

SHOW PDBS;

Q. Wie unterscheidet man Sie in CDB oder PDB?

Sobald Sie sich eingeloggt haben, können Sie die show con_name überprüfen oder con_id zeigt Ihnen, in welcher DB Sie sich befinden.

Q. Wie können Sie eine PDB erstellen?

  • Kopieren aus PDB$SEED
  • Kopieren aus einer anderen PDB
  • Kopieren von einer Remote-PDB
  • Konvertieren einer Nicht-CDB in PDB
  • Unplug und Plug einer PDB

Q. Kann ich eine PDB auf Release 1 und eine zweite PDB bei Release 2 haben?

Nein, eine Instanz, eine Version für alle PDBs.

Q. Welche Steckbaren Datenbanken haben wir in dieser Containerdatenbank ?

Sie können dies überprüfen, indem Sie v$containers abfragen:

SET line 999;
SELECT * FROM v$containers;

SELECT NAME, OPEN_MODE FROM V$CONTAINERS;

ODER

SHOW pdbs;

Q. Wie wechseln Sie von einem Container zum anderen Container in SQL*PLUS?

ALTER SESSION SET CONTAINER=pdb1;

Wie verhält es sich mit den Datafiles SYSTEM, SYSAUX, UNDO, redo etc. Werden Sie neu erstellt wenn man eine pdb erzeugt?

  1. Datendateien sind für jede Datenbank für cdb und jede pdb individuell
  2. Undo-Dateien und Redo Dateien sind für alle Container gültig.
  3. Ab 12cR2 können wir für jede PDB einen lokalen UNDO Tablespace erstellen
  4. Temp Tablespaces können in jeder Datenbank erstellt oder für alle Datenbanken gemeinsam genutzt werden.
  5. SGA wird für alle Datenbanken freigegeben
  6. Hintergrundprozesse werden in allen Datenbanken gemeinsam genutzt, es wird kein zusätzlicher Hintergrundprozess definiert

Q. Ist das alert log für alle pdbs in einem CDB gleich oder unterscheiden sie sich?

Ja, eine CDB, ein alert Log Protokoll

Q. Wie kann ich eine Verbindung mit einer PDB direkt über SQL* PLUS herstellen?

Sie können die Oracle easy connect-Methode verwenden, um eine PDB direkt zu verbinden.

CONNECT
Benutzername/password@host[:port][/service_name][:server][/instance_name]

Oder

sqlplus Benutzer/password@/localhost/pdb2

Q. Wie kann ich zur Hauptcontainerdatenbank wechseln?

ALTER SESSION SET CONTAINER = CDB-ROOT;

Q. Wie Sie sagten, gibt es, wenn SGA und Hintergrundprozess gemeinsam genutzt werden, Auswirkungen auf die Leistung?

Idealerweise wird diese Architektur für Datenbankkonsolidierungsprojekte verwendet, in denen kleine Datenbanken in einem einzelnen Datenbankhost gemeinsam genutzt werden und nicht hochkritische Anwendungen ausgeführt werden. Dies nutzt der Senkung der Lizenzkosten und auch die Ressourcennutzung effektiv.

Q. Wie starte ich eine Pluggable-Datenbank?

Aus dem CDB-ROOT-Container:

ALTER PLUGGABLE DATABASE PDB1 OPEN;

Q. Wie wäre es bei der Erstellung eines Benutzers?

Normalerweise verwenden Sie create user username identified by password. Dies funktioniert jedoch nicht mehr.

  1. Wenn Sie einen gemeinsamen User über alle Datenbanken erstellen wollen, müssen Sie C## als Prefix verwenden.
  2. Create user c##DBA_SDOHN identified by password. Wird den User in allen Datenbanken erstellen.
  3. Create user c##DBA_SDOHN identified by password container=current; wird den User nur im aktuell benutzten Container erstellen.
  4. Create user DBA_SDOHN identified by password container=all; wird nicht funktionieren, da der Username nicht das c## Prefix beinhaltet.

    Q. Wie wäre es mit AWR-Daten, ist es in allen Datenbanken oder individuell in der Datenbank üblich?

Aus diesem Grund haben Sie für jede Datenbank einen eigenen Sysaux-Tablespace. Immer wenn die AWR-Statistiken erfasst werden, werden die Statistiken in die jeweiligen Datenbanken übertragen, nicht in den üblichen Sysaux. Da Sie auf diese Weise eine eigenständige Datenbank haben können, gehen die Statistiken nicht verloren, wenn Sie diese Datenbank an eine andere Instanz anschließen..

Q. Welche Parameter können auf PDB-Ebene geändert werden?

select NAME, ISPDB_MODIFIABLE from V$PARAMETER;

Q. Was ist der Unterschied zwischen Container ID Zero und One?

CON_ID "0" bedeutet, dass sich die Daten nicht auf einen bestimmten Container beziehen, sondern auf das CDB als Ganzes. Beispielsweise bezieht sich eine Zeile, die von fetching von V$DATABASE zurückgegeben wird, auf das CDB und nicht auf einen bestimmten Container, sodass CON_ID auf "0" gesetzt ist. Ein CONTAINER_DATA Objekt kann möglicherweise Daten zurückgeben, die sich auf verschiedene Container beziehen (einschließlich des Roots, der CON_ID==1) sowie an das CDB als Ganzes hat, und CON_ID in der Zeile für das CDB werden auf 0 gesetzt.

In der folgenden Tabelle werden verschiedene Werte CON_ID Spalte in Container Data Objects beschrieben.

0 = Die Daten beziehen sich auf das gesamte CDB

1 = Die Daten beziehen sich auf die Wurzel

2 = Die Daten beziehen sich auf den Seed

3 – 254 = Die Daten beziehen sich auf eine PDB, jede PDB hat ihre eigene Container-ID.

Q. Gibt es Hintergrundprozesse ex, PMON, SMON usw. im Zusammenhang mit PDBs?

Nein. Es gibt einen Satz von Hintergrundprozessen, die vom Root und allen PDBs gemeinsam genutzt werden.

Q. Sind für jede PDB separate Control Dateien erforderlich?

Nein. Es gibt ein einzelnes Redo Log und eine einzelne Control Datei für die gesamte CDB.

Q. Kann ich die SGA-Nutzung auf PDB-Basis überwachen?

SQL> alter session set container=CDB$ROOT;

SQL> select POOL, NAME, BYTES from V$SGASTAT where CON_ID = '&con_id';

SQL> select CON_ID, POOL, sum(bytes) from v$sgastat group by CON_ID, POOL order by CON_ID, POOL;

Q. Benötige ich separate SYSTEM- und SYSAUX-Tablespaces für jeden meiner PDB?

Es gibt einen separaten SYSTEM- und SYSAUX-Tablespace für die Root und für jede weitere PDB.

Q. Wo werden Benutzerdaten in CDB gespeichert?

In einer CDB befinden sich die meisten Benutzerdaten in den PDBs. Der Root enthält keine Benutzerdaten oder minimale Benutzerdaten.

Q. Wie kann ich eine Pluggable Datenbank erstellen?

sql> create pluggable database DBA_SDOHN admin user sys identified by sys-pwd;

Q. Wie kann man einen PDB unwiderruflich zerstören?

sql> drop pluggable database DBA_SDOHN including datafiles;

Dieser Beitrag wurde unter ORACLE veröffentlicht. Setze ein Lesezeichen auf den Permalink.