Luận văn Tìm hiểu những tính năng mới trong Oracle 10G

MỤC LỤC

 

MỤC LỤC. 0

LỜI CÁM ƠN. 4

KÝ HIỆU VÀ VIẾT TẮT. 5

TÓM TẮT. 6

ABSTRACT . 7

Chương I. TỔNG QUAN. 8

I.1 Đặt vấn đề. . 8

I.2 Phạm vi đề tài. . 8

I.3 Phương pháp nghiên cứu. 9

I.4 Hướng giải quyết. . 9

Chương II. CƠ SỞ LÍ THUYẾT. 10

II.1. GIỚI THIỆU HỆ QUẢN TRN CƠ SỞ DỮ LIỆU ORACLE 10g. 10

II.1.1 Lịch Sử hình thành và sự phát triển. . 10

II.1.3 Giới thiệu kiến trúc Oracle 10g. . 11

II.1.3.1 Cấu trúc CSDL Oracle. . 11

II.1.3.2 Cấu trúc bộ nhớ Cache. 15

II.2. NHỮNG TÍNH NĂNG MỚI CỦA ORACLE 10g . 16

II.2.1 Cơ sở dữ liệu dạng khung lưới. . 16

II.2.2 Cài đặt đơn giản và dễ dàng. 16

II.2.3 Cấu hình đơn giản, nhiều tính năng. . 16

II.2.4 Loading and uploading data. 20

II.2.4.1 Chuyển đổi Tablespace giữa các Platforms. 20

II.2.4.2 Giới thiệu tổng quan về Data Pump. 21

II.2.5 Cơ sở dữ liệu tự quản lý. 28

II.2.6 Bộ công cụ tư vấn thông minh. . 28

II.2.7 Lập lịch với Scheduler. . 29

II.2.8 Hổ trợ các cơ Sở dữ liệu lớn. . 29

II.2.9 Chia tải với Tablespace SYSAUX. 29

II.2.10 Sao lưu và phục hồi dữ liệu (Recovery Manager- RMAN). 30

II.2.10.1 Các chức năng và thành phần trong RMAN. 30

II.10.2 Kiểu kết nối với RMAN . 31

II.10.3 Câu lệnh trong RMAN. 34

II.2.11 Nâng cao tính năng cho FLASHBACK. 37

II.2.11.1 Giới thiệu Flashback. . 37

II.2.11.2 Thiết lập môi trường, cấu hình. . 39

II.11.3 Khôi phục dữ liệu mức ‘bản ghi’ (row level) . 45

II.2.11.4 Khôi phục dữ liệu mức ‘bảng’ (table level). 47

II.2.11.5 Khôi phục toàn bộ cơ sở dữ liệu (database level). 53

II.2.11.6 Một số chú ý. . 56

II.3. NGÔN NGỮ LẬP TRÌNH. . 60

 

 

3

II.3.1 Sự lựa chọn ngôn ngữ lập trình VB.net. . 60

II.3.2. Ngôn ngữ lập trình VB.net. . 60

II.3.3 Ngôn ngữ VB.net và những ngôn ngữ khác . 60

II.3.3.1 Một số đối tượng VB.net sử dụng trong đề tài. . 61

Chương III. ỨNG DỤNG. 61

III.1. KẾT QUẢ ĐIỀU TRA THU THẬP THÔNG TIN. 62

III.1.1 Mô tả hệ thông. . 62

III.1.2 Các loại hình gởi tiết kiệm và phương pháp tính lãi: . 63

III.1.3 Một số mẫu kết xuất chính: . 64

III.2 THIẾT KẾ CHƯƠNG TRÌNH. 67

III.2.1 Mô hình quan niệm dữ liệu MCD. . 67

III.2.2 Mô hình luân lý dữ liệu MLD. . 74

III.2.3 Mô hình vật lý dữ liệu MPD. 75

III.2.4 Lưu đồ dòng dữ liệu DFD. . 80

III.2.5 Giải thuật và lưu đồ . 83

III.2.6 Kết quả chương trình. . 88

III.2.7 Thảo luận những vấn đề chưa giải quyết được. . 94

III.2.7.1 Thảo luận kết quả đạt được . 94

III.2.7.2 Vấn đề chưa giải quyết được. . 94

KẾT LUẬN VÀ ĐỀ NGHN . 95

TÀI LIỆU THAM KHẢO. 96

PHỤ LỤC . 97

 

doc76 trang | Chia sẻ: netpro | Lượt xem: 4675 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Luận văn Tìm hiểu những tính năng mới trong Oracle 10G, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
i từ RMAN executable tới target database. Một Oracle process sẽ được tạo ra tương ứng với mỗi channel được cấp phát. Mỗi một câu lệnh BACKUP, COPY, RESTORE, or RECOVER được sử dụng trong RMAN cần ít nhất một channel. Số lượng channel được cấp phát là mức độ lớn nhất của các tiến trình song song trong quá trình sao lưu, phục hồi dữ liệu. Có thể thực thi câu lệnh: ALLOCATE CHANNEL FOR MAINTENANCE để cấp phát manual một channel trước khi thực thi các câu lệnh CHANGE, DELETE hoặc CROSSCHECK. Nếu thiết lập cấp phát tự động bằng câu lệnh CONFIGURE thì không cần phải cấp phát bằng tay nữa. 33 Mỗi channel thường chỉ tương thích với một loại thiết bị đầu ra. Hình 33 Sơ đồ cấp phát Chanel Cấp phát channel manual hoặc tự động: RMAN cấu hình tự động cấp phát các channel thao tác với đĩa (đây là giá trị mặc định), chúng ta có thể sử dụng câu lệnh CONFIGURE để thay đổi điều này. Hình 34 Cấp phát Chanel tự động Câu lệnh ALLOCATE CHANNEL chạy trong khối lệnh RUN và câu lệnh ALLOCATE CHANNEL FOR MAINTENANCE được sử dụng để cấp phát channel manual. Cấp phát channel manual sẽ ghi đè việc cấp phát tự động. Hình 35 Cấp phát Chanel Manual RMAN chỉ sử dụng một trong hai loại hình trên để thực hiện các nhiệm vụ của nó (do tính năng của hai loại cấp phát này là hoàn toàn riêng biệt). Cấu hình cơ chế song song: Hình 36 Cấu hình cơ chế song song 34 Chỉ định dung lượng tối đa cho backup piece Hình 37 Chỉ định dung lượng tối đa cho backup piece Định dạng tên cho các file backup Hình 38 Chỉ định dung lượng tối đa cho backup piece Chỉ định các tùy chọn điều khiển cho việc cấp phát channel để thay đổi các giá trị mặc định CONNECT: chỉ ra kết nối đến target instance. FORMAT: định dạng tên của backup piece. MAXOPENFILES: số lượng file đầu vào lớn nhất mà câu lệnh BACKUP có thể mở tại bất kỳ thời gian nào (mặc định là 8). MAXPIECESIZE: kích thước lớn nhất cho mỗi backup piece được tạo trong channel. DURATION: tổng thời gian chạy backup job: • PARTIAL: không báo lỗi nếu quá trình sao lưu không hoàn thành tại điểm thời gian có hiệu lực. • MINIMIZE TIME: tối ưu hóa thời gian sao lưu, có thể kết thúc trước thời gian yêu cầu. • MINIMIZE LOAD: RMAN sẽ giám sát tốc độ của việc sao lưu và tự động giảm tốc độ các tiến trình khác nếu việc sao lưu có nguy cơ kết thúc muộn hơn so với thời gian đã chỉ định. II.10.3 Câu lệnh trong RMAN RMAN có hai kiểu câu lệnh chính: Stand-alone • Đánh từng câu lệnh  thi hành ngay lập tức • Không nằm trong khối lệnh của câu lệnh RUN Ví dụ: • CHANGE • CONNECT • CREATE CATALOG, RESYNC CATALOG. 35 • CREATE SCRIPT, DELETE SCRIPT, REPLACE SCRIPT Jobs • Phải nằm trong khối lệnh của câu lệnh RUN. • Thực thi cả khối câu lệnh. • Nếu một câu lệnh trong khối lệnh RUN lỗi, RMAN sẽ dừng tiến trình lại và không câu lệnh nào trong khối lệnh được thực thi. Stand-alone hoặc job • Có thể chạy riêng biệt hoặc sau dấu nhắc RMAN. • Có thể chạy trong dấu ngoặc của câu lệnh RUN hoặc chạy trong nhóm câu lệnh. • Ví dụ: BACKUP DATABASE… Hình 39 Backup database Sử dụng câu lệnh CONFIGURE Cấu hình cấp phát channel tự động Chỉ định chính sách duy trì các bản backup Chỉ định số các bản backup copy được tạo Giới hạn dung lượng của các bản backup set Cấu hình tự động sao lưu control files Ví dụ • CONFIGRE CHANNEL… • CONFIGURE RETENTION POLICY… 36 Sử dụng câu lệnh SHOW để xem cấu hình RMAN SHOW ALL; SHOW CHANNEL; SHOW DEVICE TYPE; SHOW DEFAULT DEVICE TYPE; SHOW RETENTION POLICY; SHOW DATAFILE BACKUP COPIES; Hình 40 Chỉ định dung lượng tối đa cho backup piece Sử dụng câu lệnh LIST, REPORT để xem thông tin về các bản sao lưu: LIST BACKUP OF DATABASE; LIST BACKUP OF DATAFILE “/db01/ORADATA/u03/user01.dbf” LIST COPY OF TABLESPACE “SYSTEM”; REPORT SCHEMA; REPORT NEED BACKUP ...; REPORT OBSOLETE; REPORT NEED BACKUP incremental 3; 37 Hình 41 Danh sách các lần backup database. II.2.11 Nâng cao tính năng cho FLASHBACK. Chức năng Flash Backup và Recovery sẽ làm đơn giản việc quản lý dung lượng trống ổ đĩa và các file có liên quan đến việc sao lưu và phục hồi, bởi chúng sẽ được quản lý trong Flash Recovery Area. Ta không cần phải chỉ định tên cho các bản sao lưu mà RMAN sẽ đặt tên tự động. Khi được sử dụng, RMAN sẽ tự động sử dụng Oracle Manager Files (OMF) cho các file sao lưu. Khi một file được viết xuống Flash Recovery Area nhưng dung lượng ổ cứng không còn đủ cho file nữa thì Oracle Database sẽ xoá một file trong danh sách những file đã quá hạn và gửi một thông báo xuống alert log file. Mặc định, RMAN sẽ tự động đặt các file sao lưu vào trong Flash Recovery Area khi ta thiết lập tham số DB_RECOVERY_FILE_DEST. II.2.11.1 Giới thiệu Flashback. Tính năng Oracle Flashback đã có từ phiên bản Oracle9i tuy nhiên bắt đầu từ Oracle10g tính năng này được nâng cao rất nhiều nhờ khả năng Flashback Transaction Query, Flashback Drop và đặc biệt là Flashback Database. Tính năng Flashback chỉ áp dụng khi có sai sót chủ quan của con người, không được áp dụng khi gặp sự cố về phần cứng, thiết bị lưu trữ…(media failures). Cụ thể Flashback chỉ áp dụng khi các data Files vẫn còn khả năng sử dụng, chưa hỏng (corrupted), không bị thất lạc (loss). Tính năng Flashback có thể chia làm 3 nhóm chính: 38 • Flashback mức bản ghi: bạn có thể xem/khôi phục các bản ghi đã bị xóa trước đó nhờ Flashback Query, Flashback Version Query, Flashback Transaction Query • Flashback mức bảng: bạn có thể xem/khôi phục toàn bộ 1 bảng dữ liệu đã bị xóa (do & chỉ do câu lệnh DROP) nhờ Flashback Drop • Flashback toàn bộ database: bạn có thể xem/khôi phục toàn bộ 1 CSDL về 1 thời điểm trước đó (point-in-time) nhờ Flashback Database mà không cần lấy lại (restore) & phục hồi (recover) các data files… Bảng cấp độ sử dung cơ chế FlashBack: Hình 42 Bảng cấp độ sử dung cơ chế FlashBack Tính năng Flashback Database rất hữu dụng khi bạn ‘lỡ’ làm hỏng dữ liệu mức database (như truncate table, drop user…). Khi đó thay vì phải restore & recovery toàn bộ database, bản chỉ đơn giản chạy Flashback Database với thời gian thực hiện nhanh hơn nhiều & thao tác thực hiện cũng đơn giản hơn nhiều. Tuy nhiên nếu database của bạn bị hỏng ở mức physical (như mất data files, hỏng data files…) thì bắt buộc bạn phải sử dụng các phương pháp restore&recover truyền thống Kiến trúc FlashBack. Khi bạn kích hoạt Flashback Database, background process Recovery Writer (RVWR) sẽ được kích hoạt theo và ghi dữ liệu thay đổi từ Flashback Buffer xuống Flashback Logs. Như trên hình vẽ bạn sẽ nhìn thấy Flashback Logs được ghi theo cơ chế quay vòng (circular), có nghĩa là dữ liệu của nó sẽ bị ghi đè vào một thời điểm nào đấy (Retention Target của Flashback Database ‘chạm’ ngưỡng’). Chú ý: hiện tại Oracle không sử dụng cơ chế lưu trữ (Archive) đối với Flashback Logs. 39 Hình 43 Kiến trúc FlashBack II.2.11.2 Thiết lập môi trường, cấu hình. Toàn bộ tính năng Flashback mức bản ghi và Flashback Table (mức bảng dữ liệu) đều sử dụng dữ liệu được lưu lại (retained) trong UNDO tablespace để xem/khôi phục lại. Oracle khuyến cáo nên quản lý UNDO tablespace ở chế độ tự động (UNDO_MANAGEMENT=AUTO trong init file). Trong khi đó Flashback Drop table (mức bảng dữ liệu) lại sử dụng dữ liệu được lưu trong 1 vùng dữ liệu đặc biệt gọi là RECYCLE BIN trong tablespace của user sở hữu table bị xóa đó Dữ liệu được lưu trong UNDO tablespace bao lâu phụ thuộc vào giá trị UNDO_RETENTION (khi tạo hoặc thay đổi undo tablespace). Giá trị ngầm định là 900giây. Để có thể lưu trữ dữ liệu bị xóa lâu hơn, bạn phải tăng gái trị của tham số này tương ứng (theo giây). Tuy nhiên Oracle vẫn có thể ‘ghi đè’ dữ liệu được lưu trữ trong UNDO tablespace khi cần thiết (kể cả trong trường hợp bạn thiết lập UNDO_RETENTION). Chính vì vậy nếu muốn lưu trữ dữ liệu bị xóa trong khoảng thời gian dài hơn hoặc vĩnh viễn (phụ thuộc khả năng ổ cứng) thì phải sử dụng & thiết lập tính năng RETENTION GUARANTEE của Undo tablespace (ví dụ Alter tablespace undotbs1 retention guarantee) Oracle tự động thiết lập chế độ RECYCLE BIN cho database (tham số RECYCLE_BIN=ON). Tức là mỗi khi bạn drop 1 thì table đó tự động được lưu trong RECYCLE BIN. Để xóa bỏ chế độ này, hoặc bạn có thể sử dụng câu lệnh alter system set recycble_bin=off scope=both; Trước tiên bạn nên đảm bảo UNDO tablespace của bạn ở chế độ AUTO: SELECT name,value FROM v$parameter WHERE name=‘undo_management’; 40 Hình 44 Cấu hình Undo_managament. Ngược lại bạn nên sửa đổi giá trị này và restart lại database! Sau đó bạn chạy OEM Database Console, chọn tab Administrator, tại Database Configuration, chọn Undo management Tại mục Undo Retention Settings, bạn có thể thay đổi giá trị Undo Retention (theo phút) bằng cách kích đúp vào giá trị hiện hành (15) và nhập vào giá trị mong muốn (ví dụ 1440 – 1 ngày) Hình 45 Cấu hình Undo_managament (tt) Thực hiện tương tự cho chế độ Guarantee tại mục Retention Guarantee Bạn cũng có thế ‘nhờ’ Oracle cố vấn cho khoảng thời gian cần lưu dữ liệu (retention) cũng như kích thước của undo tablespace bằng cách chọn mục Undo Advisor ở phía trên bên phải, hoặc theo các bước hướng dẫn của mục Reccomendations ở phía dưới màn hình. Kiểm tra cấu hình Recyclebin Ngầm định giá trị của init parameter RECYCLEBIN=‘ON’. Để kiểm tra và cấu hình lại tham số database này, bạn chạy OEM Database Console, chọn tab Administration, tại mục Database Configuration, chọn All Initialization Parameters 41 Tại tab Current, mục Name, nhập vào giá trị recyclebin (chú ý Oracle không phân biệt chữ hoa chữ thường khi tìm kiếm) và bấm Go Tại cột Value, bạn có thể thay đổi giá trị cho Recyclebin là ON hoặc OFF (chú ý tham số này có thể thay đổi mà không cần restart lại database) Hình 46 Kiểm tra cấu hình Recyclebin Cấu hình FlashBack Database Điều kiện để Database có thể sử dụng tính năng Flashback Database là database phải ở chế độ Archivelog. Ngược lại: • Restart database về chế độ MOUNT • ALTER DATABASE ARCHIVELOG; • ALTER DATABASE OPEN; • ARCHIVE LOG LIST; (Chú ý: archive files luôn được ngầm định lưu trong Flashback Recovery Area) Bước 1: Dữ liệu bị thay đổi ở mức database blocks sẽ được background process Recovery Writer ghi vào các Flashback database logs trong vùng Flash recovery Area. Vì vậy trước tiên cần thiết lập vùng lưu trữ này: • ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 2G SCOPE = BOTH; • ALTER SYSTEM SET DB_RECOVERY_FILE_DEST=‘….’ SCOPE=BOTH; Bước 2: Sau đó bạn phải thiệt lập Retention Target để xác định khoảng thời gian (phút) có thể quay ngược (rewind) database về 1 thời điểm trước đó (point-in-time) thông qua init para DB_FLASHBACK_RETENTION_TARGET. Giá trị ngầm định của tham số này là 2880 (2 ngày), tham số này có thể thay đổi mà không cần restart lại database: 42 Hình 47 Thiết lập giá trị flashback_retention_target Bước 3: Cuối cùng bạn kích hoạt database ở chế độ Flashback Database nhờ câu lệnh: • ALTER DATABASE FLASHBACK ON; (Chú ý: bạn phải ở chế độ MOUNT để kích hoạt tính năng Flashback Database). Để kiểm tra tính năng Flashback Database đã được kích hoạt hay chưa: • SELECT flashback_on FROM v$database; Hình 48 Kiểm tra chế độ Flashback_on Chúng ta có thể cấu hình thông qua Enterprise Manager Database Console như sau: Đầu tiên đăng nhâp Enterprise Manager Database Console qua tài khoản SYS với quyền sysdba. Sau đó Maintenance => Backup/Recovery Settings => Recovery Settings: Tiếp theo là xác nhận Flash Recovery Area cấp dung lượng khoảng 2GB (hoặc lớn hơn tùy ứng dụng đòi hỏi thường xuyên sử dung cơ chế Flashback) cho Flash 43 Recovery Area Size. Sau đó là bật mở chế độ Flashback bắng cách check vào Enable Flashback Database checkbox. Để database bật ở chế độ ARCHIVELOG Mode bằng cách ckeck vào ARCHIVELOG Mode checkbox như hai hình sau: Hình 49 Check vào ARCHIVELOG mode Hình 50 Chỉ đường dẫn và dung lượng cho Flash Area Sau đó cần Restart lại database. Sau đây là một số bước: 44 Hình 51 Thông báo việc thay đổi cấu hình Flashback thành công Hình 52 Chứng thực tài khoản khởi động lại database Hình 53 Xác nhận việc khởi động lại database. 45 Hình 54 Tiến hành quá trình khởi động database II.11.3 Khôi phục dữ liệu mức ‘bản ghi’ (row level) a. Flashback Query Tại thời điểm 18:37:53 trong bảng GIAO_DICH vẫn tồn tại 2 SO_TK_MA có mã số 130000012 & 130000035 (như hình) Sau đó dba ‘nhỡ’ tay xóa nhầm 2 SO_TK_MA này. Theo các cách truyền thống trước đây thì dba phải restore & recover lại 1 phần hoặc toàn bộ database, hoặc phải sử dụng Log Miner. Với Oracle9i trở đi, dba chỉ đơn giản sử dụng Flashback Query như minh họa ở trên để xem & lấy lại dữ liệu các bản ghi đã mất Với Flashback Query, bạn có thể xem/lấy lại dữ liệu theo thời gian (TO_TIMESTAMP) hoặc theo SCN (TO_SCN). Để biết giá trị TiMESTAMP hiện tại, có thể: • SELECT to_char(sysdate,’ddmmyy hh24:mi:ss’) FROM dual; Đề biết giá trị SCN hiện tại, có thể: • SELECT dbms_flashback.get_system_change_number FROM dual; Hình 55 Ví dụ flashback query(1) 46 Hình 56 Ví dụ flashback query(2) b. Flashback Version Query Bạn phải sử dụng từ khóa VERSIONS BETWEEN để xem dữ liệu của 1/nhiều bản ghi đã thay đổi như thế nào trong 1 khoảng thời gian (TIMESTAMP) hoặc 1 khoảng SCN. Nếu bạn sử dụng cả từ khóa này và từ khóa AS OF thì Oracle sẽ tìm khoảng thời gian bắt đầu từ AS OF TIMESTAMP hoặc khoảng SCN bắt đầu từ AS OF SCN Giá trị thời gian/SCN chính xác mà dữ liệu của 1 bản ghi bị thay đổi (U-update, I-insert, D-delete), cũng như các thông tin liên quan (ID của transaction đã thay đổi bản ghi, loại câu lệnh DML…) có thể được tìm thấy từ các Pseudocolumn tương ứng ở trên Chú ý: VERSIONS_STARTTIME & VERSIONS_STARTSCN sẽ trả về giá trị NULL nếu dữ liệu của bản ghi bị thay đổi trước khoảng thời gian thấp nhất mà bạn nhập vào (exp|MINVALUE) hoặc bị thay đổi trước khi dữ liệu trong Undo seggment bị ghi đè (do vượt quá giá trị UNDO_RETENTION). Tương tự, VERSIONS_ENDTIME & VERSION sẽ trả về giá trị NULL nếu: • Giá trị của bản ghi là giá trị hiện thời • Dữ liệu bị thay đổi là do câu lệnh DELETE Cú pháp: SELECT [Pseudocolumns]… FROM … VERSIONS BETWEEN {SCN|TIMESTAMP {expr|MINVALUE} AND {expr|MAXVALUE}} [AS OF {SCN|TIMESTAMP expr}] WHERE [Pseudocolumns…]… Pseudocolumn Mô tả VERSIONS_STARTTIME VERSIONS_STARTSCN Giá trị thấp nhất của khoảng thời gian (Timestamp) hoặc khoảng SCN VERSIONS_ENDTIME VERSIONS_ENDSCN Giá trị cao nhất của khoảng thời gian hoặc khoảng SCN VERSIONS_XID ID của transaction liên quan VERSIONS_OPERATION Hoạt động hay loại câu lệnh DML liên quan của transaction 47 c. Flashback Transaction Query Nếu sử dụng Flashback Version Query chỉ cho bạn biết dữ liệu của 1 bản ghi bị thay đổi như thế nào trong 1 khoảng thời gian/SCN thì Flashback Transaction Query lại cho bạn các thông tin chi tiết hơn của transaction đã tạo lên sự thay đổi đó như: user chạy transaction, thời điểm transaction commit…và quan trọng hơn cả là chính xác câu lệnh SQL để Undo dữ liệu đã thay đổi (Undo_sql) Khác với Flashback Query hay Flashback Version Query, bạn phải vấn tin dữ liệu từ view FLASHBACK_TRANSACTION_QUERY thay vì chính các tables có dữ liệu bị thay đổi. Ngầm định chỉ có DBA có quyền truy vấn view này và xem/lấy lại dữ liệu đã thay đổi. Để users thông thường có thể vấn tin được view này, các users này phải có quyền SELECT ANY TRANSACTION Khi truy vấn view trên, bạn có thể tùy biến lọc (filter) các điều kiện, trong đó các thông tin thường được filter thông dụng là: • Theo ID của transaction (XID) • Theo khoảng thời gian (START_TIMESTAMP & COMMIT_TIMESTAMP) • Theo loại câu lệnh DML I, U hay D (OPERATION) • Theo table có dữ liệu bị thay đổi (TABLE_NAME) • Theo user đã thay đổi dữ liệu (LOGON_USER) II.2.11.4 Khôi phục dữ liệu mức ‘bảng’ (table level). Khác với Flashback mức độ bản ghi, Flashback Table có khả năng phục hồi dữ liệu mức bảng (table), tức là toàn bộ nội dung của 1 table sẽ được khôi phục về 1 thời điểm trước đó (point-in-time) chứ không phải chỉ là 1 vài bản ghi nào đó. Flashback Table cũng sử dụng dữ liệu ‘lịch sử’ được lưu trữ trong Undo tablespace Flashback Table chỉ áp dụng được khi table bị thay đổi bởi các câu lệnh DML. Với câu lệnh DROP TABLE bạn phải sử dụng Flashback Drop, với câu lệnh TRUNCATE, bạ phải sử dụng Flashback Database. Chú ý: để biết khoảng thời gian/SCN nào trước đó cần ‘quay về’ (rewind), bạn nên sử dụng Flashback Version Query & Flashback Transaction Query để lấy thông tin: • Ở mức table, Flashback không chỉ Flashback dữ liệu của table mà còn Flashback các dependent objects của table đó (ví dụ như index, trigger…) • Câu lệnh để Flashback Table (FLASHBACK TABLE) được thực hiện như là 1 transaction duy nhất (single transaction), tức là nó tự động được commit và bạn không thể rollback những thay đổi do nó tạo ra • Để 1 user bình thường cũng có thể Flashback các tables, bạn phải gán quyền FLASHBACK ANY TABLE cho user đó Bởi vì ROWID của 1 table không được giữ nguyên (reserve) khi tiến hành Flashback nên bạn cần phải ENABLE ROW MOVEMENT đối với table đó trước khi có thể Flashbacked 48 Hình 57 Thiết lập chế độ Enable Row Movement Khi Flashback Table, bạn có thể cùng Flashback 2 hoặc nhiều tables cùng lúc, điều này rất có ý nghĩa nếu các tables này có mối quan hệ Cha-Con với nhau, ví dụ: • FLASHBACK TABLE tin_payer, tin_province • TO TIMESTAMP (sysdate-1) Ngầm định, trong quá trình Flashback Table, các Triggers của table(s) sẽ bị Disabled và được Enabled trở lại sau khi kết thúc Flashback. Nếu bạn muốn các Triggers vẫn có thể được Enabled trong quá trình Flashback, bạn có thể gõ lệnh sau: • FLASHBACK TABLE tin_payer TO TIMESTAMP (sysdate-1) • ENABLE TRIGGERS Sau đây là một số ví dụ: Trước hêt, chúng ta Drop (Truncate) bảng nganhang.co_lai_suat: Hình 58 Ví dụ flashback drop Tiếp theo chọn Administration tab => Tables =>Nhập NGANHANG vào trường Shemas Filed chọn Go=> Chọn Recycle Bin xuất hiện thông tin bản các bản đã Drop (Truncate) như sau: 49 Hình 59 Thông tin lưu trữ tại Recyclebin Để xem thông tin dữ liệu của bảng bị Drop (Truncate) chọn View Content: Hình 60 Xem thông tin dữ liệu của bảng bị xóa Để phục hồi bảng bị Drop (Truncate) từ hình II.11.16 bạn check vào bảng cần phục hồi và nhấn nút Flashback Drop như hình sau: Hình 61 Chọn bảng co_lai_suat cần phục hồi Nhấn chọn next: 50 Hình 62 Thông tin quá trình Flashback Drop Thông tin recovery: Hình 63 Thông tin quá trình Flashback Drop Nếu muốn xem câu lệnh nhấn chọn nút ShowSQL hiển thị như sau: Hình 64 Thông tin quá trình Flashback Drop Xác nhận việc flashback: 51 Hình 65 Thông tin quá trình Flashback Drop Nếu sử dùng bằng dòng lệnh ta có thể làm như hình sau: Hình 66 Thông tin Flashbck drop bằng dòng lênh Chúng ta có thể Flashback về Point in Time hoặc SCN bằng Grid Control. Tại thời điểm ngày 02/10/2008 13:10 trong bảng giao dịch có hai sổ tiết kiệm có so_du >100000000 như sau: Hình 67 Thông tin Flashbck drop bằng dòng lênh Từ tab Maintenance, dưới mục Backup/Recovery, bạn chọn Perform Recovery, sau đó bạn chọn Flashback Existing Tables từ mục Object Level Recovery như sau: Hình 68 Thông tin flashback tables từ Point in Time 52 Sau đó chọn kiểu Flashback theo Point in Time hoặc SCN và đặt giá trị tương ứng: Hình 69 Thông tin flashback tables từ Point in Time Chọn bảng cần Flashback nhấn nút Add Table Hình 70 Thông tin flashback tables từ Point in Time Tiếp nhấn chọn Next: Hình 71 Thông tin flashback tables từ Point in Time 53 Nếu muốn xem câu lệnh nhấn chọn Show SQL: Hình 72bThông tin flashback tables từ Point in Time Hiển thị thông tin xác nhận. Sau đó nhấn chon Submit như sau: Hình 72a Thông tin flashback tables từ Point in Time II.2.11.5 Khôi phục toàn bộ cơ sở dữ liệu (database level). Trước khi Flashback Database, bạn phải kiểm tra xem khả năng Flashback có thể ‘đến đấu’?: có thể khôi phục database về thời điểm nào trước đó theo Timestamp hoặc theo SCN hoặc Log Sequence. Câu hỏi này có thể trả lời nhờ truy vấn view V$flashback_database_log. Sau đó bạn phải Restart database ở chế độ MOUNT Tiếp theo bạn có thể sử dụng SQLPLUS hoặc RMAN để Flashback database Chú ý: Sau khi database đã được Flashbacked thì bạn phải OPEN database với từ khóa RESETLOGS. 54 Hình 73 Bật chế độ Flashback Hình 74 Thực hiện Fashback bảng nganhang.co_lai_suat. 55 Từ tab Maintenance, dưới mục Backup/Recovery, bạn chọn Perform Recovery, sau đó bạn chọn Recover to the current time or previous point-in-time từ mục Whole Database Recovery Hình 75 Thông tin flashback database từ Point in Time Sau khi bấm nút Perform Whole Database Recovery, bạn sẽ thấy xuất hiện màn hình Confirmation thông báo cho bạn biết bạn phải Restart database ở chế độ MOUNT trước khi muốn tiếp tục: Hình 76 Thông tin flashback database từ Point in Time Ở màn hình này, bạn có thể chờ một chút thời gian hoặc liên tục bấm nút Refresh để sang bước tiếp theo: Hình 77 Thông tin flashback database từ Point in Time 56 II.2.11.6 Một số chú ý. 1. Một số chú ý đối với Flashback Drop • Loại tables có thể Flashback Drop:  Không nằm trong SYSTEM tablespace & tablespace phải là loại Locally-Managed  Không nằm trong SYSTEM tablespace & tablespace  Không được sử dụng Fine-Grained Auditing hoặc Virtual Private Database. • Loại dependent objects không được lưu trong Recyclebin:  Bitmap-Join index  Materialized view  Referential Integrity Constraint  Index drop before drop table 2. Một số chú ý đối với Flashback Version Query • Không thể sử dụng từ khoá Versions để truy vấn dữ liệu của các loại tables sau:  External table  Temporary table  Fixed table  View • Không thể sử dụng Versions để truy vấn dữ liệu khi table bị thay đổi bởi câu lệnh DDL • Khi table bị thay đổi do Segment shrink, các phiên bản dữ liệu (versions) sẽ được filtered-out 3. Một số chú ý đối với Flashback Transaction Query • Có thể phản ánh những thông tin cập nhật Data Dictionary liên quan nội tại trong database • Chỉ phản ánh Object Number ( Object ID) của các objects bị xóa bằng câu lệnh Drop • Chỉ phản ánh User Identifier (User ID) của các users bị xóa bằng câu lẹnh Drop • Để có thể cung cấp thêm thông tin chi tiết của 1 transaction bạn cần Enable tính năng SUPPLEMENTAL LOG DATA của database: ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; Một transaction đôi khi tạo nên các câu lệnh DML (recursive) trong nội tại database như thay đổi space management (auto extend chẳng hạn), hay cập nhật các Data Dictionary. Chính vì vậy khi query view FLASHBACK_TRANSACTION_QUERY, bạn sẽ thấy ngoài thông tin cần thiết của transaction của bạn, bạn còn thấy cả các thông tin cập nhật Data Dictionary… Nếu thông tin của 1 transaction bao gồm cả các object (table chẳng hạn) bị Dropped hay user bị dropped thì table & user đó không thể hiện tên (table_name, 57 user_name) trong FLASHBACK_TRANSACTION_QUERY mà chỉ hiện object_id của table đó hay user_id của user đó Để có thể có thêm thông tin chi tiết khác như chained rows, các thiết lập/thay đổi về lưu trữ của 1 object (Storage Arrangements) như của Cluster thì bạn cần phải Enable tính năng SUPPLEMENTAL DATA LOG như ở trên Chú ý: khi query view FLASHBACK_TRANSACTION_QUERY bạn có thể gặp một số row có column OPERATION=UNKNOWN, đó là khi Oracle không đủ dữ liệu Undo để phản ánh thông tin của transaction liên quan. 4. Một số chú ý đối với Flashback Table • Đòi hỏi 1 transaction riêng biệt và các Exclusive DML locks trên table cần Flashbacked • Các thông tin thống kê (Statistics) của table(s) không thể Flashbacked • Đa số các dependent objects của table(s) được Flashbacked đều được bảo toàn (maintain) trong & sau Flashback • Không thể Flashback đối với system tables • Hỗ trợ hạn chế khi table cần Flashbacked bị thay đổi bởi câu lệnh DDL • Thông tin về Flashback Table luôn được ghi lại trong Alert file Khi table(s) được Flashbacked, 1 Exclusive Lock DML sẽ được thiết lập trên các tables này. Đồng thời Flashback Table đòi hỏi 1 transaction riêng biệt nên bạn không thể Rollback sau khi Flashbacked cũng như các tables tham gia Flashback hoăch cùng Flashback thành công haợc cùng thất bại. Oracle không hỗ trợ việc Flashback cả các Statistics của table(s) khi chúng được Flashbacked Các dependent objects như các Indexes hiện thời, Materialized view đều được bảo toàn (maitain) trong và sau Flashback Table. Ngoại trừ các indexes bị Dropped thì không thể tự động được ‘tái tạo lại’ (re-created). Trong quá trình Flashback, nếu table constraints của bất kỳ 1 t

Các file đính kèm theo tài liệu này:

  • doc1.doc
  • pdfORACLE10GLV.pdf
Tài liệu liên quan