Oracle Partition怎么使用

技术Oracle Partition怎么使用本篇内容主要讲解“Oracle Partition怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle Partit

本篇内容主要讲解"甲骨文分区怎么使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"甲骨文分区怎么使用"吧!

神谕分区索引类型

本地索引

A.本地前缀索引

可以理解为分区索引的第一个索引字段是分区表的分区键

B.本地无前缀索引

可以理解为分区索引的第一个索引字段不是分区表的分区键

全局前缀索引

a。范围类型分区

b。哈希类型分区

注意:这两种全球的索引分区类型与基表的分区类型没有关系。我们可以在非分区表上创建该索引

全局无前缀索引(目前神谕还不支持)

创建该索引时会提示ORA-14038:全局分区索引必须有前缀

注意:本地索引索引分区和基表分区是一一对应的

全球指数索引分区和基表分区是相互独立,不存在索引分区和表分区之间的一一对应关系

比如基表有5个分区,索引有2个分区

如何确定分区索引是全局/本地,前缀/非前缀

SQLselectindex_name,table_name,locality,alignmentfrodba _ part _ indexes其中owner=' OHSDBA

索引_名称表_名称本地对齐

-

IDX _全球_预执行系统_零件全球前缀

IDX _本地_非预执行系统_零件本地非预执行系统

如何选取分区索引类型

在决定使用哪种分区索引时,您应该考虑以下原则

如果表分区列是索引键的子集,则使用本地索引。如果是这样,那你就完了。如果不是这种情况,那么继续准则2。

如果索引是唯一的,并且不包括分区键列,则使用全局索引。如果是这样,那你就完了。否则,继续准则3。

如果你的首要任务是可管理性,那么考虑一个本地索引。如果是这样,那你就完了。如果不是这种情况,继续准则4。

If the application is an OLTP type and users need quick response  times, then use a global index. If the application is a DSS type and  users are more interested in throughput, then use a local index.

For more information about partitioned indexes and how to decide which type to use, refer to Using Partitioning in a Data Warehouse Environment and Using Partitioning in an Online Transaction Processing Environment.

以下的维护操作,易导致索引分区UNUSABLE
    1. IMPORT PARTITION or conventional path SQL*Loader.
    2. Direct-path SQL*Loader没有成功完成(local index partitions and global indexes)
    3. 维护操作类似ALTER TABLE MOVE PARTITION.   
    4. 维护操作类似ALTER TABLE TRUNCATE PARTITION.   
    5. 维护操作类似ALTER TABLE SPLIT PARTITION.   
    6. 维护操作类似ALTER INDEX SPLIT PARTITION.   
    7. 对Hash分区类型的表增加分区(分区中数据会变化)
   
如何避免索引UNUSABLE
为了防止分区维护的操作造成Index不可用,我们可以使用带'update global indexes'的语句,以下的操作支持UPDATE GLOBAL INDEXES:
    1. ADD PARTITION|SUBPARTITION (hash only)
    2. COALESCE PARTITION|SUBPARTITION
    3. DROP PARTITION
    4. EXCHANGE PARTITION|SUBPARTITIO
    5. MERGE PARTITION
    6. MOVE PARTITION|SUBPARTITION
    7. SPLIT PARTITION
    8. TRUNCATE PARTITION|SUBPARTITION

Update Global Indexes和Update Indexes的区别
Update Global Indexes只维护全局索引,Update Indexes会同时维护全局和本地索引。Update Global Indexes可以理解为是Update Indexes的子集。假定当前有一个表,在其上面创建了local和global partitioned index,我们把其中一个非空的分区做spilt/merge,如果只使用Update Global Indexes,那么Local Index会被标记成UNUSABLE。如果使用Update Indexes,则两者都有效。Oracle 9.2中可以使用'update global indexes',10g之后可以使用'update global indexes'/'update indexes'

测试可用脚本

create table ohs_part
(id number,
 pdate date)
partition by range(pdate)
(partition ohs_201701 values less than (to_date('2017-02-01','yyyy-mm-dd')),
 partition ohs_201702 values less than (to_date('2017-03-01','yyyy-mm-dd')),
 partition ohs_201703 values less than (to_date('2017-04-01','yyyy-mm-dd')),
 partition ohs_201704 values less than (to_date('2017-05-01','yyyy-mm-dd')),
 partition ohs_max values less than (maxvalue))
/
insert into ohs_part select 1, sysdate from dual;
insert into ohs_part select 2, sysdate from dual;
insert into ohs_part select 3, sysdate - 15 from dual;
insert into ohs_part select 4, sysdate - 15 from dual;
insert into ohs_part select 5, sysdate + 30 from dual;
insert into ohs_part select 6, sysdate + 30 from dual;
insert into ohs_part select 7, sysdate + 60 from dual;
insert into ohs_part select 8, sysdate + 60 from dual;
commit;
create index idx_local on ohs_part(pdate) local;
create index idx_normal on ohs_part(id);
create index idx_global on ohs_part(pdate,id) global;
SQL> create index idx_local on ohs_part(pdate) local; Index created.
SQL> create index idx_normal on ohs_part(id);
Index created.
SQL>
SQL> create index idx_global on ohs_part(pdate,id) global;
Index created.
SQL>
SQL> col index_name for a30
SQL> select index_name,partitioned,status from user_indexes where table_name='OHS_PART';
INDEX_NAME                     PARTITION STATUS
------------------------------ --------- ------------------------
IDX_GLOBAL                     NO        VALID
IDX_NORMAL                     NO        VALID
IDX_LOCAL                      YES       N/A
SQL> select index_name,status from user_ind_partitions where index_name='IDX_LOCAL';
INDEX_NAME                     STATUS
------------------------------ ------------------------
IDX_LOCAL                      USABLE
IDX_LOCAL                      USABLE
IDX_LOCAL                      USABLE
IDX_LOCAL                      USABLE
IDX_LOCAL                      USABLE
SQL>
SQL> col table_name for a20
SQL> select index_name,table_name,locality,alignment from dba_part_indexes where owner='OHSDBA';
INDEX_NAME           TABLE_NAME           LOCALITY           ALIGNMENT
-------------------- -------------------- ------------------ --------------------
IDX_LOCAL            OHS_PART             LOCAL              PREFIXED
SQL>
SQL> create index idx_local_non_prefixed on ohs_part(id,pdate) local;
Index created.
SQL>
SQL> select index_name,table_name,locality,alignment from dba_part_indexes where owner='OHSDBA';
INDEX_NAME                     TABLE_NAME           LOCALITY           ALIGNMENT
------------------------------ -------------------- ------------------ --------------------
IDX_LOCAL                      OHS_PART             LOCAL              PREFIXED
IDX_LOCAL_NON_PREFIXED         OHS_PART             LOCAL              NON_PREFIXED
SQL>
drop index idx_local;
CREATE INDEX idx_global_prefixed ON ohs_part(pdate)
GLOBAL PARTITION BY RANGE(pdate)
(partition ohs_ind_201701 values less than (to_date('2017-02-01','yyyy-mm-dd')),
 partition ohs_ind_201702 values less than (to_date('2017-03-01','yyyy-mm-dd')),
 partition ohs_ind_201703 values less than (to_date('2017-04-01','yyyy-mm-dd')),
 partition ohs_ind_201704 values less than (to_date('2017-05-01','yyyy-mm-dd')),
 partition ohs_ind__max values less than (maxvalue))
/
SQL> drop index idx_local;
Index dropped.
SQL> col index_name for a30
SQL> select index_name,table_name,locality,alignment from dba_part_indexes where owner='OHSDBA';
INDEX_NAME                     TABLE_NAME           LOCALITY           ALIGNMENT
------------------------------ -------------------- ------------------ --------------------
IDX_LOCAL_NON_PREFIXED         OHS_PART             LOCAL              NON_PREFIXED
SQL> CREATE INDEX idx_global_prefixed ON ohs_part(pdate)
  2  GLOBAL PARTITION BY RANGE(pdate)
  3  (partition ohs_ind_201701 values less than (to_date('2017-02-01','yyyy-mm-dd')),
  4   partition ohs_ind_201702 values less than (to_date('2017-03-01','yyyy-mm-dd')),
  5   partition ohs_ind_201703 values less than (to_date('2017-04-01','yyyy-mm-dd')),
  6   partition ohs_ind_201704 values less than (to_date('2017-05-01','yyyy-mm-dd')),
  7   partition ohs_ind__max values less than (maxvalue))
  8  /
Index created.
SQL> select index_name,table_name,locality,alignment from dba_part_indexes where owner='OHSDBA';
INDEX_NAME                     TABLE_NAME           LOCALITY           ALIGNMENT
------------------------------ -------------------- ------------------ --------------------
IDX_GLOBAL_PREFIXED            OHS_PART             GLOBAL             PREFIXED
IDX_LOCAL_NON_PREFIXED         OHS_PART             LOCAL              NON_PREFIXED
SQL>

到此,相信大家对“Oracle Partition怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/140990.html

(0)

相关推荐

  • java如何使用java swing(swing 怎么启动一个后台线程)

    技术如何解析Swing线程的内容这篇文章将为大家详细讲解有关如何解析Swing线程的内容,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一. 事件1.事件来源:本地系统,应

    攻略 2021年12月18日
  • WCF传byte[]的方法是什么

    技术WCF传byte[]的方法是什么这篇文章给大家介绍WCF传byte[]的方法是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。如果想让WCF传输byte[]数组,那么需要使用Mtom。bing

    攻略 2021年11月17日
  • pythondate函数用法(pythonannotate函数如何注释点)

    技术Python中missing()函数怎么使用这篇文章主要介绍“Python中missing()函数怎么使用”,在日常操作中,相信很多人在Python中missing()函数怎么使用问题上存在疑惑,小编查阅了各式资料,

    攻略 2021年12月23日
  • spark权威指南(大数据处理框架Apache Spark设计与实现)

    技术Apache Spark 3.0的重大功能有哪些这篇文章将为大家详细讲解有关Apache Spark 3.0的重大功能有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了

    攻略 2021年12月17日
  • Maven下载后配置

    技术Maven下载后配置 Maven下载后配置settings.xml配置文件路径
    如:E:\apache-maven-3.8.3\conf\settings.xml设置本地库路径Windows默认为C

    礼包 2021年11月13日
  • RAC安装时出现PRKC-1024错误怎么办

    技术RAC安装时出现PRKC-1024错误怎么办这篇文章给大家分享的是有关RAC安装时出现PRKC-1024错误怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Clusterware安装到

    攻略 2021年11月10日