Blz ? Entao, antes de responder acredito que vc já sabe mas não custa botar por 
escrito o conceito técnico : um database Oracle nada mais é do que um conjunto 
de arquivos (controlfiles, datafiles, redo log files, initfile, etc) , e pra 
podermos Acessar esses arquivos eles TEM que ser 
abertos/controlados/lidos/gravados por um software, o RDBMS Oracle : quando 
esse software é executado e passa a residir em memória, isso é uma INSTÂNCIA 
ORACLE... Até a versão 11g (desconsiderando o caso de CLUSTERs com RAC) cada 
database exigia uma Instância própria, cada instância só podia abrir um único 
database...
 Muito bem : o PDB foi uma alteração nos binários Oracle, onde uma só instância 
passou a ser capaz de controlar N conjuntos de arquivos, ie, N databases... O 
ponto de destaque é que, muito ao contrário do que eu e todo mundo que trabalha 
com Oracle previa, essa alteração foi MUITO BEM FEITA, o overhead decorrente 
dessas alterações pelo fato da instância Oracle ter mais trabalho a fazer é 
quase inexistente, muito muito muito difícil de sequer ser notado... O único 
senão resultante disso foi que nem todas as ferramentas, comandos SQL e 
conceitos do RDBMS estavam preparados para trabalhar com PDBs logo no começo do 
12c, então MUITA GENTE simplesmente deixou de lado os PDBs até eles ficarem 
mais refinados, terem um Suporte interno melhor, o que só veio a acontecer no 
12cR2...
 E deixando de lado a perte técnica, há LIMITES para a qtdade de PDBs que vc 
pode ter, e além disso há a questão de Licenciamento : varia de acordo com a 
Edition e a versão que vc tem, mas se vc quiser ter mais que uma qtdade N de 
PDBs vc pode ter que licenciar extra esses databases... Assim, NEM PENSAR em 
ter um PDB para cada cliente seu, vai que daqui a pouco vc tem sucesso e passa 
a ter dúzias de clientes, ter que licenciar dúzias de PDBs normalmente não é 
viável...
 
 Então, vou te responder mas de cara já digo que,  por causa desses limites de 
licenciamento E da estabilização/suporte completo aos PDBs que só vieram bem 
recentemente, NÃO TEM tanta gente assim que os usa : sim, diversos clientes 
meus já os usam mas nem de longe isso é algo Rotineiro no mercado, não... Então 
não há taaantas indicações de best practice, não... Algumas são :
 
 1. a principal VANTAGEM dos PDBs é que eles são, logicamente falando, 
databases SEPARADOS do database container : assim sendo, eles podem ter 
configurações (sejam parãmetros, charactersets, etc) completamente diferentes 
do container db... Assim, a principal indicação que vc precisa de um PDB é 
essa, ie, é quando alguma APlicação exige configurações de banco incompatíveis 
com as exigidas por outras...
 
 2. os PDBs basicamente devem ser entendidos como um meio de COMPARTILHAR 
recursos : ou seja, todos os PDBs compartilham com o container a Rede, o espaço 
em disco, os recursos do Sistema Operacional, etc... Assim, mais que uma best 
practice, é uma IMPOSIÇÃO que vc tome cuidado EXTREMO com 
comandos/procedimentos que usam esses recursos, como UTL_FILE, DBLINKs, 
EXTERNAL TABLEs, SCHEDULER JOBs que executam rotinas externas ao database, etc, 
etc...
 Igualmente, nesse mesmo sentido, é mais que recomendado vc colocar LIMITES nos 
PDBs, controlando máximo de memória, I/Os e talz : isso tanto pode ser feito 
dentro de cada PDB como em laguns casos pode ser controlado pelo resource 
manager - vc TEM que estudar PROFILES, parâmetros de controle E resource 
manager a fundo se vai usar múltiplos PDBs...
 
 3. use do recurso de COMMOM USERs : esses são usuários que vc cria uma vez só 
e são capazes de conectar tanto no CDB quanto nos PDBs
 
 4. em termos de Administração, a best practice é vc CONFIRMAR que vc tem as 
ferramentas administrativas compatíveis com PDBs : não é raro vc encontrar tool 
administrativa que não dê suporte às views CDB_xxx além das DBA_xxx comuns, por 
exemplo... Igualmente, tuas rotinas de BACKUP muito provavelmente vão ter que 
ser adaptadas para incluir os n backups em diferentes políticas/frequências  
para os diferentes PDBs....
 
 5. tablespaces : nem tanto por questão de performance, mas sim para facilidade 
administrativa, é best practice vc ter tablespaces SEPARADAS, organizadas por 
cada database E dentro de cada database por tipo de utilização
 
 Pra nós, DBAs, é principalmente nessas coisas que eu penso quando se fala em 
PDBs....
 
 []s
 
   Chiappa

Responder a