Czy istnieje wygodny sposób na zaimportowanie schematu do Oracle 11gR2 przy użyciu jednego nowego lub innego obszaru tabel niż miejsce, z którego pochodzą dane?
Na przykład wyeksportowałem BLOG_DATA z OLDDB, gdzie wszystkie dane użytkownika są przechowywane w obszarze tabel USERS.
Na NEWDB chciałbym zaimportować schemat BLOG_DATA, ale przechowuj obiekty użytkownika w obszarze tabel BLOG_DATA, utworzonym specjalnie dla tego użytkownika.
Utworzyłem użytkownika BLOG_DATA, utworzyłem obszar tabel BLOG_DATA i ustawiłem go jako domyślny obszar tabel dla tego użytkownika i dodałem odpowiedni nieograniczony przydział.
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
Schemat został wyeksportowany z OLDDB za pomocą czegoś podobnego
exp blog_data/secretpassword@OLDDB file=blog_data.dmp
Po przeczytaniu poniżej doskonałej odpowiedzi Phila zastanawiałem się :
Ponieważ dane nie mają innego miejsca niż domyślny obszar tabel - jedyny obszar tabel, na który użytkownik ma przydział - czy to skutecznie zmusi impa do umieszczenia wszystkich obiektów użytkownika w tym domyślnym obszarze tabel?
imp blog_data/secretpassword@NEWDB file=blog_data.dmp
Czy wówczas umieściłby cały schemat blog_data w obszarze tabel blog_data na NEWDB? Czy jest jakiś powód, dla którego to nie działałoby lub że miałem problemy z niektórymi obiektami itp.?
aktualizacja:
Zrobiłem szybki test i okazało się, że tak jest. Imp
umieszcza obiekty w domyślnym obszarze tabel dla tego użytkownika, pod warunkiem, że nie może go umieścić w oryginalnym obszarze tabel (np. obszar tabel nie istnieje). Pełne wyjaśnienie: http://www.dolicapax.org/?p=57
Przypuszczam jednak, że używanie Data Pump jak sugeruje Phil może być preferowaną opcją.
exp
narzędzia lub zexpdp
(pompą danych)?