久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Oracle的分區(qū)表有什么用

共計(jì) 7023 個(gè)字符,預(yù)計(jì)需要花費(fèi) 18 分鐘才能閱讀完成。

這篇文章主要講解了“Oracle 的分區(qū)表有什么用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Oracle 的分區(qū)表有什么用”吧!

下面對(duì)分區(qū)表進(jìn)行簡單的實(shí)驗(yàn):

先查詢所需要進(jìn)行分區(qū)表的表結(jié)構(gòu):

sys@FX1TEST desc fqtbb
 Name Null? Type
 -------------------------------------------------------------------------- -------- --------------------------------------------------
 ID NUMBER
 YXTIME DATE
 HASH VARCHAR2(50)
 GOODLOOK VARCHAR2(20)

  查詢表當(dāng)前的數(shù)據(jù):

 sys@FX1TEST select * from fqtbb;
ID YXTIME HASH GOODLOOK
---------- ------------------- -------------------- ----------
 1 2011-01-02 00:00:00 java111 no
 1 2011-04-02 00:00:00 java121 no
 1 2011-05-02 00:00:00 java131 no
 1 2012-02-02 00:00:00 java141 no
 1 2013-01-02 00:00:00 java1ds no
 1 2012-06-04 00:00:00 java1da no
 1 2013-12-21 00:00:00 java771 no
 1 2013-02-02 00:00:00 java771 no
 1 2014-06-25 00:00:00 java661 no
 1 2014-01-02 00:00:00 java156 no
 1 2015-05-22 00:00:00 java132 no
 1 2015-06-07 00:00:00 java134 no
 1 2016-04-21 00:00:00 java152 yes
 1 2016-11-11 00:00:00 java761 yes
 1 2016-01-21 00:00:00 java171 yes
 1 2017-04-21 00:00:00 java711 yes
 1 2017-05-05 00:00:00 java717 yes
 1 2017-01-02 00:00:00 java174 yes
 1 2018-03-01 00:00:00 java172 yes
 1 2018-01-23 00:00:00 java176 yes
 1 2018-12-22 00:00:00 java166 yes
21 rows selected.

下面便是一些常用的分區(qū)方法

范圍分區(qū):利用分區(qū)鍵定義范圍,根據(jù)實(shí)際取值,進(jìn)行分區(qū)選擇,這種范圍一般以數(shù)字形式存儲(chǔ),例如時(shí)間,分?jǐn)?shù),工資等等,所以不可避免的這種分區(qū)方法做不到均勻分區(qū)。

這里我們用時(shí)間范圍進(jìn)行劃分 :

create table fqtbb_part (
id number,
yxtime date,
hash varchar(50),
goodlook varchar(20))
PARTITION BY RANGE (yxtime)
PARTITION fqtbb_part1 VALUES LESS THAN (TO_DATE( 2011-01-01 , yyyy-mm-dd))
TABLESPACE test,
PARTITION fqtbb_part2 VALUES LESS THAN (TO_DATE( 2014-01-02 , yyyy-mm-dd))
TABLESPACE test1,
PARTITION fqtbb_part3 VALUES LESS THAN (MAXVALUE)
TABLESPACE test2
); 
Table created.

將大表中的數(shù)據(jù)插到新建表中:

sys@FX1TEST insert into fqtbb_part select * from fqtbb;
21 rows created.
sys@FX1TEST commit;
Commit complete.

接下來查詢單獨(dú)分區(qū)的數(shù)據(jù)信息

sys@FX1TEST select * from fqtbb_part partition(fqtbb_part3);
ID YXTIME HASH GOODLOOK
---------- ------------------- -------------------- ----------
 1 2014-06-25 00:00:00 java661 no
 1 2014-01-02 00:00:00 java156 no
 1 2015-05-22 00:00:00 java132 no
 1 2015-06-07 00:00:00 java134 no
 1 2016-04-21 00:00:00 java152 yes
 1 2016-11-11 00:00:00 java761 yes
 1 2016-01-21 00:00:00 java171 yes
 1 2017-04-21 00:00:00 java711 yes
 1 2017-05-05 00:00:00 java717 yes
 1 2017-01-02 00:00:00 java174 yes
 1 2018-03-01 00:00:00 java172 yes
 1 2018-01-23 00:00:00 java176 yes
 1 2018-12-22 00:00:00 java166 yes
13 rows selected.
sys@FX1TEST select * from fqtbb_part partition(fqtbb_part2);
ID YXTIME HASH GOODLOOK
---------- ------------------- -------------------- ----------
 1 2011-01-02 00:00:00 java111 no
 1 2011-04-02 00:00:00 java121 no
 1 2011-05-02 00:00:00 java131 no
 1 2012-02-02 00:00:00 java141 no
 1 2013-01-02 00:00:00 java1ds no
 1 2012-06-04 00:00:00 java1da no
 1 2013-12-21 00:00:00 java771 no
 1 2013-02-02 00:00:00 java771 no
 
 8 rows selected.

當(dāng)然如果查詢分區(qū)表的信息。也有相對(duì)應(yīng)的表供用戶查詢。例如:

sys@FX1TEST select TABLE_NAME,PARTITIONING_TYPE,PARTITION_COUNT,STATUS from dba_part_tables where table_name= FQTBB_PART 
TABLE_NAME PARTITIONING_TYPE PARTITION_COUNT STATUS
------------------------------ ------------------ --------------- ----------------
FQTBB_PART RANGE3 VALID

查詢表分區(qū)所處的表空間:

sys@FX1TEST select PARTITION_NAME,NUM_ROWS,TABLESPACE_NAME,SEGMENT_CREATED from dba_tab_partitions where table_name= FQTBB_PART 
PARTITION_NAME NUM_ROWS TABLESPACE SEGMENT_
-------------------- ---------- ---------- --------
FQTBB_PART1TEST YES
FQTBB_PART2TEST1 YES
FQTBB_PART3TEST2 YES

列分區(qū)

列分區(qū)根據(jù)分區(qū)鍵指定的取值列表進(jìn)行分區(qū),但是這種分區(qū)方法適合的比較少,例如部門列表、所屬項(xiàng)目組名稱等等

這里根據(jù) goodlook 鍵進(jìn)行定義:

create table fqtbb_parta (
id number,
yxtime date,
hash varchar(50),
goodlook varchar(20))
PARTITION BY list(goodlook)
PARTITION fqtbb_part1 VALUES (yes)
TABLESPACE test,
PARTITION fqtbb_part2 VALUES (no)
TABLESPACE test1,
PARTITION fqtbb_part3 VALUES (default)
TABLESPACE test2
); 
Table created.

插入數(shù)據(jù)

sys@FX1TEST insert into fqtbb_parta select * from fqtbb;
21 rows created.
sys@FX1TEST commit;
Commit complete.

分區(qū)表創(chuàng)建完成之后進(jìn)行查詢驗(yàn)證:

sys@FX1TEST select * from fqtbb_parta partition(fqtbb_part2);
ID YXTIME HASH GOODLOOK
---------- ------------------- -------------------- ----------
 1 2011-01-02 00:00:00 java111 no
 1 2011-04-02 00:00:00 java121 no
 1 2011-05-02 00:00:00 java131 no
 1 2012-02-02 00:00:00 java141 no
 1 2013-01-02 00:00:00 java1ds no
 1 2012-06-04 00:00:00 java1da no
 1 2013-12-21 00:00:00 java771 no
 1 2013-02-02 00:00:00 java771 no
 1 2014-06-25 00:00:00 java661 no
 1 2014-01-02 00:00:00 java156 no
 1 2015-05-22 00:00:00 java132 no
 1 2015-06-07 00:00:00 java134 no
12 rows selected.
sys@FX1TEST select * from fqtbb_parta partition(fqtbb_part1);
ID YXTIME HASH GOODLOOK
---------- ------------------- -------------------- ----------
 1 2016-04-21 00:00:00 java152 yes
 1 2016-11-11 00:00:00 java761 yes
 1 2016-01-21 00:00:00 java171 yes
 1 2017-04-21 00:00:00 java711 yes
 1 2017-05-05 00:00:00 java717 yes
 1 2017-01-02 00:00:00 java174 yes
 1 2018-03-01 00:00:00 java172 yes
 1 2018-01-23 00:00:00 java176 yes
 1 2018-12-22 00:00:00 java166 yes
9 rows selected.
sys@FX1TEST select * from fqtbb_parta partition(fqtbb_part3);
no rows selected

下面是 oracle 分區(qū)表常用的管理操作,如下:

由于我們之前再范圍分區(qū)時(shí),設(shè)置了 default 值,所以無法增加分區(qū),所以這里先演示刪除分區(qū)

sys@FX1TEST alter table fqtbb_part drop partition fqtbb_part3;
Table altered.
sys@FX1TEST select PARTITION_NAME,NUM_ROWS,TABLESPACE_NAME,SEGMENT_CREATED from dba_tab_partitions where table_name= FQTBB_PART 
PARTITION_NAME NUM_ROWS TABLESPACE_NAME SEGMENT_
------------------------------------------------------------ ---------- ------------------------------------------------------------ --------
FQTBB_PART1 0 TEST YES
FQTBB_PART2 8 TEST1 YES

添加分區(qū)

sys@FX1TEST alter table fqtbb_part add partition p3 values less than (to_date( 2019-09-09 , yyyy-mm-dd 
Table altered.

截?cái)喾謪^(qū):截?cái)喾謪^(qū)是指清楚數(shù)據(jù),保留分區(qū)結(jié)構(gòu),如下

sys@FX1TEST alter table fqtbb_part truncate partition p3;
Table truncated.

合并分區(qū):指將相鄰的分區(qū)合并成一個(gè)分區(qū),例如 2019、2018 這兩個(gè)分區(qū),合并之后,分區(qū)將采用 2019 這個(gè)界限,并且合并是要合并到 2019 這個(gè)分區(qū)里;如下

sys@FX1TEST alter table fqtbb_part merge partitions fqtbb_part1,fqtbb_part2 into partition fqtbb_part2;
Table altered.
sys@FX1TEST select PARTITION_NAME,NUM_ROWS,TABLESPACE_NAME,SEGMENT_CREATED from dba_tab_partitions where table_name= FQTBB_PART 
PARTITION_NAME NUM_ROWS TABLESPACE_NAME SEGMENT_
------------------------------------------------------------ ---------- ------------------------------------------------------------ --------
FQTBB_PART2SYSTEM YES
P3SYSTEM YES

拆分分區(qū):有合并當(dāng)然就有拆分,意思就是將一個(gè)分區(qū)拆成兩個(gè)分區(qū),而之前的分區(qū)將不存在;如下

sys@FX1TEST alter table fqtbb_part split partition fqtbb_part2 at(to_date( 2014-01-01 , yyyy-mm-dd)) into (partition p1,partition p2);
Table altered.
sys@FX1TEST select PARTITION_NAME,NUM_ROWS,TABLESPACE_NAME,SEGMENT_CREATED from dba_tab_partitions where table_name= FQTBB_PART 
PARTITION_NAME NUM_ROWS TABLESPACE_NAME SEGMENT_
------------------------------------------------------------ ---------- ------------------------------------------------------------ --------
P1SYSTEM YES
P2SYSTEM YES
P3SYSTEM YES

重命名分區(qū):顧名思義,就是讓分區(qū)換一個(gè)名字

sys@FX1TEST alter table fqtbb_part rename partition p1 to p11;
Table altered.

感謝各位的閱讀,以上就是“Oracle 的分區(qū)表有什么用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì) Oracle 的分區(qū)表有什么用這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-28發(fā)表,共計(jì)7023字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒有評(píng)論)
主站蜘蛛池模板: 吐鲁番市| 屯门区| 项城市| 安顺市| 闸北区| 江津市| 黔南| 临泉县| 且末县| 讷河市| 凤山市| 阳谷县| 广丰县| 灵丘县| 调兵山市| 如皋市| 伊金霍洛旗| 林西县| 普兰店市| 灵宝市| 鲁山县| 巨鹿县| 石景山区| 福州市| 南投市| 青州市| 元氏县| 菏泽市| 凌云县| 桐城市| 稻城县| 雅安市| 嘉祥县| 津市市| 瑞丽市| 永寿县| 大冶市| 霍林郭勒市| 射洪县| 伊川县| 南涧|