Проверить, в каком контейнере вы находитесь, и запросить все PDB из root (CDB_ / CONTAINERS)
OracleMultitenantКоманда
-- Current container:
SHOW CON_NAME
SHOW CON_ID
SHOW PDBS
SELECT SYS_CONTEXT('USERENV','CON_NAME') AS con_name,
SYS_CONTEXT('USERENV','CON_ID') AS con_id
FROM dual;
-- All containers, from the root:
SELECT con_id, name, open_mode FROM v$containers ORDER BY con_id;
-- CDB_ views combine all open PDBs with CON_ID:
SELECT c.name AS container, t.tablespace_name, t.status
FROM cdb_tablespaces t JOIN v$containers c ON c.con_id = t.con_id
ORDER BY c.name, t.tablespace_name;
-- Query any table/view across all PDBs with CONTAINERS():
SELECT con_id, COUNT(*) AS users
FROM CONTAINERS(dba_users)
GROUP BY con_id ORDER BY con_id;Что делает
Показывает контейнер, к которому подключена сессия; из root представления CDB_ и конструкция CONTAINERS() собирают информацию словаря из всех открытых PDB одним запросом.
Когда использовать
Чтобы убедиться, что вы в нужном контейнере, перед DDL/изменением параметров, и чтобы составить инвентаризацию пространства, пользователей и объектов по всем PDB.
Внимание
Только чтение. Не создавайте случайно объекты приложений или локальных пользователей в root (CDB$ROOT); ALTER SYSTEM в root влияет на всю CDB. Представления CDB_ и CONTAINERS() возвращают только открытые PDB; PDB в состоянии MOUNTED в результат не попадают.
Связанные материалы
- Создать новую PDB из PDB$SEED
- Клонировать PDB в пределах той же CDB (локальный / горячий клон)
- Клонировать PDB из другой CDB через DB link (удалённый клон)
- Отключить PDB (unplug) и подключить её к другой (или той же) CDB
- Открыть PDB и сохранить их открытыми при перезапусках CDB (SAVE STATE)
- Задать для каждой PDB лимиты CPU, памяти, I/O и хранилища