Oracle分区表分为四类:范围分区表;列表分区表;哈希分区表;组合分区表

1.列表分区表(list)

CREATE TABLE list_example(

dname VARCHAR2(10),

DATA VARCHAR2(20)

)

PARTITION BY LIST(dname)

(

PARTITION part01 VALUES('初始登记','转移登记'),

PARTITION part02 VALUES('更名登记','楼盘变更'),

PARTITION part03 VALUES('抵押登记'),

PARTITION part04 VALUES('限制登记')

);

2.范围分区

CREATE TABLE example

(

CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY,

FIRST_NAME VARCHAR2(30) NOT NULL,

LAST_NAME VARCHAR2(30) NOT NULL,

PHONE VARCHAR2(15) NOT NULL,

EMAIL VARCHAR2(80),

STATUS CHAR(1)

)

PARTITION BY RANGE (CUSTOMER_ID)

(

PARTITION exam1 VALUES LESS THAN (100000) TABLESPACE arsystem,

PARTITION exam2 VALUES LESS THAN (200000) TABLESPACE arsystem,

PARTITION exam3 VALUES LESS THAN (300000) TABLESPACE arsystem

);

时间分区

CREATE TABLE part_date

(

ORDER_ID NUMBER(7) NOT NULL,

ORDER_DATE DATE,

TOTAL_AMOUNT NUMBER,

CUSTOTMER_ID NUMBER(7),

PAID CHAR(1)

)

PARTITION BY RANGE (ORDER_DATE)

(

PARTITION ORD_ACT_PART01 VALUES LESS THAN (TO_DATE('2015-07-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) TABLESPACE arsystem,

PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('2015-08-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) TABLESPACE arsystem,

PARTITION ORD_ACT_PART03 VALUES LESS THAN (TO_DATE('2015-09-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) TABLESPACE arsystem,

PARTITION ORD_ACT_PART04 VALUES LESS THAN (MAXVALUE)TABLESPACE arsystem

);

哈希分区

create table HASH_PART

(

transaction_id number primary key,

item_id number(8) not null

)

partition by hash(transaction_id)

(

partition part_01 tablespace ARSYSTEM,

partition part_02 tablespace ARSYSTEM,

partition part_03 tablespace ARSYSTEM

);

简写

CREATE TABLE emp_hash

(

empno NUMBER (4),

ename VARCHAR2 (30),

sal NUMBER

)

PARTITION BY HASH (empno) PARTITIONS 8

STORE IN (arsystem1,arsystem2);

hash分区最主要的机制是根据hash算法来计算具体某条纪录应该插入到哪个分区中,hash算法中最重要的是hash函数,Oracle中如果你要使用hash分区,只需指定分区的数量即可。建议分区的数量采用2的n次方,这样可以使得各个分区间数据分布更加均匀。

组合分区

范围-散列分区

CREATE TABLE SALES

(

PRODUCT_ID VARCHAR2(5),

SALES_DATE DATE,

SALES_COST NUMBER(10),

STATUS VARCHAR2(20)

)

PARTITION BY RANGE(SALES_DATE) SUBPARTITION BY LIST (STATUS)

(

PARTITION P1 VALUES LESS THAN(TO_DATE('2003-01-01','YYYY-MM-DD'))TABLESPACE ARSYSTEM

(

SUBPARTITION P1SUB1 VALUES ('ACTIVE') TABLESPACE ARSYSTEM,

SUBPARTITION P1SUB2 VALUES ('INACTIVE') TABLESPACE ARSYSTEM

),

PARTITION P2 VALUES LESS THAN (TO_DATE('2003-03-01','YYYY-MM-DD')) TABLESPACE ARSYSTEM

(

SUBPARTITION P2SUB1 VALUES ('ACTIVE') TABLESPACE ARSYSTEM,

SUBPARTITION P2SUB2 VALUES ('INACTIVE') TABLESPACE ARSYSTEM

)

);

范围-哈希分区

create table dinya_test

(

transaction_id number primary key,

item_id number(8) not null,

item_description varchar2(300),

transaction_date date

)

partition by range(transaction_date)subpartition by hash(transaction_id) subpartitions 3 store in (arsystem,users)

(

partition part_01 values less than(TO_DATE('2015-07-01 00:00:00','yyyy-mm-dd hh24:mi:ss')),

partition part_02 values less than(TO_DATE('2015-08-01 00:00:00','yyyy-mm-dd hh24:mi:ss')),

partition part_03 values less than(maxvalue)

);

在分区表上可以建立三种类型的索引:1和普通表一样的全局索引;2.全局分区索引;3.本地分区索引

1.建立普通的索引

create index com_index_range_example_id on range_example(id);

2.建立本地分区索引

create index  local_index_range_example_id on range_example(id) local;

3.建立全局分区索引

create index gidx_range_exampel_id on range_example(id)

GLOBAL partition by  range(id)

(

part_01 values less than(1000),

part_02 values less than(MAXVALUE)

);

对于分区索引的删除,local index 不能指定分区名称,单独的删除分区索引。

local index 对应的分区会伴随着data分区的删除而一起被删除。global partition index 可以指定分区名称,删除某一分区。但是有一点要注意,如果该分区不为空,则会导致更高一级的索引分区被置为UNUSABLE 。

ALTER INDEX gidx_range_exampel_id drop partition part_01 ; 此句将导致part_02 状态为UNUSABLE

分区表的操作

1.查询

select * from part_date partition(ORD_ACT_PART01);

2.删除某个分区

alter table part_date drop partition ORD_ACT_PART04;

alter table part_date truncate partition ORD_ACT_PART04;

3.添加分区

ALTER TABLE part_date ADD PARTITION ORD_ACT_PART04 VALUES LESS THAN(TO_DATE('2015-10-01','YYYY-MM-DD'));

4.创建索引

create index idx_part_date on part_date(order_id) local;

-----------------------在线重定义过程-----------------------

包中的定义,可以用pl/sql工具看下包dbms_redefinition的用法

-- Constants for the options_flag parameter of start_redef_table

cons_use_pk    CONSTANT PLS_INTEGER := 1;---主键重定义

cons_use_rowid CONSTANT PLS_INTEGER := 2;---rowid重定义

增快处理速度,可添加并行

alter session force parallel dml parallel 4;

alter session force parallel query parallel 4;

建立普通表

CREATE TABLE putong_table

(

CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY,

FIRST_NAME VARCHAR2(30) NOT NULL,

LAST_NAME VARCHAR2(30) NOT NULL,

PHONE VARCHAR2(15) NOT NULL,

EMAIL VARCHAR2(80),

STATUS CHAR(1)

);

创建分区表

CREATE TABLE part_table

(

CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY,

FIRST_NAME VARCHAR2(30) NOT NULL,

LAST_NAME VARCHAR2(30) NOT NULL,

PHONE VARCHAR2(15) NOT NULL,

EMAIL VARCHAR2(80),

STATUS CHAR(1)

)

PARTITION BY RANGE (CUSTOMER_ID)

(

PARTITION exam1 VALUES LESS THAN (100000) TABLESPACE arsystem,

PARTITION exam2 VALUES LESS THAN (200000) TABLESPACE arsystem,

PARTITION exam3 VALUES LESS THAN (300000) TABLESPACE arsystem

);

插入测试数据

insert into putong_table values(1,'43t','f4y','t54','th','3');

insert into putong_table values(2,'43t','f4y','t54','th','2');

insert into putong_table values(3,'43t','f4y','t54','th','1');

在线重定义过程

测试该表是否可分区

exec dbms_redefinition.can_redef_table('ARADMIN', 'putong_table');

开始

EXEC DBMS_REDEFINITION.START_REDEF_TABLE('ARADMIN', 'putong_table', 'part_table');

--插入测试数据(可选)

insert into putong_table values(4,'43t','f4y','t54','th','4');

同步数据

EXEC dbms_redefinition.sync_interim_table('ARADMIN', 'putong_table', 'part_table');

完成

EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE('ARADMIN', 'putong_table', 'part_table');

将分区表重命名

alter table part_table rename to part_table_new;

1.无主键表

普通表

CREATE TABLE date_putong

(

ORDER_ID NUMBER(7) NOT NULL,

ORDER_DATE DATE,

TOTAL_AMOUNT NUMBER,

CUSTOTMER_ID NUMBER(7),

PAID CHAR(1)

);

分区表

CREATE TABLE date_partition

(

ORDER_ID NUMBER(7) NOT NULL,

ORDER_DATE DATE,

TOTAL_AMOUNT NUMBER,

CUSTOTMER_ID NUMBER(7),

PAID CHAR(1)

)

PARTITION BY RANGE (ORDER_DATE)

(

PARTITION ORD_ACT_PART01 VALUES LESS THAN (TO_DATE('2015-07-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) TABLESPACE arsystem,

PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('2015-08-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) TABLESPACE arsystem,

PARTITION ORD_ACT_PART03 VALUES LESS THAN (TO_DATE('2015-09-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) TABLESPACE arsystem,

PARTITION ORD_ACT_PART04 VALUES LESS THAN (MAXVALUE)TABLESPACE arsystem

);

插入数据

insert into date_putong values(1,TO_DATE('2015-08-24','yyyy-mm-dd'),1,2,3);

insert into date_putong values(1,TO_DATE('2015-08-24','yyyy-mm-dd'),1,2,3);

insert into date_putong values(1,TO_DATE('2015-08-24','yyyy-mm-dd'),1,2,3);

重定义过程

exec dbms_redefinition.can_redef_table('ARADMIN', 'date_putong',2);

EXEC DBMS_REDEFINITION.START_REDEF_TABLE('ARADMIN', 'date_putong', 'date_partition',null,2);

EXEC dbms_redefinition.sync_interim_table('ARADMIN', 'date_putong', 'date_partition');

EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE('ARADMIN', 'date_putong', 'date_partition');

--------------异常处理--------------

异常情况下终止操作

BEGIN

DBMS_REDEFINITION.ABORT_REDEF_TABLE(uname      => 'ARADMIN',

orig_table => 'date_putong',

int_table  => 'date_partition'

);

END;

DBMS_REDEFINITION.ABORT_REDEF_TABLE('ARADMIN', 'date_putong', 'date_partition');

ORA-12089: 不能联机重新定义无主键的表 "ARADMIN"."DATE_PUTONG"

ORA-06512: 在 "SYS.DBMS_REDEFINITION", line 56

ORA-06512: 在 "SYS.DBMS_REDEFINITION", line 1498

ORA-06512: 在 line 2

alter table PUTONG_TABLE add primary key (CUSTOMER_ID)

ORA-12091

删除物化视图日志

drop materialized view log on BS_T_WF_DEALPROCESS_BAK;

查看分区时的错误

select * from DBA_REDEFINITION_ERRORS;

虚拟列分区举例

要求按月进行分区,并且这12个分区可以循环使用,只保留2个月的数据,所以使用11g的虚拟列进行分区

create table MACHINE_TEMP_part

(

id         NUMBER,

username   VARCHAR2(30),

tcp        VARCHAR2(30),

clientip   VARCHAR2(30),

logintime  VARCHAR2(30),

logouttime VARCHAR2(30),

serverip   VARCHAR2(30),

insertdate DATE,

part_num

as (to_nubmer(to_char(insertdate,'mm')))

)

tablespace UNIONMON

artition by range(partition_num)

(partition p1 values less than(2),

partition  p2 values less than(3),

partition  p3 values less than(4),

partition  p4 values less than(5),

partition  p5 values less than(6),

partition  p6 values less than(7),

partition  p7 values less than(8),

partition  p8 values less than(9),

partition  p9 values less than(10),

partition  p10 values less than(11),

partition  p11 values less than(12),

partition  p12 values less than(13)

);

oracle 审计 分区表,oracle分区表的分类及测试相关推荐

  1. oracle 审计设置,oracle数据库审计设置

    --开启oracle审计 su - oracle sqlplus / as sysdba SQL> show parameter audit --看到有下面的内容表示审计没有开启 audit_s ...

  2. oracle审计规则,Oracle中开启某张表的审计(audit)

    Oracle数据库通过audit_trail参数来开启标准审计,OS:说明审计信息放在系统汇总,如果是Linux那么由audit_file_dest 决定,如果 Oracle数据库通过audit_tr ...

  3. oracle 审计设置,oracle审计简单设置

    数据库审计 参数:audit_trail SQL> show parameter audit NAME                                 TYPE        V ...

  4. oracle 增长型分区,oracle 11g 分区表创建(自动按年分区)

    标签: 前言:工作中有一张表一年会增长100多万的数据,量虽然不大,可是表字段多,所以一年下来也会达到 1G,而且只增不改,故考虑使用分区表来提高查询性能,提高维护性. oracle 11g 支持自动 ...

  5. oracle修改分区表的默认空间,Oracle数据库学习_Oracle分区表的分区占用空间为什么是8M?如何修改分区的初始空间?...

    Oracle数据库学习_Oracle分区表的分区占用空间为什么是8M?如何修改分区的初始空间? 现象一描述: 在oracle12c下创建一个分区表T_A_TRADING,新建一个分区P1,P1里没有任 ...

  6. oracle 如何查看表分区,ORACLE中如何查看分区表信息

    ORACLE 中如何 查看分区表 信息 Oracle 显示分区表信息 显示数据库所有分区表的信息:DBA_PART_TABLES 显示当前用户可访问的所有分区表信息:ALL_PART_TABLES 显 ...

  7. oracle range用法,Oracle 分区表——Range分区

    一.什么是分区表 Oracle提供了分区技术以支持VLDB(Very Large DataBase).分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中.分区完全对应用透明. Oracle ...

  8. oracle 10g分区表,oracle10g-11gR2 分区表汇总一

    在oracle10g(在10.2.0.4中测试)中:分区表共分为:range.list.hash,复合分区可以是:range-list.range-hash 测试之前先创建4个表空间tbs_1,tbs ...

  9. oracle审计功能有什么用,Oracle审计功能

    本文参考文章:5 概述:5 审计功能分类:5 一.审计相关实例参数6 ?audit_sys_operations6 一..1 linux/unix6 一..2 windows7 二.标准审计10 (一 ...

  10. oracle 关闭audit,关于Oracle审计(audit)

    Oracle审计可以查询到某个用户对DB做了哪些操作,10g后,可以查询到具体的sql语句,很有用.审计功能开户的整个过程: Oracle审计可以查询到某个用户对DB做了哪些操作,10g后,可以查询到 ...

最新文章

  1. 怎样在C++Builder中创建使用DLL
  2. 64位Win7安装Oracle12C临时位置权限错误解决方案
  3. 【Linux系统编程应用】 Linux系统中找不到设备/dev/fb0
  4. 图解 Python 深拷贝和浅拷贝
  5. 王国权辞任中国电信股份有限公司执行副总裁
  6. 使用extract-text-webpack-plugin提取css文件
  7. php if变量满足数组,在php中使用if()查看数组中的日期是否等于变量中存储的日期...
  8. discuz二开的9月最新版本Miko二次元动漫视频网站源码完美搭建视频php源码
  9. rk3399pro Andoid9.0 修改系统默认音量设置
  10. 基于STM32的四位TM1637完整程序
  11. 近两年最流行的面试题
  12. 你听说过史莱姆吗??【oj】
  13. c语言省二级编程证书,c语言二级考试
  14. 2022长安杯-wp
  15. php中 dsn什么意思,网络dsn是什么意思(图文)
  16. mp4视频无法播放的解决方法
  17. Cisco AP-如何调整LAP信道
  18. js px转rem,简单版,注意不能修改ui框架的px
  19. 微型计算机能不能玩lol,微机课才能玩的3款“单机游戏”,CS上榜,没玩过的别说有童年...
  20. 第三天,python之路

热门文章

  1. 为了中国---我国民用客机深度报道(第三部分下)
  2. 骑行运动,对青春期年青人有什么好处?
  3. jquery form自动绑定表单内容
  4. 数码博主自用五款高性价比蓝牙耳机分享,双11不想踩雷选什么蓝牙耳机好?
  5. 轨道运营管理专业自荐书_城市轨道交通运营管理专业职业规划(1)
  6. C# 进行 Starlink 仿真03:72轨道面 * 22颗卫星 F相位因子==11 的Walker星座,创建3168条星间链路,并与 icarus 论文的Python结果相对比。
  7. 判断一个数是否是回文数(Java)
  8. 每日3词 2021-03-14 【old】【new】【count】
  9. 机器学习:Leaning without Forgetting -- 增量学习中的抑制遗忘
  10. android系统开机默认设置修改记录