Definir limites de CPU, memória, I/O e storage por PDB
OracleMultitenantComando
ALTER SESSION SET CONTAINER = <pdb>;
-- CPU (instance caging with Resource Manager; at PDB level in 19c):
ALTER SYSTEM SET cpu_count = 2 SCOPE = BOTH;
-- Memory (sga_min_size guarantee, sga_target upper limit):
ALTER SYSTEM SET sga_target = 512M SCOPE = BOTH;
ALTER SYSTEM SET sga_min_size = 96M SCOPE = BOTH;
ALTER SYSTEM SET pga_aggregate_limit = 2G SCOPE = BOTH;
-- I/O (non-Exadata):
ALTER SYSTEM SET max_iops = 5000 SCOPE = BOTH;
ALTER SYSTEM SET max_mbps = 200 SCOPE = BOTH;
-- Number of sessions (after the PDB is reopened):
ALTER SYSTEM SET sessions = 200 SCOPE = SPFILE;
-- Storage:
ALTER PLUGGABLE DATABASE STORAGE (MAXSIZE 10G MAX_SHARED_TEMP_SIZE 2G);
-- Settings across all PDBs, from the root:
ALTER SESSION SET CONTAINER = CDB$ROOT;
SELECT p.name AS pdb, sp.name, sp.value
FROM v$system_parameter sp JOIN v$pdbs p ON p.con_id = sp.con_id
WHERE sp.name IN ('cpu_count','sga_target','sga_min_size','max_iops','max_mbps','pga_aggregate_limit')
ORDER BY p.name, sp.name;O que faz
Limita, por meio de parâmetros em nível de PDB, quanto de CPU, SGA/PGA, IOPS/MBPS e storage total um PDB pode usar do CDB; impede que PDBs "vizinhos barulhentos" afetem os demais.
Quando usar
Em CDBs consolidados, ao rodar aplicações com SLAs diferentes no mesmo CDB ou quando se vê um PDB esgotar o servidor inteiro.
Atenção
O sga_target do PDB deve ser menor que o sga_target do CDB; valores baixos demais causam ORA-04031 e problemas de desempenho. A soma de sga_min_size não deve reservar toda a SGA do CDB. Para que cpu_count em um PDB tenha efeito, um plano do resource manager deve estar ativo no CDB. Ao atingir MAXSIZE o PDB recebe ORA-65114.
Relacionados
- Criar um novo PDB a partir do PDB$SEED
- Clonar um PDB no mesmo CDB (local / hot clone)
- Clonar um PDB de outro CDB via DB link (remote clone)
- Fazer unplug de um PDB e plug em outro (ou no mesmo) CDB
- Abrir PDBs e mantê-los abertos após restarts do CDB (SAVE STATE)
- Confirmar em qual container você está e consultar todos os PDBs a partir do root (CDB_ / CONTAINERS)