当前位置:  数据库>oracle

Oracle 11g新特性系统分区表

    来源: 互联网  发布时间:2017-06-11

    本文导语: 在Oracle 11g中有个新特性是系统的分区表,下面来做个实验: SQL> select * from v$version;BANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionPL/SQL Release 11.2.0.1.0 - P...

在Oracle 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.分区就是把很多的表粘在一起管理。那系统分区表只有第二个特性。

在CentOS 6.4下安装Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虚拟机中安装步骤

Debian 下 安装 Oracle 11g XE R2

Oracle性能优化 之 共享池


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle 12c的九大最新技术特性介绍
  • 也谈Oracle 数据库的绑定变量特性及应用
  • Oracle 11g 新特性 Flashback Data Archive 使用实例
  • Oracle9i 动态SGA,PGA特性探索
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • 编程语言 iis7站长之家
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • ORACLE中DBMS_RANDOM随机数生成包
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,