Làm thế nào để truyền dữ liệu bằng lệnh expdp và impdp?


29

Tôi là một người mới của Oracle và ý định của tôi là chuyển tất cả dữ liệu và siêu dữ liệu từ một lược đồ này sang một lược đồ khác trong cơ sở dữ liệu của Oracle. Tôi đang dự định sử dụng datapump's expdpimpdpcác lệnh. Tôi có câu hỏi liên quan đến điều này:

  • Tôi có thể tạo lược đồ đích mà không cần người dùng hay tôi nên tạo người dùng trước (cũng tạo lược đồ)?
  • Tôi có thể thực thi expdpimpdpra lệnh bằng tài khoản SYS (dưới dạng sysdba) không? Đó có phải là một phương pháp ưa thích?
  • Câu lệnh này có lấy tất cả các đối tượng (dữ liệu và siêu dữ liệu) từ một lược đồ và di chuyển chúng vào một lược đồ khác không?

    expdp \"/ as sysdba\" schemas=<schemaname> directory=dumpdir dumpfile=<schemaname>.dmp logfile=expdp_<schemaname>.log  

    Vì vậy, lược đồ đích là bản sao chính xác của lược đồ nguồn sau impdplệnh?

Câu trả lời:


31

impdp sẽ tạo người dùng nếu nó chưa xuất hiện, vì vậy bạn không phải lo lắng về điều đó trừ khi đó không phải là điều bạn muốn.

Không chạy impdbhoặc expdpnhư sysdba, chỉ làm điều đó nếu hỗ trợ của Oracle yêu cầu nó trong các trường hợp cụ thể. Sử dụng một người dùng thông thường cho điều đó - dbaví dụ, một người đã được cấp vai trò. (Có các [IMPORT|EXPORT]_FULL_DATABASEđặc quyền dành riêng cho loại điều này, bạn cũng sẽ cần cấp quyền truy cập vào (các) đối tượng thư mục Oracle.)

Xuất khẩu lược đồ đầy đủ (siêu dữ liệu và nội dung) thực sự sẽ trông như sau:

expdp user/pass schemas=<schemaname> directory=dumpdir \
      dumpfile=<schemaname>.dmp \
      logfile=expdp_<schemaname>.log

Nếu bạn muốn nhập vào một người dùng / lược đồ khác (cơ sở dữ liệu đích có thể giống với nguồn), bạn có thể sử dụng:

impdp user/pass schemas=schema1 directory=dumpdir \
      remap_schema=schema1:schema2 \
      dumpfile=schema1.dmp \
      logfile=impdp_schema2.log

Nếu bạn không muốn nhập hoàn chỉnh, bạn có thể đặt một số bộ lọc cả về dữ liệu và siêu dữ liệu. Xem Lọc trong quá trình nhập .

Các Hướng dẫn Utilities có tất cả các chi tiết, tôi khuyên các bạn nên đọc ít nhất một phần tổng quan.


2

Để nhập các bảng bị cắt bớt, tức là bạn chỉ muốn dữ liệu được nhập trở lại bảng:

impdp user/pass TABLES=dept DIRECTORY=TEST_dir dumpfile=TEST.dmp logfile=expdpTEST.log TABLE_EXISTS_ACTION=REPLACE

Trên bảng của tôi là deptcái mà tôi muốn nhập khẩu. Tôi đã cắt nó sớm hơn. Từ dumpfile đó là TEST.dmp, và logfileđó là expdpTEST.logtôi muốn chỉ là dữ liệu được nhập khẩu (các cấu trúc bảng sẽ giống nhau vì vậy chúng tôi sử dụng tham số TABLE_EXISTS_ACTION).

Nếu bạn đã cắt ngắn 2 bảng, ví dụ empdeptempbảng có dept_idlà chìa khóa nước ngoài, sau đó bạn cần phải nhập khẩu các deptbảng đầu tiên và sau đó là empbàn đến sai sót tránh trong nhập khẩu.

thêm thông tin http://satya-dba.blogspot.in/2009/05/datapump.html

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.