Không gian bảng trên lưu trữ phù du


7

Vì lý do hiệu suất trong một số trường hợp, ví dụ Amazon EC2, bạn có quyền truy cập vào một thiết bị lưu trữ nhanh hơn và rẻ hơn, làm mất tất cả dữ liệu của nó khi khởi động lại, vì vậy nó được gọi là "phù du".

Câu hỏi này là về việc tận dụng loại lưu trữ như vậy trong các cài đặt của cơ sở dữ liệu Oracle. Mà chia thành:

  1. Cách giữ các tệp dữ liệu của một vùng bảng trên bộ lưu trữ phù du và để Oracle tạo chúng khi khởi động (và có thể chạy một số tập lệnh để tạo / điền một vài bảng) và sẽ ổn khi chúng bị mất.
  2. Điều gì sẽ là những tác động đối với các bản sao lưu (không nên có bản sao lưu dữ liệu phù du).
  3. Bất kỳ sự xem xét nào khác có thể có cho các bảng và đối tượng khác ở trên nó

    • tối ưu hóa có thể: ví dụ như vô hiệu hóa đăng nhập.
    • những gì đã mất khi khởi động lại (dữ liệu hoặc dữ liệu + siêu dữ liệu)

Không gian bảng TEMP là một ứng cử viên hoàn hảo cho việc tối ưu hóa này và trên thực tế đối với tương đương của MS SQLServer có trên howtos trên web để thực hiện việc này.

Chúng ta hãy xem xét một kho dữ liệu, như trường hợp sử dụng tham chiếu, với một công việc định kỳ, nhập nhiều gigabyte dữ liệu (từ CSV hoặc datapump) vào một lược đồ phân tầng "STG" và quy trình ETL tiếp theo để lưu kết quả trên lược đồ sản xuất.

Khối lượng công việc này sẽ có lợi rất nhiều từ việc có quyền truy cập đọc và ghi rất nhanh trên lược đồ phân tầng, dễ dàng chấp nhận sự biến động của dữ liệu của nó.


Câu hỏi tuyệt vời! Mọi người chắc chắn có thể lấy một vùng bảng ngoại tuyến, xem docs.oracle.com/cd/B28359_01/server.111/b28310/tspaces005.htmlm Nhưng tôi nghi ngờ cách dễ nhất để tự động hóa điều này sẽ là bỏ các không gian bảng trước khi tắt phiên bản Oracle. Sau đó, có vấn đề về những gì sẽ xảy ra trên một vụ tai nạn máy móc. Tôi thích "DBA logic" hơn nên tôi sẽ để nó thành "DBA vật lý" để trả lời câu hỏi này.
Colin 't Hart

Bạn có thể đưa ra một trường hợp sử dụng cho điều này?
David Aldridge

@DavidAldridge: mọi triển khai của Oracle trên đám mây Amazon đều là trường hợp sử dụng.
Andrea Ratto

Câu trả lời:


2

Oracle không ghi thông tin điểm kiểm tra trong tempfile. Vì vậy, đối với tempfile:

  1. Oracle có thể bắt đầu ngay cả khi tempfile bị thiếu. Bạn sẽ nhận được một thông báo trong nhật ký thay đổi và bạn nên tạo lại tempfile.

  2. Không có bản sao lưu nào được lấy từ tempfile nên an toàn khi mất nó

  3. Không cần phải lừa với bất kỳ tham số lưu trữ nào cho tempfile nếu nằm trong bộ lưu trữ phù du.

Về cấu trúc dữ liệu vật lý không phải là tempfile, sẽ không an toàn khi đưa chúng vào bộ lưu trữ phù du. Oracle theo dõi các thay đổi trong tệp dữ liệu ngay cả khi bạn đã tắt đăng nhập. Vô hiệu hóa ghi nhật ký sẽ chỉ có tác dụng trong khả năng phục hồi của cơ sở dữ liệu, làm lại và hiệu suất tổng thể. Không cho phép bạn đặt datafile vào bộ lưu trữ phù du. Mở DB với cơ sở dữ liệu bị thiếu (cơ sở dữ liệu không quan tâm đến việc dữ liệu trên đó quan trọng như thế nào) sẽ tăng lên.

ORA-01116: error in opening database file %s
ORA-27041: unable to open file
ORA-01157: cannot identify/lock data file %s - see DBWR trace file
ORA-01119: error in creating database file '%s'

Và bạn phải tự giải quyết vấn đề. Do đó, việc sử dụng lưu trữ phù du với dữ liệu thông thường phải tránh.


Cảm ơn. Vì vậy, bạn có nghĩ rằng chỉ cần tạo một không gian bảng tạm thời trên các tempfiles hàng đầu trong bộ lưu trữ phù du là đủ? Sau khi khởi động lại, nó sẽ chỉ có tất cả các bảng trống hoặc nó cũng sẽ làm mất lược đồ?
Andrea Ratto

@AndreaRatto Không gian bảng tạm thời không chứa bất kỳ bảng nào mà chỉ có đối tượng tạm thời (tạm thời) như GTT (Bảng tạm thời toàn cầu) và dữ liệu phải được sắp xếp trong một quy trình DML chẳng hạn. Không có SCHema trong bảng tạm thời hoặc các đối tượng tiêu chuẩn khác.
Ste

2

Như Ste nói trong câu trả lời của mình, không gian bảng tạm thời sẽ ổn cho việc này, vì vậy các bảng tạm thời toàn cầu và lưu trữ tạm thời khác sẽ tốt.

Nếu bạn muốn sử dụng không gian bảng vĩnh viễn thì bạn có thể DROP TABLESPACE my_tablespace INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTStrước khi tắt hệ thống nếu bộ nhớ sẽ bị mất và tạo lại khi khởi động. Bạn có thể muốn có một cái gì đó khi khởi động để xử lý việc mất các tệp dữ liệu nếu RDBMS không tự xóa chúng.


Khởi nghiệp sau thất bại là phần khó khăn không còn nghi ngờ gì nữa ...
Andrea Ratto

Vâng, khá là như vậy - tất nhiên, khởi động db phải là một sự kiện khá hiếm, theo quy ước.
David Aldridge

1

Ngoài những gì người khác đã nói, bạn có thể giữ một số dữ liệu trong các tệp phẳng và họ sao chép các tệp vào bộ lưu trữ phù du khi khởi động. Sau đó bạn có thể truy cập nó bằng các bảng bên ngoài . Tôi không biết điều này sẽ nhanh hơn hay tốt hơn, nhưng nó là một cách sử dụng khá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.