oracle怎麼給表增加分割區

2022-03-07 16:00:20

在oracle中,可以利用ALTER語句配合「ADD PARTITION」給表新增分割區,語法為「ALTER TABLE 表名 ADD PARTITION 分割區 VALUES」。

本教學操作環境:Windows10系統、Oracle 11g版、Dell G3電腦。

oracle怎麼給表增加分割區

一、新增分割區

以下命令給SALES表新增了一個P3分割區

ALTER TABLE SALES ADD PARTITION P3 VALUES LESS THAN(TO_DATE('2018-09-01','YYYY-MM-DD'));

注意:以上新增的分割區界限應該高於最後一個分割區界限。

以下命令給SALES表的P3分割區新增了一個P3SUB1子分割區

ALTER TABLE SALES MODIFY PARTITION P3 ADD SUBPARTITION P3SUB1 VALUES('COMPLETE');

二、刪除分割區

以下命令刪除了P3表分割區:

ALTER TABLE SALES DROP PARTITION P3;

在以下命令刪除了P4SUB1子分割區:

ALTER TABLE SALES DROP SUBPARTITION P4SUB1;

注意:如果刪除的分割區是表中唯一的分割區,那麼此分割區將不能被刪除,要想刪除此分割區,必須刪除表。

三、截斷分割區

截斷某個分割區是指刪除某個分割區中的資料,並不會刪除分割區,也不會刪除其它分割區中的資料。當表中即使只有一個分割區時,也可以截斷該分割區。通過以下命令截斷分割區:

ALTER TABLE SALES TRUNCATE PARTITION P2;

通過以下命令截斷子分割區:

ALTER TABLE SALES TRUNCATE SUBPARTITION P2SUB2;

四、合併分割區

合併分割區是將相鄰的分割區合併成一個分割區,結果分割區將採用較高分割區的界限,值得注意的是,不能將分割區合併到界限較低的分割區。以下命令實現了P1 P2分割區的合併:

ALTER TABLE SALES MERGE PARTITIONS P1,P2 INTO PARTITION P2;

五、拆分分割區

拆分分割區將一個分割區拆分兩個新分割區,拆分後原來分割區不再存在。注意不能對HASH型別的分割區進行拆分。

ALTER TABLE SALES SBLIT PARTITION P2 AT(TO_DATE('2003-02-01','YYYY-MM-DD')) INTO (PARTITION P21,PARTITION P22);

六、接合分割區(coalesca)

結合分割區是將雜湊分割區中的資料接合到其它分割區中,當雜湊分割區中的資料比較大時,可以增加雜湊分割區,然後進行接合,值得注意的是,接合分割區只能用於雜湊分割區中。通過以下命令進行接合分割區:

ALTER TABLE SALES COALESCA PARTITION;

七、重新命名錶分割區

以下命令將P21更改為P2

ALTER TABLE SALES RENAME PARTITION P21 TO P2;

八、相關查詢

跨分割區查詢

select sum( *) from
(select count(*) cn from t_table_SS PARTITION (P200709_1)
union all
select count(*) cn from t_table_SS PARTITION (P200709_2)
);

查詢表上有多少分割區

SELECT * FROM USER_TAB_PARTITIONS WHERE TABLE_NAME='tableName'

查詢索引資訊

select object_name,object_type,tablespace_name,sum(value)
from v$segment_statistics
where statistic_name IN ('physical reads','physical write','logical reads')and object_type='INDEX'
group by object_name,object_type,tablespace_name
order by 4 desc
--顯示資料庫所有分割區表的資訊:
select * from DBA_PART_TABLES
--顯示當前使用者可存取的所有分割區表資訊:
select * from ALL_PART_TABLES
--顯示當前使用者所有分割區表的資訊:
select * from USER_PART_TABLES
--顯示錶分割區資訊 顯示資料庫所有分割區表的詳細分割區資訊:
select * from DBA_TAB_PARTITIONS
--顯示當前使用者可存取的所有分割區表的詳細分割區資訊:
select * from ALL_TAB_PARTITIONS
--顯示當前使用者所有分割區表的詳細分割區資訊:
select * from USER_TAB_PARTITIONS
--顯示子分割區資訊 顯示資料庫所有組合分割區表的子分割區資訊:
select * from DBA_TAB_SUBPARTITIONS
--顯示當前使用者可存取的所有組合分割區表的子分割區資訊:
select * from ALL_TAB_SUBPARTITIONS
--顯示當前使用者所有組合分割區表的子分割區資訊:
select * from USER_TAB_SUBPARTITIONS
--顯示分割區列 顯示資料庫所有分割區表的分割區列資訊:
select * from DBA_PART_KEY_COLUMNS
--顯示當前使用者可存取的所有分割區表的分割區列資訊:
select * from ALL_PART_KEY_COLUMNS
--顯示當前使用者所有分割區表的分割區列資訊:
select * from USER_PART_KEY_COLUMNS
--顯示子分割區列 顯示資料庫所有分割區表的子分割區列資訊:
select * from DBA_SUBPART_KEY_COLUMNS
--顯示當前使用者可存取的所有分割區表的子分割區列資訊:
select * from ALL_SUBPART_KEY_COLUMNS
--顯示當前使用者所有分割區表的子分割區列資訊:
select * from USER_SUBPART_KEY_COLUMNS
--怎樣查詢出oracle資料庫中所有的的分割區表
select * from user_tables a where a.partitioned='YES'
--刪除一個表的資料是
truncate table table_name;
--刪除分割區表一個分割區的資料是
alter table table_name truncate partition p5;
以上就是oracle怎麼給表增加分割區的詳細內容,更多請關注TW511.COM其它相關文章!