Nenhum resultado encontrado

Sua pesquisa não corresponde a nenhum resultado.

Sugerimos que você tente o seguinte para ajudar a encontrar o que procura:

  • Verifique a ortografia da sua pesquisa por palavra-chave.
  • Use sinônimos para a palavra-chave digitada; por exemplo, tente “aplicativo” em vez de “software.”
  • Tente uma das pesquisas populares mostradas abaixo.
  • Inicie uma nova pesquisa.
Perguntas Frequentes

Preservando o estado dos pluggabledatabases após o restart do container database.

Por Anderson Graf
Publicado en Abril 2017

Com a introdução da arquitetura multitenantna versão 12c do Oracle Database, passamos a ter múltiplos pluggabledatabases (PDBs) abaixo de um único container database (CDB). Anterior a versão 12.1.0.2, sempre que um container database era iniciado todos os pluggabledatabases associados permaneciam por padrão no estado MOUNT (com exceção do pluggable database SEED que fica em READ-ONLY).

Um mecanismo muito utilizado até então para se iniciar os pluggabledatabases eram triggers de startup. Quando o container era iniciado a trigger era disparada e todos os pluggabledatabases configurados abaixo da trigger eram automaticamente alterados para READ WRITE ou READ ONLY.



create or replace trigger startup_pdbs
after startup on database
begin
  execute immediate 'alter pluggable database DBHMG1 open';
end;
/

Em um container database (CDB) com vários pluggabledatabases (PDBs) associados a solução começava a se tornar mais complexa, pois cada PDB poderia ter seu OPEN MODE diferente dos demais (MOUNTED, READ WRITE, READ ONLY). A cada necessidade de se disponibilizar um PDB em outro modo se tornava necessário também alterar a trigger manualmente ajustando o novo estado do PDB.

Iniciando na versão 12.1.0.2, a Oracle disponibilizou a featurepdb_save_or_discard_state junto ao comando ALTER PLUGGABLE DATABASE onde permite que o estado (state) de um PDB seja salvo ou descartado, agora sempre que o CDB é iniciado os pluggabledatabases (PDBs) voltam ao seu estado em que foram salvos (READ WRITE/READ ONLY).

Se um PDB não possui estado salvo ou ele foi descartado, então por default o estado dele será MOUNT quando o CDB for novamente iniciado.

01

SAVE: Salva o atual estado de OPEN MODE do(s) PDB(s) de modo que seja mantido após o restart do CDB;

DISCARD: Descarta o estado salvo do(s) PDB(s) resultando no retorno ao padrão MOUNTED;

INSTANCES_CLAUSE: Adicionado ao comando, permite salvar/descartar o estado de uma instance específica ou para todas as instances (RAC) - instances = ('cdb1','cdb2'). Se omitido, modifica o estado do PDB apenas para a instance corrente;

ALL: Salva/descarta o estado para todos pluggable database;

ALL EXCEPT: Salva/descarta o estado para todos pluggabledatabases exceto pelos listados na cláusula EXCEPT;



Demonstrações de uso:
-- Verificando o estado corrente dos pluggabledatabases
SQL> show pdbs

CON_ID      CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
   2        PDB$SEED                       READ ONLY     NO
   3        DBHMG1                         READ WRITE    NO
   4        DBHMG2                         READ ONLY     NO
   5        DBHMG3                         READ WRITE    YES

Existem diferentes estados (open mode) para os pluggabledatabases, incluindo o DBHMG3 em modo restrito.

-- Verificando o estado salvo dos pluggabledatabases

SQL> select con_name, instance_name, state, restricted from dba_pdb_saved_states; norowsselected

Neste momento nenhum PDB possuía seu estado salvo, ou seja, se o container database (CDB) for reiniciado, todos os pluggabledatabases irão ficar em estado MOUNT.

-- Salvando o estado de apenas um pluggable database

SQL> alter pluggable database DBHMG1 save state; Pluggable database altered.

-- Salvando o estado de todos os pluggabledatabases exceto o DBHMG3

SQL> alter pluggable database ALL EXCEPT DBHMG3 save state; Pluggable database altered.

-- Salvando o estado de todos os pluggabledatabases

SQL> alter pluggable database ALL save state; Pluggable database altered.

-- Verificando o estado salvo dos pluggabledatabases



SQL> select con_name, instance_name, state, restricted from dba_pdb_saved_states;

CON_NAME                 INSTANCE_NAME   STATE           RES
------------------------ --------------- -------------- -----
DBHMG3                   cdb             OPEN            YES
DBHMG1                   cdb             OPEN            NO
DBHMG2                   cdb             OPEN READ ONLY  NO

O retorno da DBA_PDB_SAVED_STATES representa o estado salvo de cada PDB, se um outro PDB existir e o mesmo não for listado significa que ele não possui nenhum estado salvo até o momento, desta forma, um restart do container resultaria no retorno dele ao estado default, MOUNT.

-- Forçando um restat do container




SQL> startup force
ORACLE instance started.

Total System Global Area  629145600 bytes
Fixed Size                  2927528 bytes
Variable Size             281019480 bytes
Database Buffers          339738624 bytes
Redo Buffers                5459968 bytes
Database mounted.
Database opened.

-- Verificando o estado corrente dos pluggabledatabases



SQL> show pdbs

CON_ID      CON_NAME                      OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
   2        PDB$SEED                      READ ONLY      NO
   3        DBHMG1                        READ WRITE     NO
   4        DBHMG2                        READ ONLY      NO
   5        DBHMG3                        READ WRITE     YES


Com o restart do CBD, todos os pluggabledatabases voltaram ao seu estado salvo.

Sempre que o estado de um PDB for alterado e este precise ser persistido após um restart do container, execute um novo SAVE STATE, sem o SAVE STATE ele voltara ao antigo estado salvo.

-- Descartando o estado salvo de um pluggalbe database

SQL> alter pluggable database DBHMG3 discard state; Pluggable database altered.

-- Verificando o estado salvo dos pluggabledatabases



SQL> select con_name, instance_name, state, restricted from dba_pdb_saved_states;

CON_NAME                       INSTANCE_NAME   STATE          RES
------------------------------ --------------- -------------- ---
DBHMG1                         cdb             OPEN           NO
DBHMG2                         cdb             OPEN READ ONLY NO

-- Forçando um restat do container



SQL> startup force
ORACLE instance started.

Total System Global Area  629145600 bytes
Fixed Size                  2927528 bytes
Variable Size             281019480 bytes
Database Buffers          339738624 bytes
Redo Buffers                5459968 bytes
Database mounted.
Database opened.


-- Verificando o estado corrente dos pluggabledatabases



SQL> show pdbs

CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 DBHMG1                         READ WRITE NO
         4 DBHMG2                         READ ONLY  NO
         5 DBHMG3                         MOUNTED

A mudança proporcionada através da featurepdb_save_or_discard_state, embora pequena, representa uma melhoria significativa no mecanismo de gerenciamento dos pluggabledatabases(PDBs) principalmente aosDBAs que possuem muitos pluggabledatabases para gerenciar abaixo de um único container database (CDB).

Referências:



https://docs.oracle.com/database/121/NEWFT/chapter12102.htm#NEWFT514  https://docs.oracle.com/database/121/SQLRF/statements_2008.htm#CCHGJJHH


Anderson Graf, Bacharel em Sistemas de Informação e MBA em Gestão de Banco de Dados Oracle. Trabalha com banco de dados Oracle desde 2009, é Oracle OCP 10g/11g/12c, OCS Linux, Database e Cloud Control. OCE Performance Tuning; OPNCS. É um entusiasta da tecnologia Oracle e autor dos blogs andersondba.com.br e oraclehome.com.br.

Este artigo foi revisto pela equipe de produtos Oracle e está em conformidade com as normas e práticas para o uso de produtos Oracle.