DBA_Oracle Table Partition表分区概念汇总(概念)
2014-06-20 Created By BaoXinjian
一、摘要
有關(guān)表分區(qū)的一些維護(hù)性操作:
注:分區(qū)根據(jù)具體情況選擇。
表分區(qū)有以下優(yōu)點:
1、數(shù)據(jù)查詢:數(shù)據(jù)被存儲到多個文件上,減少了I/O負(fù)載,查詢速度提高。
2、數(shù)據(jù)修剪:保存歷史數(shù)據(jù)非常的理想。
3、備份:將大表的數(shù)據(jù)分成多個文件,方便備份和恢復(fù)。
4、并行性:可以同時向表中進(jìn)行DML操作,并行性性能提高。
?
二、分區(qū)操作
1. 添加分區(qū)
以下代碼給SALES表添加了一個P3分區(qū)
ALTER TABLE SALES ADD PARTITION P3 VALUES LESS THAN(TO_DATE('2003-06-01','YYYY-MM-DD'));
注意:以上添加的分區(qū)界限應(yīng)該高于最后一個分區(qū)界限。
以下代碼給SALES表的P3分區(qū)添加了一個P3SUB1子分區(qū)
ALTER TABLE SALES MODIFY PARTITION P3 ADD SUBPARTITION P3SUB1 VALUES('COMPLETE');
?
2. 刪除分區(qū)
以下代碼刪除了P3表分區(qū):
ALTER TABLE SALES DROP PARTITION P3;
在以下代碼刪除了P4SUB1子分區(qū):
ALTER TABLE SALES DROP SUBPARTITION P4SUB1;
注意:如果刪除的分區(qū)是表中唯一的分區(qū),那么此分區(qū)將不能被刪除,要想刪除此分區(qū),必須刪除表。
?
3. 截斷分區(qū)
截斷某個分區(qū)是指刪除某個分區(qū)中的數(shù)據(jù),并不會刪除分區(qū),也不會刪除其它分區(qū)中的數(shù)據(jù)。當(dāng)表中即使只有一個分區(qū)時,也可以截斷該分區(qū)。通過以下代碼截斷分區(qū):
ALTER TABLE SALES TRUNCATE PARTITION P2;
通過以下代碼截斷子分區(qū):
ALTER TABLE SALES TRUNCATE SUBPARTITION P2SUB2;
?
4. 合并分區(qū)
合并分區(qū)是將相鄰的分區(qū)合并成一個分區(qū),結(jié)果分區(qū)將采用較高分區(qū)的界限,值得注意的是,不能將分區(qū)合并到界限較低的分區(qū)。以下代碼實現(xiàn)了P1 P2分區(qū)的合并:
ALTER TABLE SALES MERGE PARTITIONS P1,P2 INTO PARTITION P2;
?
5. 拆分分區(qū)
拆分分區(qū)將一個分區(qū)拆分兩個新分區(qū),拆分后原來分區(qū)不再存在。注意不能對HASH類型的分區(qū)進(jìn)行拆分。
ALTER TABLE SALES SBLIT PARTITION P2 AT(TO_DATE('2003-02-01','YYYY-MM-DD'))
INTO (PARTITION P21,PARTITION P22);
?
6. 接合分區(qū)(coalesca)
結(jié)合分區(qū)是將散列分區(qū)中的數(shù)據(jù)接合到其它分區(qū)中,當(dāng)散列分區(qū)中的數(shù)據(jù)比較大時,可以增加散列分區(qū),然后進(jìn)行接合,值得注意的是,接合分區(qū)只能用于散列分區(qū)中。通過以下代碼進(jìn)行接合分區(qū):
ALTER TABLE SALES COALESCA PARTITION;
?
7.重命名表分區(qū)
以下代碼將P21更改為P2
ALTER TABLE SALES RENAME PARTITION P21 TO P2;
?
8. 跨分區(qū)查詢
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));
?
9. 查詢表上有多少分區(qū)
SELECT * FROM useR_TAB_PARTITIONS WHERE TABLE_NAME='tableName'
?
10. 查詢索引信息
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
?
三、分區(qū)查詢
1.顯示數(shù)據(jù)庫所有分區(qū)表的信息:
select * from DBA_PART_TABLES
?
2.顯示當(dāng)前用戶可訪問的所有分區(qū)表信息:
select * from ALL_PART_TABLES
?
3.顯示當(dāng)前用戶所有分區(qū)表的信息:
select * from USER_PART_TABLES
?
4.顯示表分區(qū)信息 顯示數(shù)據(jù)庫所有分區(qū)表的詳細(xì)分區(qū)信息:
select * from DBA_TAB_PARTITIONS???????????
?
5.顯示當(dāng)前用戶可訪問的所有分區(qū)表的詳細(xì)分區(qū)信息:
select * from ALL_TAB_PARTITIONS
?
6.顯示當(dāng)前用戶所有分區(qū)表的詳細(xì)分區(qū)信息:
select * from USER_TAB_PARTITIONS
?
7.顯示子分區(qū)信息 顯示數(shù)據(jù)庫所有組合分區(qū)表的子分區(qū)信息:
select * from DBA_TAB_SUBPARTITIONS
?
8.顯示當(dāng)前用戶可訪問的所有組合分區(qū)表的子分區(qū)信息:
select * from ALL_TAB_SUBPARTITIONS
?
9.顯示當(dāng)前用戶所有組合分區(qū)表的子分區(qū)信息:
select * from USER_TAB_SUBPARTITIONS
?
10.顯示分區(qū)列 顯示數(shù)據(jù)庫所有分區(qū)表的分區(qū)列信息:
select * from DBA_PART_KEY_COLUMNS
?
11.顯示當(dāng)前用戶可訪問的所有分區(qū)表的分區(qū)列信息:
select * from ALL_PART_KEY_COLUMNS
?
12.顯示當(dāng)前用戶所有分區(qū)表的分區(qū)列信息:
select * from USER_PART_KEY_COLUMNS
?
13.顯示子分區(qū)列 顯示數(shù)據(jù)庫所有分區(qū)表的子分區(qū)列信息:
select * from DBA_SUBPART_KEY_COLUMNS
?
14.顯示當(dāng)前用戶可訪問的所有分區(qū)表的子分區(qū)列信息:
select * from ALL_SUBPART_KEY_COLUMNS
?
15.顯示當(dāng)前用戶所有分區(qū)表的子分區(qū)列信息:
select * from USER_SUBPART_KEY_COLUMNS
?
16.怎樣查詢出oracle數(shù)據(jù)庫中所有的的分區(qū)表
select * from user_tables a where a.partitioned='YES'
?
Thanks and Regards
轉(zhuǎn)載于:https://www.cnblogs.com/eastsea/p/3799498.html
總結(jié)
以上是生活随笔為你收集整理的DBA_Oracle Table Partition表分区概念汇总(概念)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 没怀孕梦到胎动是什么意思
- 下一篇: 如何晚上梦到自己想梦到的人