oracle怎么給表增加分區

oracle中,可以利用ALTER語句配合“ADD PARTITION”給表添加分區,語法為“ALTER table 表名 ADD PARTITION 分區 VALUES”。

oracle怎么給表增加分區

本教程操作環境: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視頻教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享