Bir şemayı, verilerin kaynaklandığı yerden yeni veya farklı bir tablo alanı kullanarak Oracle 11gR2'ye aktarmanın uygun bir yolu var mı?
Örnek olarak, tüm kullanıcı verilerinin USERS tablo alanında saklandığı OLDDB'den BLOG_DATA verdim.
NEWDB'de, BLOG_DATA şemasını almak istiyorum, ancak kullanıcı nesnelerini, bu kullanıcı için özel olarak oluşturulan BLOG_DATA tablo alanında depolamak istiyorum.
BLOG_DATA kullanıcısı oluşturdum, BLOG_DATA tablo alanını oluşturdum ve bu kullanıcı için varsayılan tablo alanı olarak ayarladım ve uygun bir sınırsız kota ekledim.
CREATE TABLESPACE blog_data DATAFILE SIZE 1G;
CREATE USER blog_data IDENTIFIED BY secretpassword DEFAULT TABLESPACE blog_data QUOTA UNLIMITED ON blog_data;
GRANT connect,resource TO blog_data
Şema OLDDB'den aşağıdaki gibi bir şeyle dışa aktarıldı
exp blog_data/secretpassword@OLDDB file=blog_data.dmp
Phil'in aşağıdaki mükemmel cevabını okuduktan sonra kendimi merak ettim :
Verilerin varsayılan tablo alanından (kullanıcının kotasına sahip olduğu tek tablo alanı) başka bir yeri olmadığından, bu, imp'yi tüm kullanıcı nesnelerini varsayılan tablo alanına koymak için etkili bir şekilde zorlar mı?
imp blog_data/secretpassword@NEWDB file=blog_data.dmp
Bu daha sonra blog_data şemasının tamamını NEWDB'deki blog_data tablo alanına yerleştirir mi? Bunun işe yaramamasının ya da belirli nesnelerle vb. Sorunları yaşamanın bir nedeni var mı?
Güncelleme:
Hızlı bir test yaptım ve bunu böyle buldum. Imp
nesneleri orijinal tablo alanına yerleştiremediği takdirde, bu tablo için varsayılan tablo alanına yerleştirir (örn. tablo alanı mevcut değildir). Tam açıklama: http://www.dolicapax.org/?p=57
Yine de, Phil'in önerdiği gibi Data Pump kullanmanın tercih edilen seçenek olabileceğini düşünüyorum.
exp
yardımcı program kullanılarakexpdp
mı (veri pompası) kullanılarak dışa aktarıldı mı?