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