ÁP DỤNG RMAN ORACLE DATABASE TRONG THỰC TẾ

1. RMAN là gì ?

RMAN (Recovery Manager) là một công cụ sao lưu và khôi phục dữ liệu được tích hợp sẵn trong hệ thống quản lý cơ sở dữ liệu Oracle. RMAN cho phép các DBA thực hiện các hoạt động backup, restore và recovery của cơ sở dữ liệu Oracle một cách hiệu quả.

Các tính năng của RMAN bao gồm sao lưu toàn bộ hoặc phần cơ sở dữ liệu, khôi phục từ các bản sao lưu trước đó, phục hồi các đối tượng cơ sở dữ liệu từ bản sao lưu, và kiểm tra tính toàn vẹn của bản sao lưu.

Để sử dụng RMAN, người dùng có thể kết nối vào RMAN bằng SQL*Plus hoặc bằng cách sử dụng một tệp lệnh hoặc một script được lưu trữ trong cơ sở dữ liệu RMAN. Các lệnh RMAN cơ bản bao gồm STARTUP, BACKUP, RESTORE và RECOVERY. RMAN cũng có thể được cấu hình thông qua các tham số cấu hình để điều chỉnh các hoạt động sao lưu và khôi phục.

Trong các hệ thống Oracle, RMAN là công cụ sao lưu và khôi phục dữ liệu được khuyến khích sử dụng để đảm bảo tính toàn vẹn và tin cậy của cơ sở dữ liệu.

Đoạn ở trên là chat GPT nó viết đấy. Cũng dễ hiểu mà đúng không.

2. SỬ DỤNG RMAN TRON THỰC TẾ ?

Mình tin chắc rằng khi mà tìm kiếm trong google các bạn luôn gặp những câu RMAN rất chung chung. Cái thực chất khi mà mình muốn tìm lệnh RMAN nào đó có thể backup ở một thư mục mình muốn thì gần như kiếm ít thấy. Nên là sau vài thời gian hỏi hang, tìm hiểu thì mình sẽ chốt các lệnh sau:

2.1 BACKUP FULL DATABASE trong một thư mục

CÚ PHÁP

BACKUP FULL DATABASE FORMAT '/mnt/bk/clonetoPROD/data/%T_%d_%f_db'

Sau chữ FORMAT sẽ là đường dẫn và tên file của backup RMAN

%T: Năm-Tháng-Ngày (Nên để ở đầu để dễ coi ngày backup của file)

%d: Tên SID của database

%f : ID tên file cố định ( có thể thay bằng option khác)

các options của file bạn có thể tham khảo trang sau để hiểu nhiều hơn tại đây

Tuy nhiên lệnh trên chỉ là một lệnh để hiểu về cách backup vào một thư mục

Còn trong dự án mình dùng thêm vài dòng để lấy đủ các thông tin cho 1 lần backup như sau

run {

BACKUP CURRENT CONTROLFILE FORMAT '/mnt/bk/clonetoPROD/data/control-%U';

BACKUP AS COMPRESSED BACKUPSET DATABASE FORMAT '/mnt/bk/clonetoPROD/data/%T_%d_%f_db' FILESPERSET 10 MAXSETSIZE 80G TAG BACKUP_FULL;

sql 'ALTER SYSTEM ARCHIVE LOG CURRENT';

BACKUP AS COMPRESSED BACKUPSET DEVICE TYPE DISK ARCHIVELOG ALL FORMAT '/mnt/bk/clonetoPROD/data/%T_%d_%u_%s_%U_arc' FILESPERSET 10 TAG ARCH;

backup spfile FORMAT '/mnt/bk/clonetoPROD/data/%T_%d_Spfile_%u';

}

Ở đoạn trên sẽ backup 4 loại file sau:

Backup datafile

Backup archivelog

Backup spfile

Backup controlfile

(Thông tin các file này để làm gì thì mình sẽ viết ở bài khác nhé.)

Đồng thời thêm COMPRESSED để nén các file lại cho nhẹ.

Thường lúc restore hay duplicate database mình sẽ chuẩn bị đầy đủ những file này để tránh tình trạng restore thì bị thiếu file.

2.2 KẾT HỢP BASH SCRIPT VỚI RMAN

Thông thường sẽ tạo 1 file .sh

Ở đây mình đặt là backup.sh

Nội dung

LOG_FOLDER=/var/log/ebs #có thể thay đổi

export LOG_FILE=$LOG_FOLDER/backup_rman_`date +%y%m%d`.log

rman target / cmdfile=/backup_full.rman log=$LOG_FILE

BOO=`grep "Recovery Manager complete." $LOG_FILE`

if [ -n "$BOO" ]

then

echo "Backup OK"

else

echo "Backup Failed"

fi

Đầu tiên là khai báo log file để khi chạy xong ta sẽ theo dõi được RMAN thực hiện có thành công hay không.

1 File tiếp đó là file rman. Như ở trên chỗ cmndfile=backup_full.rman

Nội dung là đoạn mà mình đã mô tả ở trên

run {

BACKUP CURRENT CONTROLFILE FORMAT '/mnt/bk/clonetoPROD/data/control-%U';

BACKUP AS COMPRESSED BACKUPSET DATABASE FORMAT '/mnt/bk/clonetoPROD/data/%T_%d_%f_db' FILESPERSET 10 MAXSETSIZE 80G TAG BACKUP_FULL;

sql 'ALTER SYSTEM ARCHIVE LOG CURRENT';

BACKUP AS COMPRESSED BACKUPSET DEVICE TYPE DISK ARCHIVELOG ALL FORMAT '/mnt/bk/clonetoPROD/data/%T_%d_%u_%s_%U_arc' FILESPERSET 10 TAG ARCH;

backup spfile FORMAT '/mnt/bk/clonetoPROD/data/%T_%d_Spfile_%u';

}

Tới đây bạn cũng hiểu rằng là khi ta chạy lệnh

sh /backup.sh thì file backup.sh sẽ execute file backup_full.rman để thực hiện backup của RMAN đồng thời ghi vào biến LOGFILE để ta theo dõi.

2.3. ỨNG DỤNG THÊM TỰ ĐỘNG HÓA VỚI CRONTAB

Crontab là một ứng dụng trong hệ điều hành Linux, cho phép người dùng lên kế hoạch và tự động hóa các tác vụ thường xuyên hoặc lặp lại theo khoảng thời gian cụ thể.

Thông thường cú pháp crontab sẽ hình sau:

Gõ crontab -l để liệt kê các job được lập lịch

Bạn có thể thấy 40 14 * * * – Chỗ này chính là thời gian, ở đây hiểu là cứ mỗi ngày vào lúc 14h40 thì sẽ dùng user oradev chạy file backup_rman.sh trong thư mục /opt/scripts.

Như vậy ta sẽ dùng crontab chạy lệnh hằng ngày vào khung giờ nhất định, thường thì mình ưu tiên buổi tối, và chạy lệnh backup.sh

Vì thế trình tự như sau

crontab (lập lịch) > run backup.sh > run backup_full.rman > view log

3. KẾT

Như vậy, ta đã đi qua một cách rất nhanh để sử dụng RMAN lập lịch backup hằng ngày, kiến thức ở đây cần có nền tảng linux và một chút oracle database nhất định, sẽ hơi khó với những ai mới bắt đầu, tuy nhiên bản thân mình nghĩ sẽ hữu ích cho những ai đang tìm kiếm vấn đề này. Nếu cảm thấy hay, và bổ ích thì comment cho mình biết nhé.

Blog: https://beatcomputer.com/

Youtube: https://www.youtube.com/channel/UCeLTZuOxo15vR-aEXbfWMUg

Leave a Reply

Your email address will not be published. Required fields are marked *