Oracle 11g新特性系统分区表

在11g中有个新特性是系统的分区表,下面来做个实验:

SQL> select * from v$version;

BANNER

--------------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

PL/SQL Release 11.2.0.1.0 - Production

CORE    11.2.0.1.0      Production

TNS for Linux: Version 11.2.0.1.0 - Production

NLSRTL Version 11.2.0.1.0 - Production

SQL> drop table S_P_TEST purge;

SQL> CREATE TABLE S_P_TEST

(

col1 number,

name varchar2(100)

)

PARTITION BY SYSTEM

(

PARTITION p1,

PARTITION p2,

PARTITION p3,

PARTITION p4

);

--插入时要指明分区

SQL> insert into S_P_TEST select object_id,object_name from dba_objects;

insert into S_P_TEST select object_id,object_name from dba_objects

*

第 1 行出现错误:

ORA-14701: 对于按“系统”方法进行分区的表, 必须对 DML 使用分区扩展名或绑定变量

SQL> insert into S_P_TEST partition(p1) select object_id,object_name from dba_objects

where object_type=‘TABLE‘;

已创建2115行。

SQL> insert into S_P_TEST partition(p2) select object_id,object_name from dba_objects

where object_type=‘INDEX‘;

已创建2888行。

SQL> commit;

SQL> select count(1) from S_P_TEST;

COUNT(1)

----------

5003

SQL> select count(1) from S_P_TEST  partition(p1);

COUNT(1)

----------

2115

SQL> select count(1) from S_P_TEST  partition(p2);

COUNT(1)

----------

2888

--相同的数据可以插入到不同的分区中,这说明数据和分区没有任何关系

SQL> insert into S_P_TEST partition(p3) values(1,‘aa‘);

SQL> insert into S_P_TEST partition(p4) values(1,‘aa‘);

SQL> commit;

SQL> select * from S_P_TEST  partition(p3);

COL1 NAME

---------- ------------------------------------------

1 aa

SQL> select * from S_P_TEST  partition(p4);

COL1 NAME

---------- -----------------------------------------

1 aa

--传统的分区裁剪和分区智能关联无效,不能建立本地化的索引

SQL> ALTER TABLE S_P_TEST SPLIT PARTITION p1 at(1000)

into(partition p3,partition p4);

ALTER TABLE S_P_TEST SPLIT PARTITION p1 at(1000)

*

第 1 行出现错误:

ORA-14255: 未按范围, 列表, 组合范围或组合列表方法对表进行分区

--如果你知道数据在哪个表里面,做好要制定分区条件

SQL> set autotrace traceonly

SQL> select * from S_P_TEST where col1=1;

执行计划

----------------------------------------------------------

Plan hash value: 2020968526

-------------------------------------------------------------------------------------------------

| Id  | Operation            | Name     | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |

-------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT     |          |     2 |   130 |    10   (0)| 00:00:01 |       |       |

|   1 |  PARTITION SYSTEM ALL|          |     2 |   130 |    10   (0)| 00:00:01 |     1 |     4 |

|*  2 |   TABLE ACCESS FULL  | S_P_TEST |     2 |   130 |    10   (0)| 00:00:01 |     1 |     4 |

-------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

2 - filter("COL1"=1)

Note

-----

- dynamic sampling used for this statement (level=2)

统计信息

----------------------------------------------------------

5  recursive calls

0  db block gets

70  consistent gets

0  physical reads

0  redo size

414  bytes sent via SQL*Net to client

338  bytes received via SQL*Net from client

2  SQL*Net roundtrips to/from client

0  sorts (memory)

0  sorts (disk)

2  rows processed

SQL> select * from S_P_TEST partition(p3) where col1=1;

执行计划

----------------------------------------------------------

Plan hash value: 1626227678

----------------------------------------------------------------------------------------------------

| Id  | Operation               | Name     | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |

----------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT        |          |     1 |    65 |     4   (0)| 00:00:01 |       |       |

|   1 |  PARTITION SYSTEM SINGLE|          |     1 |    65 |     4   (0)| 00:00:01 |     3 |     3 |

|*  2 |   TABLE ACCESS FULL     | S_P_TEST |     1 |    65 |     4   (0)| 00:00:01 |     3 |     3 |

----------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

2 - filter("COL1"=1)

Note

-----

- dynamic sampling used for this statement (level=2)

统计信息

----------------------------------------------------------

5  recursive calls

0  db block gets

15  consistent gets

0  physical reads

0  redo size

385  bytes sent via SQL*Net to client

338  bytes received via SQL*Net from client

2  SQL*Net roundtrips to/from client

0  sorts (memory)

0  sorts (disk)

1  rows processed

系统分区表的使用场景我想并不多,如果对传统的分区表数据的特性理解是:1.数据和分区是有联系的; 2.分区就是把很多的表粘在一起管理。那系统分区表只有第二个特性。

时间: 2024-11-13 04:06:00

Oracle 11g新特性系统分区表的相关文章

Oracle 11g 新特性 -- Oracle Restart 说明(转载)

转载:http://blog.csdn.net/tianlesoftware/article/details/8435670 一.  OHASD 说明 Oracle 的Restart 特性是Oracle 11g里的新特性,在讲这个特性之前先看一下Oracle 11g RAC的进程.之前的Blog 有说明. Oracle 11gR2RAC 进程说明 http://blog.csdn.net/tianlesoftware/article/details/6009962 Oracle 11gR2 中对

Oracle 11g新特性之--虚拟列(Virtual Column)

Oracle 11g新特性之--虚拟列(Virtual Column) Oracle 11G虚拟列Virtual Column介绍 Oracle 11G 在表中引入了虚拟列,虚拟列是一个表达式,在运行时计算,不存储在数据库中,不能更新虚拟列的值. 定义一个虚拟列的语法: column_name [datatype] [GENERATED ALWAYS] AS [expression] [VIRTUAL] 1.虚拟列可以用在select,update,delete语句的where条件中,但是不能用

[转]Oracle 11g 新特性 -- SQL Plan Management 说明

一 概述 二 SQL 计划基线Plan BaseLine体系结构三 加载SQL 计划基线四 演化SQL 计划基线五 重要的基线SQL 计划属性六 SQL 计划选择七 可能的SQL 计划可管理性方案八 SQL 性能分析器和SQL 计划基准方案九 自动加载SQL 计划基线方案十 清除SQL 管理库策略 一.概述 SQL 语句的SQL 执行计划发生更改时,可能存在性能风险. SQL 计划发生更改的原因有很多,如优化程序版本.优化程序统计信息.优化程序参数.方案定义.系统设计和SQL 概要文件创建等.

[转]Oracle 11g 新特性 -- SQL Plan Management 示例

目录 一 SPM 说明 相关名词说明 SPM的特点 与profile和outline相比更加灵活的控制手段 SPM使计划真正的稳定 SPM的控制方式 SPM如何捕捉加载执行计划 自动捕捉 批量导入 执行计划的选择过程 执行计划的演化evolution 修改已有的Baseline 相关MOS 文档 二 SPM 示例 自动捕捉 手工捕获执行计划 演化SQL Plan Baselines 完整示例 修改 Plan Baselines 显示SQL Plan Baselines 设置SQL Managem

Oracle 11g新特性之--Server Result Cache

Oracle 11g新特性之--Server  Result Cache 一.Server Result Cache说明 Oracle官网的说明,参考: 7.6 Managing the Server and Client  Result Caches http://docs.oracle.com/cd/E11882_01/server.112/e16638/memory.htm#BGBCABED 1.1 概述 SQL 查询结果高速缓存可在数据库内存中对查询结果集和查询碎片启用显式高速缓存.存储

Oracle 11g新特性invisible index(不可见的索引)

如果一张表上有十几个索引,你有什么感受?显然会拖慢增.删.改的速度,不要指望开发人员能建好索引.我的处理方法是先监控很长的一段时间,看哪些索引没有用到,然后删除.但删除以后,如果发现某一天有用,那又要重新建,如果是大表,那就有些麻烦.现在11g提供一个新特性,不可见索引,可以建索引设置为不可见索引,CBO在评估执行计划的时候会忽略它,如果需要的时候,设置回来即可. 还有一种用途,你在调试一条SQL语句,要建一个索引测试,而你不想影响其他的会话,用不可见索引正是时候. SQL> drop tabl

Oracle 11g新特性direct path read引发的系统停运故障诊断处理

黎俊杰 | 2016-07-28 14:37 声明:部分表名为了脱敏而用XX代替 1.故障现象 (1)一个业务系统输入用户名与密码后无法进入首页,表现为一直在运行等待,运行缓慢 (2)整个系统无法正常使用,接近停运状态 2.故障解决方法 调整数据库参数alter system setevent='10949 trace name context forever, level 1'来关闭"direct path read"(直接路径读)特性,使SQL语句可以从缓存中查询数据,达到降低I/

Oracle 11g 新特性(一)-- 虚拟列

数据库版本: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Oracle11g 增加了虚拟列的新特性, 具体说明如下: 1> 只能在堆组织表(普通表)上创建虚拟列,不能在索引组织表.外部表.临时表上创建虚拟列 2> 虚拟列不能是LOB或者RAW类型 3> 虚拟列的值并不是真实存在的,只有用到时,才根据表达式计算出虚拟列的值,磁盘上并不存放 4> 可把虚拟列当做分区关键字建立分区表,这是ORACLE

Oracle 11g 新特性:自动创建分区(Interval Partition)

分区(Partition)一直是Oracle数据库引以为傲的一项技术,正是分区的存在让Oracle高效的处理海量数据成为可能,在Oracle 11g中,分区技术在易用性和可扩展性上再次得到了增强.在10g的Oracle版本中,要对分区表做调整,尤其是对RANGE分区添加新的分区都需要DBA手动定期添加,或都使用存储过程进行管理.在11G的版本中的Interval Partition不再需要DBA去干预新分区的添加,Oracle会自动去执行这样的操作,减少了DBA的工作量.Interval Par