- vừa được xem lúc

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

0 0 20

Người đăng: tu le minh

Theo Viblo Asia

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 TRONG 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é. Để biết thêm nhiều thứ hay thì vào kênh này xem nhé:

Blog: https://beatcomputer.com/

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

Bình luận

Bài viết tương tự

- vừa được xem lúc

Disable và Enable trigger trong Oracle

Origin post: https://www.tranthanhdeveloper.com/2020/12/disable-va-enable-trigger-trong-oracle.html.

0 0 41

- vừa được xem lúc

BPM Tutorial: Cách tích hợp Database trên nền tảng IBM BPM

Bài viết này hướng dẫn các bạn các thiết lập connection từ Database sẵn có với IBM BPM. Hiện nay IBM BPM hỗ trợ 3 loại DB là IBM Db2, Oracle, và Microsoft SQL Server DB.

0 0 52

- vừa được xem lúc

HOW TO FIND DUPLICATE VALUES IN SQL

Bài viết này xuất phát từ bài toán mà mình gặp rất nhiều trong quá trình test data. Bạn cần visualize lên các dashboard hay đơn giản cần export raw data để lấy dữ liệu chính xác.

0 0 45

- vừa được xem lúc

DATES FUNCTIONS IN SQL

Trong quá trình làm việc với data bạn sẽ cần dùng rất nhiều đến Date Functions. Bạn muốn tính con số Today, This weeks, This Month, Last month, MTD, YTD,.

0 0 54

- vừa được xem lúc

1 triệu bản ghi VARCHAR2(400) và VARCHAR2(2) có hiệu năng khác biệt ra sao - Thay đổi thứ tự các bảng khi JOIN có ảnh hưởng hiệu năng không?

Tại bài này, tôi sẽ giúp các bạn giải quyết "một lần và mãi mãi" những hiểu lầm kinh điển sau. .

0 0 48

- vừa được xem lúc

Thiết kế sai lầm trong Cơ sở dữ liệu và giải pháp cải thiện hơn 700% hiệu năng

Đây là những bài viết về các dự án & kinh nghiệm tối ưu cơ sở dữ liệu của tôi tại Wecommit. Những giá trị mà bạn sẽ nhận được.

0 0 24