在oracle中,可以利用ALTER語句配合「ADD PARTITION」給表新增分割區,語法為「ALTER TABLE 表名 ADD PARTITION 分割區 VALUES」。
本教學操作環境:Windows10系統、Oracle 11g版、Dell G3電腦。
一、新增分割區
以下命令給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其它相關文章!