PDB'yi başka bir CDB'den DB link üzerinden klonla (remote clone)
OracleMultitenantKomut
-- 1) KAYNAK CDB'de ortak kullanici:
CREATE USER c##clone_user IDENTIFIED BY "<password>" CONTAINER = ALL;
GRANT CREATE SESSION, CREATE PLUGGABLE DATABASE TO c##clone_user CONTAINER = ALL;
-- 2) HEDEF CDB root'unda DB link ve test:
CREATE DATABASE LINK clone_link
CONNECT TO c##clone_user IDENTIFIED BY "<password>"
USING '//<source_host>:1521/<source_cdb_service>';
SELECT * FROM dual@clone_link;
-- 3) Klonla ve ac:
CREATE PLUGGABLE DATABASE <new_pdb> FROM <pdb>@clone_link
FILE_NAME_CONVERT = ('/<pdb>/', '/<new_pdb>/');
ALTER PLUGGABLE DATABASE <new_pdb> OPEN;
-- 4) Uyumsuzluklar (surum, opsiyon, parametre, patch):
SELECT name, cause, type, message
FROM pdb_plug_in_violations
WHERE name = UPPER('<new_pdb>') AND status <> 'RESOLVED';Ne yapar?
Kaynak CDB'deki bir PDB'yi DB link üzerinden ağ ile hedef CDB'ye kopyalar; ara dosya veya unplug gerekmez.
Ne zaman kullanılır?
PDB'yi başka sunucuya/CDB'ye taşımak, üretimden ayrı sunucuda test kopyası oluşturmak veya daha yeni sürümlü CDB'ye geçmek için.
Dikkat
Kaynak ve hedef CDB'nin endian'ı, karakter seti (veya hedef AL32UTF8) ve opsiyonları uyumlu olmalı; daha yeni sürüme klonlanan PDB ilk açılışta RESTRICTED olur ve datapatch/upgrade gerekir. Klon bitince DB link'i ve ortak kullanıcıyı kaldır. Hot clone için kaynakta local undo + ARCHIVELOG gerekir.
İlgili
- PDB$SEED'den yeni PDB oluştur
- PDB'yi aynı CDB içinde klonla (local / hot 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
- Hangi container'da olduğunu doğrula ve tüm PDB'leri root'tan sorgula (CDB_ / CONTAINERS)