Tôi chắc chắn rằng ai đó đọc bài viết này sẽ hỏi, "làm thế nào bạn không biết điều đó?". Nhưng đôi khi những điều đơn giản nhất lại đến với chúng ta vào cuối trận đấu trong khi những người khác lại biết điều đó từ rất sớm.
Tôi đã vá lỗi Oracle trên Windows kể từ những ngày Windows NT. Tất cả những người vá lỗi Oracle trên Windows đều biết rằng OPatch thường sẽ lúng túng trước thực tế là một số tệp DLL bị khóa bởi các quy trình khác. Cách dễ nhất để tôi giải quyết vấn đề này là chỉ cần đổi tên các tệp DLL sẽ được thay thế bằng bản vá. Hệ điều hành sẽ không cho phép bạn xóa các tệp DLL, nhưng bạn có thể đổi tên chúng và sau đó OPatch có thể tiếp tục. Trong những ngày đầu của OPatch, tôi sẽ chạy ứng dụng, nó sẽ loại bỏ DLL đã bị khóa. Tôi sẽ đổi tên tệp DLL và sau đó chạy lại OPatch để lấy tệp DLL tiếp theo đã bị khóa. Quá trình này sẽ lặp lại khoảng 20 lần cho đến khi OPatch không tìm thấy tệp DLL nào bị khóa. Ít nhất bây giờ khi bạn chạy OPatch, nó cung cấp cho bạn danh sách đầy đủ các tệp DLL đã bị khóa.
Đôi khi tôi muốn biết quy trình đang khóa tệp DLL. Trước đây, tôi sẽ tải xuống một trong những tiện ích có sẵn miễn phí đó để hiển thị cho tôi (các) quy trình khóa tệp được đề cập và chấm dứt quy trình. Nhưng tôi không thích phần mềm miễn phí làm đầy máy chủ của mình nên tôi thường xóa tiện ích này khi làm xong. Cho đến lần tiếp theo tôi cần tiện ích đó…
Gần đây, ai đó đã chỉ tôi đến Metalink Note 294350.1 có chứa một tiện ích nhỏ mà tôi không biết trước khi đọc tài liệu này. Rõ ràng, Windows bao gồm một tiện ích dòng lệnh để hiển thị các quy trình đang khóa tệp DLL. Bây giờ tôi có thể làm:
tasklist /m
Kết quả đầu ra có thể dài, vì vậy sẽ có lợi khi lưu trữ kết quả đầu ra trong một tệp và sau đó mở tệp trong trình soạn thảo văn bản:
tasklist /m > c:\oracle\task_list.txt notepad c:\oracle\task_list.txt
Sau đó, tôi có thể sử dụng chức năng tìm kiếm của trình soạn thảo văn bản để tìm DLL được đề cập.
Bây giờ làm thế nào mà tiện ích nhỏ này đã thoát khỏi sự chú ý của tôi trong suốt những năm qua?