Tôi đã có một bài đăng trước đây về các quy trình do người dùng xác định với DBMS_STATS. Sau một số lần đào sâu hơn, tôi xác định cách thức hoạt động của nó. Tôi có một số dữ liệu trong cơ sở dữ liệu của mình được lưu trữ trong Loại do người dùng xác định. Nếu bạn có kiểu do người dùng xác định, bạn có thể liên kết quy trình thu thập số liệu thống kê do người dùng xác định với Giao diện hộp mực dữ liệu Oracle (ODCI). Quy trình ODCIStatsCollect được gọi tự động khi DBMS_STATS được đặt trên bảng có chứa kiểu do người dùng xác định.
Trong trường hợp của tôi, tôi đã theo dõi mức sử dụng CPU cao cho một câu lệnh SQL mà nhà cung cấp ứng dụng bên thứ ba đưa vào quy trình ODCIStatsCollect của họ. Tại thời điểm này, nó chỉ trở thành một vấn đề điều chỉnh truy vấn. Làm thế nào chúng ta có thể viết truy vấn để nó sử dụng ít CPU hơn? Sau khi xem xét vấn đề, tôi đã tìm ra cách dễ nhất là lấy ra truy vấn con và đưa kết quả vào Bảng tạm thời toàn cục. Sau đó, yêu cầu phần còn lại của truy vấn tham gia vào GTT thay vì tham gia vào chính truy vấn con. Bằng cách đó, việc sử dụng CPU đã giảm đáng kể. Tôi đã gửi bản sửa lỗi cho nhà cung cấp ứng dụng và tôi đang chờ xem họ nói gì.