Có thể thực hiện phục hồi hồn tồn tồn bộ CSDL khi mất một số hoặc tất cả các tập tin dữ liệu. Trước khi phục hồi CSDL phải khôi phục các tập tin sao lưu. Sau đó cần áp dụng tất cả các log lưu trữ vào CSDL.
Dùng RMAN
Giả sử tất cả các tập tin dữ liệu trong CSDL khơng truy xuất được vì phương tiện hoạt động sai chức năng. Khi đó với các redo log đã lưu trữ ta có thể khơi phục các sao lưu và thực hiện phục hồi hồn tồn mà khơng bị mất dữ liệu. Để phục hồi toàn bộ CSDL, trước hết ta gán CSDL, như liệt kê dưới đây, như thế CSDL không mở đối với người dùng trong khi ta khôi phục và phục hồi CSDL.
Liệt kê; dùng RMAN khởi động CSDL
C:\> rman target data_TCDN catalog rman/rman1 Recovery Manager: Release 9.2.0.1.0 – Production
Copyright © 1995, 2002, Oracle corporation. All rights reseved Connected to target database: DATA_TCDN (DBID=3382846481) Connected to recovery catalog database
RMAN> startup mount Database is already started RMAN> shutdown immediate Database closed
Database dismounted Oracle instance shutdown
RMAN> startup mount
Connected to target database (not started) Oracle instance started
Database mounted RMAN
Tiếp theo là khôi phục các tập tin dữ liệu bị mất. Bởi đây là phục hồi toàn bộ CSDL, ta yêu cầu RMAN khôi phục tất cả tập tin dữ liệu từ các bộ sao lưu, lệnh rất đơn giản là restore database. RMAN biết các tập tin sao lưu ở đâu trên đĩa và nó sao chép chúng vào vị trí mặc định. Ví dụ:
Ngay khi tất cả tập tin được khôi phục , chúng được đồng bộ bằng cách dùng redo log lưu trữ. Lệnh recover database áp dụng các log lưu trữ vào các tập tin được khôi phục và đồng bộ các số SCN cho tất cả các tập tin dữ liệu và tập tin điều khiển.
RMAN> recover database;
Cuối cùng đưa CSDL về trạng thái hoạt động trực tuyến để người dùng có thể truy xuất trở lại:
RMAN> alter database opne;
Phục hồi hồn tồn bằng tay
Q trình trình phục hồi CSDL hồn tồn bằng tay bắt đầu với việc khơi phục tất cả các tập tin dữ liệu bị mất hoặc hư từ bản sao lưu. Sau đó phục hồi CSDL bằng lệnh recovery database. Oracle sẽ yêu cầu các tập tin redo log lưu trữ cần thiết và thực hiện phục hồi bằng cách áp dụng các tập tin log lưu trữ. Để Oracle áp dụng tập tin log lưu trữ dễ hơn là tự ta cố gắng thực hiện bằng tay
Ta có thể tự động hóa việc áp dụng các tập tin redo log lưu trữ theo 2 cách. Trước khi sử dụng lệnh recovery database, có thể sử dụng lệnh set autorecovery on. Cách khác là chỉ ra từ khóa automatic trong lệnh recovery như recovery database automatic.
Sau đây là tóm tắt các bước thực hiện:
Khôi phục các tập tin dữ liệu từ sao lưu
Khởi động CSDL ở chế độ Mount: SQL> startup mount
Sử dụng lệnh recovery database để bắt đầu việc khôi phục. Từ khóa automatic cho Oracle biết tự động áp dụng các redo log lưu trữ. Vị trí mặc định lưu các redo log lưu trữ được chỉ ra trong init.ora hoặc SPFILE: SQL>recovery database automatic
Mở CSL ngay khi Oracle hoàn tất phục hồi phương tiện: Media recovery complete
SQL> Alter database open
III.2.2 Phục hồi Không gian bảng (Table space)
Thông thường cần phục hồi không gian bảng khi hệ thống bị mất một hoặc nhiều tập tin dữ liệu thuộc khơng gian bảng đó và ta khơng nhân bản tập tin dữ liệu. Phục hồi có thể ở dạng mở hoặc đóng, và có thể là phục hồi toàn phần hoặc phục hồi đến một điểm thời gian. Ta có thể phục hồi dùng RMAN hoặc bằng tay.
Dùng RMAN
Ta có thể dùng lệnh khơi phục và phục hồi ở cấp không gian bảng. Các bước thực hiện như sau:
1. Khởi động CSDL ở chế độ mount.
2. Khôi phục không gian bảng dùng lệnh restore tablespace như sau: RMAN> restore tablespace users;
3. Bước tiếp theo là phục hồi không gian bảng: RMAN> recovery table users
4. Cuối cùng mở CSDL cho người dùng sử dụng: RMAN> alter database open;
Giả sử CSDL vẫn mở và chỉ có tập tin dữ liệu của không gian bằng test01 bị mất. Tất cả giao dịch của người dùng truy xuất đến không gian bảng khác vẫn bình thường trong khi bạn phục hồi không gian bằng test01. Đoạn script sau đây cho thấy cách thực hiện điều này:
RMAN> run {
Allocate channel s1 type „sbt_type‟; Allocate channel s2 type „sbt_type‟;
SQL “alter tablespace test01 offline immediate” Restore tablespace test01;
Recovery tablespace test01;
SQL “alter tablespace test01 online” Release chanel s1;
Release chanel s2; }
Phục hồi bằng tay
Giả sử CSDL đang hoạt động và một hoặc một số tập tin thuộc CSDL bị hỏng. Nếu hoạt động chi của CSDL không ghi vào được các tập tin bị hỏng. Oracle sẽ tự động chuyển các tập tin về trạng thái ngoại tuyến (offline). Ở thời điểm này người dùng vẫn tiếp tục truy cập CSDL. Để thực hiện khôi phục không gian bảng chứa tập tin bị hỏng ta phải chuyển không gian bảng về trạng thái ngoại tuyến. Ta cần khôi phục các tập tin dữ liệu bị hư và thực hiện khơi phục. Tóm tắt quá trình phục hồi như sau.
Chuyển khơng gian bảng về trạng thái ngoại tuyến: SQL> alter tablespace sales01 temporary;
SQL> host copy
„e:\oracle\oradata\backup\sales_01.dbf‟ „e:\oracle\oradata\data_TCDN\sales_01.dbf‟
Phục hồi không gian bảng:
SQL> recovery tablespace sale01
Chuyển không gian bảng về trạng thái trực tuyến: SQL> alter tablespace sales01 online