Задать для каждой PDB лимиты CPU, памяти, I/O и хранилища
OracleMultitenantКоманда
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 ограничивает, сколько CPU, SGA/PGA, IOPS/MBPS и общего хранилища PDB может использовать из ресурсов CDB; не даёт PDB-"шумным соседям" влиять на остальные.
Когда использовать
В консолидированных CDB, при размещении приложений с разными SLA в одной CDB или когда видно, что одна PDB исчерпывает весь сервер.
Внимание
sga_target PDB должен быть меньше sga_target CDB; слишком низкие значения вызывают ORA-04031 и проблемы производительности. Сумма sga_min_size не должна резервировать всю SGA CDB. Чтобы cpu_count в PDB действовал, в CDB должен быть активен план resource manager. При достижении MAXSIZE PDB получает ORA-65114.
Связанные материалы
- Создать новую PDB из PDB$SEED
- Клонировать PDB в пределах той же CDB (локальный / горячий клон)
- Клонировать PDB из другой CDB через DB link (удалённый клон)
- Отключить PDB (unplug) и подключить её к другой (или той же) CDB
- Открыть PDB и сохранить их открытыми при перезапусках CDB (SAVE STATE)
- Проверить, в каком контейнере вы находитесь, и запросить все PDB из root (CDB_ / CONTAINERS)