Đây là một hướng dẫn từng bước ngắn:
- ngắt kết nối người dùng và vô hiệu hóa các kết nối đến cơ sở dữ liệu
- tạo một bản sao của tệp cơ sở dữ liệu (hoặc hai bản sao) và làm việc trên đó
- sử dụng tùy chọn GFIX với -v để xác thực tệp cơ sở dữ liệu
- sử dụng GFIX với -v và -f để xác thực đầy đủ
Nếu sự cố không quá nghiêm trọng, bạn có thể thử sao lưu db bị hỏng và khôi phục dưới một tên mới:
- sử dụng GFIX -mend để chuẩn bị cơ sở dữ liệu bị hỏng để sao lưu
- sử dụng GBAK -b -g để sao lưu cơ sở dữ liệu. -g vô hiệu hóa bộ sưu tập rác
- sử dụng GBAK -c để khôi phục sao lưu vào cơ sở dữ liệu mới.
Nếu bạn thành công, bạn đã khắc phục sự cố và có cơ sở dữ liệu chức năng. Nếu không, bạn có thể thử tạo một cơ sở dữ liệu trống có cùng cấu trúc và bơm dữ liệu vào nó.
Một trong những lý do tại sao sao lưu hoặc khôi phục có thể thất bại là nếu một số kích hoạt cơ sở dữ liệu bị hỏng tồn tại và ngăn kết nối với cơ sở dữ liệu. Ví dụ: trình kích hoạt cơ sở dữ liệu có thể sử dụng một số bảng có chỉ mục bị hỏng, v.v. Để khắc phục điều này, hãy kết nối với cơ sở dữ liệu bằng công cụ isql bằng tùy chọn -nodbtriggers và sau đó vô hiệu hóa các kích hoạt đó. Bạn có thể kích hoạt chúng sau này khi bạn khắc phục các sự cố khác và lấy lại cơ sở dữ liệu.
Một lý do khôi phục khác có thể thất bại là khi bạn có dữ liệu bị hỏng, do đó một số ràng buộc về tính hợp lệ (kiểm tra các ràng buộc, v.v.) không thể được thỏa mãn. Trong trường hợp này, bạn có thể thử khôi phục cơ sở dữ liệu của mình bằng cách sử dụng lệnh chuyển đổi -N [O_VALIDITY] sang gbak.
Nếu bạn quan tâm đến thông tin chi tiết hơn về quá trình sửa chữa cơ sở dữ liệu, cũng như giải thích về một số loại tham nhũng, hãy xem trang sau:
http://www.ibphoenix.com/resource/document/search/doc_5
Nếu tất cả đều thất bại, bạn có thể thử công cụ IBSurgeon, có thể khắc phục hầu hết các sự cố và trích xuất dữ liệu. Ngoài ra, trang web của IBSurgeon có giải thích chi tiết về nguyên nhân tham nhũng cơ sở dữ liệu và các cách khắc phục:
http://ib-aid.com/option,com_content/task,view/id,58/Itemid,62/
kiểm tra hướng dẫn này http://www.firebirdfaq.org/faq324/