chuyển động dữ liệu lớn


11

Tôi muốn di chuyển hàng tỷ hàng từ lược đồ1.table1 sang lược đồ mới2.table2 trong đó bảng2 là một hàng được tái cấu trúc từ bảng1. Do đó cấu trúc bảng của họ là khác nhau. cả bảng1 và bảng2 được phân vùng nhưng bảng2 trống. Cả hai lược đồ này đều nằm trong cùng một orory DB. Hiệu suất cách hiệu quả để thực hiện di chuyển dữ liệu này là gì? Bạn có muốn thực hiện cam kết chỉ ở cuối hoặc chọn cho cam kết gia tăng không? tức là giả sử di chuyển dữ liệu thất bại sau khi hoàn thành 99% công việc mất vài giờ. Bạn có quay trở lại bây giờ? Nếu bạn thực hiện cam kết gia tăng, làm thế nào để bạn xử lý thất bại?

Câu trả lời:


8

Song song INSERT APPENDvới NOLOGGINGđó sẽ là cách để thực hiện điều này, sau đó, như với tất cả các hoạt động NITALGING, hãy sao lưu ngay lập tức khi hoàn thành. Đánh dấu các chỉ mục không thể sử dụng trước, vô hiệu hóa các ràng buộc, thay đổi bảng, thực hiện thao tác, sau đó kích hoạt lại các ràng buộc, v.v.

Việc nối thêm khiến cho Oracle luôn giành được không gian trống trên mực nước cao hiện tại, do đó, nó không hiệu quả trong việc tái sử dụng không gian trong phân khúc, nhưng nó tránh được sự lo lắng với người làm việc tự do và chi phí của UNDO. Nếu bạn phải bắt đầu lại vì bất kỳ lý do gì TRUNCATE, đừng DELETE.

Đối với cam kết gia tăng, nó sẽ phụ thuộc vào cách dữ liệu của bạn được phân đoạn, bạn có thể dễ dàng nói di chuyển giá trị của một tháng tại một thời điểm không (ví dụ: lược đồ phân vùng có giống nhau trong nguồn và đích) không? Bởi vì hãy nhớ rằng nếu bạn cần thỏa mãn một số vị ngữ, điều đó rõ ràng sẽ làm bạn chậm lại. Kiểm tra để đảm bảo rằng hoạt động sẽ không thất bại về mặt logic (ví dụ: các kiểu dữ liệu không tương thích trong nguồn và đích) sau đó phân bổ đủ tài nguyên và chỉ thực hiện trong một giao dịch. Chúc may mắn!


Tôi biết sử dụng redef trực tuyến sẽ chậm nhưng dbms_redef thậm chí có thể không hỗ trợ cho kịch bản trên?
John

3

nếu lược đồ phân vùng giống nhau (dữ liệu của phần a trong bảng 1 chuyển sang phân vùng a trong bảng 2, v.v.) thì tôi sẽ đi nhiều phiên và mỗi phiên sẽ nối dữ liệu của chúng vào phân vùng 'riêng' của chúng. Điều này ngăn chặn rất nhiều khóa và có tốc độ tốt nhất. Tùy thuộc vào phần cứng, bạn có thể điền thẻ HBA cho đến khi cổ của chúng. Một cam kết cho mọi phân vùng - giả sử có nhiều hơn một vài hàng cho mỗi phân vùng - sẽ không thành vấn đề và tôi chắc chắn sẽ làm như vậy. Giả sử rằng ứng dụng bị hỏng trong quá trình di chuyển, dự phòng rất đơn giản: không thay đổi ứng dụng và cắt bớt các phân vùng của bảng2 trước khi thử lại, ít nhất là đối với những phần mà ứng dụng đã thay đổi dữ liệu trước khi chạy lần thứ hai.

Tôi hi vọng cái này giúp được

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.