Gần đây, tôi đang áp dụng PSU tháng Bảy cho một trong các cơ sở dữ liệu RAC của mình và tôi liên tục nhận được lỗi từ OPatch rằng kiểm tra quy tắc trước không thành công. Không có gì ngạc nhiên đối với bất kỳ ai ngoài đó rằng OPatch phải trải qua một số bước kiểm tra trước khi áp dụng bản vá. OPatch đang cố gắng đảm bảo cơ hội thành công tốt và không bỏ bom giữa chừng trong quá trình vá lỗi.
Bây giờ checkSystemSpace chỉ là một trong những kiểm tra mà OPatch thực hiện. Và từ tiêu đề của nó, tôi có thể dễ dàng nhận ra rằng tôi đang thiếu dung lượng, có thể là dung lượng đĩa. Tôi biết điều này nằm trên ổ đĩa nơi ORACLE_HOME cư trú vì đó là không gian đĩa duy nhất mà tôi đang sửa đổi khi áp dụng bản vá. Nhưng điều mà OPatch không cho tôi biết trên màn hình là cần bao nhiêu dung lượng. Tệp nhật ký OPatch cũng không cho tôi biết. Tôi có khoảng 8GB dung lượng trống trên ổ đĩa đó và PSU không ở đâu gần kích thước đó. Tôi đã xóa một số tệp cũ nhưng OPatch vẫn không thành công trong lần kiểm tra này.
Để tìm ra dung lượng ổ đĩa cần thiết, tôi đã chạy OPatch theo cách thủ công để kiểm tra điều kiện tiên quyết cụ thể này như sau:
opatch trước checkSystemSpace -ph.
Tôi đang chạy kiểm tra điều kiện tiên quyết. Tham số thứ hai để OPatch cho nó biết kiểm tra nào sẽ chạy. Chỉ thị -ph cho OPatch biết thư mục chính của bản vá nào sẽ sử dụng và trong trường hợp của tôi, đó là thư mục hiện tại (được biểu thị bằng dấu chấm). Đầu ra tương tự như sau được cắt bớt cho ngắn gọn:
Space Needed : 8780.128MB
Space Usable : 8347.293MB
Required amount of space(8780.128MB) is not available.
Prereq "checkSystemSpace" failed.
Bằng cách chạy kiểm tra yêu cầu trước theo cách thủ công, tôi đã có thể lấy được thông tin tôi cần. OPatch đang tìm kiếm khoảng 8,7 GB dung lượng trống và tôi có 8,3 GB khả dụng và tôi còn thiếu khoảng 430 MB. Vì vậy, bây giờ tôi biết rõ mình cần dọn sạch bao nhiêu dung lượng trước khi kiểm tra này vượt qua chính xác.
OPatch có một số cách kiểm tra khác với nó. Để tìm ra tất cả chúng, hãy đưa ra nội dung sau:
opatch prereq -h
Điều này sẽ không chỉ cung cấp tên của các séc mà còn mô tả ngắn gọn về mỗi séc. Ví dụ:bạn có thể được thông báo rằng việc kiểm tra CheckApplicable không thành công. Điều đó nghĩa là gì? Mô tả một đoạn là:
CheckApplicable
Check for the presence of the required components in
the ORACLE_HOME and check if all the actions of the
given patch(es) are applicable.
Vì vậy, việc kiểm tra này đảm bảo rằng thư mục chính Oracle có các thành phần cần thiết để thành công. Ví dụ:bạn không thể áp dụng bản vá để khắc phục sự cố phân vùng nếu tùy chọn Phân vùng không được cài đặt. Sử dụng OPatch để xem phần còn lại của kiểm tra yêu cầu lại mà OPatch đang thực hiện. Hầu hết trong số chúng diễn ra trong nền mà không cần thông báo nên một số trong số này có thể làm bạn ngạc nhiên.
Lần tới khi bạn kiểm tra yêu cầu trước không thành công, hãy thử chạy nó theo cách thủ công để xem liệu bạn có nhiều thông tin hơn những gì được cung cấp ban đầu khi bạn cố gắng áp dụng bản vá hay không.