Giới thiệu
Trong phiên bản Oracle 12c Release 2, Oracle giới thiệu tính năng cho phép tạo partition trên External Tables (bảng ngoài). Trong phiên bản Oracle 19c, Oracle giới thiệu tính năng mới gọi là Hybrid Partitioning cho phép tạo một số partition bên ngoài database (ví dụ: file phẳng - flat files) và một số partition trong tablespace (tức là nội bộ database).
Với tính năng này, chúng ta có thể di chuyển các partition cũ ít được sử dụng ra nguồn lưu trữ bên ngoài (ví dụ: hệ thống file Linux) và giữ các partition hoạt động nhất trong database. Trong demo này, chúng ta sẽ tạo một Hybrid Partitioned Table tên là DATA với 4 partition: DATA_2019, DATA_2020, DATA_2021 và DATA_2022. Dữ liệu cho năm 2019, 2020 và 2021 được lưu trong các file phẳng trong thư mục OS /home/oracle/data_dir. Ba file phẳng này chứa dữ liệu cho năm 2019, 2020 và 2021 (lưu ý: bài gốc ghi 2022 nhưng ngữ cảnh cho thấy là 2021) được phân tách bằng khoảng trắng.
Bước 1: Đăng nhập database và đặt target PDB nơi bảng cần được tạo
Bước 2: Tạo directory DATA_FILES_DIR trong database trỏ đến thư mục OS data_dir. Tạo user APP_USER và cấp quyền READ, WRITE trên directory.
Bước 3: Tạo Hybrid Partitioned table DATA trong APP_USER. Partition DATA_2019, DATA_2020, DATA_2021 là external (ngoài database) và chứa dữ liệu trong file phẳng. Nhưng partition DATA_2022 là internal (trong database).
Bước 4: Chúng ta có thể truy vấn dữ liệu từ từng partition.
DATA_2019 - (kết quả truy vấn)
DATA_2020 - (kết quả truy vấn)
DATA_2021 - (kết quả truy vấn)
DATA_2022 - (kết quả truy vấn)
Bước 5: Kiểm tra xem bảng DATA đã tạo có phải là Hybrid partitioned table không?
Bước 6: Khi cố gắng chèn dữ liệu vào partition DATA_2022, thất bại với lỗi ORA-01950: no privileges on tablespace 'USERS'. Điều này xác nhận dữ liệu trong partition DATA_2022 sẽ được lưu trong tablespace USERS tức là internal database. Khi cấp quota trên tablespace USERS, chúng ta có thể chèn dữ liệu vào partition DATA_2022.
Bước 7: Truy vấn dưới đây cho thấy chỉ partition DATA_2022 được lưu trong database. Các partition khác dữ liệu là external (ngoài database).
Kết luận
Sử dụng tính năng mới này, chúng ta có thể di chuyển các partition cũ của một bảng không hoạt động ra một nơi lưu trữ rẻ hơn bên ngoài database – trong khi dữ liệu bảng hoạt động vẫn nằm bên trong cơ sở dữ liệu Oracle.
Sử dụng tab Feedback để đưa ra nhận xét hoặc đặt câu hỏi. Bạn cũng có thể bắt đầu cuộc trò chuyện với chúng tôi.