Hangi container'da olduğunu doğrula ve tüm PDB'leri root'tan sorgula (CDB_ / CONTAINERS)
OracleMultitenantKomut
-- Su anki 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;
-- Root'tan tum container'lar:
SELECT con_id, name, open_mode FROM v$containers ORDER BY con_id;
-- CDB_ gorunumleri acik tum PDB'leri CON_ID ile birlestirir:
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;
-- CONTAINERS() ile herhangi bir tablo/view'u tum PDB'lerde sorgula:
SELECT con_id, COUNT(*) AS users
FROM CONTAINERS(dba_users)
GROUP BY con_id ORDER BY con_id;Ne yapar?
Oturumun bağlı olduğu container'ı gösterir; root'tan CDB_ view'ları ve CONTAINERS() ifadesiyle tüm açık PDB'lerdeki sözlük bilgisini tek sorguda toplar.
Ne zaman kullanılır?
DDL/parametre değişikliğinden önce doğru container'da olduğundan emin olmak ve tüm PDB'ler için alan, kullanıcı, nesne envanteri çıkarmak için.
Dikkat
Salt okunurdur. Root'ta (CDB$ROOT) yanlışlıkla uygulama nesnesi veya yerel kullanıcı oluşturma; ALTER SYSTEM root'ta tüm CDB'yi etkiler. CDB_ ve CONTAINERS() yalnız açık PDB'leri döndürür; MOUNTED PDB'ler sonuçta görünmez.
İlgili
- PDB$SEED'den yeni PDB oluştur
- PDB'yi aynı CDB içinde klonla (local / hot clone)
- PDB'yi başka bir CDB'den DB link üzerinden klonla (remote clone)
- PDB'yi unplug et ve başka (veya aynı) CDB'ye plug et
- PDB'leri aç ve CDB yeniden başlatıldığında açık kalmasını sağla (SAVE STATE)
- PDB başına CPU, bellek, I/O ve depolama sınırı koy