2011-12-30 14 views
6

Tôi có dịch vụ Windows của bên thứ ba kiểm soát/giám sát thiết bị và cập nhật cơ sở dữ liệu Oracle. Đôi khi dịch vụ của họ báo cáo lỗi về hàng/cột trong cơ sở dữ liệu là "không hợp lệ" nhưng không cung cấp lỗi cơ sở dữ liệu cơ bản và dịch vụ của họ cần được khởi động lại và mọi thứ đều ổn. Nghi ngờ hiện tại là một cái gì đó từ các ứng dụng/dịch vụ của chúng tôi mà đọc/ghi cho những bảng/hàng tương tự đang can thiệp - tức là một số loại chặn/khóa. Tôi nghi ngờ rằng có một số loại rò rỉ trong hệ thống của họ vì nó xảy ra khoảng một lần một tuần, nhưng hệ thống của chúng tôi không bao giờ cần bất kỳ bắt đầu lại như thế này.Sử dụng ODBC Trace hoặc Oracle Trace để tìm nguyên nhân lỗi?

Tôi đã cố gắng để có DBA chạy một dấu vết chạy trong Oracle (10g), nhưng điều này được quản lý để làm cho các ứng dụng của chúng tôi không thể truy cập cơ sở dữ liệu Oracle. Các hệ thống của chúng tôi truy cập Oracle bằng .NET, hoặc sử dụng máy khách Oracle ODP hoặc máy khách Microsoft (các chương trình cũ) và trên cùng một máy chủ này (hoặc các ứng dụng web hoặc dịch vụ) hoặc từ các máy trạm điều khiển khác. Các dịch vụ của bên thứ ba kết nối với Oracle thông qua ODBC trên máy chủ này. Tôi cũng đã cố gắng chạy một dấu vết ODBC (vì đó sẽ chỉ là hoạt động từ dịch vụ của bên thứ ba), nhưng không nhận được bất kỳ thứ gì trong tệp theo dõi. Vì vậy, tôi đang cố gắng để tìm một cách để có được ODBC truy tìm làm việc hoặc những gì tôi cần phải tìm cho ra để theo dõi Oracle không giết máy chủ của tôi.

Tôi đang tìm lỗi không xác định mà Oracle đang quay lại dịch vụ bên thứ ba để tôi có thể biết liệu chúng tôi có đang can thiệp vào quyền truy cập của họ vào dữ liệu theo một cách nào đó hay không.

+0

Ouch! Nếu theo dõi Oracle ngăn bạn sử dụng DB của bạn thì đó không phải là nơi để bắt đầu? Bạn có thể chứng minh bạn có một vấn đề kết thúc của bạn trong khi bạn không thực sự biết liệu lỗi của bên thứ ba là lỗi của họ hoặc "của bạn". – Ben

+0

bên thứ ba nào không cung cấp lỗi ORA cơ bản? Điều này dường như cực kỳ nghi ngờ (hoặc được viết kém hoặc ở một số bản ghi ở đâu đó) – tbone

+0

Có thể một trong những câu trả lời này sẽ giúp: http://stackoverflow.com/questions/492705/is-there-any-way-to-log-all- fail-sql-statements-in-oracle-10g –

Trả lời

0

Nếu một khối trong cơ sở dữ liệu bị hỏng "Xấu", điều này sẽ hiển thị trong nhật ký cảnh báo dưới dạng lỗi ORA-01578. Tôi sẽ tìm kiếm bản ghi lưu trữ cho lỗi ORA- và sau đó so sánh với dấu thời gian trên lỗi máy khách đang được báo cáo. Điều này làm cho giả định về định nghĩa "Xấu". Nó sẽ là tốt hơn để có các thông báo lỗi chính xác được đăng.

Truy tìm bộ đệm trong cơ sở dữ liệu là một điều phức tạp vì nó sẽ có xu hướng ảnh hưởng đến hiệu suất của toàn bộ ứng dụng của bạn. Và để nó trong một tuần có thể không khả thi. Tôi cũng đã tìm thấy trong một trường hợp (không thể nhớ chính xác trường hợp), nơi bật truy tìm cố định lỗi.

Một phương pháp tôi đã sử dụng trong quá khứ là thêm câu lệnh sql để thay đổi phiên và bật sqltrace. Điều này được xác định dựa trên khả năng sửa đổi mã theo một cách nào đó. Tùy thuộc vào ứng dụng, điều này có thể hoặc không thể thực hiện được.

Một phương pháp khác là làm việc với DBA để xác định phiên và bật theo dõi sql cho phiên đó. Ngoài ra nếu bạn có thể xác định các câu lệnh sql vi phạm và các giá trị tham số, bạn có thể sao chép sự cố bên ngoài dịch vụ.

Tôi đã tìm thấy hầu hết sự tránh khỏi ORM khi vượt qua lỗi ORA. Tuy nhiên nó thường được đăng nhập trong lớp máy chủ ứng dụng với lỗi ORM liên quan.

Tôi đã sử dụng phương pháp này và các biến thể của phương pháp này để khắc phục sự cố lỗi chụp trong ứng dụng. Tôi hy vọng điều này rất hữu ích.

Các vấn đề liên quan