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

Tính năng mới của Oracle 18c:Sửa đổi phân vùng trực tuyến

Trong Cơ sở dữ liệu Oracle 18c, giờ đây chúng ta thay đổi chiến lược phân vùng trực tuyến của một bảng thông qua câu lệnh SQL “ALTER TABLE MODIFY PARTITION”.

Tính năng mới này cho phép chúng tôi điều chỉnh phương pháp phân vùng cho một bảng mà không yêu cầu bất kỳ thời gian chết liên quan nào để thực hiện thay đổi.

Trừ khi bạn chỉ định mệnh đề “UPDATE INDEXES” như một phần của câu lệnh “ALTER TABLE”:

- Cơ sở dữ liệu đánh dấu UNUSABLE tất cả các phân vùng hoặc phân vùng chỉ mục cục bộ tương ứng.
- Các chỉ mục chung hoặc tất cả các phân vùng của các chỉ mục toàn cầu được phân vùng, được đánh dấu là KHÔNG THỂ DÙNG và phải được xây dựng lại.

Ví dụ này cung cấp trình bày từng bước về các tác vụ cần thiết để chuyển đổi bảng phân vùng RANGE thành bảng phân vùng HASH.

Hiển thị các phân vùng của bảng ATP01_CRED_PAG:


# sqlplus / as sysdba

SQL*Plus: Release 18.0.0.0.0 - Production on Wed Jun 17 16:39:51 2020
Version 18.2.0.0.0

Copyright (c) 1982, 2018, Oracle. All rights reserved.

Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.2.0.0.0

SQL> select table_name, partition_name, partition_position from dba_tab_partitions where table_name='ATP01_CRED_PAG';

TABLE_NAME PARTITION_NAME PARTITION_POSITION
-----------------------------------------------------
ATP01_CRED_PAG PART_199501 1
ATP01_CRED_PAG PART_199412 2
ATP01_CRED_PAG PART_199506 3

SQL> select count(1) from ATP01_CRED_PAG partition (PART_199501);

COUNT(1)
----------
3908

SQL> select count(1) from ATP01_CRED_PAG partition (PART_199412);

COUNT(1)
----------
3984

SQL> select count(1) from ATP01_CRED_PAG partition (PART_199506);

COUNT(1)
----------
1363

Hiển thị phương pháp phân vùng (RANGE) của bảng ATP01_CRED_PAG:


SQL> select owner, table_name, partitioning_type, autolist, interval, autolist_subpartition from dba_part_tables where table_name = 'ATP01_CRED_PAG';

OWNER TABLE_NAME PARTITION AUT INTERVAL AUT
-------- -------------- -------- ---- --------- ------
ADMIN ATP01_CRED_PAG RANGE NO NO

Chuyển đổi bảng được phân vùng RANGE thành bảng được phân vùng HASH ONLINE:


SQL> ALTER TABLE ATP01_CRED_PAG MODIFY PARTITION BY HASH (DT_COMPETENCIA) PARTITIONS 3 ONLINE;

Table altered.

Hiển thị phương pháp phân vùng mới (HASH):


SQL> select owner, table_name, partitioning_type, autolist, interval, autolist_subpartition from dba_part_tables where table_name = 'ATP01_CRED_PAG';

OWNER TABLE_NAME PARTITION AUT INTERVAL AUT
-------- ------------- --------- --- -------- -----
ADMIN ATP01_CRED_PAG HASH NO NO

Hiển thị các phân vùng của bảng:


SQL> select table_name, partition_name, partition_position from dba_tab_partitions where table_name='ATP01_CRED_PAG';

TABLE_NAME PARTITION_NAME PARTITION_POSITION
----------------- ---------------- ------------------
ATP01_CRED_PAG SYS_P621 1
ATP01_CRED_PAG SYS_P622 2
ATP01_CRED_PAG SYS_P623 3

SQL> select count(1) from ATP01_CRED_PAG partition (SYS_P621);

COUNT(1)
----------
2651

SQL> select count(1) from ATP01_CRED_PAG partition (SYS_P622);

COUNT(1)
----------
6604

SQL> select count(1) from ATP01_CRED_PAG partition (SYS_P623);

COUNT(1)
----------
0

Tài liệu tham khảo

Hoạt động bảo trì cho các bảng và chỉ mục được phân vùng. Có tại https://docs.oracle.com/en/database/oracle/oracle-database/18/vldbg/maintenance-partition-tables-indexes.html#GUID-0E7793F7-B38A-427E-846B-7A8651F2A523


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách giải quyết ORA-29913 với bảng bên ngoài

  2. Thống kê bảng GTT và SYS.WRI $ _OPTSTAT_TAB_HISTORY

  3. Cách giải quyết ORA-29285:lỗi ghi tệp

  4. Giới thiệu về câu lệnh FORALL trong cơ sở dữ liệu Oracle

  5. Cách sử dụng hàm NVL () trong Oracle