DBAtlas · Atlas d'exploitation des bases de données

Définir des limites de CPU, mémoire, E/S et stockage par PDB

OracleMultitenant

Commande

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;

Ce que fait la commande

Limite, via des paramètres au niveau PDB, la part de CPU, SGA/PGA, IOPS/MBPS et de stockage total de la CDB qu'une PDB peut utiliser ; empêche les PDB "voisines bruyantes" d'affecter les autres.

Quand l'utiliser

Dans les CDB consolidées, lorsque des applications ayant des SLA différents tournent dans la même CDB, ou lorsqu'on constate qu'une PDB épuise tout le serveur.

Attention

Le sga_target de la PDB doit être inférieur au sga_target de la CDB ; des valeurs trop basses provoquent des ORA-04031 et des problèmes de performances. La somme des sga_min_size ne doit pas réserver toute la SGA de la CDB. Pour que cpu_count soit effectif dans une PDB, un plan resource manager doit être actif dans la CDB. Lorsque MAXSIZE est atteint, la PDB reçoit ORA-65114.

Ouvrir dans DBAtlas →

Voir aussi