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)

相关推荐

  • Oracle 12c R2版本 Application Containers的特性是什么

    技术Oracle 12c R2版本 Application Containers的特性是什么本篇文章给大家分享的是有关Oracle 12c R2版本 Application Containers的特性是什么,小编觉得挺实

    攻略 2021年11月12日
  • 渗的组词,2021年琥珀课文的生字组词

    技术渗的组词,2021年琥珀课文的生字组词2021年《琥珀》课文的生字组词渗的组词:怒(nù),怒火、怒吼、怒骂、怒斥、发怒、怒气冲冲、怒发冲冠、怒目而视。吼(hǒu),吼叫、怒吼、一声吼。
    脂(zhī),油脂、胭脂、脂

    生活 2021年10月24日
  • 合羽欠,《伤寒论》中的发热是发烧吗

    技术合羽欠,《伤寒论》中的发热是发烧吗《伤寒论》中的发热合羽欠,并不完全等同于现代说的发烧。现代的发热具体我们首先来看看什么是现代的发烧:发烧,也称发热,是指致热原直接作用于体温调节中枢、体温中枢功能紊乱或各种原因引起的

    生活 2021年10月21日
  • cad图制作,怎么把cad的图弄成效果图

    技术cad图制作,怎么把cad的图弄成效果图把cad的图弄成效果图步骤如下cad图制作: 1、首先我们先在电脑端下载安装相应的CAD编辑器软件。
    2、打开运行CAD软件,点击“文件-打开”按钮,选择好我们需要处理的CA

    生活 2021年10月27日
  • 数据库中关联子查询和非关联子查询有什么区别

    技术数据库中关联子查询和非关联子查询有什么区别本篇内容主要讲解“数据库中关联子查询和非关联子查询有什么区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“数据库中关联子查询和非

    攻略 2021年11月9日
  • ARCHIVELOG如何统计归档日志更准确

    技术ARCHIVELOG如何统计归档日志更准确小编给大家分享一下ARCHIVELOG如何统计归档日志更准确,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了

    攻略 2021年12月10日