oracle之表分割槽

2021-08-22 08:13:01 字數 4339 閱讀 3466

分割槽元素: 字串, 日期時間或間隔文字, 數字或 maxvalue

檢視表的分割槽,利用user_tab_partitions

select table_name,partition_name from user_tab_partitions where table_name='stud';

1:範圍分割槽

--按行分割槽,

create table stud(

sid number primary key,

age number,

birthday date,

*** varchar2(6)

)partition by range(sid)(

partition part1 values less than(10000),

partition part2 values less than(20000),

partition part3 values less than(maxvalue)

);--按時間分割槽

create table stud(

sid number primary key,

age number,

birthday date,

*** varchar2(6)

)partition by range(birthday)(

partition part1 values less than(to_date('19950101','yyyymmdd')),

partition part2 values less than(to_date('19960101','yyyymmdd')),

partition part3 values less than(to_date('19970101','yyyymmdd')),

partition part4 values less than(maxvalue)

);--hash分割槽

通過hash(引數)來分割槽,分割槽數量盡量為2的n次方,這樣各分割槽資料分布更均勻

create table stud(

sid number primary key,

age number,

birthday date,

*** varchar2(6)

)partition by hash(sid)

(partition p1,

partition p2,

partition p3,

partition p4

);--list分割槽

在分割槽時確定分割槽可能存在的值,依賴不在是乙個範圍,而是乙個確定的值,如果實在無法完全確定

分割槽依賴列的所有可能值,可以用default關鍵字把剩餘的情況歸為一類

create table stud(

sid number primary key,

age number,

birthday date,

*** varchar2(6)

)partition by list(***)

(partition p1 values('男'),

partition p2 values('女'),

partition p3 values('其他'),

partition p4 values(default)

);--混合分割槽

rang+hash

create table stud(

sid number primary key,

age number,

birthday date,

*** varchar2(6)

)partition by range(sid) subpartition by hash(age)

(partition p1 values less than(10),

partition p2 values less than(20),

partition p3 values less than(30),

partition p4 values less than(maxvalue)

);declare

p*** varchar2(6);

random_chance number;

begin

for sid in 1..40 loop

random_chance:=dbms_random.value(0,100);

if(random_chance<40) then

p***:='女';

elsif(random_chance<90) then

p***:='男';

else

p***:='其他';

end if;

insert into stud(sid,***) values(sid,p***);

end loop;

commit;

end;

--混合分割槽

range-list

create table stud(

sid number primary key,

age number,

birthday date,

*** varchar2(6)

)partition by range(sid) subpartition by list(***)

(partition p1 values less than(10) tablespace tablespace_102

(subpartition p1sub1 values('男'),

subpartition p1sub2 values('女'),

subpartition p1sub3 values('其他')

),partition p2 values less than(20) tablespace tablespace_102

(subpartition p2sub1 values('男'),

subpartition p2sub2 values('女'),

subpartition p2sub3 values('其他')

),partition p3 values less than(30) tablespace tablespace_102

(subpartition p3sub1 values('男'),

subpartition p3sub2 values('女'),

subpartition p3sub3 values('其他')

),partition p4 values less than(41) tablespace tablespace_102

(subpartition p4sub1 values('男'),

subpartition p4sub2 values('女'),

subpartition p4sub3 values('其他')));

檢視指定分割槽資料:

select * from stud partition(p1/p2/p3/p4);

select * from stud subpartition(p1sub1/p1sub2/p1sub3...);

create table dep(deptno char(4) primary key);

insert into dep values('0001');

create table stud(

sid number primary key,

age number,

birthday date,

*** varchar2(6)

);alter table stud add(deptno char(4) constraint fk_stud_dept_deptno references dep(deptno));

insert into stud(sid,deptno,***) values(45,'0001','男');

在沒有指定maxvalue的表中增加分割槽(原理通過id number分割槽)

alter table table_name add partition p_name values less than(50) tablespace tablespacename;

刪除分割槽

alter table table_name drop partition p_name;

修改分割槽名(p1->p2)

alter table table_name rename partition p1 to p2;

移動分割槽資料到表空間(tablespace_u101)

alter table tablename move partition p1 to tablespace tablespace_u101;

分割槽拆分(拆分點為60)

Oracle表分割槽之操縱已分割槽的表

oracle表分割槽之操縱已分割槽的表 分割槽維護操作有 新增分割槽 刪除分割槽 截斷分割槽 合併分割槽 拆分分割槽 www.2cto.com 1 新增分割槽 在最後乙個分割槽之後新增新分割槽 sql alter table sales add partition p4 values less th...

oracle表分割槽設計 ORACLE 分割槽表的設計

分割槽表的概念 分割槽致力於解決支援極大表和索引的關鍵問題。它採用他們分解成較小和易於管理的稱為分割槽的片 piece 的方法。一旦分割槽被定義,sql語句就可以訪問的操作某乙個分割槽而不是整個表,因而提高管理的效率。分割槽對於資料倉儲應用程式非常有效,因為他們常常儲存和分析巨量的歷史資料。分割槽表...

oracle表分割槽設計 ORACLE分割槽表的設計

分割槽表的概念 分割槽致力於解決支援極大表和索引的關鍵問題。它採用他們分解成較小和易於管理的稱為分割槽的片 piece 的方法。一旦分割槽被定義,sql語句就可以訪問的操作某乙個分割槽而不是整個表,因而提高管理的效率。分割槽對於資料倉儲應用程式非常有效,因為他們常常儲存和分析巨量的歷史資料。分割槽表...