8 bước sao lưu hot-backup Oracle Database bằng User-managed Backup

8 bước sao lưu hot-backup Oracle Database bằng User-managed Backup

Khi sử dụng RMAN, hẳn nhiên quá trình sao lưu là Hot-backup (hay Online-backup). Nhưng vì lý do nào đó không thể sử dụng RMAN mà phải sao lưu bằng hình thức User-managed Backup, bạn vẫn có thể tiến hành Hot backup bằng cách chuyển Database sang Backup Mode và sử dụng chức năng COPY của HĐH để sao lưu các Data File.

Yêu cầu bắt buộc để có thể sao lưu Hot-backup là Database phải hoạt động ở Archivelog Mode. Quá trình Hot-backup được tiến hành theo 8 bước sau:

  1. Kiểm tra Database có đang hoạt động ở Archivelog Mode
  2. Xác định các Data File cần sao lưu
  3. Chuyển Database vào Backup Mode
  4. Sao lưu các Data File bằng công cụ của HĐH
  5. Thoát khỏi Backup Mode
  6. Tiến hành archive Redo Log đang active
  7. Sao lưu Control File
  8. Sao lưu các Archive Redo Log phát sinh trong quá trình sao lưu

1. Kiểm tra Database có đang hoạt động ở Archivelog Mode

Bạn sử dụng lệnh sau để kiểm tra xem Database có đang hoạt động ở Archivelog Mode:

SQL>ARCHIVE LOG LIST;

Nếu Database đang ở Archivelog Mode, kết quả sẽ như bên dưới:

Database log mode Archive Mode
Automatic archival Enabled
Archive destination D:\Oracle\ArchiveLog

Hoặc bạn cũng có thể sử dụng view V$DATABASE để kiểm tra Archivelog Mode:

SQL> SELECT LOG_MODE FROM V$DATABASE;

Nếu Database đang ở Noarchivelog Mode, bạn chuyển sang Archivelog Mode bằng lệnh sau:

SQL> ALTER DATABASE ARCHIVELOG;

2. Xác định các Data File cần sao lưu

Để xác đường dẫn các Data File trong Database, bạn truy xuất view V$DATAFILE:

SQL> SELECT NAME FROM V$DATAFILE;

Nếu tiến hành sao lưu từng Tablespace, bạn dùng lệnh sau để xác định các Data File của mỗi Tablespace:

SQL> SELECT TABLESPACE_NAME, FILE_NAME FROM V$DBA_DATA_FILES;

3. Chuyển Database sang Backup Mode

Việc chuyển Database sang Backup Mode là thao tác cực kỳ quan trọng trước khi tiến hành thao tác COPY các Data File. Bạn tiến hành thao tác này bằng lệnh sau:

SQL> ALTER DATABASE BEGIN BACKUP;

Lệnh trên chuyển tất cả Tablespace của Database sang Backup Mode. Nếu tiến hành sao lưu với từng Tablespace, bạn chuyển Tablespace sang Backup Mode bằng lệnh sau:

SQL> ALTER TABLESPACE <TABLESPACE_NAME> BEGIN BACKUP;
Lưu ý: Hẳn nhiên, khi không chuyển Database sang Backup Mode thì bạn vẫn có thể sao chép các Data File đứng trên phương diện HĐH (). Tuy nhiên, vì kích thước block dữ liệu trong Oracle thường khác với block của HĐH (Windows, Linux), nên nếu trong quá trình HĐH sao chép Data File mà Data File lại được cập nhật bởi DBWR của Oracle sẽ dẫn đến tình huống dữ liệu trong bản sao lưu Data File bị tình trạng không nhất quán (split-block issue). Nếu Database được chuyển sang Backup Mode, tình trạng split-block issue này vẫn xảy ra nhưng Oracle tiến hành thêm một bước để đảm bảo sau này có thể phục hồi. Cụ thể, mỗi khi có thao tác thay đổi lên block, Oracle sẽ sao chép toàn bộ block đó sang Redo Log trước khi tiến hành tiến hành thay đổi. Đến khi phục hồi, Oracle sẽ phục hồi block gốc này (block trước khi cập nhật) từ Archive Redo Log vào Data File trước khi apply các change vector từ Archive Redo Log.

4. Sao lưu các Data File bằng chức năng COPY của HĐH

Bạn sử dụng chức năng COPY của HĐH (xcopy trong Windows, cp trong Linux/UNIX) để sao chép các Data File vào vùng sao lưu.

Với Windows, bạn dùng lệnh XCOPY (hoặc Copy-Paste trong Windows Explorer):

C:\xcopy C:\Oracle\Oradata\TestDB\*.dbf D:\OracleBackup\TestDB

Với Linux/UNIX, bạn dùng lệnh cp:

$ cp /u01/dbfile/testdb/*.dbf /u01/backupdata/testdb

5. Thoát khỏi Backup Mode

Sau khi các Data File được sao chép xong, bạn thoát khỏi Backup Mode bằng lệnh sau:

SQL> ALTER DATABASE END BACKUP;

Với Tablespace, bạn dùng lệnh:

SQL> ALTER TABLESPACE <TABLESPACE_NAME> END BACKUP;

6. Tiến hành archive Redo Log đang active

Trong quá trình sao lưu, ngoài các change vector còn có các block bị thay đổi được ghi vào Redo Log (Current). Để đảm bảo tất cả Redo Log đều được archive trước khi tiến hành sao lưu các Archive Redo Log (bước 8), bạn dùng lệnh sau để tiến hành thao tác archive:

SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

7. Sao lưu Control File

Với Hot Backup, bạn không thể dùng chức năng COPY của HĐH để sao lưu Control File. Thay vào đó, bạn phải sử dụng lệnh ALTER DATABASE BACKUP CONTROLFILE để sao lưu.

SQL> ALTER DATABASE BACKUP CONTROLFILE TO ‘D:\OracleBackup\ControlBk.ctl’ REUSE;

Thêm tùy chọn REUSE để Oracle tự ghi đè nếu file ControlBk.ctl đã có sẵn.

8. Sao lưu các Archive Log phát sinh trong quá trình sao lưu

Bước cuối cùng, bạn sử dụng chức năng COPY của HĐH để sao lưu các Archive Redo Log phát sinh trong quá trình sao lưu. Bước này giúp bạn có đầy đủ các dữ liệu cần thiết để khôi phục Database.