环境:oracle 12.2.0.1

注:未确定10g,11g是否有这些特性。现在基本不用10g,主要用12c,11g。

毫无疑问,这种 特性对于dba或者实施人员而言显得很重要,尤其当你的数据库主要用于olap或者dw(数据仓库)环境的时候。

很多时候,如果需要在一个巨大的表上创建新的索引,例如这个表示一个基站性能数据,可能整张表有3-5亿条。

如果按照以往的操作,明显是非常可怕的事情:

  • 消耗巨量的时间
  • 不一定成功
  • 可能影响业务的进行

然后,有了局部本地分区索引就不一样了。

以下就是本人的试验!

 create table t_tab_columns(
owner varchar2(128) NOT NULL,
table_name varchar2(128) NOT NULL,
column_name varchar2(128) NOT NULL,
data_type varchar2(128),
data_type_mod varchar2(3),
data_type_owner varchar2(128),
data_length number,
data_precision number,
data_scale number,
nullable varchar2(1),
column_id number,
default_length number,
num_distinct number,
collation varchar2(100)
)
partition by list(owner)
(
partition p_sys values ('SYS','SYSTEM') ,
partition p_sys_other values('MDSYS','CTXSYS','DVSYS','WMSYS','LBACSYS') indexing off,
partition p_USERS values ('LZF','EMCUSER')
); ---
INSERT INTO t_tab_columns
select
owner,
table_name,
column_name,
data_type,
data_type_mod,
data_type_owner,
data_length,
data_precision,
data_scale,
nullable,
column_id,
default_length,
num_distinct,
collation
from dba_tab_columns
WHERE OWNER IN ('SYS','SYSTEM','MDSYS','CTXSYS','DVSYS','WMSYS','LBACSYS','LZF','EMCUSER');
commit;
---2.1创建索引
create index idx_Tab_columns_colname on t_tab_columns(column_name) local indexing partial
--验证
select segment_name,partition_name from user_segments where segment_name='IDX_TAB_COLUMNS_COLNAME';
SEGMENT_NAME PARTITION_NAME
IDX_TAB_COLUMNS_COLNAME P_SYS
IDX_TAB_COLUMNS_COLNAME P_USERS
--**** 证明:有起到作用
--2.2 创建索引而不带 indexing partial
create index idx_Tab_columns_dt on t_tab_columns(data_type) local ;
--验证
select segment_name,partition_name from user_segments where segment_name='IDX_TAB_COLUMNS_DT';
SEGMENT_NAME PARTITION_NAME
IDX_TAB_COLUMNS_DT P_SYS
IDX_TAB_COLUMNS_DT P_SYS_OTHER
IDX_TAB_COLUMNS_DT P_USERS
--**** 证明:是否创建索引完全取决于 indexing partial 字句。
--2.3 如果把本来可以索引的,调整为不可索引,会如何了?
alter table t_tab_columns modify partition p_users indexing off;
--验证
select segment_name,partition_name from user_segments where segment_name='IDX_TAB_COLUMNS_COLNAME';
SEGMENT_NAME PARTITION_NAME
IDX_TAB_COLUMNS_COLNAME P_SYS select segment_name,partition_name from user_segments where segment_name='IDX_TAB_COLUMNS_DT';
SEGMENT_NAME PARTITION_NAME
IDX_TAB_COLUMNS_DT P_SYS
IDX_TAB_COLUMNS_DT P_SYS_OTHER
IDX_TAB_COLUMNS_DT P_USERS
--**** 证明:只影响采用了 indexing partial的索引,会删除对应分区的索引。 --2.4 如果把本来不可以索引的,调整为可索引,会如何了?
alter table t_tab_columns modify partition p_users indexing on;
--验证
select segment_name,partition_name from user_segments where segment_name='IDX_TAB_COLUMNS_COLNAME';
SEGMENT_NAME PARTITION_NAME
IDX_TAB_COLUMNS_COLNAME P_SYS
IDX_TAB_COLUMNS_COLNAME P_USERS
select segment_name,partition_name from user_segments where segment_name='IDX_TAB_COLUMNS_DT';
结果略。
--**** 证明:修改表分区的indexing属性,只影响采用了 indexing partial的索引,会重建对应分区的索引。

通过修改所有分区的indexing 属性(为off),然后创建indexing partial对的本地索引,最后通过一个定时任务把对应分区修改为indexing on,就可以逐步创建每个分区的索引。

oracle的局部本地分区索引的更多相关文章

  1. Oracle非分区索引,全局分区索引和本地分区索引。

    1.如果按照索引是否分区作为划分依据,Oracle 的索引类型可以分为非分区索引,全局分区索引和本地分区索引. 2.创建演示实例 --创建非分区表create table test_partition ...

  2. [Oracle]分区索引

    上一节学习了分区表,接着学习分区索引. (一)什么时候对索引进行分区 · 为了避免移动数据时重建整个索引,可对索引分区,在重建索引时,只需重建与数据分区相关的索引: · 在对分区表进行维护时,为了避免 ...

  3. PLSQL_Oracle分区表和相应的分区索引管理和使用(案例)

    2014-08-22 Created By BaoXinjian

  4. Oracle 学习总结 - 表和索引的性能优化

    表的性能 表的性能取决于创建表之前所应用的数据库特性,数据库->表空间->表,创建数据库时确保为每个用户创建一个默认的永久表空间和临时表空间并使用本地管理,创建表空间设为本地管理并且自动段 ...

  5. Atitit.分区对索引的影响 分区索引和全局索引 attilax总结

    Atitit.分区对索引的影响 分区索引和全局索引 attilax总结 1. 分区的好处1 2. 分区键:2 3. 分区的建议:2 4. 分区索引和全局索引:2 5. 全局索引就是在全表上创建索引, ...

  6. 深入学习Oracle分区表及分区索引

    关于分区表和分区索引(About Partitioned Tables and Indexes)对于10gR2而言,基本上可以分成几类: •       Range(范围)分区 •       Has ...

  7. Oracle分区索引

    索引与表类似,也可以分区: 分区索引分为两类: Locally partitioned index(局部分区索引) Globally partitioned index(全局分区索引) 下面就来详细解 ...

  8. 转:深入学习Oracle分区表及分区索引

    转自:http://database.ctocio.com.cn/tips/286/8104286.shtml 关于分区表和分区索引(About Partitioned Tables and Inde ...

  9. oracle 分区和分区索引

    一.个人理解:建表时一般都会指定在一个表空间上,但是可能随着表空间扩大,查询越来越慢,分区表就是将一个表实际存在不同的表空间,oracle存储分为块,断,表空间.新建一个表,会给表分配指定大小的段,段 ...

随机推荐

  1. springboot 整合kafka

    本文介绍如何在springboot项目中集成kafka收发message. 1.先解决依赖 springboot相关的依赖我们就不提了,和kafka相关的只依赖一个spring-kafka集成包 &l ...

  2. C#+ObjectArx CAD二次开发(2)

    前面开了一个头,这里添加几个功能的实现, //添加图层 private void LoadLayer() { Document acDoc = Application.DocumentManager. ...

  3. Html5的map在实际使用中遇到的问题及解决方案

    前言:百度了一下html map,嗯嗯,介绍的挺详细的,如果是初学者,直接看他们的教程,挺好的,就不用我再多说了. 不过我发现一个问题,就是都是介绍map有什么属性怎么用的,这明显就是照搬文档自己再改 ...

  4. Sharepoint 2013企业内容管理学习笔记(一) 半自动化内容管理

    大家好,今天我来与大家分享一个关于sharepoint2013文档管理方面的一个知识,我相信也许早就有人了解并熟知这项技术了,呵呵,众所周知,sharepoint 有一个很亮的功能,什么?没错,就是文 ...

  5. JS高级程序设计第三版——在HTML中使用JavaScript

    使用<script>元素的方式 外部引用式.行内式.嵌入式. JavaScript引用放在<body>后面的原因 假如在文档的<head>元素中包含所有JavaSc ...

  6. python随机生成手机号码

    一句话生成电话号码random.choice(['139','188','185','136','158','151'])+"".join(random.choice(" ...

  7. Android学习——ViewPager的使用(二)

    这一节介绍使用FragmentPagerAdapter适配器,来加载Fragment对象. 数据源 加载Fragment对象时,数据源自然来自Fragment,与View类似,依旧使用List来存放数 ...

  8. SQL Server ->> 生成时间类型的Partition Function和Partition Scheme代码

    有时工作中要建个分区函数,可是像日期这种分区函数要是搞个几百个的值那不是要搞死我.于是写了点代码自动生成一个从1990年开始的按月的分区函数和对应的分区主题 USE [TestDB] GO DECLA ...

  9. 限定filesize的数据泵导入导出操作案例

    使用如下方法导入导出expdp sh/sh dumpfile=ycr_%U.dump directory=exp filesize=2mimpdp sh/sh dumpfile=ycr_%U.dump ...

  10. May 19th 2017 Week 20th Friday

    Good luck is another name for tenacity of purpose. 好运不过是坚持不懈的结果. To some extent, I don't agree with ...