Đ6T TR*NG THÁI TĨNH CHO DATABASE

Một phần của tài liệu ORACLE_kiến trúc và quản trị pptx (Trang 48 - 49)

5.4.START VÀ SHUTDOWN DATABASE 5.4.1 Các bước Start và Shut down database

5.5.Đ6T TR*NG THÁI TĨNH CHO DATABASE

Có nhiều khi ta cần phải đưa database vào trạng thái mà chỉ có các DBA transactions, queries (truy vấn), fetches (tìm kiếm dữ liệu), hay các câu lệnh PL/SQL là được phép thực hiện. Chế độ này được gọi là quiesced state - tạm dịch là chế độ tĩnh. Chế độ này cho phép quản trị viên có thể thực hiện một số thao tác khơng an tồn lắm trên database bao gồm các thao tác sau đây:

Các thao tác có thể gặp lỗi nếu đồng thời có một user transactions truy cập vào cùng một đối tượng. Ví dụ như khi thay đổi table, thêm mới cột dữ liệu vào một table đang có và khơng yêu cầu khoá (no-wait lock is required).

Các thao tác không mong muốn gây ảnh hưởng tức thì giữa các user transactions xảy ra đồng thời. Ví dụ khi có một thủ tục chứa nhiều bước thao tác trên một table chẳng hạn như table ban đầu được export dữ liệu, rồi bị xoá đi và cuối cùng lại được import dữ liệu trở lại. Cùng lúc đó có user khác muốn truy cập vào table và ngay tại thời điểm table vừa bị huỷ. Khi này sẽ phát sinh lỗi hệ thống.

Nếu không áp dụng trạng thái tĩnh cho database, thì ta cần phải shutdown database rồi open lại nó ở chế độ restrict. Và việc này sẽ trở nên nghiêm trọng hơn khi hệ thống yêu cầu phải chạy liên tục 24 x 7. Áp dụng chế độ tĩnh cho database sẽ giảm bớt đi các hạn chế vì restriction vì nó loại bớt đi được các xấu xảy ra với database.

5.5.1. Đưa Database vào trạng thái tĩnh

Để đưa database vào trạng thái tĩnh, đơn giản ta chỉ cần sử dụng lệnh: ALTER SYSTEM QUIESCE RESTRICTED

Tất cả các non-DBA active sessions sẽ được tiếp tục xử lý cho tới khi chúng chuyển sang trạng thái inactive. Một session được xem là active nếu lúc đó nó đang có các phép thực như transaction, query, fetch, hay đang xử lý một câu lệnh PL/SQL; hoặc cũng có thể là session đó đang nắm giữ phần tài nguyên chia sẻ (shared resources).

Khi tất cả các non-DBA sessions chuyển sang trạng thái inactive, câu lệnh ALTER SYSTEM QUIESCE RESTRICTED kết thúc và database được xem như là chuyển sang trạng thái tĩnh quiesce state. Trong môi trường Oracle Real Application Clusters, câu lệnh này có ảnh hưởng tới tất cả các instances, chứ không chỉ là đối với instance nơi phát ra câu lệnh. Lệnh ALTER SYSTEM QUIESCE RESTRICTED có thể phải chờ trong một thời gian khá dài để cho active sessions chuyển sang trạng thái inactive. Nếu ta huỷ bỏ yêu cầu, hoặc nếu session bị kết thúc một cách đột ngột vì nhiều lý do khác nhau thì Oracle sẽ tự động phục hồi lại (undo) trạng thái trước khi thực hiện lệnh.

Nếu một truy vấn được đưa ra bởi các Oracle Call Interface (OCI), thì câu lệnh ALTER SYSTEM QUIESCE RESTRICTED sẽ không chờ fetch hết tất cả các dữ liệu mà chỉ chờ fetch xong dịng dữ liệu hiện thời mà thơi.

Khi ở trạng thái quiesce state, ta không sử dụng hệ điều hành để sao chép các file trong hệ thống giống như khi thực hiện backup lạnh đối với database, cho dù ta có các checkpoint tại mỗi một instance. Lý do là vì khi ở trạng thái quiesce state thì các file headers của online datafiles vẫn luôn được liên tục truy cập.

5.5.2. Phục hồi hệ thống trở lại hoạt động như bình thường Thực hiện câu lệnh sau:

ALTER SYSTEM UNQUIESCE

Khi này tất cả các non-DBA activity sẽ được tiếp tục thực hiện. Trong môi trường Oracle Real Application Clusters, ta có thể phát lệnh này từ bất kỳ một instance nào có kết nối tới server khơng nhất thiết phải là instance phát lệnh đặt trạng thái tĩnh. Trong trường hợp session phát lệnh ALTER SYSTEM UNQUIESCE gặp lỗi, Oracle database server sẽ luôn đảm bảo việc thực hiện unquiesce sẽ kết thúc.

5.5.3. Xem trạng thái của database

Ta có thể xem trạng thái của database qua các thơng tin có trong V$INSTANCE . Các thơng tin này được lưu trong cột ACTIVE_STATE với các nội dung như sau:

ACTIVE_STATE Diễn giải

NORMAL Trạng thái thông thường

QUIESCING Đang ở trạng thái tĩnh – quiesce state, nhưng các active non-DBA sessions vẫn được thực hiện

QUIESCED Ở trạng thái quiesce state, và không có bất kỳ một active non-DBA sessions nào được phép thực hiện

Một phần của tài liệu ORACLE_kiến trúc và quản trị pptx (Trang 48 - 49)