`

oracle 子分区

阅读更多
--1.创建表空间
create tablespace tbs1 datafile
'e:\oracle\tbs1_1_1.dbf' size 5m;

create tablespace tbs2 datafile
'e:\oracle\tbs2_1_1.dbf' size 5m;

-------------
--2.建表
create table AGG_BILL_BY_CITY (
    HOUR_ID INTEGER not null,
   CITY_ID INTEGER not null,
  MONTH_ID INTEGER,
  CALL_TYPE_ID INTEGER not null,
  DEAL_ID INTEGER not null,
  OPERATOR_ID INTEGER not null,
  FEE_TYPE_ID INTEGER not null,
  ROAM_TYPE_ID INTEGER not null,
   CALL_FEE NUMBER,
   LONG_FEE NUMBER,
  CALL_NUM INTEGER,
  BILL_DURATION NUMBER,
  CALL_DURATION NUMBER,
 GPRS_IN NUMBER,
  GPRS_OUT NUMBER,
   LOAD_TIME DATE default sysdate,
 SUM_NUM NUMBER
   )
  partition by range(HOUR_ID)  --partition attri
  subpartition by 
	hash(CITY_ID, CALL_TYPE_ID, DEAL_ID, OPERATOR_ID, FEE_TYPE_ID, ROAM_TYPE_ID)--subpartition attri
  subpartitions 2 store in(TBS1,tBS2) 
  (
  partition P20060527 values less than(2006052800), --partition
  partition P20060528 values less than(2006052900)
  );
alter table AGG_BILL_BY_CITY MODIFY DEFAULT ATTRIBUTES tablespace tbs1;--default tablespace

alter table AGG_BILL_BY_CITY add partition P20060530 values less than(2006053000);--add partition

select table_name,partition_name,subpartition_name,tablespace_name 
from user_tab_subpartitions;



alter table AGG_BILL_BY_CITY   --change tablespace
move subpartition sys_subp25 tablespace tbs1;

alter table AGG_BILL_BY_CITY 
move subpartition sys_subp32 tablespace tbs2;

drop table agg_bill_by_city;

-----------------------------------
create table AGG_BILL_BY_CITY
    (
    HOUR_ID INTEGER not null,
    CITY_ID INTEGER not null,
    MONTH_ID INTEGER,

    CALL_TYPE_ID INTEGER not null,

    DEAL_ID INTEGER not null,

    OPERATOR_ID INTEGER not null,

  FEE_TYPE_ID INTEGER not null,
  ROAM_TYPE_ID INTEGER not null,

   CALL_FEE NUMBER,

   LONG_FEE NUMBER,

   CALL_NUM INTEGER,

  BILL_DURATION NUMBER,

   CALL_DURATION NUMBER,

  GPRS_IN NUMBER,

  GPRS_OUT NUMBER,

  LOAD_TIME DATE default sysdate,

 SUM_NUM NUMBER
   )
   partition by range(HOUR_ID)
  subpartition by hash(CITY_ID, CALL_TYPE_ID, DEAL_ID, OPERATOR_ID, FEE_TYPE_ID, ROAM_TYPE_ID)
 SUBPARTITION TEMPLATE(SUBPARTITION sp1 TABLESPACE tbs1,
	  SUBPARTITION sp2 TABLESPACE tbs2)
   (
   partition P20060527 values less than(2006052800),
  partition P20060528 values less than(2006052900)
   );
	 
alter table AGG_BILL_BY_CITY set subpartition template(SUBPARTITION sp1 TABLESPACE tbs1,
	  SUBPARTITION sp2 TABLESPACE tbs2,
		SUBPARTITION sp3 TABLESPACE tbs2)

select * from AGG_BILL_BY_CITY
insert into AGG_BILL_BY_CITY(HOUR_ID,CITY_ID, CALL_TYPE_ID, DEAL_ID, OPERATOR_ID, FEE_TYPE_ID, ROAM_TYPE_ID)
values(2006052800,1,1,1,1,1,1);

select distinct table_name,partition_name,tablespace_name ,subpartition_name
from user_tab_subpartitions
order by tablespace_name;

 select * from user_subpartition_templates;

alter table AGG_BILL_BY_CITY add partition P20060530 values less than(2006053000);

alter table AGG_BILL_BY_CITY add partition Pmax values less than(maxvalue);
alter table AGG_BILL_BY_CITY 
move subpartition sys_subp32 tablespace tbs2;

alter table ac82 modify partition part_
add subpartition P20060527_SP3 values(3) tablespace ;

PART_2010_PART_350106 AC82_2010



declare
cursor cur is select distinct table_name,partition_name ,tablespace_name
from user_tab_subpartitions where 1=1
order by table_name,tablespace_name,partition_name;
begin
	for c in cur loop
		execute immediate 'alter table '||c.table_name||' modify partition '||c.partition_name||
		' add subpartition '||c.partition_name||'_PART_350106'||' values(''350106'') tablespace '
		||c.tablespace_name;
	end loop;
end;




----------------------------
drop table AGG_BILL_BY_CITY
create table AGG_BILL_BY_CITY
    (
    HOUR_ID INTEGER not null,
    CITY_ID INTEGER not null,
    MONTH_ID INTEGER,

    CALL_TYPE_ID INTEGER,

    DEAL_ID INTEGER,

    OPERATOR_ID INTEGER,

  FEE_TYPE_ID INTEGER ,
  ROAM_TYPE_ID INTEGER,

   CALL_FEE NUMBER,

   LONG_FEE NUMBER,

   CALL_NUM INTEGER,

  BILL_DURATION NUMBER,

   CALL_DURATION NUMBER,

  GPRS_IN NUMBER,

  GPRS_OUT NUMBER,

  LOAD_TIME DATE default sysdate,

 SUM_NUM NUMBER
   )
   partition by range(HOUR_ID)
  subpartition by list(CITY_ID)
 SUBPARTITION TEMPLATE(SUBPARTITION sp1 values(1) TABLESPACE tbs1 ,
	  SUBPARTITION sp2 values(2) TABLESPACE tbs2)
   (
   partition P20060527 values less than(2006052800),
  partition P20060528 values less than(2006052900)
   );

insert into AGG_BILL_BY_CITY (hour_id,city_id) values(1,3);
insert into AGG_BILL_BY_CITY (hour_id,city_id) values(2006052910,3);

alter table AGG_BILL_BY_CITY set subpartition template(SUBPARTITION sp1 values(1) TABLESPACE tbs1 ,
	  SUBPARTITION sp2 values(2) TABLESPACE tbs2,
		SUBPARTITION sp3 values(3) TABLESPACE tbs2)
-------------------------------------------
-- 不指定表空间 分区表的默认空间->表的默认空间->用户的默认空间
分区索引 本地索引会随着分区的操作自动增加
建立分区索引没默认表空间,新增索引所在表空间和新增表空间一致

复核分区索引给出分区默认表空间,新建索引子分区建立在索引分区表空间


--例一:分区表增加分区

SELECT DEFAULT_TABLESPACE FROM USER_USERS;

create tablespace test datafile
'e:\oracle\test.dbf' size 5m;

select * from test;
drop table test;

CREATE TABLE TEST (ID NUMBER)
TABLESPACE USERS  --table tablespace
PARTITION BY RANGE (ID)
(
PARTITION P1 VALUES LESS THAN (100) TABLESPACE TEST --partition  tablespace
);

select * from test1
drop table test1;

CREATE TABLE TEST1 (ID NUMBER)
 PARTITION BY RANGE (ID)
 (
 PARTITION P1 VALUES LESS THAN (100) TABLESPACE TEST
 );

 ALTER TABLE TEST ADD PARTITION P2 VALUES LESS THAN (200);--table tablespace

ALTER TABLE TEST1 ADD PARTITION P2 VALUES LESS THAN (200);--user tablespace




 DROP TABLE TEST;
 DROP TABLE TEST1;

create tablespace tools 
datafile 'e:\oracle\tools.dbf'
size 5m;

--例二:复合分区表增加子分区
CREATE TABLE TEST (TIME DATE, STATE VARCHAR2(10))
TABLESPACE tools
 PARTITION BY RANGE (TIME) 
 SUBPARTITION BY LIST (STATE) 
 (
 PARTITION P1 VALUES LESS THAN (TO_DATE('2004-1-1', 'YYYY-MM-DD')) TABLESPACE USERS(--partition
 SUBPARTITION SP1 VALUES ('BJ') TABLESPACE TEST ));

CREATE TABLE TEST1 (TIME DATE, STATE VARCHAR2(10))
 TABLESPACE tools  --table
 PARTITION BY RANGE (TIME) 
 SUBPARTITION BY LIST (STATE)
 (
 PARTITION P1 VALUES LESS THAN (TO_DATE('2004-1-1', 'YYYY-MM-DD'))(--table tablespace
 SUBPARTITION SP1 VALUES ('BJ') TABLESPACE TEST
 ));
 
CREATE TABLE TEST2 (TIME DATE, STATE VARCHAR2(10))--default
 PARTITION BY RANGE (TIME) SUBPARTITION BY LIST (STATE)
 (
 PARTITION P1 VALUES LESS THAN (TO_DATE('2004-1-1', 'YYYY-MM-DD')) --table default
 ( SUBPARTITION SP1 VALUES ('BJ') TABLESPACE TEST
 )
 )
 ;
SELECT partition_name,TABLE_NAME, TABLESPACE_NAME FROM USER_TAB_PARTITIONS
--WHERE PARTITION_NAME = 'P2'
order by table_name,partition_name
;

drop table AGG_BILL_BY_CITY;

select table_name,partition_name,subpartition_name,tablespace_name 
from user_tab_subpartitions
where subpartition_name='SP2';

ALTER TABLE TEST MODIFY PARTITION P1 ADD SUBPARTITION SP2 VALUES ('SH');

ALTER TABLE TEST1 MODIFY PARTITION P1 ADD SUBPARTITION SP2 VALUES ('SH');

ALTER TABLE TEST2 MODIFY PARTITION P1 ADD SUBPARTITION SP2 VALUES ('SH');

SELECT TABLE_NAME, TABLESPACE_NAME FROM USER_TAB_SUBPARTITIONS 
 WHERE SUBPARTITION_NAME = 'SP2';

DROP TABLE TEST;
DROP TABLE TEST1;
DROP TABLE TEST2;

--例三:本地索引分区

CREATE TABLE TEST (ID NUMBER, NAME VARCHAR2(30))
 TABLESPACE USERS   --
 PARTITION BY RANGE (ID)
 (
 PARTITION P1 VALUES LESS THAN (100) TABLESPACE TEST --
 );

CREATE TABLE TEST1 (ID NUMBER, NAME VARCHAR2(30))
 PARTITION BY RANGE (ID)
 (
 PARTITION P1 VALUES LESS THAN (100) TABLESPACE TEST --
 );

CREATE INDEX IND_TEST_1 ON TEST (ID) LOCAL;

create tablespace indx 
datafile 'e:\oracle\indx.dbf'
size 1m;

CREATE INDEX IND_TEST_2 ON TEST (NAME) TABLESPACE INDX LOCAL; --

CREATE INDEX IND_TEST1_1 ON TEST1 (ID) LOCAL;

CREATE INDEX IND_TEST1_2 ON TEST1 (NAME)  TABLESPACE INDX LOCAL;


ALTER TABLE TEST ADD PARTITION P2 VALUES LESS THAN (200);
ALTER TABLE TEST1 ADD PARTITION P2 VALUES LESS THAN (200);

SELECT TABLE_NAME, TABLESPACE_NAME FROM USER_TAB_PARTITIONS
WHERE PARTITION_NAME = 'P2';


SELECT TABLE_NAME, A.INDEX_NAME, A.TABLESPACE_NAME 
 FROM USER_IND_PARTITIONS A, USER_INDEXES B
 WHERE PARTITION_NAME = 'P2'
 AND A.INDEX_NAME = B.INDEX_NAME
 ORDER BY 1, 2;

DROP TABLE TEST;
DROP TABLE TEST1;

--例四:复合分区索引


CREATE TABLE TEST (ID NUMBER, TIME DATE, STATE VARCHAR2(10))
 TABLESPACE TOOLS --
 PARTITION BY RANGE (TIME) SUBPARTITION BY LIST (STATE)
 (
 PARTITION P1 VALUES LESS THAN (TO_DATE('2004-1-1', 'YYYY-MM-DD')) TABLESPACE USERS--
 (
 SUBPARTITION SP1 VALUES ('BJ') TABLESPACE TEST--
 )
 )
;


CREATE TABLE TEST1 (ID NUMBER, TIME DATE, STATE VARCHAR2(10))
 TABLESPACE TOOLS ---
 PARTITION BY RANGE (TIME) SUBPARTITION BY LIST (STATE)
 (
 PARTITION P1 VALUES LESS THAN (TO_DATE('2004-1-1', 'YYYY-MM-DD'))
 (
 SUBPARTITION SP1 VALUES ('BJ') TABLESPACE TEST--
 )
 )
 ;


CREATE TABLE TEST2 (ID NUMBER, TIME DATE, STATE VARCHAR2(10))
 PARTITION BY RANGE (TIME) SUBPARTITION BY LIST (STATE)
 (
 PARTITION P1 VALUES LESS THAN (TO_DATE('2004-1-1', 'YYYY-MM-DD'))
 (
 SUBPARTITION SP1 VALUES ('BJ') TABLESPACE TEST --
 )
 )
 ;

CREATE INDEX IND_TEST_1 ON TEST (ID) LOCAL;
CREATE INDEX IND_TEST_2 ON TEST (TIME) TABLESPACE INDX LOCAL;


CREATE INDEX IND_TEST_3 ON TEST (STATE) LOCAL (PARTITION P1 TABLESPACE SYSTEM) TABLESPACE INDX;
CREATE INDEX IND_TEST1_1 ON TEST1 (ID) LOCAL;

CREATE INDEX IND_TEST1_2 ON TEST1 (TIME) TABLESPACE INDX LOCAL;

CREATE INDEX IND_TEST1_3 ON TEST1 (STATE)
 LOCAL (PARTITION P1 TABLESPACE SYSTEM)
 TABLESPACE INDX;


CREATE INDEX IND_TEST2_1 ON TEST2 (ID) LOCAL;

CREATE INDEX IND_TEST2_2 ON TEST2 (TIME)
TABLESPACE INDX LOCAL;

CREATE INDEX IND_TEST2_3 ON TEST2 (STATE)
 LOCAL (PARTITION P1 TABLESPACE SYSTEM)
 TABLESPACE INDX;


ALTER TABLE TEST MODIFY PARTITION P1 ADD SUBPARTITION SP2 VALUES ('SH');

ALTER TABLE TEST1 MODIFY PARTITION P1 ADD SUBPARTITION SP2 VALUES ('SH');


ALTER TABLE TEST2 MODIFY PARTITION P1 ADD SUBPARTITION SP2 VALUES ('SH');

SELECT TABLE_NAME, TABLESPACE_NAME FROM USER_TAB_SUBPARTITIONS 
WHERE SUBPARTITION_NAME = 'SP2';

TABLE_NAME TABLESPACE_NAME
-------------------- ------------------------------TEST USERS
TEST1 TOOLS
TEST2 YANGTK

SQL> SELECT TABLE_NAME, A.INDEX_NAME, A.TABLESPACE_NAME 
2 FROM USER_IND_SUBPARTITIONS A, USER_INDEXES B
3 WHERE SUBPARTITION_NAME = 'SP2'
4 AND A.INDEX_NAME = B.INDEX_NAME
5 ORDER BY 1, 2;

TABLE_NAME INDEX_NAME TABLESPACE_NAME
-------------------- -------------------- -----------------------TEST IND_TEST_1 USERS
TEST IND_TEST_2 INDX
TEST IND_TEST_3 SYSTEM
TEST1 IND_TEST1_1 TOOLS
TEST1 IND_TEST1_2 INDX
TEST1 IND_TEST1_3 SYSTEM
TEST2 IND_TEST2_1 YANGTK
TEST2 IND_TEST2_2 INDX
TEST2 IND_TEST2_3 SYSTEM

ALTER TABLE TEST_INSER ENABLE ROW MOVEMENT;


分享到:
评论

相关推荐

    ORACLE分区ORACLE分区ORACLE分区

    ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区ORACLE分区

    oracle自动分区重命名.txt

    oracle按时间自动分区后,将自分区的系统名根据时间重命名。如:SYS_P20000重命名为P20190101。 输入两个参数表名 +类型 1:日 2:月 3:年 默认日期 把后面注释的执行语句释放,测试...切记:没数据的子分区会被删除

    oracle 表分区

    表分区(partition):表分区技术是在超大型数据库(VLDB)中将大表及其索引通过分区(patition)的形式分割为若干较小、可管理的小块,并且每一分区可进一步划分为更小的子分区(sub partition)。而这种分区对于应用...

    oracle表空间表分区详解及oracle表分区查询使用方法

    此文从以下几个方面来整理关于分区表的概念及操作:1.表空间及分区表的概念2.表分区的具体作用3.表分区的优缺点4.表分区的几种类型及操作方法5.对表分区的维护性操作.(1.) 表空间及...表分区的具体作用Oracle的表分区

    Oracle Database12c数据库100个新特性与案例总结V2.0

    目 录 1 Oracle 12cR1数据库新特性 6 ...1.3 表分区或子分区的在线迁移 12 1.4 不可见字段 12 1.5 相同字段上的多重索引 13 1.6 DDL日志 13 1.7 临时undo 13 ···················

    Oracle课件.pdf

    2. Oracle介绍与安装 2.1 Oracle安装 2.2 Oracle 默认用户 2.3 服务器连接 3. PL/SQL Developer工具 4. Oracle用户和权限 4.1用户和权限 4.2角色 第2章 SQL数据操作和查询 1. SQL简介 2. 查询 2.1查询...

    Oracle数据库恢复工具Oracle Database Unloader(ODU)3.09

    列出表的分区和子分区 支持表被truncate后的数据恢复 支持表被drop后的数据恢复 支持压缩表 支持在没有SYSTEM表空间和数据字典损坏的情况下恢复数据,在没有数据字典可用时,ODU能够自动判断数据的类型 支持IOT...

    Oracle 8i 数据仓库

    3.5 分区表(PARTIONED TABLES)与索引 24 3.6 摘要管理 25 3.7 透明的表空间 25 3.8 直接的路径装载API 26 3.9 数据仓库的增强功能 26 3.10 先进的查询技术与业务事件 26 3.11 ORACLE8I并行服务器改进 27 3.12 扩展的...

    Oracle数据仓库解决方案

    3.5 分区表(PARTIONED TABLES)与索引 24 3.6 摘要管理 25 3.7 透明的表空间 25 3.8 直接的路径装载API 26 3.9 数据仓库的增强功能 26 3.10 先进的查询技术与业务事件 26 3.11 ORACLE8I并行服务器改进 27 3.12 扩展的...

    北大青鸟Oracle教程集

    第三章 锁和表分区; 第四章 数据库对象; 第五章 Oracle 中的 OOP 概念; 第六章 PL/SQL 简介; 第七章 异常和游标管理; 第八章 子程序和程序包; 第九章 数据库触发器和内置程序包; 第十章 集合和成员函数。

    oracle数据库修复

    主要功能点: 不需要运行Oracle数据库软件,ODU直接读取数据库文件解析数据。 支持ASM,能够直接从ASM磁盘中导出数据,即使相关的磁盘组不能成功mount 支持从ASM中直接抽取出数据文件和...支持列出表的分区和子分区

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...

    Oracle数据库表与视图

    Oracle8i引入了分区表和对象表,Oracle8i引入了临时表,使表的功能更强大。视图是一个或多个表中数据的逻辑表达式。表可以看作有行和列的电子数据表,表是关系数据库中一种拥有数据的结构。用CREATE TABLE语句建立表...

    Oracle高级sql学习与练习

    9、相关子查询和非相关子查询 10、增强GROUP BY 11、分析函数(ANALYTICAL FUNCTIONS) 12、ROWID的使用 13、ORACLE 10G正则表达式 14、使用HINT 15、PARITION分区 16、并行操作 17、扩展DDL和DML语句 18、MODEL语句...

    Oracle 10g应用指导

    包括加密Oracle子程序,存储应用程序用户名和口令,禁止修改删除数据库对象,Oracle数据加密以及丢失SYSMAN及资料档案库用户口令的解决方法。书中给出了丰富的图表,多数图例是作者根据多年实践总结出来的,图示简练...

    大牛出手Oracle SQL优化实例讲解

    9.autotrace验证消除子查询后的性能 10.基于基本的优化CBO 11.如何统计数据库数据 12.Oracle如何统计操作系统数据 13./*+parallel(t,4)*/在大表查询性能的提现 14.CRAS和create insert的性能测试 15.增加字段时指定...

    赤兔Oracle数据库恢复软件 v11.6.zip

    17.支持IOT表分区(包括子分区)只能在有SYSTEM表空间时才能导出IOT表 18.支持压缩表 19.支持表被truncate后的数据恢复 20.支持表被drop后的数据恢复 21.在有SYSTEM表空间的情况下,自动获取数据字典信息 22....

    oracle 数据仓库解决方案

    3.5 分区表(PARTIONED TABLES)与索引 24 3.6 摘要管理 25 3.7 透明的表空间 25 3.8 直接的路径装载API 26 3.9 数据仓库的增强功能 26 3.10 先进的查询技术与业务事件 26 3.11 ORACLE8I并行服务器改进 27 3.12 扩展的...

Global site tag (gtag.js) - Google Analytics