设置每个 PDB 的 CPU、内存、I/O 和存储上限
Oracle多租户命令
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;作用
通过 PDB 级参数限制一个 PDB 可从 CDB 使用多少 CPU、SGA/PGA、IOPS/MBPS 和总存储;防止"吵闹邻居"PDB 影响其他 PDB。
适用场景
在整合的 CDB 中、在同一 CDB 中运行不同 SLA 的应用时,或发现某个 PDB 耗尽整台服务器资源时。
注意
PDB 的 sga_target 必须小于 CDB 的 sga_target;过低的值会导致 ORA-04031 和性能问题。sga_min_size 的总和不能占满整个 CDB SGA。要使 PDB 中的 cpu_count 生效,CDB 中必须激活资源管理器计划。达到 MAXSIZE 时 PDB 会报 ORA-65114。