Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Grundlegende Verwaltung von Oracle 12c Multitenant

Überprüfen Sie, ob die Datenbank CDB oder Nicht-CDB ist

SQL> cdb aus v$database auswählen;CDB---YES

Verbinden mit Container

$ export ORACLE_SID=pcdb01$ sqlplus / as sysdbaSQL> show con_nameCON_NAME------------------------------CDB$ROOTSQL> show con_idCON_ID------------------------------1SQL> show pdbs;CON_ID CON_NAME OFFENER MODUS EINGESCHRÄNKT-------- -- ------------------------------ ---------- -------- --2 PDB$SEED NUR LESEN NEIN3 PRD_PDB_CON LESEN SCHREIBEN NEIN4 PRD_PDB_TEN LESEN SCHREIBEN NEIN

Durch PDBs navigieren

SQL> Sitzungssatz ändern container=PDB$SEED;Sitzung geändert.SQL> Sitzungssatz ändern container=PRD_PDB_CON;Sitzung geändert.SQL>

Informationen zu PDBs

SQL> SPALTE PDB_NAME FORMAT A15SQL> SPALTE PDB_NAME FORMAT A15SQL> SELECT PDB_ID, PDB_NAME, STATUS FROM DBA_PDBS ORDER BY PDB_ID;PDB_ID PDB_NAME STATUS---------- ---------- ----- ---------2 PDB$SEED NORMAL3 PRD_PDB_CON NORMAL4 PRD_PDB_TEN NORMAL

Parameter prüfen/ändern

SQL> select * from v$system_parameter;SQL> select * from PDB_SPFILE$;SQL> alter system set parameter_name=value;SQL> alter system set parameter_name=value CONTAINER=CURRENT;

Starten und Herunterfahren von PDB

Einige typische Werte:

START [NOMOUNT | MONTAGE | EINSCHRÄNKEN | AKTUALISIEREN | KRAFT | SCHREIBGESCHÜTZT]

HERUNTERFAHREN [SOFORT | ABORT]

$ export ORACLE_SID=pcdb01$ sqlplus / as sysdbaSQL> sofort herunterfahren;

Plug-in-Datenbank stoppen

SQL> alter Pluggable Database PRD_PDB_CON close [sofort];SQL> alter Pluggable Database ALL EXCEPT PRD_PDB_CON close [sofort];SQL> alter Pluggable Database ALL close;SQL> alter Pluggable Database PRD_PDB_CON close [sofort] [Instanzen=alle];

Oder:

SQL> alter SESSION SET CONTAINER =PRD_PDB_CON;SQL> sofort herunterfahren;

Plugin-Datenbank starten

STARTKRAFT

STARTEN ÖFFNEN LESEN SCHREIBEN [EINSCHRÄNKT]

START ÖFFNEN NUR LESEN [EINSCHRÄNKT]

STARTUP-UPGRADE

SHUTDOWN [SOFORT]

SQL> alter Pluggable Database PDB01 open;SQL> alter Pluggable Database ALL EXCEPT PRD_PDB_CON open;SQL> alter Pluggable Database ALL open;SQL> alter Pluggable Database PDB01 open [instances=all];

Oder:

SQL> alter SESSION SET CONTAINER =PRD_PDB_CON;SQL> startup;SQL> alter PLUGGABLE DATABASE  OPEN READ WRITE [RESTRICTED] [FORCE];SQL> alter PLUGGABLE DATABASE  OPEN READ ONLY [RESTRICTED][FORCE];SQL> alter PLUGGABLE DATABASE  OPEN UPGRADE [RESTRICTED];SQL> alter PLUGGABLE DATABASE  CLOSE [SOFORT];

Startzustand der PDB beibehalten (ab 12.1.0.2)

SQL> alter PLUGGABLE DATABASE pdb2 OPEN;SQL> alter PLUGGABLE DATABASE pdb2 SAVE STATE;

Die Ansicht DBA_PDB_SAVED_STATES zeigt Informationen über den gespeicherten Status von Containern an.

SQL> COLUMN con_name FORMAT A20SQL> COLUMN instance_name FORMAT A20SQL> SELECT con_name, instance_name, state FROM dba_pdb_saved_states;CON_NAME INSTANCE_NAME STATE-------------------- --- ------------ --------------PRD_PDB_CON pcdb01 ÖFFNEN

Größe der austauschbaren Datenbank

SQL> COLUMN NAME FORMAT A20SQL> SELECT DBID, NAME, CON_ID, CON_UID, TOTAL_SIZE FROM V$CONTAINERS ORDER BY CON_ID;DBID NAME CON_IDCON_UID TOTAL_SIZE---------- -------- ----------------------- ---------- ---------- -------- --2732069181 CDB$ROOT 1 1 03552543733 PDB$SEED 2 3552543733 7759462404008367944 PRD_PDB_CON 3 4008367944 12037652482667104724 PRD_PDB_TEN 4 28271.371 

Startzeit der Plug-in-Datenbank

SQL> set linesize 180SQL> col name for a30SQL> col open_time for a33SQL> select con_id,name,dbid,open_mode,open_time from v$containers;CON_ID NAME DBID OPEN_MODE OPEN_TIME---------- - ---------- -------------- ---------- ---------- - --------------------------------1 CDB$ROOT 456650806 LESEN SCHREIBEN 17-MAR-18 11.59.36.176 PM -03 :002 PDB $ Seed 2688102972 Lesen Sie nur 17-mar-18 11.59.36.182 -03:003 PDB_PN1O0101 1079206163 Read Read Write 18-mar-18 12.00,589 AM -03:004 PDB_BATCHWIEB 2340495643 Read SPRECHT 18-MARR. AM -03:004 Zeilen ausgewählt.

Verfügbarkeit der austauschbaren Datenbank

SQL> set linesize 180SQL> col name for a30SQL> col open_time for a28SQL> select name,floor(sysdate-cast(open_time as date))||'Days '||floor(((sysdate-cast(open_time as date))-floor(sysdate-cast(open_time as date)))*24)||'hours '||round(((sysdate-cast(open_time as date)-floor(sysdate-cast(open_time as date) ) *24)-floor((sysdate-cast(open_time as date)-floor(sysdate-cast(open_time as date))*24)))*60)||'minutes' "Database Uptime"from v$containers;NAME Datenbankbetriebszeit------------------------------------CDB$ROOT 1331Tage 11 Stunden 28 MinutenPDB $SEED 1331Tage 11Stunden 28MinutenPDB_PN1O0101 1331Tage 11Stunden 28MinutenPDB_BATCHWEB 1331Tage 11Stunden 28Minuten4 Zeilen ausgewählt.

Name der Dienste

SQL> SPALTENNAMEN FORMAT A30SQL> SELECT NAME,CON_ID,PDB FROM V$SERVICES ORDER BY CON_ID;NAME CON_ID PDB---------------------- ------- ---------- ------------------------------pcdb01XDB 1 CDB $ROOTSYS$BACKGROUND 1 CDB$ROOTSYS$USERS 1 CDB$ROOTpcdb01 1 CDB$ROOTprd_pdb_con 3 PRD_PDB_CONprd_pdb_ten 4 PRD_PDB_TEN6 Zeilen ausgewählt.


Gemeinsame Benutzer mit Zugriff auf alle pdbs erstellen

SQL> CREATE USER c##user1 IDENTIFIED BY password1 CONTAINER=ALL;Benutzer erstellt.SQL> GRANT CREATE SESSION TO c##user1 CONTAINER=ALL;Erteilung erfolgreich.

Gemeinsame Benutzer ohne Zugriff auf pdbs erstellen

SQL> CREATE USER c##user2 IDENTIFIED BY password1;Benutzer erstellt.SQL> GRANT CREATE SESSION TO c##user2;Erteilung erfolgreich.

Erstellen Sie einen lokalen Benutzer mit Zugriff nur auf pdb

SQL> CREATE USER user3 IDENTIFIED BY password3 CONTAINER=CURRENT;Benutzer erstellt.SQL> GRANT CREATE SESSION TO user3 CONTAINER=CURRENT;Erteilung erfolgreich.

Gemeinsame Rolle erstellen

SQL> CONN / AS SYSDBASQL> CREATE ROLE c##role1;Rolle erstellt.SQL> GRANT CREATE SESSION TO c##role1;Erteilung erfolgreich.

Einem gemeinsamen Benutzer eine Rolle zuweisen

SQL> GRANT c##role1 TO c##user1 CONTAINER=ALL;Erteilung erfolgreich.

Geben Sie einem lokalen Benutzer eine Rolle für einen gemeinsamen Benutzer

SQL> alter SESSION SET CONTAINER =PRD_PDB_CON;Sitzung geändert.SQL> GRANT c##role1 TO user2;Erteilung erfolgreich.

Lokale Rollen

SQL> CONN / AS SYSDBASQL> alter SESSION SET CONTAINER =PRD_PDB_CON;Sitzung geändert.SQL> CREATE ROLE Rolle1;Rolle erstellt.SQL> GRANT CREATE SESSION TO Rolle1;Erteilung erfolgreich.

Erstellen von PDBs

SQL> erstelle austauschbare Datenbank HMLPDB admin Benutzer admin identifiziert durch PassDw1 roles =(DBA);SQL> erstelle austauschbare Datenbank DSVPDB admin Benutzer admin identifiziert durch Manager1roles =(DBA) storage (MAXSIZE 1G) FILE_NAME_CONVERT=('/u01/app /oracle/oradata/pcdb01/pcdb01_pdbseed_','/u01/app/oracle/oradata/dsvpdb/dsvpdb_');SQL> Pluggable-Datenbank DSVPDB1 aus DSVPDB erstellen file_name_convert=('/DSVPDB/','/DSVPDB1/'); 

Ausgenommen PDBs

SQL> austauschbare Datenbank DSVPDB1 ändern schließen [sofort] [Instanzen=all];SQL> austauschbare Datenbank DSVPDB1 einschließlich Datendateien löschen;

PDBs trennen

$ sqlplus / as sysdbaSQL> alter Pluggable Database PRD_PDB_CON close;SQL> alter Pluggable Database PRD_PDB_CON unplug in '/tmp/prd_pdb_con.xml';

PDBs einstecken

$ sqlplus / as sysdbaSQL> erzeuge die austauschbare Datenbank PRD_PDB_CON mit '/tmp/prd_pdb_con.xml' FILE_NAME_CONVERT=('/oradata/cdb1/prd_pdb_con', '/oradata/cdb2/prd_pdb_con');SQL> verändere die austauschbare Datenbank PRD_PDB_CON öffnen;

Dienste auf Oracle RAC mit CDBs konfigurieren

$ srvctl add service -db CDB01 -service new_service -pdb PRD_PDB_CON$ srvctl modify service -db CDB01 -service new_service -pdb PRD_PDB_CON$ srvctl remove service -db CDB01 -service new_serviceBEGINDBMS_SERVICE.CREATE_SERVICE(service_name => 'new_service',network_name => 'new_service.com');END;/BEGINDBMS_SERVICE.DELETE_SERVICE(service_name => 'new_service');END;/

Beim Root-Container haben wir cdb_tablespaces und cdb_data_files zeigt den Tablespace und die Datendateien aller Container in der CDB.

Wenn sie mit einer PDB verbunden sind, zeigen cdb_tablespaces und cdb_data_files dieselben Informationen wie dba_tablespaces, dba_data_files für die PDB.

SQL> alter session set container=CDB$ROOT;Session altered.SQL> select tablespace_name, con_id from cdb_tablespaces order by con_id;TABLESPACE_NAME CON_ID------------------- ----------- --------SYSTEM 1SYSAUX 1UNDOTBS2 1TEMP 1USERS 1UNDOTBS1 1SYSTEM 3SYSAUX 3TBS_GEN_01 3TEMP 3TBS_CON_IDX_01 3TBS_CON_DT_01 3USERS 3SYSTEM 4SYSAUX 4TBS_GEN_01 4USERS 4TEMP 418 Zeilen ausgewählt.SQL> select tablespace_name from dba_tablespace_tablespaces; -----------------------------SYSTEMSYSAUXUNDOTBS1TEMPUSERSUNDOTBS26 Zeilen ausgewählt.

Überprüfen der Funktion "Lokales Rückgängigmachen" in 12.2

In Oracle Database 12c Release 1 teilten sich alle Container in einer Instanz denselben Undo-Tablespace.

In Oracle 12c Release 2 kann jeder Container in einer Instanz seinen eigenen Undo-Tablespace verwenden.

SQL> sofortiges Herunterfahren;SQL> Startup-Upgrade;SQL> alter database local rückgängig machen;SQL> sofort herunterfahren;SQL> startup;SQL> col Eigenschaftsname format a30SQL> col Eigenschaftswert format a30SQL> select Eigenschaftsname, Eigenschaftswert aus Datenbankeigenschaften, wobei Eigenschaftsname ='LOCAL_UNDO_ENABLED';PROPERTY_NAME PROPERTY_VALUE----------- -------------- LOCAL_UNDO_ENABLED TRUE
 

Referenzen

https://docs.oracle.com