Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Xây dựng lại DB ở chế độ chờ

Sau sự cố mất điện gần đây tại trang DR của chúng tôi, tôi phát hiện ra rằng chế độ chờ ở đó đã ngừng áp dụng nhật ký. Rõ ràng trong các nhật ký làm lại được lưu trữ là một giao dịch tạo ra một tệp dữ liệu nhưng đĩa tại trang web chờ không có đủ dung lượng đĩa để cho phép giao dịch đó hoàn tất. Vì vậy, quá trình khôi phục được quản lý ở chế độ chờ đã chấm dứt, như bình thường.

Chúng tôi thường giữ các nhật ký làm lại đã lưu trữ trong 7 ngày. Thật không may, vào thời điểm tôi phát hiện ra tình huống này, 15 ngày đã trôi qua và các bản ghi làm lại được lưu trữ đã "mất tích". Không có nhật ký làm lại nào được lưu trữ để áp dụng, giải pháp duy nhất là xây dựng lại cơ sở dữ liệu từ đầu. Cơ sở dữ liệu này có kích thước xấp xỉ 7TB, vì vậy việc xây dựng lại từ đầu không phải là chuyện nhỏ.

Cơ sở dữ liệu chính là cơ sở dữ liệu RAC 11.2.0.2 3 nút chạy trên Linux. Chế độ chờ là cơ sở dữ liệu RAC hai nút, rõ ràng là các phiên bản hệ điều hành và Oracle giống nhau.

Đây là cách chúng tôi hoàn thành việc xây dựng lại chế độ chờ:

  1. Chúng tôi đặt tệp chính ở chế độ sao lưu nóng và chụp nhanh cơ sở dữ liệu dựa trên đĩa.
  2. Ảnh chụp nhanh đã được sao chép sang phương tiện bên ngoài. Lưu ý:việc vận chuyển qua mạng WAN quá tốn thời gian.
  3. Phương tiện bên ngoài đã được đưa đến trang DR.
  4. LOG_ARCHIVE_DEST_STATE_n cho chế độ chờ được đặt thành DEFER.
  5. Cơ sở dữ liệu dự phòng đã bị loại bỏ khỏi cấu hình DG Broker:XÓA CƠ SỞ DỮ LIỆU CHỨNG KHOÁN DESTINATIONS;
  6. Các điểm gắn kết của cơ sở dữ liệu dự phòng đã bị xóa. Xét cho cùng, cơ sở dữ liệu về cơ bản là vô dụng vào thời điểm này.
  7. Các điểm gắn kết mới đã được tạo và ảnh chụp nhanh được ghi vào đĩa tại trang web DR.
  8. Sau khi quá trình chuyển tệp hoàn tất (khoảng 5 ngày), chúng tôi đã yêu cầu bộ phận lưu trữ cập nhật ảnh chụp nhanh tại trang DR với ảnh chụp nhanh mới hơn. Điều này được thực hiện qua mạng WAN vì chỉ những thay đổi được gửi đi, nhỏ hơn rất nhiều so với cơ sở dữ liệu.
  9. Một tệp điều khiển ở chế độ chờ đã được tạo:ALTER DATABASE TẠO TẠO KIỂM SOÁT CHUẨN NHƯ ‘/ dir / path’;
  10. Để đơn giản hóa mọi thứ, chúng tôi muốn sử dụng một chế độ chờ riêng lẻ cho đến khi chúng tôi thiết lập và chạy nó. Vì vậy, chúng tôi đã tạo PFILE từ RAC SPFILE của chế độ chờ và sau đó sử dụng trình chỉnh sửa văn bản để sửa đổi tệp thông số nhằm xóa mọi thông số nhận biết RAC. Chúng tôi đã xóa CLUSTER_DATABASE, đặt thông số UNDO_TABLESPACE dành riêng cho phiên bản cụ thể để được sử dụng cho tất cả các phiên bản “*.”, Xóa thông số THREAD, v.v. Cơ sở dữ liệu dự phòng thông thường của chúng tôi có hai phiên bản, STANDBY1 và STANDBY2. Trong nút 1, chúng tôi đặt pfile trong $ ORACLE_HOME / dbs / initstandby.ora thay vì initstandby1.ora để cơ sở dữ liệu một phiên bản có thể tìm thấy tệp tham số của nó. Chúng tôi đã làm điều gì đó tương tự cho tệp mật khẩu.
  11. Chúng tôi đã sao chép tệp điều khiển chờ từ bước 9 qua các tệp điều khiển trong ảnh chụp nhanh cơ sở dữ liệu.
  12. Với tệp pfile và pswd dành cho một cơ sở dữ liệu phiên bản duy nhất, chúng tôi đã STARTUP MOUNT.
  13. Chúng tôi đã tạo mọi nhật ký làm lại ở chế độ chờ mà chúng tôi cần. Trong trường hợp của chúng tôi, bản chính cũng có nhật ký làm lại ở chế độ chờ để hỗ trợ hoạt động chuyển đổi và nhật ký làm lại ở chế độ chờ từ bản chính không phải là một phần của ảnh chụp nhanh. Vì vậy, chúng tôi đã phải xóa những SRL không thực hiện chuyến đi.
  14. Trong chương trình chính, đặt LOG_ARCHIVE_DEST_STATE_n thành ENABLE.
  15. Trong các trường hợp chính, đã thực hiện ALTER SYSTEM SWITCH LOGFILE;
  16. Đã xác minh trong cả nhật ký cảnh báo của chế độ chính và chế độ chờ rằng chế độ chờ đang nhận nhật ký, tức là đã xác minh rằng quá trình vận chuyển nhật ký đang hoạt động.
  17. Đã bật chế độ chờ được quản lý:ALTER DỮ LIỆU PHỤC HỒI CƠ SỞ DỮ LIỆU ĐƯỢC QUẢN LÝ NGẮT KẾT NỐI CƠ SỞ DỮ LIỆU ĐƯỢC QUẢN LÝ TỪ PHẦN;
  18. Đã xác minh trong nhật ký cảnh báo của chế độ chờ rằng các nhật ký đang được áp dụng, tức là ứng dụng đã xác minh hiện đang hoạt động.

Tại thời điểm này, chúng tôi đã có một cơ sở dữ liệu dự phòng được sao lưu và chạy. Chúng tôi đã tạo một bảng đơn giản trong bảng chính và chèn một hàng dữ liệu vào đó, thực hiện lại các chuyển đổi nhật ký, sau đó mở chế độ chờ ở chế độ CHỈ ĐỌC để xác minh rằng giao dịch đã được phát lại ở chế độ chờ như bình thường. Khi chúng tôi đã hài lòng rằng cơ sở dữ liệu dự phòng đang hoạt động, chúng tôi cần biến nó thành cơ sở dữ liệu RAC. Tất cả mọi thứ đã sẵn sàng để đây trở thành cơ sở dữ liệu RAC bởi vì nó đã từng là như vậy. Để hoàn thành công việc, chúng tôi chỉ cần tắt cơ sở dữ liệu dự phòng đơn phiên bản (SHUTDOWN ABORT) trong SQL * Plus và sau đó sử dụng srvctl để khởi động chế độ chờ dưới dạng cơ sở dữ liệu RAC:

srvctl start database -d standby -o mount

Điều duy nhất còn lại tại thời điểm này là thêm chế độ chờ trở lại cấu hình DG Broker (trong DGMGRL):ADD DATABASE standby

Khi điều này lần đầu tiên xảy ra, tôi đã rất lo lắng làm thế nào nó sẽ trở thành một cơ sở dữ liệu lớn như vậy. Không có thao tác nào ở trên phụ thuộc vào kích thước ngoài việc sao chép tệp vào và từ phương tiện. Nhưng tất cả đều diễn ra tốt đẹp.

Để đảm bảo chúng tôi không gặp phải tình huống này trong tương lai, chúng tôi đã thêm cảnh báo vào Kiểm soát lưới trình quản lý doanh nghiệp Oracle của chúng tôi. Bây giờ tôi sẽ nhận được cảnh báo CẢNH BÁO khi quá trình vận chuyển nhật ký hoặc nhật ký áp dụng chậm hơn 12 giờ và cảnh báo CRITICAL khi chậm hơn 24 giờ. Điều đó sẽ cho chúng tôi nhiều thời gian để khắc phục mọi sự cố trước khi các nhật ký làm lại đã lưu trữ tự động bị xóa sau 7 ngày hoặc ít nhất, hãy thay đổi quy trình để giữ các nhật ký làm lại được lưu trữ nhiều ngày hơn cho đến khi chúng tôi khắc phục được tình hình.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đổi tên Bảng hoặc Chế độ xem Oracle

  2. Chuỗi dài trong N-Hibernate với Oracle gây ra lỗi

  3. Làm thế nào để buộc pascal case với sự hỗ trợ Entity Framework của Oracle?

  4. SET NULL:Chỉ định một chuỗi để trả về bất cứ khi nào giá trị rỗng xảy ra trong SQLcl / SQL * Plus

  5. Các chức năng ngày giờ của Oracle (Danh sách đầy đủ)