Có cách nào thuận tiện để nhập lược đồ vào Oracle 11gR2 bằng cách sử dụng một không gian bảng mới hoặc khác với nơi dữ liệu bắt nguồn không?
Ví dụ, tôi đã xuất BLOG_DATA từ OLDDB, nơi tất cả dữ liệu người dùng được lưu trữ trong không gian bảng USERS.
Trên NEWDB, tôi muốn nhập lược đồ BLOG_DATA, nhưng lưu trữ các đối tượng người dùng trong không gian bảng BLOG_DATA, được tạo riêng cho người dùng này.
Tôi đã tạo người dùng BLOG_DATA, tạo không gian bảng BLOG_DATA và đặt nó làm không gian bảng mặc định cho người dùng đó và thêm một hạn ngạch không giới hạn thích hợp.
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
Lược đồ được xuất từ OLDDB với một cái gì đó như
exp blog_data/secretpassword@OLDDB file=blog_data.dmp
Sau khi đọc câu trả lời tuyệt vời của Phil dưới đây, tôi thấy mình tự hỏi :
Vì dữ liệu không có nơi nào khác ngoài không gian bảng mặc định - không gian bảng duy nhất mà người dùng có hạn ngạch - điều này có hiệu quả buộc imp đặt tất cả các đối tượng người dùng vào không gian bảng mặc định đó không?
imp blog_data/secretpassword@NEWDB file=blog_data.dmp
Điều này sau đó sẽ đặt toàn bộ lược đồ blog_data trong không gian bảng blog_data trên NEWDB? Có bất kỳ lý do tại sao điều này sẽ không hoạt động hoặc tôi sẽ gặp vấn đề với các đối tượng nhất định vv?
cập nhật:
Tôi đã làm một bài kiểm tra nhanh và thấy đây là trường hợp. Imp
đặt các đối tượng trong không gian bảng mặc định cho người dùng đó, miễn là nó không thể đặt nó trong không gian bảng ban đầu (ví dụ: không gian bảng không tồn tại). Giải thích đầy đủ: http://www.dolicapax.org/?p=57
Tuy nhiên, tôi cho rằng sử dụng Data Pump như Phil gợi ý có thể là lựa chọn ưu tiên.
exp
tiện ích cũ hay vớiexpdp
(bơm dữ liệu)?