隨筆-314  評論-209  文章-0  trackbacks-0

          有關表分區的一些維護性操作:
          一、添加分區
          以下代碼給SALES表添加了一個P3分區
          ALTER TABLE SALES ADD PARTITION P3 VALUES LESS THAN(TO_DATE('2003-06-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;

          注:分區根據具體情況選擇。

          表分區有以下優點:
          1、數據查詢:數據被存儲到多個文件上,減少了I/O負載,查詢速度提高。
          2、數據修剪:保存歷史數據非常的理想。
          3、備份:將大表的數據分成多個文件,方便備份和恢復。
          4、并行性:可以同時向表中進行DML操作,并行性性能提高。
          ================================================

          索引:
          1、一般索引:
          create index index_name on table(col_name);
          2、Oracle 分區索引詳解
          語法:Table Index
          CREATE [UNIQUE|BITMAP] INDEX [schema.]index_name
          ON [schema.]table_name [tbl_alias]
          (col [ASC | DESC]) index_clause index_attribs

          index_clauses:
          分以下兩種情況

          1. Local Index
          就是索引信息的存放位置依賴于父表的Partition信息,換句話說創建這樣的索引必須保證父表是Partition
          1.1 索引信息存放在父表的分區所在的表空間。但是僅可以創建在父表為HashTable或者composite分區表的。
          LOCAL STORE IN (tablespace)
          1.2 僅可以創建在父表為HashTable或者composite分區表的。并且指定的分區數目要與父表的分區數目要一致
          LOCAL STORE IN (tablespace) (PARTITION [partition [LOGGING|NOLOGGING] [TABLESPACE {tablespace|DEFAULT}] [PCTFREE int] [PCTUSED int] [INITRANS int] [MAXTRANS int] [STORAGE storage_clause] [STORE IN {tablespace_name|DEFAULT] [SUBPARTITION [subpartition [TABLESPACE tablespace]]]])

          1.3 索引信息存放在父表的分區所在的表空間,這種語法最簡單,也是最常用的分區索引創建方式。
          Local
          1.4 并且指定的Partition 數目要與父表的Partition要一致
          LOCAL (PARTITION [partition
          [LOGGING|NOLOGGING]
          [TABLESPACE {tablespace|DEFAULT}]
          [PCTFREE int]
          [PCTUSED int]
          [INITRANS int]
          [MAXTRANS int]
          [STORAGE storage_clause]
          [STORE IN {tablespace_name|DEFAULT]
          [SUBPARTITION [subpartition [TABLESPACE tablespace]]]])

          Global Index
          索引信息的存放位置與父表的Partition信息完全不相干。甚至父表是不是分區表都無所謂的。語法如下:
          GLOBAL PARTITION BY RANGE (col_list)
          ( PARTITION partition VALUES LESS THAN (value_list)
          [LOGGING|NOLOGGING]
          [TABLESPACE {tablespace|DEFAULT}]
          [PCTFREE int]
          [PCTUSED int]
          [INITRANS int]
          [MAXTRANS int]
          [STORAGE storage_clause] )
          但是在這種情況下,如果父表是分區表,要刪除父表的一個分區都必須要更新Global Index ,否則索引信息不正確
          ALTER TABLE TableName DROP PARTITION PartitionName Update Global Indexes

          --查詢索引
          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


          本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/thinker28754/archive/2009/03/06/3962309.aspx

          posted on 2009-06-18 11:08 xzc 閱讀(2222) 評論(1)  編輯  收藏 所屬分類: Oracle

          評論:
          # re: oracle的表空間、分區表、以及索引的總結 2010-04-02 16:14 | xzc

          --刪除分區
          ALTER TABLE WID_SETT_TICKET_DAY_1100 DROP PARTITION P20100401;
          --增加分區
          ALTER TABLE WID_SETT_TICKET_DAY_1100 ADD PARTITION P20100401 VALUES (20100401) TABLESPACE ODSDATA_04 NOLOGGING;
          --查找分區
          select *
          from USER_TAB_PARTITIONS
          where table_name = 'WID_SETT_TICKET_DAY_1100'
          and partition_name = 'P20100401';  回復  更多評論
            
          主站蜘蛛池模板: 金秀| 贡觉县| 尉氏县| 丰台区| 皋兰县| 江陵县| 子洲县| 修水县| 新乡市| 兰坪| 阳曲县| 张家界市| 财经| 丰镇市| 徐水县| 乌海市| 阿巴嘎旗| 建昌县| 左云县| 宜兰县| 南宁市| 横峰县| 瓦房店市| 砚山县| 广丰县| 泾源县| 陆川县| 汪清县| 怀化市| 四子王旗| 威远县| 乌鲁木齐市| 黄大仙区| 肥城市| 无极县| 满城县| 专栏| 榆树市| 芮城县| 黄浦区| 潞城市|