Trong quản trị cơ sở dữ liệu, việc quản lý log và kiểm soát hiệu năng là hai vấn đề cực kỳ quan trọng và đóng vai trò không thể thiếu trong môi trường Oracle Database.
Bài viết này sẽ giới thiệu đến bạn các kỹ thuật nâng cao để quản trị và kiểm soát hiệu năng của Oracle Database Logs, từ đó giúp tối ưu hóa quá trình quản lý log và tăng cường hiệu suất của cơ sở dữ liệu. Nếu bạn đang quan tâm đến việc cải thiện hiệu suất của Oracle Database, đừng bỏ qua bài viết này!
Viewing The Alter Log
Mỗi cơ sở dữ liệu có một file alert_<sid>.log. File này nằm trên Server database và được lưu trữ mặc định trong folder $ORACLE_BASE/diag/rdbms/<db_name>/<SID>/trace. Trong đó, $ORACLE_BASE là biến mối trường được thiết lập từ lúc cài đặt Database.
File alert của một cơ sở dữ liệu là một nhật ký theo thời gian của các sự kiện như sau:
- Bất kỳ thông tin nào về các tham số khởi tạo.
- Tất cả các lỗi nội bộ (ORA-600), lỗi hỏng blocks (ORA-1578) và lỗi chết khóa(deadlock) (ORA-60) đã xảy ra
- Các hoạt động quản trị, chẳng hạn như các câu lệnh SQL CREATE, ALTER, DROP DATABASE và TABLESPACE; và các câu lệnh STARTUP, SHUTDOWN, ARCHIVE LOG và RECOVER của Enterprise Manager hoặc SQL*Plus
- Một số thông báo và lỗi liên quan đến chức năng của các Share Server Process và điều phối viên(dispatcher processes)
- Lỗi trong quá trình làm mới tự động của một chế độ xem đã vật liệu hóa(materialized view)- Materialized view trong Oracle là một phiên bản sao lưu của một truy vấn được lưu trữ dưới dạng bảng. Nó là một cách để lưu trữ kết quả của một truy vấn phức tạp hoặc chiếm nhiều tài nguyên, và cho phép truy cập dữ liệu nhanh hơn và hiệu quả hơn. Materialized view được cập nhật định kỳ từ cơ sở dữ liệu nguồn, để đảm bảo rằng nó luôn cập nhật với dữ liệu mới nhất. Materialized view thường được sử dụng trong các hệ thống dữ liệu lớn hoặc các ứng dụng có yêu cầu về hiệu suất cao.
Oracle Database sử dụng Alter Log để lưu lại các sự kiện này như một cách để thay thế cho việc hiển thị thông tin trên màn hình điều khiển(console) của người quản trị. (Nhiều hệ thống cũng hiển thị thông tin này trên màn hình điều khiển - màn hình console.) Nếu một hoạt động quản trị thành công, một thông báo sẽ được ghi vào file alert dưới dạng "completed" cùng với time stamp.
Enterprise Manager Cloud Control giám sát file alert log và thông báo cho bạn về các lỗi quan trọng. Bạn cũng có thể xem log để xem các thông báo lỗi và thông tin không quan trọng. Vì tập tin này có thể tăng lên đến một kích thước không thể quản lý được, bạn có thể định kỳ sao lưu tập tin alert và xóa tập tin alert hiện tại. Khi cơ sở dữ liệu bắt đầu ghi tiếp thông tin vào file alert một lần nữa, nó sẽ tạo ra một file log mới.
Lưu ý: Có một phiên bản XML của file alert trong thư mục $ORACLE_BASE/diag/rdbms/<db_name>/<SID>/alert.
Ngoài ra, bạn có thể xác định vị trí của tập tin alert bằng SQL * Plus theo các bước sau:
- Kết nối vào cơ sở dữ liệu với SQL * Plus (hoặc công cụ truy vấn khác như SQL Developer).
- Truy vấn view V$DIAG_INFO.
SQL> select * from V$DIAG_INFO;
Để xem tập tin alert log chỉ với các thẻ văn bản thông thường:
- Trong kết quả truy vấn V$DIAG_INFO, bạn sẽ thấy đường dẫn tương ứng với field Name "Diag Trace". Bạn chỉ cần di chuyển và vị trí theo đường dẫn của Diag Trace là sẽ tìm đến được file alter_SID.Log
- Mở tệp alert_SID.log bằng trình chỉnh sửa văn bản.
Để xem tập tin alert log được định dạng XML:
- Trong kết quả truy vấn V$DIAG_INFO, lưu ý đường dẫn tương ứng với mục "Diag Alert". Đổi thư mục đến đó.
- Mở tệp log.xml bằng trình chỉnh sửa văn bản.
Sử dụng các file Trace trong Oracle Database
Mỗi Server Process và Background Process có thể viết vào các file Trace riêng của từng process. Khi một process phát hiện một lỗi nội bộ, nó sẽ ghi thông tin về lỗi vào trace file của nó. Nếu xảy ra lỗi nội bộ và thông tin được ghi vào trace file, quản trị viên nên liên hệ với dịch vụ Hỗ trợ Oracle.
Tất cả các tên trace file liên quan đến Background process đều chứa tên của process tạo ra tệp theo dõi. Ngoại lệ duy nhất là các tệp theo dõi(trace file) được tạo ra bởi các tiến trình hàng đợi công việc (Jnnn) - Queue process.
Thông tin bổ sung trong các tệp theo dõi có thể cung cấp những hướng dẫn cho việc tinh chỉnh ứng dụng. Các background process luôn ghi thông tin này vào tệp theo dõi khi đến thời điểm thích hợp.
Cơ sở dữ liệu Oracle bao gồm một cơ sở hạ tầng chẩn đoán lỗi tiên tiến để ngăn chặn, phát hiện, chẩn đoán và giải quyết vấn đề. Các vấn đề mục tiêu được nhắm đến bao gồm các lỗi nghiêm trọng như các lỗi do lỗi mã code cơ sở dữ liệu, lỗi tổn thất dữ liệu, siêu dữ liệu và lỗi tổn thất dữ liệu của khách hàng.
Khi xảy ra một lỗi nghiêm trọng, một số sự cố được gán một số incident; dữ liệu chẩn đoán cho lỗi (như các tệp trace) lập tức được chụp lại và đánh dấu với số này. Sau đó, dữ liệu được lưu trữ trong kho chứa chẩn đoán tự động (ADR) - một kho lưu trữ dựa trên file ngoài cơ sở dữ liệu - nơi sau này có thể lấy lại bằng số sự cố và phân tích.
ADR là một kho lưu trữ trung tâm của toàn hệ thống cho dữ liệu chẩn đoán cơ sở dữ liệu như các tệp trace, nhật ký cảnh báo, báo cáo trình giám sát sức khỏe và nhiều thứ khác nữa.
Thư mục gốc của ADR được biết đến là ADR base. Vị trí của nó được đặt bởi initialization parameter DIAGNOSTIC_DEST.
Vị trí của ADR home được xác định bởi đường dẫn sau, bắt đầu từ thư mục ADR base:
./diag/product_type/db_id/instance_id
BÀI VIẾT LIÊN QUAN
Administaring The DDL Log Files
DDL log file là một tệp nhật ký trong Oracle Database, lưu trữ các câu lệnh DDL (Data Definition Language) được thực thi trên cơ sở dữ liệu, chẳng hạn như tạo, sửa đổi hoặc xóa các đối tượng cơ sở dữ liệu như bảng, chế độ xem, thủ tục lưu trữ, hàm, khóa ngoại, chỉ mục, v.v.
Tệp nhật ký này giúp quản trị viên cơ sở dữ liệu giám sát các thay đổi trong cơ sở dữ liệu và cung cấp lịch sử cho các sự kiện DDL, bao gồm thời gian, người thực hiện, tên đối tượng, kiểu sự kiện và mã SQL của sự kiện. Nó có thể được sử dụng để phục hồi các sự kiện DDL hoặc để phân tích các vấn đề cơ sở dữ liệu.
DDL log file được tạo ra chỉ khi initialization parameter ENABLE_DDL_LOGGING được thiết lập thành TRUE. Khi tham số này được thiết lập thành FALSE, các câu lệnh DDL sẽ không được ghi vào bất kỳ file log nào.
Vị trí của file log DDL trên Windows Server phụ thuộc vào giá trị của tham số CORE_DUMP_DEST hoặc USER_DUMP_DEST trong file cấu hình init.ora của Oracle.
Thông thường, mặc định tham số này được đặt tại thư mục:
%ORACLE_BASE%\diag\rdbms\<db_name>\<instance_name>\trace.
Trong đó:
- %ORACLE_BASE% là biến môi trường Oracle Base mà bạn đã thiết lập khi cài đặt Oracle Database
- <db_name> là tên cơ sở dữ liệu và <instance_name> là tên của Oracle instance được sử dụng.
Bạn cũng có thể kiểm tra giá trị của tham số USER_DUMP_DEST trong Oracle bằng câu lệnh SQL*Plus sau:
SQL> SHOW PARAMETER USER_DUMP_DEST
Kết quả trả về sẽ hiển thị vị trí hiện tại của thư mục chứa các file dump trong Oracle.
Trong môi trường Linux thì bạn có thể xác định vịt trí DDL file như sau:
$ pwd
/u01/app/oracle/diag/rdbms/orcl/orcl/log
$ ls
ddl ddl_orcl.log debug test
$ cd ddl
$ ls
log.xml
Tìm hiểu về Debug Log File
Debug Log File là một file log chứa các cảnh báo được tạo ra bởi các thành phần trong Oracle Database về các điều kiện, trạng thái hoặc sự kiện có thể không bình thường nhưng không gây ra lỗi trong hoạt động của thành phần đó.
Các cảnh báo này không được ghi vào alert log và chỉ được ghi vào debug log nếu cần thiết cho việc chẩn đoán sự cố trong tương lai. Debug log thường chỉ được sử dụng bởi nhóm hỗ trợ của Oracle để chẩn đoán sự cố và không cần phải xem nội dung của nó thường xuyên.
Debug log cũng được bao gồm trong các gói sự cố incident packaging service (IPS).
File Debug Log được ghi vào vị trí sau:
$ORACLE_BASE/diag/rdbms/<db_name>/<SID>/debug
Sử dụng Dynamic Performance Views
Hệ thống cơ sở dữ liệu Oracle cũng duy trì một bộ dữ liệu động hơn về hoạt động và hiệu suất của các database instance. Các Dynamic Performance Views này dựa trên các bảng ảo được xây dựng từ các cấu trúc bộ nhớ bên trong server database. Tức là, chúng không phải là các bảng thông thường tồn tại trong cơ sở dữ liệu. Điều này lý giải tại sao một số View loại này có sẵn trước khi cơ sở dữ liệu được MOUNT hoặc OPEN.
Các Dynamic Performance Views bao gồm thông tin về:
- Session
- Files States
- Tiến độ của các công việc và tác vụ
- Locks
- Backup status
- Memory usage and allocation
- System and session parameters
- SQL execution
- Statistics and metrics
Lưu ý: Các DICT view và DICT_COLUMNS view cũng chứa tên của các Dynamic Performance View này.
Ví Dụ Sử dụng Dynamic Performance Views
Ba ví dụ được trình bày ở hình trên giải quyết các câu hỏi sau đây:
- Đối với những câu lệnh SQL nào (và số lần thực thi tương ứng) thì thời gian CPU tiêu thụ lớn hơn 200.000 micro giây?
- Những session hiện tại nào đã đăng nhập từ máy tính EDXX9P1 trong ngày qua?
- Những ID session đang giữ khóa hiện tại nào đang chặn người dùng khác và đã giữ khóa bao lâu rồi?
một số dynamic views (gọi tắt là V$ views) chứa dữ liệu không phù hợp với tất cả các trạng thái của một instance hoặc database.
Ví dụ, nếu một instance vừa được khởi động nhưng chưa mount database, bạn có thể truy vấn V$BGPROCESS để xem danh sách các background process đang chạy. Nhưng bạn không thể truy vấn V$DATAFILE để xem trạng thái của các data file của database vì việc mount database mới đọc control file để tìm các tệp dữ liệu liên quan đến database.
Một số V$ views chứa thông tin tương tự như thông tin trong các DBA_ views tương ứng. Chú ý rằng tên của V$ views thường là số ít và tên của DBA_ views thường là số nhiều.