Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Administração Básica do Oracle 12c Multitenant

Verifique se o banco de dados é CDB ou não CDB



SQL> selecione cdb de v$database;CDB---YES

Conectando ao contêiner



$ export ORACLE_SID=pcdb01$ sqlplus / as sysdbaSQL> show con_nameCON_NAME-------------------CDB$ROOTSQL> show con_idCON_ID------------------------------1SQL> show pdbs;CON_ID CON_NAME OPEN MODE RESTRICTED------- ------------------------------- ---------- -------- --2 PDB$SEED APENAS LEITURA NO3 PRD_PDB_CON LEIA ESCRITA NO4 PRD_PDB_TEN LEIA ESCREVER NÃO

Navegar pelos PDBs



SQL> alter session set container=PDB$SEED;Session changes.SQL> alter session set container=PRD_PDB_CON;Session changes.SQL>

Informações sobre PDBs



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 NORMAL

Verificando/alterando o parâmetro



SQL> selecione * de v$system_parameter;SQL> selecione * de PDB_SPFILE$;SQL> altere o sistema set parameter_name=valor;SQL> altere o sistema set parameter_name=value CONTAINER=CURRENT;

Inicialização e desligamento do PDB




Alguns valores típicos:

INICIALIZAÇÃO [NOMOUNT | MONTE | RESTRITO | ATUALIZAR | FORÇA | SOMENTE LEITURA]
DESLIGAMENTO [IMEDIATO | ABORT]
$ export ORACLE_SID=pcdb01$ sqlplus / as sysdbaSQL> desligamento imediato;

Parar banco de dados conectável



SQL> altera o banco de dados conectável PRD_PDB_CON close [imediato];SQL> altera o banco de dados conectável TODOS EXCETO PRD_PDB_CON close [imediato];SQL> altera o banco de dados conectável TODOS fecha;SQL> altera o banco de dados conectável PRD_PDB_CON close [imediato] [instâncias=todos];

Ou:
SQL> altera SESSION SET CONTAINER =PRD_PDB_CON;SQL> encerramento imediato;

Iniciar banco de dados conectável




FORÇA DE INICIALIZAÇÃO

INICIAR ABRIR LER ESCREVER [RESTRICT]
INICIALIZAÇÃO ABERTA APENAS LEITURA [RESTRICT]
ATUALIZAÇÃO DE INICIALIZAÇÃO

DESLIGAMENTO [IMEDIATO]
SQL> altera o banco de dados conectável PDB01 aberto;SQL> altera o banco de dados conectável TODOS, EXCETO PRD_PDB_CON aberto;SQL> altera o banco de dados conectável TODOS abertos;SQL> altera o banco de dados conectável PDB01 aberto [instâncias=todos];

Ou:
SQL> altera SESSION SET CONTAINER =PRD_PDB_CON;SQL> startup;SQL> altera PLUGGABLE DATABASE  OPEN READ WRITE [RESTRICTED] [FORCE];SQL> altera PLUGGABLE DATABASE  OPEN READ ONLY [RESTRICTED][FORCE];SQL> altera PLUGGABLE DATABASE  OPEN UPGRADE [RESTRICTED];SQL> altera PLUGGABLE DATABASE  CLOSE [IMMEDIATE];


Preservar o estado de inicialização do PDB (12.1.0.2 em diante)

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



A exibição DBA_PDB_SAVED_STATES exibe informações sobre o estado salvo dos contêineres.
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 ABERTO


Tamanho do banco de dados conectável

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_TEN937 286pre11 

Tempo de inicialização do banco de dados conectável

SQL> set linesize 180SQL> col name for a30SQL> col open_time for a33SQL> selecione con_id,name,dbid,open_mode,open_time de v$containers;CON_ID NAME DBID OPEN_MODE OPEN_TIME---------- - --------------- -------------- ---------- ---------- - --------------------------------1 CDB$ROOT 456650806 LEIA ESCREVER 17-MAR-18 11.59.36.176 PM -03 :002 PDB $ SEED 2688102972 Somente leitura 17-mar-18 11.59.36.182 -03:003 PDB_PN1O0101 1079206163 Read 18-mar-18 12.00.589 AM -03:004 PDB_BEBEB 23.00.589 AM -03:0044 AM -03:004 linhas selecionadas.


Tempo de atividade do banco de dados conectável

SQL> set linessize 180SQL> col name for a30SQL> col open_time for a28SQL> selecione name,floor(sysdate-cast(open_time as date))||'Days '||floor(((sysdate-cast(open_time as date))-floor(sysdate-cast(open_time as date)))*24)||'horas '||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)||'minutos' "Database Uptime"de v$containers;NAME Tempo de atividade do banco de dados--------------- ---------------------------CDB$ROOT 1331Dias 11horas 28minutosPDB $SEED 1331Dias 11horas 28minutosPDB_PN1O0101 1331Dias 11horas 28minutosPDB_BATCHWEB 1331Dias 11horas 28minutos4 linhas selecionadas.


Nome dos serviços

SQL> FORMATO DO NOME DA COLUNA 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 linhas selecionadas.


Criar usuários comuns com acesso a todos os pdbs

SQL> CREATE USER c##user1 IDENTIFIED BY password1 CONTAINER=ALL;Usuário criado.SQL> GRANT CREATE SESSION TO c##user1 CONTAINER=ALL;Grant bem-sucedida.

Criar usuários comuns sem acesso a pdbs

SQL> CREATE USER c##user2 IDENTIFIED BY password1;Usuário criado.SQL> GRANT CREATE SESSION TO c##user2;Grant foi bem-sucedido.

Criar usuário local com acesso apenas ao pdb

SQL> CREATE USER user3 IDENTIFIED BY password3 CONTAINER=CURRENT;Usuário criado.SQL> GRANT CREATE SESSION TO user3 CONTAINER=CURRENT;Grant bem-sucedido.

Criar função comum

SQL> CONN / AS SYSDBASQL> CREATE ROLE c##role1;Função criada.SQL> GRANT CREATE SESSION TO c##role1;Grant bem-sucedida.


Conceder função a um usuário comum

SQL> GRANT c##role1 TO c##user1 CONTAINER=ALL;Grant bem-sucedido.


Conceder função a um usuário comum a um usuário local

SQL> alter SESSION SET CONTAINER =PRD_PDB_CON;Sessão alterada.SQL> GRANT c##role1 TO user2;Grant bem-sucedido.

Funções locais

SQL> CONN / AS SYSDBASQL> alter SESSION SET CONTAINER =PRD_PDB_CON;Sessão alterada.SQL> CREATE ROLE role1;Role created.SQL> GRANT CREATE SESSION TO role1;Grant bem-sucedido.

Criando PDBs



SQL> cria banco de dados conectável HMLPDB admin usuário admin identificado por PassDw1 roles =(DBA);SQL> cria banco de dados conectável DSVPDB admin user admin identificado por Manager1roles =(DBA) storage (MAXSIZE 1G) FILE_NAME_CONVERT=('/u01/app /oracle/oradata/pcdb01/pcdb01_pdbseed_','/u01/app/oracle/oradata/dsvpdb/dsvpdb_');SQL> cria banco de dados conectável DSVPDB1 a partir de DSVPDB file_name_convert=('/DSVPDB/','/DSVPDB1/'); 

Excluindo PDBs



SQL> altera o banco de dados conectável DSVPDB1 close [imediate] [instances=all];SQL> descarta o banco de dados conectável DSVPDB1 incluindo arquivos de dados;

Desconectando PDBs



$ sqlplus / as sysdbaSQL> altera o banco de dados conectável PRD_PDB_CON close;SQL> altera o banco de dados conectável PRD_PDB_CON desplugue em '/tmp/prd_pdb_con.xml';

Conectando PDBs



$ sqlplus / as sysdbaSQL> cria o banco de dados conectável PRD_PDB_CON usando '/tmp/prd_pdb_con.xml' FILE_NAME_CONVERT=('/oradata/cdb1/prd_pdb_con', '/oradata/cdb2/prd_pdb_con');SQL> altera o banco de dados conectável PRD_PDB_CON abrir;

Configurando serviços no Oracle RAC com CDBs



$ srvctl adicionar serviço -db CDB01 -service new_service -pdb PRD_PDB_CON$ srvctl modificar serviço -db CDB01 -service new_service -pdb PRD_PDB_CON$ srvctl remover serviço -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;/

Com o container root, temos cdb_tablespaces e cdb_data_files mostra o tablespace e os arquivos de dados de todo o container no CDB.

Quando conectado a um PDB, cdb_tablespaces e cdb_data_files mostram as mesmas informações que dba_tablespaces, dba_data_files para o PDB.
SQL> alter session set container=CDB$ROOT;Session changes.SQL> selecione tablespace_name, con_id de cdb_tablespaces ordenar por 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 rowsTABLESP.SQL> selecione tablespace_name de dba_tablespaces; -----------------------------SYSTEMSYSAUXUNDOTBS1TEMPUSERSUNDOTBS26 linhas selecionadas.

Como verificar o recurso Desfazer local na versão 12.2


No Oracle Database 12c Release 1, todos os contêineres em uma instância compartilhavam o mesmo tablespace de undo.

No Oracle 12c Release 2, cada contêiner em uma instância pode usar seu próprio tablespace de undo.


SQL> desligamento imediato;SQL> inicialização atualização;SQL> alterar banco de dados local desfazer em;SQL> desligamento imediato;SQL> inicialização;SQL> col property_name formato a30SQL> col property_value formato a30SQL> selecionar property_name, property_value de database_properties onde property_name ='LOCAL_UNDO_ENABLED';PROPERTY_NAME PROPERTY_VALUE---------------- -------------- LOCAL_UNDO_ENABLED TRUE
 

Referências


https://docs.oracle.com