1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tiểu luận An toàn và bảo mật hệ thống thông tin AN TOÀN THÔNG TIN VỚI KỸ THUẬT FLASHBACK TRONG ORACLE

44 1K 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 44
Dung lượng 592,5 KB

Nội dung

Oracle Flashback Table: phục hồi một hoặc nhiều bảng trở lại một thời điểm trước mà không ảnh hưởng đến các đối tượng khác trong cơ sở dữ liệu.. Oracle Flashback Drop: Đảo ngược sự ảnh h

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC KINH TẾ- LUẬTKHOA TIN HOC QUẢN LÝ

BÁO CÁO MÔN AN TOÀN VÀ BẢO MẬT

HỆ THỐNG THÔNG TIN

AN TOÀN THÔNG TIN VỚI KỸ THUẬT

FLASHBACK TRONG ORACLE

Đề tài:

Trang 2

Mục lục

Phần 1: Lý do lựa chọn đề tài 1

Phần 2: Tổng quan 2

Phần 3 Các tính năng phân tích lỗi 3

3.1 Oracle Flashback Version Query 3

3.1.1 Mục đích 3

3.1.1 Cú pháp 3

3.1.2 Đặc điểm 3

3.2 Oracle Flashback Query 4

3.2.1 Mục đích 4

3.2.2 Đặc điểm 5

3.2.3 Hướng dẫn cho Oracle Flashback Query 6

3.3.Oracle Flashback Transaction Query 7

3.3.1 Mục đích 7

3.3.2 Đặc điểm 7

Phần 4 Các tính năng khôi phục lỗi sai 10 4.1 Flashback Table 10

4.1.1 Mục đích 10

4.1.2 Điều kiện tiên quyết 10

4.1.3 Cú pháp 10

4.1.4 Ngữ nghĩa 11

4.1.5 Đặc điểm 11

4.1.6.Sử dụng một số mệnh đề trong Flashback table 12

4.2 Flashback Drop 16

4.2.1 Mục đích 16

4.2.2 Điều kiện tiên quyết 17

4.2.3 Lưu ý 19

4.3 Flashback Database 21

4.3.1 Mục đích 21

4.3.2 Điều kiện tiên quyết 21

Trang 3

4.3.4 Tablespaces với Logging Flashback Disabled 24

4.3.5 Trạng thái của các cơ sở dữ liệu Sau khi Flashback cơ sở dữ liệu 24

4.3.6 Cú pháp 25

Phần 5 Các tính năng theo dõi và đánh dấu 30 5.1.Flashback Data Archive (Oracle Total Recall) 30

5.1.1 CREATE FLASHBACK ARCHIVE 30

5.1.1.1 Mục đích 30

5.1.1.3 Cú pháp: 30

5.1.1.4 Ngữ nghĩa 31

5.1.2 ALTER FLASHBACK ARCHIVE 33

5.1.2.1 Mục đích 33

5.1.2.2 Điều kiện tiên quyết 33

5.1.2.3 Cú pháp 33

5.1.2.4 Ngữ nghĩa: 34

5.1.3 DROP FLASHBACK ARCHIVE 35

5.1.3.1 Mục tiêu ( PURPOSE ) 35

5.1.3.2 Điều kiện tiên quyết 35

5.1.3.3 Cú pháp 35

5.2 Flashback restore point 35

5.2.1 CREATE RESTORE POINT 36

5.2.1.1 Mục đích 36

5.2.1.2.Điều kiện tiên quyết 37

5.2.1.3 Cú pháp 37

5.2.1.4 Ngữ nghĩa 37

5.2.2 DROP RESTORE POINT 39

5.2.2.1 Mục đích 39

5.2.2.2.Điều kiện tiên quyết 40

5.2.2.3 Cú pháp 40

5.2.2.4 Ngữ nghĩa 40 Tài liệu tham khảo 41

Trang 4

Phần 1: Lý do lựa chọn đề tài

Bên cạnh việc bảo mật thông tin thì việc an toàn thông tin cũng là một vấn đề khá quantrọng Oracle database là một hệ quản trị cơ sở dữ liệu, được tích hợp để cho phép quản lý thôngtin một cách toàn diện.Hiện nay, Oracle database là một trong những cơ sở dữ liệu mạnh nhấtđược sử dụng nhiều trong các ngân hàng, doanh nghiệp, tổ chức lớn

Trong thời đại công nghệ thông tin ngày càng có nhiều công nghệ mới ra đời thì ngoài việc lưutrữ thông tin an toàn chắc chắn truy cập dễ dàng và chính xác, ta còn quan tâm một số vấn đềkhác như: làm thế nào khôi phục lại dữ liệu đã mất ở một thời điểm trong quá khứ?, làm thế nào

để khôi phục một tiến trình đã bị lỗi mà không mất nhiều thời gian? và nếu như một trong số đó

bị lỗi, tiến trình cập nhập sẽ bị ngưng lại và phải bắt đầu lại từ đầu thì phải giải quyết ra sao?Oracle Flashback làm giảm thời gian phục hồi dữ liệu từ vài giờ xuống vài phút Mặc dù có cácbiện pháp phòng ngừa, lỗi do con người vẫn có thể xảy ra Công nghệ Flashback trong Oracle làmột tập hợp độc đáo và phong phú của các giải pháp phục hồi dữ liệu cho phép đảo ngược cáclỗi của con người có chọn lọc và hiệu quả do ảnh hưởng của một lỗi nào đó Trước khiFlashback, CSDL có thể bị hỏng trong vài phút nhưng để phục hồi nó phải mất vài tiếng VớiFlashback, việc sửa một lỗi như việc tạo ra chính nó vậy Ngoài ra, thời gian cần thiết để phụchồi từ lỗi này không phụ thuộc vào kích thước cơ sở dữ liệu, một khả năng đặc trưng củaOracle Flashback hỗ trợ phục hồi tại tất cả các cấp bao gồm dòng, transaction, bảng, và toàn bộ

cơ sở dữ liệu Flashback cung cấp một tập ngày càng nhiều các tính năng để xem và quay lại dữ

liệu trong quá khứ, cụ thể là: Flashback database, Flashback Table, Flashback Drop,…

Các tính năng Flashback cung cấp khả năng truy vấn dữ liệu lịch sử, thực hiện phân tích sự thayđổi, và thực hiện các dịch vụ sửa chữa tự để phục hồi từ những sai lầm trong khi cơ sở dữ liệutrực tuyến Với Công nghệ Flashback Oracle, bạn thực sự có thể lùi lại quá khứ

Tất cả những vấn đề trên sẽ được giải quyết bằng Oracle Flashback.Đây là một trong nhữngtính năng mới nổi bật của phiên bản Oracle Để hiểu rõ hơn về công nghệ Flashback và các ứngdụng thực tiện của nó nhóm đã quyết định chọn đề tài “ Kĩ Thuật Flashback Trong Oracle”

Trang 5

Phần 2: Tổng quan

Cơ sở dữ liệu Oracle cung cấp kỹ thuật Oracle flashback: là một nhóm các tính năng hỗ trợ

để xem trạng thái dữ liệu quá khứ và phục hồi dữ liệu về thời điểm trước Với kỹ thuật này, giúpngười dùng phân tích các lỗi và phục hồi dữ liệu sai Các user thực hiện commit những thay đổigây ra lỗi,

Sử dụng các tính năng sau để phân tích lỗi:

Oracle Flashback Query: Xem những dữ liệu đã commit, các trạng thái dữ liệu trong 1 số điểm

trong quá khứ Sử dụng câu lệnh SELECT với mệnh đề AS OF để chỉ ra thời điểm trong quá khứthông qua 1 time stamp hoặc SCN

Oracle Flashback Versions Querry: Xem lịch sử của các dữ liệu đã commit cho 1 mốc thời

gian cụ thể Sử dụng mệnh đề VERSIONS BETWEEN trong câu lệnh SELECT ()

Oracle Flashback Transaction Query: xem tất cả các thay đổi của cơ sở dữ liệu ở mức

transaction

Hỗ trợ giải pháp để phục hồi từ các lỗi người dùng:

Oracle Flashback Transaction Backout: Rollback một transaction cụ thể và các transaction

phụ thuộc

Oracle Flashback Table: phục hồi một hoặc nhiều bảng trở lại một thời điểm trước mà không

ảnh hưởng đến các đối tượng khác trong cơ sở dữ liệu

Oracle Flashback Drop: Đảo ngược sự ảnh hưởng của câu lệnh drop đến các bảng bằng cách

khôi phục các bảng bị drop từ thùng rác cho đến cơ sở dữ liệu cùng với các đối tượng bị ảnhhưởng như là các index và các trigger

Oracle Flashback Database: Khôi phục cơ sở dữ liệu đến 1 thời điểm trong quá khứ hoặc SCN

Trang 6

Phần 3 Các tính năng phân tích lỗi

3.1 Oracle Flashback Version Query

3.1.1 Mục đích

Oracle Flashback Version Query được đùng để truy vấn lại các phiên bản đã thay đổi của mộthoặc 1 số dòng được chỉ định nào đó trong 1 khoảng thời gian nhất định

3.1.1 Cú pháp

VERSIONS {BETWEEN {SCN | TIMESTAMP} start AND end}

Start và end trong câu truy vấn là khoảng thời gian muốn thực hiện truy vấn

3.1.2 Đặc điểm

Oracle Flashback Version Query trả ra một bảng mà mỗi dòng là một phiên bản của dòng tồntại trong suốt khoảng thời gian đã chỉ định Thông tin này có thể cho thấy thời gian và sự thayđổi xảy ra với Database (có thể có sai lệch) Mỗi dòng trong bảng bao gồm các cột giả chứa dữliệu về các phiên bản của dòng Các cột:

VERSIONS_STARTSCN

VERSIONS_STARTTIME

Số thay đổi hệ thống (SCN) hoặc thời gian bắt đầu khicác phiên bản dòng được tạo ra Cột này xác định thờigian khi các dữ liệu lần đầu tiên có giá trị được phảnánh trong các phiên bản dòng Sử dụng cột này để xácđịnh thời gian quá khứ cho Oracle Flashback Tablehoặc Oracle Flashback Query

Nếu cột này là NULL thì phiên bản dòng đã được tạo

ra trước thời điểm bắt đầu

VERSIONS_XID Định danh của giao dịch đã tạo ra phiên bản hàng

VERSIONS_OPERATION Nỗi dung thực hiện transaction: I để chèn, D để xóa,

hoặc U để cập nhật Phiên bản này là dòng đã đượcINSERT,DELETE, hoặc UPDATE, có nghĩa là dòng

Trang 7

sau khi một thao tác INSERT, dòng trước khi một hoạtđộng DELETE, hoặc dòng bị ảnh hưởng bởi một hoạtđộng UPDATE.

Đối với người sử dụng cập nhật chỉ số khóa, OracleFlashback Version Query có thể ghi một hoạt độngUPDATE là hai hoạt động, DELETE cộng INSERT,biểu diễn như là hai dòng với một D theo sau bởi mộtVERSIONS_OPERATION I

Một phiên bản dòng có hiệu lực bắt đầu vào ngày VERSIONS_START trở đi, thời gian kết thúcVERSIONS_END Như vậy có nghĩa là dòng này có giá trị cho bất kỳ thời điểm t màVERSIONS_START<= t < VERSIONS_END Ví dụ, dòng dưới chỉ ra mức lương 10.243 từngày 9/9/2002 đến ngày 25/11/2003 (không bao gồm ngày 25/11/2003)

VERSIONS_START_TIME VERSIONS_END_TIME SALARY

- -

-09-SEP-2003 25-NOV-2003 10243

Dưới đây là 1 trường hợp sử dụng điển hình của Oracle Flashback Version Query

SELECT versions_startscn, versions_starttime,

versions_endscn, versions_endtime,

versions_xid, versions_operation,

last_name, salary

FROM employees

VERSIONS BETWEEN TIMESTAMP

TO_TIMESTAMP('2008-12-18 14:00:00', 'YYYY-MM-DD HH24:MI:SS')

AND TO_TIMESTAMP('2008-12-18 17:00:00', 'YYYY-MM-DD HH24:MI:SS')

WHERE first_name = 'John';

3.2 Oracle Flashback Query

3.2.1 Mục đích

Oracle Flashback Query cung cấp khả năng xem các dữ liệu tồn tại trong quá khứ bằng cách sử dụng hệ thống Automatic Undo Management để có được siêu dữ liệu và dữ liệu lịch sử cho các Transaction Undo data là liên tục và tồn tại ngay cả khi có một sự cố cơ sở dữ liệu hoặc tắt máy

Trang 8

Các tính năng độc đáo của Flashback Query không chỉ cung cấp khả năng truy vấn các phiên bản trước của bảng mà còn cung cấp một cơ chế mạnh để phục hồi từ các hoạt động sai lầm.

3.2.2 Đặc điểm

Sử dụng Flashback Query bao gồm:

■ Phục hồi dữ liệu bị mất hoặc hoàn tác dữ liệu sai, thay đổi khi đã commit Ví dụ, hàng đã bịxóa hoặc cập nhật có thể được sửa chữa ngay lập tức, ngay cả khi đã commit

■ So sánh dữ liệu hiện tại với dữ liệu tương ứng tại một thời điểm trong quá khứ Ví dụ, bằngcách sử dụng một báo cáo hàng ngày cho thấy những thay đổi trong dữ liệu so với ngày hômtrước, nó có thể so sánh các hàng riêng biệt hoặc tìm các giao điểm, hợp của các hàng

■ Kiểm tra trạng thái của dữ liệu giao dịch tại một thời điểm cụ thể, chẳng hạn như kiểm tra số

dư tài khoản vào một ngày nhất định

■ Đơn giản hóa thiết kế ứng dụng bằng cách loại bỏ một số loại dữ liệu lưu trữ tạm thời Bằngcách sử dụng Flashback Query, có thể lấy lại dữ liệu trong quá khứ trực tiếp từ cơ sở dữ liệu

■ Áp dụng các gói ứng dụng, chẳng hạn như các công cụ tạo lập báo cáo từ dữ liệu quá khứ

■ Cung cấp chức năng tự sửa lỗi cho một ứng dụng, cho phép người dùng phục hồi lại và sửachữa những lỗi sai của mình

Ví dụ để xem và phục hồi dữ liệu quá khứ

Giả sử rằng bạn nhận ra lúc 12:30 chiều, dòng dữ liệu về nhân viên Chung bị xóa khỏi bảngEmployees, và bạn biết vào lúc 9:30 sáng dữ liệu đúng của Chung đã được lưu trữ trong cơ sở

dữ liệu Bạn có thể sử dụng Oracle Flashback Query để xem lại nội dung của bảng vào lúc 9h30sáng để tìm lại những dữ liệu đã mất Nếu phù hợp, bạn có thể lưu lại các dữ liệu đã bị mất.Truy vấn lại dữ liệu bị mất với Flashback Query

SELECT * FROM employees

AS OF TIMESTAMP

TO_TIMESTAMP('2004-04-04 09:30:00', 'YYYY-MM-DD HH:MI:SS')

WHERE last_name = 'Chung';

Khôi phục 1 dòng dữ liệu

INSERT INTO employees (

SELECT * FROM employees

AS OF TIMESTAMP

TO_TIMESTAMP('2004-04-04 09:30:00', 'YYYY-MM-DD HH:MI:SS')

Trang 9

WHERE last_name = 'Chung'

);

3.2.3 Hướng dẫn cho Oracle Flashback Query

Bạn có thể chỉ ra hoặc bỏ qua mệnh đề AS OF cho mỗi bảng và chỉ ra thời gian khác nhaucho các bảng khác nhau

Lưu ý: Nếu 1 bảng là Flashback Data Archive và bạn chỉ ra thời gian sớm hơn thời gian bảngnày được tạo ra, truy vấn sẽ trả về kết quả 0 dòng, hơn nữa đó có thể là nguyên nhân gây ra lỗi

Sử dụng mệnh đề AS OF trong các truy vấn để thực thi các lệnh DDL (data definitionlanguage – như là CREATE và TRUNCATE) hoặc các lệnh DML (Data Manipulation Language

- như là INSERT hoặc DELETE)

Để sử dụng kết quả của Oracle Flashback Query trong các câu lệnh DDL hoặc DML mà cáccâu lệnh này tác động đến trạng thái hiện tại của cơ sở dữ liệu, thì sử dụng mệnh đề AS OF bêncạnh các câu lệnh INSERT hoặc CREATE TABLE AS SELECT

Có thể tạo 1 View liên quan đến dữ liệu quá khứ bằng cách sử dụng mệnh đề AS OF trongcâu lệnh SELECT đễ định nghĩa View này

Nếu chỉ định 1 thời gian tương đối bằng cách trừ từ thời gian hiện tại trên máy chủ của cơ sở

dữ liệu thì thời gian quá khứ sẽ được tính toán lại cho mổi truy vấn Ví dụ:

CREATE VIEW hour_ago AS

SELECT * FROM employees

AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '60' MINUTE);

SYSTIMESTAMP chỉ thời gian múi giờ của máy chủ

Có thể sử dụng AS OF để tự Join hoặc để thiết lập các phép toán tập hợp như INTERSECT vaMINUS, để truy xuất hoặc so sánh dữ liệu từ 2 thời điểm khác nhau

Bạn có thể lưu kết quả theo thứ tự với câu lệnh

CREATE TABLE AS SELECT or INSERT INTO TABLE SELECT

Ví dụ dưới đây INSERT lại những dòng đã tồn tại cách đây 1 tiếng vào bảng EMPLOYEESINSERT INTO employees

(SELECT * FROM employees

AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '60' MINUTE)

)

Trang 10

MINUS SELECT * FROM employees);

3.3.Oracle Flashback Transaction Query

versions between timestamp

to_timestamp ( '2008-05-17 09:18:00','YYYY-MM-DD HH24:MI:SS') and

Trang 11

to_timestamp ( '2008-05-17 09:22:00','YYYY-MM-DD HH24:MI:SS');

where xid = HEXTORAW ('050017007C070000');

LOGON_USER OPERATION UNDO_SQL

- -

-SCOTT DELETE insert into " -SCOTT"."TAJ"("NAME","NO") values ('TAJ','4');

Trên đây là hoạt động DELETE bởi user Scott và UNDO_SQL đã được tạo ra

Giả sử chúng ta không biết chính xác thời điểm ta có thể sử dụng SCN (system change number)khi commit cuối cùng được thực hiện

Chúng ta có thể nhận SCN từ cột ORA_ROWSCN, ORA_ROWSCN là thể hiện SCN của lần

thay đổi gần nhất của dòng, đó là hoạt động COMMIT gần nhất của dòng

Giả sử với ví dụ phía trên nếu như không biết chính xác thời điểm mà dòng đó đã bị xóa trong bảng TAJ Vậy có thể biết được từ cột ORA_ROWSCN

SQL> select ORA_ROWSCN, taj.* from scott.taj;

ORA_ROWSCN NAME NO

2407151 TAJ 1

2407151 TAJ 3

COMMIT gần nhấtđược thực hiện bởi bảng TAJ 2407151

Bây giờ thay đổi SCN thành TIMESTAMP để nhận được chính xác thời điểm COMMIT gần nhất

SQL> select scn_to_timestamp('2407151') from dual;

Trang 12

-insert into "SCOTT"."TAJ"("NAME","NO") values ('TAJ','4');

XID là ID của Transaction, ta có thể nhận XID từ FLASBACK VERSION QUERY

Trang 13

Phần 4 Các tính năng khôi phục lỗi sai

4.1 Flashback Table

4.1.1 Mục đích

Sử dụng câu lệnh FLASHBACK TABLE để khôi phục lại trạng thái trước đó của một bảng trong trường hợp của lỗi người dùng hay lỗi ứng dụng Thời gian trong quá khứ mà bảng có thể được khôiphục lại là phụ thuộc vào số lượng undo data trong hệ thống.Ngoài ra, cơ sở dữ liệu Oracle không thể khôi phục lại trạng thái của một bảng trước đó qua bất kỳ hoạt động DDL thay đổi cấu trúc của bảng

4.1.2 Điều kiện tiên quyết

Để phục hồi lại một bảng tại một SCN hoặc Timestamp, bạn phải có đặc quyền đối tượng trên bảng hoặc hệ thống đặc quyền Flashback any table Ngoài ra, bạn phải cần có quyền SELECT , INSERT ,DELETE , và ALTER đặc quyền đối tượng trên bảng

Rowmovement phải được kích hoạt cho tất cả các bảng trong danh sách Flashback trừ khi bạn đang khôi phục tại To Before Dropiv Hoạt động khôi phục sử dụng dữ liệu bị bỏ trong thùng rác chứ không phải lùi lại dữ liệu

Để khôi phục lại một bảng tại một điểm khôi phục, bạn phải có Select Any Dictionary hoặc

Flashback Any Table hoặc Select_Catalog_Role

Để khôi phục lại một bảng trước khi một Drop Table hoạt động, bạn chỉ cần các đặc quyền cần thiết

để Drop các bảng

4.1.3 Cú pháp

Trang 14

4.1.4 Ngữ nghĩa

Trong một hoạt động Oracle Flashback table, Cơ sở dữ liệu Oracle thu hồi DML khóa độc quyền trên tất cả các bảng quy định trong danh sách Flashback Các khóa ngăn chặn bất kỳ hoạt động trên các bảng trong khi chúng đang quay trở lại trạng thái trước đó của chúng

Flashback table hoạt động được thực hiện trong một transaction duy nhất, bất kể số lượng các bảng quy định trong danh sách Flashback.Hoặc là tất cả các bảng trở lại trạng thái trước đó hoặc không bảng nào được phục hồi.Nếu các hoạt động Flashback table không thành công trên bất kỳ bảng nào thì sau đó toàn bộ câu lệnh không thành công

Sau khi hoàn tất các hoạt động Flashback table, các dữ liệu trong bảng là phù hợp với bảng ở thời gian trước đó Tuy nhiên, Flashback Table To SCN hoặc TIMESTAMP không bảo quản rowids và Flashback Table To Before Drop không phục hồi ràng buộc tham chiếu

Các hoạt động DDL thay đổi cấu trúc của một bảng, nên bạn không thể sử dụng các To SCNhoặc To Timestamp để khôi phục bảng trở lại một thời gian trước các hoạt động: nâng cấp, dichuyển, hay cắt bỏ một bảng; thêm một ràng buộc đến một bảng, thêm một bảng vào một

Trang 15

cluster, sửa đổi hoặc thả một cột, thay đổi một khóa mã hóa cột; thêm, giảm, sáp nhập, chia tách,hợp nhất, hoặc cắt bỏ một phân vùng hoặc subpartition (với ngoại lệ của việc thêm một phânvùng phạm vi).

4.1.6.Sử dụng một số mệnh đề trong Flashback table

Mệnh đề TO RESTORE POINT

Chỉ định một điểm khôi phục mà bạn muốn khôi phục lại bảng.Các điểm khôi phục phảiđược tạo ra

ENABLE | vô hiệu hóa kích hoạt

Theo mặc định, Oracle Database vô hiệu hóa kích hoạt tất cả các trigger được định nghĩa trênbảng trong hoạt động Bảng Flashback và sau đó reenables chúng sau khi hoạt động BảngFlashback đã hoàn tất Chỉ định ENABLE được tạo nên nếu bạn muốn ghi đè lên hoạt động này

và tiếp tục gây nên kích hoạt trong quá trình Flashback

Điều khoản này chỉ ảnh hưởng đến những cơ sở dữ liệu kích hoạt được xác định trên bảng đãđược kích hoạt.Để kích hoạt tính vô hiệu hóa gây nên chọn lọc, sử dụng ALTER TABLE enable_disable_clause trước khi bạn thực hiện FLASHBACK TABLE với mệnh đề ENABLETRIGGERS

Mệnh đề TO BEFORE DROP

Sử dụng điều khoản này để lấy từ thùng rác một bảng đã bị xóa, cùng với tất cả các đốitượng phụ thuộc có thể.Bảng phải nằm trong một tablespace cục bộ quản lý khác hơn SYSTEMtablespace

Hệ thống tạo ra thùng rác tên đối tượng là duy nhất Vì vậy, nếu bạn chỉ định tên hệ thốngtạo ra, khi đó cơ sở dữ liệu lấy theo đối tượng quy định

Để xem các nội dung của thùng rác, truy vấn dữ liệu từ điển xem xét USER_RECYCLEBIN.Bạn có thể sử dụng RecycleBin từ đồng nghĩa thay thế Hai câu sau đây trả lại 2 hàng như nhau:SELECT * FROM RECYCLEBIN;

Trang 16

SELECT * FROM USER_RECYCLEBIN;

Nếu bạn chỉ định tên người dùng, và nếu thùng rác chứa nhiều hơn một đối tượng của tên đó,sau đó cơ sở dữ liệu khôi phục các đối tượng đã được di chuyển vào thùng rác gần đây nhất Nếubạn muốn lấy một phiên bản cũ của bảng, sau đó làm một trong những điều này:

Xác định hệ thống tạo ra tên thùng rác của bảng bạn muốn lấy

Thực hiện thêm FLASHBACK TABLE TO BEFORE DROP báo cáo cho đến khi bạn lấycác bảng mà bạn muốn

Cơ sở dữ liệu Oracle cố gắng để bảo vệ tên bảng ban đầu Nếu một bảng mới có cùng tên đãđược tạo ra trong cùng một lược đồ kể từ khi bảng ban đầu đã bị bỏ, sau đó cơ sở dữ liệu trả vềmột lỗi trừ khi bạn cũng xác định các mệnh đề RENAME TO

Mệnh đề RENAME TO sử dụng điều khoản này để chỉ định một tên mới cho bảng được lấy

Cơ sở dữ liệu cũng lấy tất cả các kích hoạt và ràng buộc được định nghĩa trên bảng trừ cácràng buộc toàn vẹn tham chiếu mà các bảng tham chiếu khác

Các chỉ số lấy ra, triggers, và những ràng buộc đặt trongnhững thùng rác có tên Vì vậy nókhuyến khích để truy vấn xem USER_RECYCLEBIN trước khi thực hiệnFLASHBACK TABLE TO BEFORE DROP để bạn có thể đổi tên các chỉ số lấy ra, triggers,

và những ràng buộc đối với những cái tên có thể sử dụng nhiều hơn

Khi bạn Drop một bảng, c tất cả các materialized view được định nghĩa trên bảng cũng giảmnhưng không được đặt trong thùng rác Vì vậy, tất cả các materialized view không thể được khôiphục cùng với bảng

Khi bạn Drop một bảng, bất kỳ chỉ số trên bản bị bỏ và đặt vào thùng rác cùng với bảng Nếuphát sinh các khoảng trống tiếp theo, khi đó cơ sở dữ liệu đòi không gian từ thùng rác bởi chỉ sốđầu tiên Trong trường hợp này, khi bạn flash lại bảng, bạn không thể lấy lại tất cả các chỉ số đãđược định nghĩa trên bản

Bạn không thể flash lại một bảng nếu nó đã được thanh lọc, hoặc bởi một người dùng hoặc

cơ sở dữ liệu Oracle như là kết quả của một số hoạt động cải tạo không gian

Trang 17

Ví dụ

Khôi phục dữ liệu trong một trạng thái trước đó: Các ví dụ dưới đây tạo ra một bảng mới,employees_test , với việc khuyến khích hoạt các hàng , cập nhật các giá trị trong bảng mới, vàthực hiện Câu lệnh Flashback table

Tạo bảng employees_test , với hàng chuyển động được kích hoạt, từ bảng employees củamẫu hr schema:

CREATE TABLE employees_test

AS SELECT * FROM employees;

Với điểm chuẩn1, danh sách những người lương dưới 2500:

Bật row movement cho bảng:

ALTER TABLE employees_test

ENABLE ROW MOVEMENT;

Ban hành tăng lương 10% cho những nhân viên có thu nhập dưới 2500:

Cập nhật employees_test

Trang 18

FLASHBACK TABLE employees_test

TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' minute);

Liệt kê những mức lương dưới 2500.Sau khi FLASHBACK TABLE đưa ra ở trên, danh sáchnày phải phù hợp với danh sách trong chuẩn đầu tiên

Trang 19

2200

Lấy một Bảng Dropped: Ví dụ Nếu bạn vô tình drop the pm.print_media table và muốn lấy

nó, khi đó ra tuyên bố như sau:

FLASHBACK TABLE print_media TO BEFORE DROP;

Nếu print_media tableđã được tạo ra trong pm schema, khi đó sử dụng mệnh đề RENAME TO

để đổi tên bảng lấy:

FLASHBACK TABLE print_media TO BEFORE DROP RENAME TO print_media_old; Nếu bạn biết rằng bảng employees đã được drop nhiều lần, và bạn muốn lấy phiên bản lâuđời nhất, sau đó truy vấn USER_RECYLEBIN table để xác định tên hệ thống tạo ra, và sau đó

sử dụng tên đó trong câu lệnh FLASHBACK TABLE (Tên hệ thống tạo ra trong cơ sở dữ liệucủa bạn sẽ khác biệt với những gì được hiển thị ở đây.)

SELECT object_name, droptime FROM user_recyclebin

WHERE original_name = 'PRINT_MEDIA';

Khi bạn xóa một bảng, cơ sở dữ liệu không loại bỏ các không gian liên kết với bảng ngay lậptức.Thay vào đó, bảng được đổi tên cùng với các đối tượng liên quan, nằm trong thùng rác.Hệthống thùng rác tạo ra tên đối tượng là duy nhất.Bạn có thể truy vấn các đối tượng trong thùngrác, cũng giống như bạn có thể truy vấn các đối tượng khác

Hoạt động flashback phục hồi lại bảng từ thùng rác Khi phục hồi bảng bị xóa, bạn có thể chỉđịnh tên gốc của bảng do người dùng quy định ban đầu hoặc tên hệ thống tạo ra

Trang 20

Khi bạn drop một bảng, bảng và tất cả các đối tượng phụ thuộc của nó cùng được đặt vàothùng rác Tương tự như vậy, khi bạn thực hiện Flashback Drop, các đối tượng thường đượcphục hồi lại toàn bộ Khi bạn khôi phục lại một bảng từ thùng rác, các đối tượng phụ thuộc nhưtên của các indexes không được phục hồi như ban đầu, nó giữ lại tên của thùng rác đã tạo ra Cơ

sở dữ liệu Oracle phục hồi tất cả các index được xác định trên bảng trừ bitmap kết hợp vớiindex, và tất cả trigger và constraint được xác định trên bảng trừ các ràng buộc toàn vẹn thamchiếu đến các bảng tham chiếu khác

Một số đối tượng phụ thuộc như các index có thể đã bị thu hồi vì áp lực không gian Trongnhững trường hợp như vậy, các đối tượng phụ thuộc bị thu hồi không thể phục hồi từ thùng rác

4.2.2 Điều kiện tiên quyết

Danh sách sau đây tóm tắt các quyền người dùng yêu cầu cho các hoạt động liên quan đếnFlashback Drop và thùng rác:

DROP

Với người sử dụng có quyền drop trên đối tượng có thể drop các đối tượng, đặt nó vào thùngrác

FLASHBACK TABLE TO BEFORE DROP

Các quyền của lệnh này được gắn liền với các quyền của drop.Đó là, người dùng nào có thểdrop đối tượng thì cũng có thể thực hiện Flashback Drop để phục hồi các đối tượng bị drop

từ thùng rác

PURGE(Loại bỏ)

Các quyền Purge của thùng rác được gắn liền với các quyền drop Người dùng nào có quyềnDROP TABLE hoặc Drop Any TABLE có thể purge các đối tượng từ thùng rác

SELECT for objects in the Recycle Bin

Người sử dụng phải có quyền SELECT và FLASHBACK trên đối tượng trong thùng rác đểtruy vấn các đối tượng trong thùng rác.Bất kỳ người dùng nào có quyền SELECT trên đốitượng trước khi nó bị xóa tiếp tục có quyền SELECT trên các đối tượng trong thùngrác.Người dùng phải có quyền FLASHBACK để truy vấn các đối tượng trong thùng rác vìđây là những đối tượng từ trạng thái quá khứ của cơ sở dữ liệu

Đối tượng phải đáp ứng các điều kiện sau đây để có đủ điều kiện để phục hồi từ thùng rác:

Thùng rác chỉ có hiệu lực cho không hệ thống, được quản lý trong phạm vi của tablespaces.Nếu một bảng không hệ thống, được quản lý trong phạm vi tablespace, nhưng một hoặc nhiều

Trang 21

đối tượng phụ thuộc vào segment trong từ điển quản lý tablespace, sau đó các đối tượng đượcbảo vệ bởi thùng rác.

Bảng có FGA( Fine Grained Auditing: thực hiện lần theo vết của việc truy cập hệ thống, giám sát truy cập, giám sát người dùng truy cập và thay đổi hệ thống FGA cho phép ghi lại các lệnh sql

ma người dùng tác động vào hệ thống Ở phiên bản 10g, FGA mở rộng ra giám sát các lệnh DLL: insert, update, delete, select, execute) và Virtual Private Database (VPD: Công nghệ VPD có thể giới hạn quyền truy cập bằng cách chọn một số hàng của cột ) các quyền hạn xác định trên bảng không được bảo vệ bởi thùng rác

Phân vùng bảng index được sắp xếp không được bảo vệ bởi thùng rác

Bảng không phải đã bị purge hoặc là bởi một người dùng hay bởi Cơ sở dữ liệu oracle bởi vì hoạt động thu hồi không gian

Sử dụng lệnh FLASHBACK TABLE TO BEFORE DROP để phục hồi các đối tượng từ thùng rác Bạn có thể chỉ định tên của bảng trong thùng rác hoặc tên bảng ban đầu

Phần này giả định một kịch bản trong đó bạn xóa bảng sai.Nhiều lần bạn đã được yêu cầu xóa các bảng trong cơ sở dữ liệu thử nghiệm, nhưng trong trường hợp này, bạn kết nối với cơ sở dữ liệu sản xuất thay vì xóa hr.employee_demo.Bạn quyết định sử dụng FLASHBACK TABLE để phục hồicác đối tượng bị xóa

Phục hồi bảng đã xóa

Kết nối SQL * Plus đến cơ sở dữ liệu mục tiêu và nhận tên của bảng bị bỏ trong thùng rác

Bạn có thể sử dụng SQL * Plus RecycleBin Show lệnh như sau:

SHOW RECYCLEBIN;

ORIGINAL NAME RECYCLEBIN NAME TYPE DROP TIME

- - -

-EMPLOYEE_DEMO BIN$gk3lsj/3akk5hg3j2lkl5j3d==$0 TABLE 2005-04-11:17:08:54

Cột Original Name cho biết tên ban đầu của đối tượng, trong khi cột RecycleBin NAME cho biết tên của đối tượng tồn tại trong thùng rác

Ngoài ra, bạn có thể truy vấn USER_RECYCLEBIN hoặc DBA_RECYCLEBIN để có được tên bảng Ví dụ sau đây truy vấn các View để xác định tên ban đầu của các đối tượng bị xóa:

SELECT object_name AS recycle_name, original_name, type

FROM recyclebin;

Trang 22

RECYCLE_NAME ORIGINAL_NAME TYPE

-

-BIN$gk3lsj/3akk5hg3j2lkl5j3d==$0 EMPLOYEE_DEMO TABLE

BIN$JKS983293M1dsab4gsz/I249==$0 I_EMP_DEMO INDEX

Nếu bạn có kế hoạch để tự khôi phục lại tên gốc cho các đối tượng phụ thuộc thì đảm bảo rằng bạn cần chú ý trong mỗi đối tượng phụ thuộc của hệ thống tạo ra tên thùng rác trước khi bạn khôi phục lại các bảng

4.2.3 Lưu ý

Nếu bạn có các đặc quyền cần thiết thì bạn cũng có thể sử dụng Flashback Query trên bảng trong thùng rác, nhưng chỉ bằng cách sử dụng tên thùng rác thay vì bảng tên ban đầu.Bạn không thể sử dụng câu lệnh DML hoặc DDL trên các đối tượng trong thùng rác

Ngoài ra, bạn có thể sử dụng tên ban đầu của bảng:

FLASHBACK TABLE HR.EMPLOYEE_DEMO TO BEFORE DROP;

Bạn cũng có thể gán tên mới cho bảng được phục hồi hồi bằng cách gán tên mới với lệnh RENAME

TO Ví dụ:

FLASHBACK TABLE "BIN$KSD8DB9L345KLA==$0" TO BEFORE DROP

RENAME TO hr.emp_demo;

Xác thực rằng mọi đối tượng phụ thuộc lưu trữ trong hệ thống tạo ra tên thùng rác.

Các truy vấn sau đây xác định tên các index được phục hồi của bảng hr.employee_demo

Ngày đăng: 10/05/2015, 04:12

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w