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)

相关推荐

  • 抖音请人刷粉,刷抖音粉丝网站最便宜?

    技术抖音请人刷粉,刷抖音粉丝网站最便宜?抖音便宜刷粉网站,刷抖音粉丝网站最便宜抖音刷粉丝的平台网站搜索应该也很多,价格差异也很大,原因主要是看做单的号的质量,有的机器刷单,有的是真人接单,有的是群派单,还有的是真机养的号

    测评 2021年10月19日
  • 如何解析PHP及配置文件

    技术如何解析PHP及配置文件这篇文章将为大家详细讲解有关如何解析PHP及配置文件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。PHP是什么PHP是Hypertext
    Pr

    攻略 2021年11月23日
  • 什么是php curl

    技术什么是php curl这篇文章主要讲解了“什么是php curl”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“什么是php curl”吧!

    攻略 2021年11月8日
  • 睡眠浅,入睡难,睡眠浅,如何改善

    技术睡眠浅,入睡难,睡眠浅,如何改善我听过一种说法,人之所以睡不着是因为大脑神经细胞异常兴奋活跃睡眠浅。这种说法是否有科学依据,也无从考证。不过,我比较认同这种说法。我曾经的经历也基本上和你类似,睡眠不好。有时整夜睡不着

    生活 2021年10月30日
  • 怎么理解Python报表和日志

    技术怎么理解Python报表和日志本篇内容主要讲解“怎么理解Python报表和日志”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解Python报表和日志”吧!导出Exc

    攻略 2021年11月2日
  • 【原创】C语言类型限定符-关键字

    技术【原创】C语言类型限定符-关键字 【原创】C语言类型限定符-关键字volatile 限定符告诉计算机,代理(而不是变量所在的程序)可以改变该变量的值。通常,它被用于硬件地址以及在其他程序或同时运行的

    礼包 2021年11月1日