Nhập lược đồ vào không gian bảng mới hoặc khác


13

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.


Được xuất khẩu bằng exptiện ích cũ hay với expdp(bơm dữ liệu)?
Philᵀᴹ

Trong ví dụ này, nó được xuất với tiện ích exp thông thường, như được hiển thị ở trên. Tôi cho rằng một người có thể dễ dàng sử dụng expdp và lấy tệp từ máy chủ db cũ, điều đó có giúp việc chuyển sang không gian bảng mới dễ dàng hơn không?
Roy

Tôi đã bao gồm cả hai trong câu trả lời của tôi. Sử dụng máy bơm dữ liệu - thực hiện nhiệm vụ này dễ dàng hơn
Phil

Câu trả lời:


15

Thật sự không thể chỉ định một vùng bảng khác nhau khi nhập bằng imptiện ích oracle . Tuy nhiên, như một cách giải quyết, bạn có thể tạo trước các bảng bằng cách ROWS=Nnhập vào vùng USERSbảng, sau đó alter table mytable move tablespace BLOG_DATA;cho mỗi bảng để di chuyển chúng sang không gian bảng mới, sau đó thực hiện nhập lại với IGNORE=Ytham số để bỏ qua lỗi tạo bảng và nhập tất cả của dữ liệu.

Nếu dữ liệu được xuất bằng Data Pump ( expdp), (như một bên, mọi người nên sử dụng điều này trong những ngày này, thay vì di sản exp/ imptiện ích cũ ), bạn có thể dễ dàng nhập vào một vùng bảng khác bằng REMAP_TABLESPACEtham số.

ví dụ:

impdp scott/tiger@ZOMG file=blog_data.dmp directory=mydir remap_tablespace=USERS:BLOG_DATA

Cảm ơn bạn rất nhiều, Phil. Tôi đã tự hỏi: Nếu người dùng được nhập vào độc quyền có một hạn ngạch trên không gian bảng mặc định, điều đó có buộc imp đặt tất cả các đối tượng được nhập trong không gian bảng mặc định đó bất kể bố cục trên nguồn dữ liệu không?
Roy

Tôi đang làm việc trên một cái gì đó tương tự nhưng đó là toàn bộ quá trình di chuyển DB sử dụng expdp / impdp vì tôi muốn QA env của chúng tôi khớp với sản xuất. Nếu tôi sử dụng không gian remap_tables, nó sẽ ánh xạ lại mọi lược đồ vào một vùng bảng khác, tuy nhiên tôi nghĩ rằng tôi có thể chạy lệnh impdp một lần cho mỗi lược đồ và sử dụng không gian remap_tables. Điều này sẽ đạt được công việc.
Nicolas de Fontenay

0

Bạn nên làm theo các bước như được đề cập dưới đây: -

  • Xuất khẩu người dùng
  • Thực hiện nhập bằng lệnh
    imp system/manager file=export.dmp indexfile=newfile.sql
    Điều này sẽ nhập dữ liệu và lưu tất cả các định nghĩa vào newfile.sql.
  • Thả đồ vật cần thiết.
  • Chạy tập lệnh newfile.sqlsau khi thay đổi không gian bảng.
  • Nhập từ bản sao lưu cho các đối tượng cần thiết.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.