News
DBA-Tipp: New "Feature" in 12.1.0.2

Die Information ist ein schnelllebiges Gut. Jeden Tag werden wir mit hunderten Informationen zugemüllt. Deshalb sind wir bestrebt uns auf das Wesentliche zu konzentrieren und nur substantiell nachhaltige Informationen bereitzustellen.

Icon Unternehmen

Mit Veröffentlichung der Oracle Datenbank 12c wurde die neue Multitenant Architektur eingeführt, die zwischen Container Database (CDB) und Pluggable Database (PDB) unterscheidet.

Bei einem Neustart der CDB werden die zugehörigen PDBs nur in den Mountstatus versetzt. Für einen Zugriff auf diese PDBs ist es daher erforderlich, diese noch manuell zu öffnen.

[oracle@aspicon-12cR1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Mon Jan 26 10:27:16 2015

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 3321888768 bytes
Fixed Size                  2929840 bytes
Variable Size            1778387792 bytes
Database Buffers         1526726656 bytes
Redo Buffers               13844480 bytes
Database mounted.
Database opened.
SQL> select NAME,OPEN_MODE from V$PDBS;

NAME                           OPEN_MODE
------------------------------ ----------
PDB$SEED                       READ ONLY
VIRUS1                         MOUNTED
VIRUS                          MOUNTED

SQL>

Um dieses Verhalten zu umgehen, wurde das  Patch Set 12.1.0.2 um die Möglichkeit erweitert, den Status der jeweiligen PDB im Data Dictionary zu hinterlegen. Um den gewünschten Status zu speichern, muss die PDB entweder "read only" oder "read write" (default) geöffnet sein.

SQL> alter PLUGGABLE database virus1 open read only;

Pluggable database altered.

SQL> alter PLUGGABLE database virus open;

Pluggable database altered.

SQL> select NAME,OPEN_MODE from V$PDBS;

NAME                           OPEN_MODE
------------------------------ ----------
PDB$SEED                       READ ONLY
VIRUS1                         READ ONLY
VIRUS                          READ WRITE

SQL> alter PLUGGABLE database virus,virus1 save state;

Pluggable database altered.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>

Mit dem folgendem Statement wird der Status der Datenbank dbname gespeichert.
alter pluggable database dbname save state;

Nach einem Neustart der Containerdatenbank werden die PDBs entsprechend dem gespeicherten (oder nicht gespeicherten) Status gestartet.

SQL> startup
ORACLE instance started.

Total System Global Area 3321888768 bytes
Fixed Size                  2929840 bytes
Variable Size            1778387792 bytes
Database Buffers         1526726656 bytes
Redo Buffers               13844480 bytes
Database mounted.
Database opened.
SQL> select NAME,OPEN_MODE from V$PDBS;

NAME                           OPEN_MODE
------------------------------ ----------
PDB$SEED                       READ ONLY
VIRUS1                         READ ONLY
VIRUS                          READ WRITE

SQL>

Der gespeicherte Status bleibt solange erhalten, bis er geändert oder mit folgendem Statement entfernt wird: 
alter pluggable database dbname discard state;

SQL> alter PLUGGABLE database virus discard state;

Pluggable database altered.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
SQL> startup
ORACLE instance started.

Total System Global Area 3321888768 bytes
Fixed Size                  2929840 bytes
Variable Size            1778387792 bytes
Database Buffers         1526726656 bytes
Redo Buffers               13844480 bytes
Database mounted.
Database opened.
SQL>
SQL> select NAME,OPEN_MODE from V$PDBS;

NAME                           OPEN_MODE
------------------------------ ----------
PDB$SEED                       READ ONLY
VIRUS1                         READ ONLY
VIRUS                          MOUNTED

SQL>

Fazit: Über Sinn und Unsinn des standardmäßigen Startens der Datenbank in den Mountstatus läßt sich streiten. Die oben beschriebene neue Funktion bietet jedoch zumindest eine Hilfe, diesen Standard anzupassen.