Oracle
 sql >> Database >  >> RDS >> Oracle

Amministrazione di base di Oracle 12c Multitenant

Verifica se il database è CDB o non CDB

SQL> seleziona cdb da v$database;CDB---SI

Collegamento al container

$ export ORACLE_SID=pcdb01$ sqlplus / as sysdbaSQL> mostra con_nameCON_NAME------------------------------CDB$ROOTSQL> mostra con_idCON_ID----------------1SQL> mostra pdbs;CON_ID CON_NAME MODALITÀ APERTA RISERVATA-------- -- --------------- ---------- -------- --2 PDB$SEED SOLO LETTURA NO3 PRD_PDB_CON LETTURA SCRITTURA NO4 PRD_PDB_TEN LETTURA SCRITTURA NO

Naviga tra i PDB

SQL> alter session set container=PDB$SEED;Sessione alterata.SQL> alter session set container=PRD_PDB_CON;Sessione alterata.SQL>

Informazioni sui PDB

SQL> COLUMN PDB_NAME FORMAT A15SQL> COLUMN 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 NORMALE

Controllo/modifica parametro

SQL> seleziona * da v$parametro_di_sistema;SQL> seleziona * da PDB_SPFILE$;SQL> altera il set di sistema nome_parametro=valore;SQL> altera il set di sistema nome_parametro=valore CONTAINER=CURRENT;

Avvio e spegnimento del PDB

Alcuni valori tipici:

AVVIO [NOMOUNT | MONTAGGIO | LIMITAZIONE | AGGIORNAMENTO | FORZA | SOLA LETTURA]

SPEGNIMENTO [IMMEDIATO | ABORT]

$ export ORACLE_SID=pcdb01$ sqlplus / as sysdbaSQL> spegnimento immediato;

Interrompi database collegabile

SQL> altera il database collegabile PRD_PDB_CON chiudi [immediato];SQL> altera il database collegabile TUTTI TRANNE PRD_PDB_CON chiudi [immediato];SQL> altera il database collegabile TUTTI chiudi;SQL> altera il database collegabile PRD_PDB_CON chiudi [immediato] [instances=all];

Oppure:

SQL> alter SESSION SET CONTAINER =PRD_PDB_CON;SQL> spegnimento immediato;

Avvia database collegabile

FORZA DI AVVIO

AVVIO APRI LEGGI SCRIVICI [RESTRICT]

STARTUP APERTO SOLA LETTURA [RESTRICT]

AGGIORNAMENTO STARTUP

SHUTDOWN [IMMEDIATO]

SQL> modifica il database collegabile PDB01 aperto;SQL> modifica il database collegabile TUTTO TRANNE PRD_PDB_CON aperto;SQL> modifica il database collegabile TUTTO aperto;SQL> modifica il database collegabile PDB01 aperto [instances=all];

Oppure:

SQL> alter SESSION SET CONTAINER =PRD_PDB_CON;SQL> startup;SQL> alter PLUGGABLE DATABASE  OPEN READ WRITE [RESTRICTED] [FORCE];SQL> alter PLUGGABLE DATABASE  APRI SOLA LETTURA [RESTRICTED][FORCE];SQL> alter PLUGGABLE DATABASE  OPEN UPGRADE [RESTRICTED];SQL> alter PLUGGABLE DATABASE  CHIUDI [IMMEDIATO];

Preserva lo stato di avvio del PDB (da 12.1.0.2 in poi)

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

La vista DBA_PDB_SAVED_STATES mostra informazioni sullo stato salvato dei contenitori.

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

Dimensioni del database collegabile

SQL> FORMATO NOME COLONNA A20SQL> SELECT DBID, NAME, CON_ID, CON_UID, TOTAL_SIZE DA V$CONTAINERS ORDINA PER 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 437108 

Tempo di avvio del database collegabile

SQL> imposta linesize 180SQL> col nome per a30SQL> col open_time per a33SQL> seleziona con_id,name,dbid,open_mode,open_time da v$containers;CON_ID NAME DBID OPEN_MODE OPEN_TIME---------- - --------------- -------------- ---------- ---------- - --------------------------------1 CDB$ROOT 456650806 LEGGI SCRIVI 17-MAR-18 11.59.36.176 PM -03 :002 pdb $ seed 2688102972 Leggi solo 17 marzo-18 11.59.36.182 PM -03:003 PDB_PN1O0101 1079206163 Leggi 18 marzo 12.00.00.00.589 AM -03:004 PDB_BATCHWEB 2340495643 AM -03:004 righe selezionate.

Tempo di attività del database collegabile

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 Tempo di attività del database--------------- --------------------------- CDB$ROOT 1331Giorni 11ore 28minutiPDB $SEED 1331Giorni 11ore 28minutiPDB_PN1O0101 1331Giorni 11ore 28minutiPDB_BATCHWEB 1331Giorni 11ore 28minuti4 righe selezionate.

Nome dei servizi

SQL> NOME COLONNA FORMATO A30SQL> SELEZIONA NOME,CON_ID,PDB DA V$SERVIZI ORDINA PER CON_ID;NOME 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 righe selezionate.


Crea utenti comuni con accesso a tutti i pdb

SQL> CREATE USER c##user1 IDENTIFIED BY password1 CONTAINER=ALL;Utente creato.SQL> GRANT CREATE SESSION TO c##user1 CONTAINER=ALL;Concessione riuscita.

Crea utenti comuni senza accesso a pdbs

SQL> CREATE USER c##user2 IDENTIFIED BY password1;Utente creato.SQL> GRANT CREATE SESSION TO c##user2;Concessione riuscita.

Crea utente locale con accesso solo a pdb

SQL> CREATE USER user3 IDENTIFIED BY password3 CONTAINER=CURRENT;Utente creato.SQL> GRANT CREATE SESSION TO user3 CONTAINER=CURRENT;Concessione riuscita.

Crea ruolo comune

SQL> CONN / AS SYSDBASQL> CREATE ROLE c##role1;Ruolo creato.SQL> GRANT CREATE SESSION TO c##role1;Concessione riuscita.

Concedi il ruolo a un utente comune

SQL> GRANT c##role1 TO c##user1 CONTAINER=ALL;Grant riuscito.

Concedi il ruolo a un utente comune a un utente locale

SQL> alter SESSION SET CONTAINER =PRD_PDB_CON;Sessione alterata.SQL> GRANT c##role1 TO user2;Concessione riuscita.

Ruoli locali

SQL> CONN / AS SYSDBASQL> alter SESSION SET CONTAINER =PRD_PDB_CON;Sessione alterata.SQL> CREATE ROLE role1;Ruolo creato.SQL> GRANT CREATE SESSION TO role1;Concessione riuscita.

Creazione di PDB

SQL> crea database collegabile HMLPDB admin user admin identificato da PassDw1 ruoli =(DBA);SQL> crea database collegabile DSVPDB admin user admin identificato da Manager1roles =(DBA) storage (MAXSIZE 1G) FILE_NAME_CONVERT=('/u01/app /oracle/oradata/pcdb01/pcdb01_pdbseed_','/u01/app/oracle/oradata/dsvpdb/dsvpdb_');SQL> crea il database collegabile DSVPDB1 da DSVPDB file_name_convert=('/DSVPDB/','/DSVPDB1/'); 

Esclusi i PDB

SQL> altera il database collegabile DSVPDB1 chiudi [immediato] [instances=all];SQL> elimina il database collegabile DSVPDB1 inclusi i file di dati;

Scollegamento dei PDB

$ sqlplus / as sysdbaSQL> altera il database collegabile PRD_PDB_CON close;SQL> altera il database collegabile PRD_PDB_CON unplug in '/tmp/prd_pdb_con.xml';

Collegamento dei PDB

$ sqlplus / as sysdbaSQL> crea il database collegabile PRD_PDB_CON usando '/tmp/prd_pdb_con.xml' FILE_NAME_CONVERT=('/oradata/cdb1/prd_pdb_con', '/oradata/cdb2/prd_pdb_con');SQL> altera il database collegabile PRD_PDB_CON aperto;

Configurazione dei servizi su Oracle RAC con CDB

$ srvctl aggiungi servizio -db CDB01 -servizio nuovo_servizio -pdb PRD_PDB_CON$ srvctl modifica servizio -db CDB01 -servizio nuovo_servizio -pdb PRD_PDB_CON$ srvctl rimuovi servizio -db CDB01 -servizio nuovo_servizioBEGINDBMS_SERVICE.CREATE_SERVICE(nome_servizio => 'nuovo_servizio',nome_rete => 'nuovo_servizio.com');END;/BEGINDBMS_SERVICE.DELETE_SERVICE(nome_servizio => 'nuovo_servizio');END;/

Con il contenitore radice, abbiamo cdb_tablespaces e cdb_data_files mostra il tablespace e i file di dati di tutto il contenitore nel CDB.

Quando sono collegati a un PDB, cdb_tablespaces e cdb_data_files mostrano le stesse informazioni di dba_tablespaces, dba_data_files per il PDB.

SQL> alter session set container=CDB$ROOT;Session alterato.SQL> seleziona tablespace_name, con_id da cdb_tablespaces ordina per con_id;TABLESPACE_NAME CON_ID------------------- ----------- --------SISTEMA 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 righe_tabella_spazio_selezionate da_SQL_tablespaces;tablespace_baACEd_tablespaces_seleziona_tabella_SQL> -----------------------------SYSTEMSYSAUXUNDOTBS1TEMPUSERSUNDOTBS26 righe selezionate.

Come verificare la funzione di annullamento locale in 12.2

In Oracle Database 12c Release 1 tutti i contenitori in un'istanza condividevano lo stesso spazio tabella di annullamento.

In Oracle 12c Release 2 ogni contenitore in un'istanza può utilizzare il proprio spazio tabella di annullamento.

SQL> spegnimento immediato;SQL> aggiornamento avvio;SQL> altera database locale annulla su;SQL> spegnimento immediato;SQL> avvio;SQL> col nome_proprietà formato a30SQL> col valore_proprietà formato a30SQL> seleziona nome_proprietà, valore_proprietà da proprietà_database dove nome_proprietà ='LOCAL_UNDO_ENABLED';PROPERTY_NAME PROPERTY_VALUE---------------- -------------- LOCAL_UNDO_ENABLED TRUE
 

Riferimenti

https://docs.oracle.com