Mục lục
Bài viết này tôi thực hiện theo yêu cầu của 2 bạn Nguyen Trung và Maxo Mac trong nhóm “Kho tài liệu kiến thức Database”.
Bài toán đặt ra là: Giả sử database server bị hỏng hoàn toàn, nhưng thật may mắn chúng ta đã có trong tay bản backup và database đã cấu hình Archive log mode. Vậy các bước để khôi phục bản backup này lên 1 server mới như thế nào?
Hãy thực hiện cùng tôi nhé.
À trước khi đi vào các bước để restore database từ bản backup, chúng ta cần review lại quy trình backup xem có đủ điều kiện để khôi phục lại không đã.
1. Quy trình backup
Đây là một quy trình backup cơ bản mà tôi khuyến nghị. Nó vừa đủ để khôi phục lại dữ liệu tại thời điểm gần nhất, tuy nhiên tùy vào hoàn cảnh cụ thể, các bạn có thể đưa vào các tham số để tối ưu thời gian backup, hoặc tối ưu dung lượng lưu trữ backup.
1. Bước 1: Đặt chế độ autobackup cho control file và spfile
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON; new RMAN configuration parameters: CONFIGURE CONTROLFILE AUTOBACKUP ON; new RMAN configuration parameters are successfully stored
2. Bước 2: Backup full database
RMAN> backup as compressed backupset database;
Kết quả:
Starting backup at 12-JUL-21 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=62 device type=DISK channel ORA_DISK_1: starting compressed full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00001 name=/u01/app/oradata/PROD/datafile/o1_mf_system_jgqs2yvr_.dbf input datafile file number=00003 name=/u01/app/oradata/PROD/datafile/o1_mf_sysaux_jgqs4dg4_.dbf input datafile file number=00004 name=/u01/app/oradata/PROD/datafile/o1_mf_undotbs1_jgqs55l6_.dbf input datafile file number=00007 name=/u01/app/oradata/PROD/datafile/o1_mf_users_jgqs56np_.dbf channel ORA_DISK_1: starting piece 1 at 12-JUL-21 channel ORA_DISK_1: finished piece 1 at 12-JUL-21 piece handle=/u01/app/fra/PROD/backupset/2021_07_12/o1_mf_nnndf_TAG20210712T145640_jgqxfshr_.bkp tag=TAG20210712T145640 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:55 Finished backup at 12-JUL-21 Starting Control File and SPFILE Autobackup at 12-JUL-21 piece handle=/u01/app/fra/PROD/autobackup/2021_07_12/o1_mf_s_1077721056_jgqxhjz6_.bkp comment=NONE Finished Control File and SPFILE Autobackup at 12-JUL-21
Sau khi backup database xong, tôi sẽ có bản backup được lưu tại thư mục Fast Recovery Area với cấu trúc như sau:
3. Bước 3: Archiving current redo log
RMAN> sql 'alter system archive log current';
Kết quả:
using target database control file instead of recovery catalog sql statement: alter system archive log current
4. Bước 4: Backup archive log
RMAN> backup as compressed backupset archivelog all;
Starting backup at 12-JUL-21 current log archived using channel ORA_DISK_1 channel ORA_DISK_1: starting compressed archived log backup set channel ORA_DISK_1: specifying archived log(s) in backup set input archived log thread=1 sequence=1 RECID=1 STAMP=1077720688 input archived log thread=1 sequence=2 RECID=2 STAMP=1077721073 channel ORA_DISK_1: starting piece 1 at 12-JUL-21 channel ORA_DISK_1: finished piece 1 at 12-JUL-21 piece handle=/u01/app/fra/PROD/backupset/2021_07_12/o1_mf_annnn_TAG20210712T145753_jgqxj17g_.bkp tag=TAG20210712T145753 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07 Finished backup at 12-JUL-21 Starting Control File and SPFILE Autobackup at 12-JUL-21 piece handle=/u01/app/fra/PROD/autobackup/2021_07_12/o1_mf_s_1077721080_jgqxj8bg_.bkp comment=NONE Finished Control File and SPFILE Autobackup at 12-JUL-21
Các bạn có nhìn thấy đoạn cuối cùng không, sau mỗi lần backup, RMAN sẽ tự động backup cả control file và spfile vào trong thư mục autobackup nữa.
2. Quy trình Restore
1. Tạo cấu trúc thư mục giống với server cũ
mkdir -p /u01/app/oradata/PROD mkdir -p /u01/app/fra/PROD mkdir -p /u01/app/oracle/admin/prod/adump
2. Chuyển bản backup sang server mới
Bạn chuyển thư mục backupset và autobackup sang server mới và giải nén chúng ra
mv autobackup.tar backupset.tar /u01/app/fra/PROD/ cd /u01/app/fra/PROD/ tar -xvf autobackup.tar tar -xvf backupset.tar
3. Startup nomount với dummy spfile
export ORACLE_HOME=/u01/app/oracle/product/12.2/db_1 export ORACLE_SID=prod
$ rman target /
Recovery Manager: Release 12.2.0.1.0 - Production on Mon Jul 12 15:25:36 2021 Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved. connected to target database (not started) RMAN>
Sau đó bạn gõ lệnh startup nomount, Oracle sẽ khởi động một dummy instance (instance giả).
RMAN> startup nomount
Kết quả:
4. Restore spfile
Sau đó, chúng ta sẽ tiến hành khôi phục lại spfile từ bản autobackup
cd /u01/app/fra/PROD/autobackup/2021_07_12 restore spfile from '/u01/app/fra/PROD/autobackup/2021_07_12/o1_mf_s_1077721080_jgqxj8bg_.bkp';
Kết quả:
Starting restore at 12-JUL-21 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=37 device type=DISK channel ORA_DISK_1: restoring spfile from AUTOBACKUP /u01/app/fra/PROD/autobackup/2021_07_12/o1_mf_s_1077721080_jgqxj8bg_.bkp channel ORA_DISK_1: SPFILE restore from AUTOBACKUP complete Finished restore at 12-JUL-21
Sau khi restore spfile thành công, các bạn sẽ thấy 1 spfile xuất hiện trong $ORACLE_HOME/dbs/
Tôi restart lại instance để spfile mới được đọc.
RMAN> startup force nomount
5. Restore Controlfile
RMAN> restore controlfile from '/u01/app/fra/PROD/autobackup/2021_07_12/o1_mf_s_1077721080_jgqxj8bg_.bkp';
Sau khi restore control file thành công, tôi đưa database về trạng thái mount
RMAN> alter database mount;
Statement processed released channel: ORA_DISK_1
6. Restore database
Bạn gõ lệnh sau để restore database:
RMAN> restore database;
7. Recover database
Tiếp theo bạn tiến hành recover database theo các bước sau
Bạn kiểm tra lại archive log hoặc các bản backup của archive log xem sequence cuối cùng của nó là bao nhiêu.
RMAN> list backup of archivelog all;
Kết quả:
List of Backup Sets =================== BS Key Size Device Type Elapsed Time Completion Time ------- ---------- ----------- ------------ --------------- 5 44.94M DISK 00:00:06 12-JUL-21 BP Key: 7 Status: AVAILABLE Compressed: YES Tag: TAG20210712T160121 Piece Name: /u01/app/fra/PROD/backupset/2021_07_12/o1_mf_annnn_TAG20210712T160121_jgr171op_.bkp List of Archived Logs in backup set 5 Thrd Seq Low SCN Low Time Next SCN Next Time ---- ------- ---------- --------- ---------- --------- 1 1 1408558 12-JUL-21 1425948 12-JUL-21 1 2 1425948 12-JUL-21 1426176 12-JUL-21 1 3 1426176 12-JUL-21 1429548 12-JUL-21 1 4 1429548 12-JUL-21 1429567 12-JUL-21
Theo như kết quả bên trên, tôi có thể recover được dữ liệu cho đến hết sequence archive log thứ 4 của thread 1. Do đó tôi thực hiện câu lênh tiếp theo như sau để recover được tối đa dữ liệu
run { SET UNTIL SEQUENCE 5 THREAD 1; RECOVER DATABASE; }
Chú ý: SET UNTIL SEQUENCE=5 sẽ làm cho RMAN recover dữ liệu đến hết sequence 4 và dừng lại ở ngay sequence 5.
8. Open resetlogs
Và bước cuối cùng, tôi thực hiện open database với tùy chọn resetlogs (để bắt đầu 1 cuộc đời mới cho database)
RMAN> alter database open resetlogs;
Bạn có thể kiểm tra lại kết quả sau khi đã open resetlogs xong
Như vậy là tôi đã restore thành công 1 database sang server mới rồi đó. Nếu các bạn còn câu hỏi gì khác, có thể để lại comment dưới bài viết này hoặc trong group “Kho tài liệu kiến thức Database” nhé.
Nguồn: https://dangxuanduy.com/
Hiện tại, tôi có tổ chức đều đặn các khóa học về quản trị Oracle Database, tôi sẽ để thông tin ở đây, để bạn nào quan tâm về lịch học cũng như chương trình học có thể theo dõi nhé.
KHOÁ DÀNH CHO NGƯỜI MỚI
KHÓA HỌC: QUẢN TRỊ ORACLE DATABASE THẬT LÀ ĐƠN GIẢN (ADMIN 1)
CÁC KHOÁ NÂNG CAO:
KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ KIẾN TRÚC MULTITENANT 12c
KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ HỆ THỐNG DATA GUARD
CÁC KHOÁ COMBO:
COMBO 1: ADMIN 1 + MULTITENANT 12c
COMBO 3: ADMIN 1 + MULTITENANT 12c + DATA GUARD
LỊCH HỌC:
Mời bạn xem tại đây: LỊCH HỌC CÁC LỚP ORACLE
ĐĂNG KÝ:
https://forms.gle/MtCAoRQFenP886y79
Hãy tham gia group “Kho tài liệu kiến thức database” để cùng học hỏi và chia sẻ nhé.
mình thấy có bước Backup archive log, nhưng ko thấy restore nó nhỉ?
Oracle sẽ tự restore archive từ bản backup để recover bạn nhé
Nếu mình dùng lệnh Backup database; thì nó đã bao gồm Archive log chưa nhỉ?
Chưa đâu, bạn có thể backup archive log riêng như mình làm bên trên hoặc dùng lệnh backup database plus archivelog
RMAN> restore spfile from ‘ /u01/app/fra/CDB1.1/autobackup/2023_08_07/ o1_mf_s_1144245308_lf15bdfm_.bkp’ ;
Starting restore at 07-AUG-23
using channel ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 08/07/2023 15:10:55
RMAN-06564: must use the TO clause when the instance is started with SPFILE
lỗi này thì sửa thế nào vậy ạ