Sửa cơ sở dữ liệu Firebird bị hỏng


8

Tôi có cơ sở dữ liệu Firebird 200 GB (được tạo bằng Firebird 2.1.3, hiện đang chạy 2.1.5) và dường như nó bị hỏng. Khi tôi cố gắng sao lưu, tôi nhận được:

tệp cơ sở dữ liệu xuất hiện lỗi <>
sai loại
trang trang 0 là loại sai (dự kiến ​​0 tìm thấy 1)
gds_get_seribution không thành công

gfix kết thúc bằng một

bế tắc

Làm thế nào tôi có thể sửa chữa nó?

CẬP NHẬT

Mặc dù cơ sở dữ liệu cụ thể này chưa được sửa, tôi đoán giải pháp là thử IB FirstAID.

Đề nghị đọc:


1
Hãy thử xuất siêu dữ liệu, sử dụng IBExpert . Và tạo một cơ sở dữ liệu mới mà không có lỗi.
dataol

1
Hãy thử với FB First Aid , tôi đã có kết quả tốt hơn với công cụ này.
Cesar

FB First Aid tính phí $ 199 mỗi ba lần phục hồi, do đó bạn thậm chí không thể mua giấy phép và sở hữu công cụ này. Nó hơi dốc.
Warren P

Câu trả lời:


6

Đâ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/


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.