Oracle suporta 4096 PDBs… mas não em RAC (com Runtime Load Balance)

Os PDBs (Pluggable DataBases) foram criados como uma ferramenta de consolidação. Ao invés de precisar ter N instâncias para N bancos, você pode ter 1 instância para N bancos. E é muito fácil clonar de uma para outra, o que sempre foi uma dor do Oracle Database.

Desde a versão 12.2, O Oracle Database permite criar até 4096 PDBs (Pluggable DataBases). Na versão 12.1 o limite era 256.

Support for Thousands of Pluggable Databases for Each Multitenant Container Database
Oracle Database 12c Release 2 (12.2) now supports having thousands of pluggable databases (PDBs) in a single multitenant container database (CDB).
Oracle Database 12c Release 1 (12.1.0.1) supported up to 252 PDBs for each CDB. By supporting higher numbers of PDBs for each CDB, you have fewer CDBs to manage and thus benefit from further reductions in operating expenses.
Fonte: https://docs.oracle.com/en/database/oracle/oracle-database/12.2/newft/new-features.html#GUID-32A0D373-8478-43D9-826D-33CE0D0C141B

Só esqueceram de testar este limite em RAC.

Em RAC deve-se utilizar Services, para que se controle onde uma aplicação irá se conectar (ou o Interconnect será sobrecarregado). E há um limite na quantidade de Services, que parece ser uma limitação de String – dependendo do tamanho do nome dos seus Services, este limite pode aparecer antes ou depois.

Em 1 Banco em um RAC de 4 Nodes, eu criei 50 PDBs, e 250 Services ditribuindo a carga entre eles.
O mesmo erro aconteceria com 250 PDBs e 250 Services, ou 1 PDB e 250 Services. O problema não são os PDBs, e sim os Services. Mas cada PDB precisa de pelo menos um Service se você quiser balancear a carga.

Os Services foram criados como o exemplo abaixo.

E aqui podemos ver a contagem de Services pelo srvctl.

E aqui podemos ver a configuração do banco com todos os Services.

[oracle@nerv05 ~]$ srvctl config database -db ORCL
Database unique name: ORCL
Database name: ORCL
Oracle home: /u01/app/oracle/product/19.3.0.0/db_1
Oracle user: oracle
Spfile: +DATA/ORCL/PARAMETERFILE/spfile.272.1012149303
Password file: +DATA/ORCL/PASSWORD/pwdorcl.256.1012147165
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools:
Disk Groups: FRA,DATA
Mount point paths:
Services: PDBTESTE0001_SERVICE0001,PDBTESTE0001_SERVICE0051,PDBTESTE0001_SERVICE0101,PDBTESTE0001_SERVICE0151,PDBTESTE0001_SERVICE0201,PDBTESTE0002_SERVICE0002,PDBTESTE0002_SERVICE0052,PDBTESTE0002_SERVICE0102,PDBTESTE0002_SERVICE0152,PDBTESTE0002_SERVICE0202,PDBTESTE0003_SERVICE0003,PDBTESTE0003_SERVICE0053,PDBTESTE0003_SERVICE0103,PDBTESTE0003_SERVICE0153,PDBTESTE0003_SERVICE0203,PDBTESTE0004_SERVICE0004,PDBTESTE0004_SERVICE0054,PDBTESTE0004_SERVICE0104,PDBTESTE0004_SERVICE0154,PDBTESTE0004_SERVICE0204,PDBTESTE0005_SERVICE0005,PDBTESTE0005_SERVICE0055,PDBTESTE0005_SERVICE0105,PDBTESTE0005_SERVICE0155,PDBTESTE0005_SERVICE0205,PDBTESTE0006_SERVICE0006,PDBTESTE0006_SERVICE0056,PDBTESTE0006_SERVICE0106,PDBTESTE0006_SERVICE0156,PDBTESTE0006_SERVICE0206,PDBTESTE0007_SERVICE0007,PDBTESTE0007_SERVICE0057,PDBTESTE0007_SERVICE0107,PDBTESTE0007_SERVICE0157,PDBTESTE0007_SERVICE0207,PDBTESTE0008_SERVICE0008,PDBTESTE0008_SERVICE0058,PDBTESTE0008_SERVICE0108,PDBTESTE0008_SERVICE0158,PDBTESTE0008_SERVICE0208,PDBTESTE0009_SERVICE0009,PDBTESTE0009_SERVICE0059,PDBTESTE0009_SERVICE0109,PDBTESTE0009_SERVICE0159,PDBTESTE0009_SERVICE0209,PDBTESTE0010_SERVICE0010,PDBTESTE0010_SERVICE0060,PDBTESTE0010_SERVICE0110,PDBTESTE0010_SERVICE0160,PDBTESTE0010_SERVICE0210,PDBTESTE0011_SERVICE0011,PDBTESTE0011_SERVICE0061,PDBTESTE0011_SERVICE0111,PDBTESTE0011_SERVICE0161,PDBTESTE0011_SERVICE0211,PDBTESTE0012_SERVICE0012,PDBTESTE0012_SERVICE0062,PDBTESTE0012_SERVICE0112,PDBTESTE0012_SERVICE0162,PDBTESTE0012_SERVICE0212,PDBTESTE0013_SERVICE0013,PDBTESTE0013_SERVICE0063,PDBTESTE0013_SERVICE0113,PDBTESTE0013_SERVICE0163,PDBTESTE0013_SERVICE0213,PDBTESTE0014_SERVICE0014,PDBTESTE0014_SERVICE0064,PDBTESTE0014_SERVICE0114,PDBTESTE0014_SERVICE0164,PDBTESTE0014_SERVICE0214,PDBTESTE0015_SERVICE0015,PDBTESTE0015_SERVICE0065,PDBTESTE0015_SERVICE0115,PDBTESTE0015_SERVICE0165,PDBTESTE0015_SERVICE0215,PDBTESTE0016_SERVICE0016,PDBTESTE0016_SERVICE0066,PDBTESTE0016_SERVICE0116,PDBTESTE0016_SERVICE0166,PDBTESTE0016_SERVICE0216,PDBTESTE0017_SERVICE0017,PDBTESTE0017_SERVICE0067,PDBTESTE0017_SERVICE0117,PDBTESTE0017_SERVICE0167,PDBTESTE0017_SERVICE0217,PDBTESTE0018_SERVICE0018,PDBTESTE0018_SERVICE0068,PDBTESTE0018_SERVICE0118,PDBTESTE0018_SERVICE0168,PDBTESTE0018_SERVICE0218,PDBTESTE0019_SERVICE0019,PDBTESTE0019_SERVICE0069,PDBTESTE0019_SERVICE0119,PDBTESTE0019_SERVICE0169,PDBTESTE0019_SERVICE0219,PDBTESTE0020_SERVICE0020,PDBTESTE0020_SERVICE0070,PDBTESTE0020_SERVICE0120,PDBTESTE0020_SERVICE0170,PDBTESTE0020_SERVICE0220,PDBTESTE0021_SERVICE0021,PDBTESTE0021_SERVICE0071,PDBTESTE0021_SERVICE0121,PDBTESTE0021_SERVICE0171,PDBTESTE0021_SERVICE0221,PDBTESTE0022_SERVICE0022,PDBTESTE0022_SERVICE0072,PDBTESTE0022_SERVICE0122,PDBTESTE0022_SERVICE0172,PDBTESTE0022_SERVICE0222,PDBTESTE0023_SERVICE0023,PDBTESTE0023_SERVICE0073,PDBTESTE0023_SERVICE0123,PDBTESTE0023_SERVICE0173,PDBTESTE0023_SERVICE0223,PDBTESTE0024_SERVICE0024,PDBTESTE0024_SERVICE0074,PDBTESTE0024_SERVICE0124,PDBTESTE0024_SERVICE0174,PDBTESTE0024_SERVICE0224,PDBTESTE0025_SERVICE0025,PDBTESTE0025_SERVICE0075,PDBTESTE0025_SERVICE0125,PDBTESTE0025_SERVICE0175,PDBTESTE0025_SERVICE0225,PDBTESTE0026_SERVICE0026,PDBTESTE0026_SERVICE0076,PDBTESTE0026_SERVICE0126,PDBTESTE0026_SERVICE0176,PDBTESTE0026_SERVICE0226,PDBTESTE0027_SERVICE0027,PDBTESTE0027_SERVICE0077,PDBTESTE0027_SERVICE0127,PDBTESTE0027_SERVICE0177,PDBTESTE0027_SERVICE0227,PDBTESTE0028_SERVICE0028,PDBTESTE0028_SERVICE0078,PDBTESTE0028_SERVICE0128,PDBTESTE0028_SERVICE0178,PDBTESTE0028_SERVICE0228,PDBTESTE0029_SERVICE0029,PDBTESTE0029_SERVICE0079,PDBTESTE0029_SERVICE0129,PDBTESTE0029_SERVICE0179,PDBTESTE0029_SERVICE0229,PDBTESTE0030_SERVICE0030,PDBTESTE0030_SERVICE0080,PDBTESTE0030_SERVICE0130,PDBTESTE0030_SERVICE0180,PDBTESTE0030_SERVICE0230,PDBTESTE0031_SERVICE0031,PDBTESTE0031_SERVICE0081,PDBTESTE0031_SERVICE0131,PDBTESTE0031_SERVICE0181,PDBTESTE0031_SERVICE0231,PDBTESTE0032_SERVICE0032,PDBTESTE0032_SERVICE0082,PDBTESTE0032_SERVICE0132,PDBTESTE0032_SERVICE0182,PDBTESTE0032_SERVICE0232,PDBTESTE0033_SERVICE0033,PDBTESTE0033_SERVICE0083,PDBTESTE0033_SERVICE0133,PDBTESTE0033_SERVICE0183,PDBTESTE0033_SERVICE0233,PDBTESTE0034_SERVICE0034,PDBTESTE0034_SERVICE0084,PDBTESTE0034_SERVICE0134,PDBTESTE0034_SERVICE0184,PDBTESTE0034_SERVICE0234,PDBTESTE0035_SERVICE0035,PDBTESTE0035_SERVICE0085,PDBTESTE0035_SERVICE0135,PDBTESTE0035_SERVICE0185,PDBTESTE0035_SERVICE0235,PDBTESTE0036_SERVICE0036,PDBTESTE0036_SERVICE0086,PDBTESTE0036_SERVICE0136,PDBTESTE0036_SERVICE0186,PDBTESTE0036_SERVICE0236,PDBTESTE0037_SERVICE0037,PDBTESTE0037_SERVICE0087,PDBTESTE0037_SERVICE0137,PDBTESTE0037_SERVICE0187,PDBTESTE0037_SERVICE0237,PDBTESTE0038_SERVICE0038,PDBTESTE0038_SERVICE0088,PDBTESTE0038_SERVICE0138,PDBTESTE0038_SERVICE0188,PDBTESTE0038_SERVICE0238,PDBTESTE0039_SERVICE0039,PDBTESTE0039_SERVICE0089,PDBTESTE0039_SERVICE0139,PDBTESTE0039_SERVICE0189,PDBTESTE0039_SERVICE0239,PDBTESTE0040_SERVICE0040,PDBTESTE0040_SERVICE0090,PDBTESTE0040_SERVICE0140,PDBTESTE0040_SERVICE0190,PDBTESTE0040_SERVICE0240,PDBTESTE0041_SERVICE0041,PDBTESTE0041_SERVICE0091,PDBTESTE0041_SERVICE0141,PDBTESTE0041_SERVICE0191,PDBTESTE0041_SERVICE0241,PDBTESTE0042_SERVICE0042,PDBTESTE0042_SERVICE0092,PDBTESTE0042_SERVICE0142,PDBTESTE0042_SERVICE0192,PDBTESTE0042_SERVICE0242,PDBTESTE0043_SERVICE0043,PDBTESTE0043_SERVICE0093,PDBTESTE0043_SERVICE0143,PDBTESTE0043_SERVICE0193,PDBTESTE0043_SERVICE0243,PDBTESTE0044_SERVICE0044,PDBTESTE0044_SERVICE0094,PDBTESTE0044_SERVICE0144,PDBTESTE0044_SERVICE0194,PDBTESTE0044_SERVICE0244,PDBTESTE0045_SERVICE0045,PDBTESTE0045_SERVICE0095,PDBTESTE0045_SERVICE0145,PDBTESTE0045_SERVICE0195,PDBTESTE0045_SERVICE0245,PDBTESTE0046_SERVICE0046,PDBTESTE0046_SERVICE0096,PDBTESTE0046_SERVICE0146,PDBTESTE0046_SERVICE0196,PDBTESTE0046_SERVICE0246,PDBTESTE0047_SERVICE0047,PDBTESTE0047_SERVICE0097,PDBTESTE0047_SERVICE0147,PDBTESTE0047_SERVICE0197,PDBTESTE0047_SERVICE0247,PDBTESTE0048_SERVICE0048,PDBTESTE0048_SERVICE0098,PDBTESTE0048_SERVICE0148,PDBTESTE0048_SERVICE0198,PDBTESTE0048_SERVICE0248,PDBTESTE0049_SERVICE0049,PDBTESTE0049_SERVICE0099,PDBTESTE0049_SERVICE0149,PDBTESTE0049_SERVICE0199,PDBTESTE0049_SERVICE0249,PDBTESTE0050_SERVICE0050,PDBTESTE0050_SERVICE0100,PDBTESTE0050_SERVICE0150,PDBTESTE0050_SERVICE0200,PDBTESTE0050_SERVICE0250
Type: RAC
Start concurrency:
Stop concurrency:
OSDBA group: dba
OSOPER group: oper
Database instances: ORCL1,ORCL2,orcl3,orcl4
Configured nodes: nerv05,nerv06,nerv08,nerv07
CSS critical: no
CPU count: 0
Memory target: 0
Maximum memory: 0
Default network number for database services:
Database is administrator managed
[oracle@nerv05 ~]$

Ao tentar iniciar os Services, recebo este erro.

Ao procurar por ele, o que encontramos?

Agradeço ao amigo Franky Weber que me falou a respeito desta limitação, que só acreditei vendo.

4 comments

  1. E aí Portilho!
    Achei interessante esse post e fui ver com mais atenção. Pra mim o erro não parece estar relacionado ao tamanho da string ou quantidade de services, mas sim ao limite de runtime load balanced services….
    Olhando pro seu “srvctl add service” dá pra ver que você cria o service como runtime load balanced (-rlbgoal service_time). Você chegou a testar esse mesmo cenário sem colocar esse limite (usando o default que é NONE)?

    Tenho a impressão que o limite seria 120 serviços em runtime balanced, até gastei uns mins procurando mas achei essa info em lugar algum…

    De qualquer modo, runtime load balanced é considerado deprecado desde o 11.2, sendo substituído pelo Universal Connection Pool (UCP) pra JDBC. Como sabemos, deprecado continua funcionando, mas não é mais considerado para novas features e improvements (como colunas long, que ainda funcionam mas o Data Pump que é posterior ao deprecation não considera mais)…

    Então, baseado no erro, ele me parece estar relacionado a uma feature que já é deprecada mesmo, logo não seria um problema…

    Agora se vc testar o serviço sem o runtime balanced e der o mesmo, aí é outra história… 🙂

    Aliás, algo que pode ser um problema é a Oracle continuar incluíndo o runtime based nas documentações depois da da deprecação dele (achei docs do 12.1, 12.2), talvez isso pode gerar confusão mesmo…
    Achei a info sobre deprecação aqui: https://docs.oracle.com/cd/E11882_01/java.112/e16548/rlb.htm#JJDBC28747

  2. Oi Matheus.
    Muito obrigado pela informação.
    Sim, o erro só acontece com RLB, e o erro pelo menos nos ajuda nesta indicação.
    Em conversas do Franky Weber com Abil Nair e Mike Dietrich (parece que foram conversas informais, posso estar sendo leviano aqui), ambos levantaram a possibilidade de ser um limite de string E ao RLB. Mas como não encontramos nada nada no MOS, ficamos apenas na especulação, teríamos que testar.
    Mas como o RLB é Deprecated (caramba, não sabia disso, uso até hoje em 19c perfeitamente, e o srvctl add service não me deu nenhuma pista a respeito…), não posso reclamar. E eu testei, sem o RLB este problema realmente não acontece.

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.