RMAN (Recovery Manager) là công cụ dùng để backup/restore database Oracle. Hầu hết các tác vụ liên quan đến việc sao lưu, phục hồi database đều dùng RMAN để thực hiện, vì đây là công cụ chuyên dụng và mạnh mẽ. Tất nhiên là ngoài RMAN ra ta cũng có thể dùng cách tự copy, export dữ liệu để backup… tuy nhiên dùng RMAN vẫn luôn đem lại những ưu điểm so với các cách khác.

 

Tương tự như các công cụ đi kèm khác, RMAN cũng nằm trong ORACLE_HOME/bin

 

 

Ta cần tìm hiểu 1 chút về các khái niệm. Sơ sơ ngắn gọn thôi. 

  • Backup: việc sao lưu 1 phần hay toàn bộ các đối tượng, tập tin liên quan đến database
  • Restore: việc khôi phục lại database từ bản backup
  • Recover: việc khôi phục database từ archived log, online redo log
  • Logical backup: là việc sao lưu các đối tượng trong database (table, schema…)
  • Physical backup: là việc sao lưu các tập tin database (datafile, controlfile, archived log…)
  • Online backup (hot backup): backup khi database đang hoạt động
  • Offline backup (cold backup): backup khi database không hoạt động

Thông thường các database lớn, database production sẽ cấu hình physical backup, các database ít quan trọng, database test hay cấu hình logical backup cho gọn nhẹ (vd export schema để backup trước khi test, có gì chỉ cần import lại). 

 

Các công việc liên quan đến backup/recovery thường là: 

  • Configuration: Cấu hình tham số
  • Scheduling: Đặt lịch backup chạy tự động
  • Monitoring: theo dõi việc backup, kiểm tra đảm bảo backup thành công
  • Testing: thử nghiệm recovery định kỳ để đảm bảo các bản backup hoạt động tốt
  • Restoration/Recovery: restore tạo database test, restore/recover khi có sự cố…

Logical backup

Việc backup logical ta hay thực hiện bằng Oracle Data Pump. Data Pump có thể export/import dữ liệu ở 4 mức: database, schema, table, tablespace. 

Phần này mình sẽ viết bên mục Data Pump. Ở đây chúng ta chủ yếu quan tâm đến RMAN thôi.

 

Physical backup

Physical backup là việc sao lưu các tập tin tạo thành database.

 

Offline backup (cold backup)

Offline backup là việc backup các tập tin khi database đã shutdown bình thường và ở trạng thái đồng bộ giữa các tập tin.

 

Các tập tin ta nên backup bao gồm:

  • Datafiles
  • Control files
  • Archived log files
  • Parameter file (pfile, spfile)
  • Password file
  • tnsnames.ora, listener.ora, sqlnet.ora

Redo log files hoạt động theo cơ chế xoay vòng, do đó không cần backup làm gì. Chỉ nên duplex ra nhiều log file trong mỗi group để phòng ngừa trường hợp hư hỏng.

 

Nếu database chạy ở noarchivelog mode, có thể dùng RMAN backup khi database đã shutdown và start lại ở trạng thái mount.

 

Nếu dùng cách thủ công, cold backup đòi hỏi phải shutdown database, thực hiện copy các tập tin, tốn công tốn thời gian, nên thực tế phương pháp này cũng không được đánh giá cao.

 

Online backup (hot backup)

Online backup là việc backup khi database đang chạy bình thường, đòi hỏi database phải chạy ở archivelog mode.

 

Khi backup online, ta có thể backup các tập tin sau:

  • Datafiles
  • Control files
  • Archived log files
  • Parameter file (spfile)

Các tập tin khác như password file, tnsnames.ora… ta vẫn phải tự backup.

 

Note
RMAN tự động backup control file và spfile khi toàn bộ database hoặc tablespace SYSTEM được backup

 

Lợi ích của online backup

  • Database không phải shutdown, vẫn hoạt động bình thường
  • Đảm bảo khả năng recover đến bất kỳ thời điểm nào mong muốn

RMAN

 Ta có thể gọi RMAN với option target dùng xác thực OS (/), nếu không có thể chỉ định chuỗi kết nối

 

 

Nếu chỉ gõ rman, vào trong ta sẽ phải tự connect

 

 

Mặc định RMAN sẽ dùng option nocatalog, là đọc thông tin backup từ control file. Nếu dùng catalog database ta phải trỏ tới

 

 

Ngoài ra còn nhiều tham số khác có thể dùng khi gọi RMAN: cmdfile, log, trace, debug…

 

Trong RMAN, có 2 loại lệnh:

  • Lệnh đơn: 1 lệnh chạy ngay sau dấu nhắc RMAN >
  • Lệnh job/Lệnh khối: nhóm nhiều lệnh lại chạy trong khối run {}. Nếu có lệnh bị lỗi -> cả khối lệnh bị ngừng. VD:

 

Có lệnh trong RMAN là lệnh đơn, hoặc chỉ chạy trong lệnh job, hoặc cả hai.

 

Có rất nhiều lệnh trong RMAN phục vụ cho hoạt động sao lưu/khôi phục database. Chúng ta sẽ cùng tìm hiểu dần qua các bài tiếp theo.