Apakah ada cara yang nyaman untuk mengimpor skema ke Oracle 11gR2 menggunakan tablespace baru atau berbeda dari tempat data berasal?
Sebagai contoh, saya telah mengekspor BLOG_DATA dari OLDDB, tempat semua data pengguna disimpan dalam tablespace USERS.
Pada NEWDB, saya ingin mengimpor skema BLOG_DATA, tetapi menyimpan objek pengguna di tablespace BLOG_DATA, yang dibuat khusus untuk pengguna ini.
Saya telah membuat pengguna BLOG_DATA, membuat tablespace BLOG_DATA dan menetapkannya sebagai tablespace default untuk pengguna itu dan menambahkan kuota tak terbatas yang sesuai.
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
Skema diekspor dari OLDDB dengan sesuatu seperti
exp blog_data/secretpassword@OLDDB file=blog_data.dmp
Setelah membaca jawaban Phil yang luar biasa di bawah ini, saya mendapati diri saya bertanya-tanya :
Karena data tidak memiliki tempat lain untuk pergi daripada tablespace default - satu-satunya tablespace pengguna memiliki kuota aktif - akankah ini secara efektif memaksa imp untuk meletakkan semua objek pengguna di tablespace default itu?
imp blog_data/secretpassword@NEWDB file=blog_data.dmp
Apakah ini kemudian menempatkan seluruh skema blog_data di tablespace blog_data di NEWDB? Apakah ada alasan mengapa ini tidak berhasil atau saya akan mengalami masalah dengan objek tertentu dll?
memperbarui:
Saya melakukan tes cepat dan menemukan ini menjadi masalahnya. Impmenempatkan objek di tablespace default untuk pengguna itu, asalkan tidak bisa menempatkannya di tablespace asli (mis. tablespace tidak ada). Penjelasan lengkap: http://www.dolicapax.org/?p=57
Namun, saya kira menggunakan Data Pump seperti Phil menyarankan mungkin menjadi pilihan yang lebih disukai.
exputilitas lama atau denganexpdp(pompa data)?