openplanning

Import và Export cơ sở dữ liệu Oracle

Nhóm phát triển của chúng tôi vừa ra mắt website langlearning.net học tiếng Anh, Nga, Đức, Pháp, Việt, Trung, Hàn, Nhật, ... miễn phí cho tất cả mọi người.
Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất.
Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi.
Hãy theo dõi chúng tôi trên Fanpage để nhận được thông báo mỗi khi có bài viết mới. Facebook

1- Import và Export trong Oracle 11g

Bắt đầu từ Oracle 11 trở đi Oracle sử dụng một cú pháp khác so với Oracle phiên bản trước để import export dữ liệu. Về cơ bản có 2 cách thức để import/export:
  1. Import/Export một vài bảng của CHEMA.
  2. Import/Export toàn bộ SCHEMA (Bao gồm tất cả các đối tượng: table, view, function,...)

1.1- Import/Export SCHEMA (11g)

Trước hết bạn cần phải định nghĩa ra một DBA Directory (Thư mục DBA, Tạm hiểu là thư mục quản trị DB) nó gắn với một đường dẫn thực trên ổ cứng của bạn. Thực tế bạn chỉ cần khai báo một lần và có thể sử dụng trong các lần về sau.
Chẳng hạn tôi định nghĩa ra một DBA Directory (Thư mục DBA) có tên MY_BACKUP_DIR gắn vào thư mục C:/oraclebackup
Login vào SQL Plus sử dụng user system:

-- Tạo một thư DBA có tên MY_BACKUP_DIR gắn vào thư mục thực trên ổ cứng
-- Phải đảm bảo rằng C:/oraclebackup là tồn tại.

create directory MY_BACKUP_DIR AS 'C:/oraclebackup';
DBA Directory vừa tạo ra bởi user system. Chỉ có các user có quyền DBA mới có thể sử dụng nó. Bạn cũng có thể gán quyền sử dụng DBA Directory này cho các user khác.

-- Bạn có thể gán quyền sử dụng thư mục này cho một user nào đó.

grant read,write on directory MY_BACKUP_DIR to Some_User;
Bạn cũng có thể truy vấn để xem danh sách các DBA Directory đã được tạo trước đó và những cái đã có sẵn trong Oracle.

-- Truy vấn tất cả các thư mục DBA có trong Oracle
-- bằng cách truy vấn view DBA_DIRECTORIES.

Select Directory_Name,Directory_Path From Dba_Directories;
Kết quả:

1.1.1- Expdp

Sử dụng expdp để export toàn bộ một SCHEMA ra file dump.
Để export bạn cần mở CMDCD tới thư mục BIN của Oracle.


cd C:\DevPrograms\db11g\product\11.2.0\dbhome_1\BIN

@rem Dump ra file learningsql.dmp vào thư mục MY_BACKUP_DIR
@rem Thư mục DBA: MY_BACKUP_DIR đã tạo ở bước trên.
@rem SCHEMA export ra là learningsql


expdp system/admin DIRECTORY=MY_BACKUP_DIR DUMPFILE= learningsql.dmp SCHEMAS=learningsql LOGFILE=learningsql.log
Kết quả:
Chú ý: Bạn có thể export nhiều Schema một lúc ra 1 file dump. Ví dụ:


expdp system/admin DIRECTORY=MY_BACKUP_DIR DUMPFILE= multi.dmp SCHEMAS=learningsql,simplehr LOGFILE= multi.log

1.1.2- Impdp

Trước hết bạn cần tạo user learningsql2. Login vào SQL Plus:
Thực thi câu lệnh tạo user:

-- User: learningsql2
-- Password: 1234

create user learningsql2 identified by 1234;
Về bản chất bạn vừa tạo ra một SCHEMA rỗng.
Tiếp theo chúng ta sẽ import từ file dump vào Schema vừa tạo ra. Thực tế trong một file dump có thể có một hoặc nhiều SCHEMA. Khi bạn import file dump vào một Schema cụ thể, bạn cần phải chỉ rõ SCHEMA nguồn trong file dump, và SCHEMA đích.
Chú ý rằng  trong ORACLE tên của SCHEMA cũng chính là tên của User.
Mở CMD và CD vào thư mục bin của Oracle:


cd C:\DevPrograms\db11g\product\11.2.0\dbhome_1\BIN
Thực thi lệnh impdp:


impdp system/admin DIRECTORY=MY_BACKUP_DIR DUMPFILE=learningsql.DMP REMAP_SCHEMA=learningsql:learingsql2 LOGFILE=learningsql_imp.log
Giải thích:
  • Import từ file learningsql.DMP
  • Từ Schema nguồn: learningsql (Trong file dump)
  • Tới Schema đích: learningsql2
Chú ý: Bạn có thể không cần tạo trước user learningsql2, câu lệnh impdb sẽ tự tạo ra user đó, nhưng password không xác định, bạn cần phải đặt lại password.
Kết quả chạy thành công: