oracle 全局变量分区表的本地索引和全局索引有何不同

创建与管理Oracle分区表和本地索引的实例解析
创建与管理Oracle分区表和本地索引的实例解析
  创建与管理Oracle分区表和本地索引的相关知识是本文我们主要要介绍的内容,我们知道,Oracle的分区技术在某些条件下可以极大的提高查询的性能,所以被广泛采用。从产品上说,分区技术是Oracle企业版中独立收费的一个组件。以下是对于分区及本地索引的一个示例。
  首先根据字典表创建一个测试分区表:
  SQL&&connect&eygle/eygle& &  Connected.& &  SQL&&CREATE&TABLE&dbobjs& &  2&(OBJECT_ID&NUMBER&NOT&NULL,& &  3&OBJECT_NAME&varchar2(128),& &  4&CREATED&DATE&NOT&NULL& &  5&)& &  6&PARTITION&BY&RANGE&(CREATED)& &  7&(PARTITION&dbobjs_06&VALUES&LESS&THAN&(TO_DATE('01/01/2007',&'DD/MM/YYYY')),& &  8&PARTITION&dbobjs_07&VALUES&LESS&THAN&(TO_DATE('01/01/2008',&'DD/MM/YYYY')));& &  Table&created.& &  SQL&&COL&segment_name&for&a20& &  SQL&&COL&PARTITION_NAME&for&a20& &  SQL&&SELECT&segment_name,&partition_name,&tablespace_name& &  2&FROM&dba_segments& &  3&WHERE&segment_name&=&'DBOBJS';& &  SEGMENT_NAME&PARTITION_NAME&TABLESPACE_NAME& &  --------------------&--------------------&------------------------------& &  DBOBJS&DBOBJS_06&EYGLE& &  DBOBJS&DBOBJS_07&EYGLE&
  创建一个Local索引,注意这里可以将不同分区的索引指定创建到不同的表空间:
  SQL&&CREATE&INDEX&dbobjs_idx&ON&dbobjs&(created)&LOCAL& &  2&(PARTITION&dbobjs_06&TABLESPACE&users,& &  3&PARTITION&dbobjs_07&TABLESPACE&users& &  4&);& &  Index&created.&
  这个子句可以进一步调整为类似:
  CREATE&INDEX&dbobjs_idx&ON&dbobjs&(created)&LOCAL& &  (PARTITION&dbobjs_06&TABLESPACE&users,& &  PARTITION&dbobjs_07&TABLESPACE&users& &  )&TABLESPACE&&
  通过统一的tablespace子句为索引指定表空间。
  SQL&&COL&segment_name&for&a20& &  SQL&&COL&PARTITION_NAME&for&a20& &  SQL&&SELECT&segment_name,&partition_name,&tablespace_name& &  2&FROM&dba_segments& &  3&WHERE&segment_name&=&'DBOBJS_IDX';& &  SEGMENT_NAME&PARTITION_NAME&TABLESPACE_NAME& &  --------------------&--------------------&------------------------------& &  DBOBJS_IDX&DBOBJS_06&USERS& &  DBOBJS_IDX&DBOBJS_07&USERS& &  SQL&&insert&into&dbobjs& &  2&select&object_id,object_name,created& &  3&from&dba_objects&where&created& &  6227&rows&created.& &  SQL&&& &  Commit&complete.& &  SQL&&select&count(*)&from&dbobjs&partition&(DBOBJS_06);& &  COUNT(*)& &  ----------& &  6154& &  SQL&&select&count(*)&from&dbobjs&partition&(dbobjs_07);& &  COUNT(*)& &  ----------& &  73&
  我们可以通过查询来对比一下分区表和非分区表的查询性能差异:
  SQL&&set&autotrace&on& &  SQL&&select&count(*)&from&dbobjs&where&created&&to_date('01/01/2008','dd/mm/yyyy');& &  COUNT(*)& &  ----------& &  6227& &  Execution&Plan& &  ----------------------------------------------------------& &  0&SELECT&STATEMENT&ptimizer=CHOOSE&(Cost=1Card=1Bytes=9)& &  1&0&SORT&(AGGREGATE)& &  2&1&PARTITION&RANGE&(ALL)& &  3&2&INDEX&(RANGE&SCAN)&OF&'DBOBJS_IDX'&(NON-UNIQUE)&(Cost=2Card=8Bytes=72)& &  Statistics& &  ----------------------------------------------------------& &  0&recursive&calls& &  0&db&block&gets& &  25&consistent&gets& &  0&physical&reads& &  0&redo&size& &  380&bytes&sent&via&SQL*Net&to&client& &  503&bytes&received&via&SQL*Net&from&client& &  2&SQL*Net&roundtrips&to/from&client& &  0&sorts&(memory)& &  0&sorts&(disk)& &  1&rows&processed& &  SQL&&select&count(*)&from&dbobjs&where&created&&to_date('01/01/2007','dd/mm/yyyy');& &  COUNT(*)& &  ----------& &  6154& &  Execution&Plan& &  ----------------------------------------------------------& &  0&SELECT&STATEMENT&ptimizer=CHOOSE&(Cost=1Card=1Bytes=9)& &  1&0&SORT&(AGGREGATE)& &  2&1&INDEX&(RANGE&SCAN)&OF&'DBOBJS_IDX'&(NON-UNIQUE)&(Cost=2Card=4Bytes=36)& &  Statistics& &  ----------------------------------------------------------& &  0&recursive&calls& &  0&db&block&gets& &  24&consistent&gets& &  0&physical&reads& &  0&redo&size& &  380&bytes&sent&via&SQL*Net&to&client& &  503&bytes&received&via&SQL*Net&from&client& &  2&SQL*Net&roundtrips&to/from&client& &  0&sorts&(memory)& &  0&sorts&(disk)& &  1&rows&processed& &  SQL&&select&count(distinct(object_name))&from&dbobjs&where&created&&to_date('01/01/2007','dd/mm/yyyy');& &  COUNT(DISTINCT(OBJECT_NAME))& &  ----------------------------& &  4753& &  Execution&Plan& &  ----------------------------------------------------------& &  0&SELECT&STATEMENT&ptimizer=CHOOSE&(Cost=1Card=1Bytes=75)& &  1&0&SORT&(GROUP&BY)& &  2&1&TABLE&ACCESS&(BY&LOCAL&INDEX&ROWID)&OF&'DBOBJS'&(Cost=1Card=4Bytes=300)& &  3&2&INDEX&(RANGE&SCAN)&OF&'DBOBJS_IDX'&(NON-UNIQUE)&(Cost=2Card=1)& &  Statistics& &  ----------------------------------------------------------& &  0&recursive&calls& &  0&db&block&gets& &  101&consistent&gets& &  0&physical&reads& &  0&redo&size& &  400&bytes&sent&via&SQL*Net&to&client& &  503&bytes&received&via&SQL*Net&from&client& &  2&SQL*Net&roundtrips&to/from&client& &  1&sorts&(memory)& &  0&sorts&(disk)& &  1&rows&processed&
  对于非分区表的测试:
  SQL&&CREATE&TABLE&dbobjs2& &  2&(object_id&NUMBER&NOT&NULL,& &  3&object_name&VARCHAR2(128),& &  4&created&DATE&NOT&NULL& &  5&);& &  Table&created.& &  SQL&&CREATE&INDEX&dbobjs_idx2&ON&dbobjs2&(created);& &  Index&created.& &  SQL&&insert&into&dbobjs2& &  2&select&object_id,object_name,created& &  3&from&dba_objects&where&created& &  6227&rows&created.& &  SQL&&& &  Commit&complete.& &  SQL&&select&count(distinct(object_name))&from&dbobjs2&where&created&&to_date('01/01/2007','dd/mm/yyyy');& &  COUNT(DISTINCT(OBJECT_NAME))& &  ----------------------------& &  4753& &  Execution&Plan& &  ----------------------------------------------------------& &  0&SELECT&STATEMENT&ptimizer=CHOOSE& &  1&0&SORT&(GROUP&BY)& &  2&1&TABLE&ACCESS&(BY&INDEX&ROWID)&OF&'DBOBJS2'& &  3&2&INDEX&(RANGE&SCAN)&OF&'DBOBJS_IDX2'&(NON-UNIQUE)& &  Statistics& &  ----------------------------------------------------------& &  0&recursive&calls& &  0&db&block&gets& &  2670&consistent&gets& &  0&physical&reads& &  1332&redo&size& &  400&bytes&sent&via&SQL*Net&to&client& &  503&bytes&received&via&SQL*Net&from&client& &  2&SQL*Net&roundtrips&to/from&client& &  1&sorts&(memory)& &  0&sorts&(disk)& &  1&rows&processed&
  当增加表分区时,LOCAL索引被自动维护:
  SQL&&ALTER&TABLE&dbobjs& &  2&ADD&PARTITION&dbobjs_08&VALUES&LESS&THAN&(TO_DATE('01/01/2009',&'DD/MM/YYYY'));& &  Table&altered.& &  SQL&&set&autotrace&off& &  SQL&&COL&segment_name&for&a20& &  SQL&&COL&PARTITION_NAME&for&a20& &  SQL&&SELECT&segment_name,&partition_name,&tablespace_name& &  2&FROM&dba_segments& &  3&WHERE&segment_name&=&'DBOBJS_IDX';& &  SEGMENT_NAME&PARTITION_NAME&TABLESPACE_NAME& &  --------------------&--------------------&------------------------------& &  DBOBJS_IDX&DBOBJS_06&USERS& &  DBOBJS_IDX&DBOBJS_07&USERS& &  DBOBJS_IDX&DBOBJS_08&EYGLE& &  SQL&&SELECT&segment_name,&partition_name,&tablespace_name& &  2&FROM&dba_segments& &  3&WHERE&segment_name&=&'DBOBJS';& &  SEGMENT_NAME&PARTITION_NAME&TABLESPACE_NAME& &  --------------------&--------------------&------------------------------& &  DBOBJS&DBOBJS_06&EYGLE& &  DBOBJS&DBOBJS_07&EYGLE& &  DBOBJS&DBOBJS_08&EYGLE&
  关于创建与管理Oracle分区表和本地索引的相关知识及实例就介绍到这里了,如果您想了解更多关于Oracle数据库的知识,可以看一下这里的文章:,希望本次的介绍能够对您有所收获!
H3C认证Java认证Oracle认证
基础英语软考英语项目管理英语职场英语
.NETPowerBuilderWeb开发游戏开发Perl
二级模拟试题一级模拟试题一级考试经验四级考试资料
港口与航道工程建设工程法规及相关知识建设工程经济考试大纲矿业工程市政公用工程通信与广电工程
操作系统汇编语言计算机系统结构人工智能数据库系统微机与接口
软件测试软件外包系统分析与建模敏捷开发
法律法规历年试题软考英语网络管理员系统架构设计师信息系统监理师
高级通信工程师考试大纲设备环境综合能力
路由技术网络存储无线网络网络设备
CPMP考试prince2认证项目范围管理项目配置管理项目管理案例项目经理项目干系人管理
Powerpoint教程WPS教程
电子政务客户关系管理首席信息官办公自动化大数据
职称考试题目
就业指导签约违约职业测评
招生信息考研政治
网络安全安全设置工具使用手机安全
3DMax教程Flash教程CorelDraw教程Director教程
Dreamwaver教程HTML教程网站策划网站运营Frontpage教程
生物识别传感器物联网传输层物联网前沿技术物联网案例分析
互联网电信IT业界IT生活
Java核心技术J2ME教程
Linux系统管理Linux编程Linux安全AIX教程
Windows系统管理Windows教程Windows网络管理Windows故障
组织运营财务资本
视频播放文件压缩杀毒软件输入法微博
数据库开发Sybase数据库Informix数据库
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&trackbacks-0
Created By BaoXinjian
1、分区表:
&&& 随着表的不断增大,对于新纪录的增加、查找、删除等(DML)的维护也更加困难。对于数据库中的超大型表,可通过把它的数据分成若干个小表,从而简化数据库的管理活动。对于每一个简化后的小表,我们称为一个单个的分区
&&& 对于分区的访问,我们不需要使用特殊的SQL查询语句或特定的DML语句,而且可以单独的操作单个分区,而不是整个表。同时可以将不同分区的数据放置到不同的表空间,比如将不同年份的销售数据,存放在不同的表空间,即年的销售数据存放到TBS_年的销售数据存放到TBS_2002,依次类推,从而实现了分散存储,这将大大的简化大容量表的管理,提高查询性能及I/O并发等。
&&& 对于外部应用程序来说,虽然存在不同的分区,且数据位于不同的表空间,但逻辑上仍然是一张表
&&& 可以使用SQL*Loader,IMPDP,EXPDP,Import,Export等工具来装载或卸载分区表中的数据
&&& 关于分区表的功能实际上同SQL server 中的分区表是同样的概念,只不过SQL server中的数据存放到了文件组,相当于Oracle概念中的表空间
&&& 分区信息管控表:DBA_TAB_SUBPARTITIONS
2、何时分区
&&& 当表达到GB大小且继续增长
&&& 需要将历史数据和当前的数据分开单独处理,比如历史数据仅仅需要只读,而当前数据则实现DML
3、分区的条件及特性
共性:不同的分区之间必须有相同的逻辑属性,比如表名,列名,数据类型,约束等,
个性:各个分区可以有不同的物理属性,比如pctfree, pctused, and tablespaces.
分区独立性:即使某些分区不可用,其他分区仍然可用。
特殊性:含有LONG、LONGRAW数据类型的表不能进行分区
4、分区的优点
提高查询性能:只需要搜索特定分区,而非整张表,提高查询速度
节约维护时间:单个分区的数据装载,索引重建,备份,维护等将远小于整张表的维护时间。
节约维护成本:可以单独备份和恢复每个分区
均衡I/O:将不同的分区映射到不同的磁盘以平衡I/O,提高并发
5、分区表类型
范围分区表
列表分区表
哈希分区表
组合分区表
6、 分区索引类型
全局分区索引
本地分区索引
7、 分区表建立四种方式语法
(1)、范围分区表
CREATE TABLE range_example
range_key_column
VARCHAR2 (20),
PARTITION BY RANGE (range_key_column)
(PARTITION part01
VALUES LESS THAN
(TO_DATE (' 00:00:00', 'yyyy-mm-dd hh24:mi:ss'))
TABLESPACE tbs01,
PARTITION part02
VALUES LESS THAN
(TO_DATE (' 00:00:00', 'yyyy-mm-dd hh24:mi:ss'))
TABLESPACE tbs02,
PARTITION part03
VALUES LESS THAN
(TO_DATE (' 00:00:00', 'yyyy-mm-dd hh24:mi:ss'))
TABLESPACE tbs03);
(2)、列表分区表
CREATE TABLE list_example (dname VARCHAR2 (10), DATA VARCHAR2 (20))
PARTITION BY LIST (dname)
(PARTITION part01
VALUES ('ME', 'PE', 'QC', 'RD'),
PARTITION part02
VALUES ('SMT', 'SALE'));
(3)、哈希分区表
CREATE TABLE hash_example
hash_key_column
VARCHAR2 (20)
PARTITION BY HASH (hash_key_cloumn)
(PARTITION part01, PARTITION part02);
(4)、组合分区表
CREATE TABLE range_hash_example
range_column_key
hash_column_key
VARCHAR2 (20)
PARTITION BY RANGE (range_column_key)
SUBPARTITION BY HASH (hash_column_key)
SUBPARTITIONS 2
(PARTITION part_1
VALUES LESS THAN (TO_DATE ('', 'yyyy-mm-dd')) (
SUBPARTITION part_1_sub_1 ,
SUBPARTITION part_1_sub_2 ,
SUBPARTITION part_1_sub_3
PARTITION part_2
VALUES LESS THAN (TO_DATE ('', 'yyyy-mm-dd'))
(SUBPARTITION part_2_sub_1 , SUBPARTITION part_2_sub_2 ));
8、 分区索引的结构图
注:hash partitioned table 新增partition时,现有表的中所有data都有重新计算hash值,然后重新分配到分区中。所以被重新分配的分区的 indexes需要rebuild 。
二、案例 - 创建分区表
案例: 创建分区表bxj_emp,以性别区分数据分区方式,将资料分别存放两个男女表空间中
1. 创建两个表空空间
CREATE TABLESPACE bxj_emp_ts1
DATAFILE '/opt/oracle/oradata/gavinsit/bxj_emp_data01.dbf'
AUTOEXTEND ON
NEXT 32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL
CREATE TABLESPACE bxj_emp_ts2
DATAFILE '/opt/oracle/oradata/gavinsit/bxj_emp_data02.dbf'
AUTOEXTEND ON
NEXT 32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL
2. 创建分区表,以sex栏位区分
CREATE TABLE bxj_emp_tb
employeee_name
VARCHAR (50),
VARCHAR (10),
PARTITION BY LIST (sex)
(PARTITION bxj_emp_ts1
VALUES ('male'),
PARTITION bxj_emp_ts2
VALUES ('female'));
3. 建立测试资料,男女各一笔
insert into apps.bxj_emp_tb values (1, 'gavin.bao', 'male', 100000);
insert into apps.bxj_emp_tb values (2, 'gavin.bao', 'female', 200000);
4.& 以条件sex = male进行查询时,系统只遍历tablespace 1 male
5.& 以条件sex = female进行查询时,系统只遍历tablespace 1 female&
6.& 无分区条件查询,系统需全部遍历tablespace 1 and 2 / male and female
&三、 案例 - 本地分区索引
1. 创建本地分区索引
CREATE INDEX bxj_emp_tb_localindex ON apps.bxj_emp_tb(sex)
PARTITION idx_1 TABLESPACE bxj_emp_ts1,
PARTITION idx_2 TABLESPACE bxj_emp_ts2
2. 解析计划中索引遍历方式
四、案例 - 全局分区索引
1.& 创建全局分区索引
CREATE INDEX bxj_emp_tb_globalindexON bxj_emp_tb (salary)
GLOBAL PARTITION BY RANGE ( salary )
PARTITION idx_1 VALUES LESS THAN (10000)
TABLESPACE bxj_emp_ts1,
PARTITION idx_2 VALUES LESS THAN (MAXVALUE) TABLESPACE bxj_emp_ts2
2. 条件为salary &= 100, 索引只遍历tablespace1&
3. 条件为salary &=100000, 索引只遍历tablespace2
&4. 无分区条件时,索引遍历全部
五、案例 - Oracle Erp交易表mtl_material_transactions的结构
select * from dba_tab_subpartitions
where table_name = 'MTL_MATERIAL_TRANSACTIONS'
Thanks and Regards
参考:/Linux/63.htm
参考:http://mingyue./blog/static//
阅读(...) 评论()博客访问: 29872
博文数量: 13
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
发布时间: 23:18:55
1、演示环境:&SQL&&select&*&from&v$&BANNER----------------------------------------------------------------Oracle&Database&10g&Enterprise&Edition&Release&10.2.0.4.0&-&64biPL/SQL&Release&nb.........
阅读(2169) | 评论(0) | 转发(0)
发布时间: 10:53:43
&表格显示主机不同版本下DB2数据库的参数设置Parameter groupParameterAIX 5.3 default settingAIX 6.1 default settingDB2 best practiceComments& .........
阅读(1173) | 评论(0) | 转发(0)
发布时间: 14:07:58
在db2cmd CLP环境中使用db2ilist 查看有那些实例C:\Program Files (x86)\IBM\SQLLIB\BIN&db2ilistDB2INST2DB2INST1DB2AMLINST 使用修改当前实例的值 C:\&set db2instance=db2
查看注册参数有没.........
阅读(784) | 评论(0) | 转发(0)
发布时间: 22:10:47
Oracle Internal =========================================================== 作者: xsb(http://xsb.itpub.net)发表于: 13:42分类: Oracle 出处:http://xsb.itpub.net/post/419/53688-------------.........
阅读(481) | 评论(0) | 转发(0)
发布时间: 09:03:43
引用:/oracle/No1:选择合适的优化器No2:共享SQL为了不重复解析相同的SQL语句,在第一次解析之后, ORACLE将SQL语句存放在内存中.这块位于系统全局区域SGA(system global area)的共享池(sh.........
阅读(458) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
请登录后留言。博客访问: 7722996
博文数量: 2744
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Linux
Oracle的分区技术用来支持非常大的表和索引。利用分区可以将一张大的表分成多个小的,易于管理的分区。 查询语句和DML语句访问分区表时不需要进行任何的修改。然而DDL语句可以避免对整个表或索引进行操作,而直接针对单独的分区进行操作。分区使得数据库中包含海量数据的表或索引的可管理性增强,而且分区完全对应用程序透明。表或索引的分区具有相同的逻辑结果,而他们可以拥有各自的物理结构。分区适用于各种类型的应用程序:OLTP系统可以在可管理性和可用性方面得到提高;数据仓库系统可以从可管理性和性能方面获益。&分区表具有以下优点: 分区使得数据管理操作如数据装载、索引建立和重建、备份和恢复等在分区级别上完成,这比在表级完成操作要明显的节省时间; 分区可以提高性能,在很多情况下,查询可以通过扫描某个分区来完成,而不是去扫描整个表; 分区技术可以明显的降低因维护操作而计划停机带来的影响; 分区可以增加关键表的可用性; 分区的实施不需要修改现有任何的应用程序。 &分区键:分区表中的每条记录都唯一的属于一个分区,分区键就是确定一条记录属于哪个分区的一列或多个列。分区键可以由1~16列组成,可以包含空值,不能包含ROWID、LEVEL或MLSLABEL等伪列。&分区表的限制:最多可以包括64000个分区,不能包含LONG和LONG RAW字段。&索引组织表的分区限制:只支持范围和HASH分区;分区列必须是主键列的子集;第二索引(除主键外的索引)可以分区;OVERFLOW数据段采用和表保持等同分区(分区方式相同,分区的范围也相同,每个表分区都对应一个OVERFLOW分区)。&分区类型:范围分区、HASH分区、列表分区和复合分区。其中复合分区包含范围HASH分区和范围列表分区。&分区的建议:表的大小超过2G就可以考虑是否分区;包含历史数据的表。这种表一般采用时间字段的范围分区,新的数据总是装载到新的分区中。&分区索引包括两种:本地分区索引和全局分区索引。本地分区索引采用和表的等同分区,因此,在对分区进行操作时(如ADD PARTITION或DROP PARTITION等),Oracle会自动维护本地分区索引的正确性。全局分区索引可以采用和表不同的分区范围或分区方式。一般对分区执行了DDL操作后,全局索引都会处于INVALID状态,不过9i增加了新的语法,UPDATE GLOBAL INDEXES,使得DDL在操作分区数据的之后维护全局索引的正确性。&分区索引的特性:可以建立BITMAP分区索引,但是BITMAP索引必须是LOCAL的。全局索引可以唯一,而本地索引只有在分区键是索引的一部分的情况下,才能唯一。&OLTP系统中的分区索引:全局索引和唯一本地索引比非唯一本地索引具有更好的性能,因为他们只需要扫描特定的分区就可以了,而后者必须对所有分区进行扫描。当存在对表分区的维护操作时,本地索引提供更好的可用性。&数据仓库和DSS系统中的分区索引:更倾向于本地分区索引,因为本地分区索引在数据装载和分区维护操作中更易于管理。由于可以多个分区并行扫描,本地索引可以提高性能。&分区与性能提升:分区带来的性能提升来自三个方面:Partition Pruning:Oracle根据查询条件自动将扫描范围缩小到一个或几个表(索引)分区上。这种方式其实是分区扫描替代了全表扫描。Partition-Wise Join:如果连接查询的两张表都在连接列上进行分区,则Oracle会优化连接操作,将一个大的连接分成各个对应分区间的连接,而且这些分区连接操作还可以并行执行。并行DML:采用并行执行,可以使操作并行在各个分区上同时执行,从而提供执行效率。&&
阅读(3009) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。oracle的分区表、分区索引和全局索引部分总结
oracle的分区表、分区索引和全局索引部分总结:
http://space.itpub.net//viewspace-557476
找不到数据对应分区会报: ora-14400插入的分区关键字未映射到任何分区
分区索引与全局索引的性能对比例子,前两个是索引基础介绍:
1、如果使用全局索引,当对某一个分区进行ddl操作时,该索引就无效了,必须重建,这一点比较麻烦。
注意:这里的索引失效是很严重的完全失效
2、如果索引字段是分区键(主要是range),那么就用local的。
3、如果索引字段是id、电话号码等类型的,那么就用global的。
4、如果分区间的数据是相互独立的,即不会被同时访问,使用local index 更好些。相反如果数据跨越多个分区,可能local
index会更差些。
5、当分区中出现许多事务并且要保证所有分区中的数据记录的唯一性时采用全局索引。
/skyme/archive//1955212.html
/backup/761867.html
/thread-.html
http://www.itpub.net/forum.php?mod=viewthread&action=printable&tid=920774
oracle创建时间分区表:
/blog/1526682
Oracle 数据库分区表的创建和操作:
/fjfzhkb/archive//1031956.html
分区表执行计划:
/oracle/ocp/465.html
问:一表,以字段 a(时间字符字段)做分区字段,,则a 是不是就具有索引的功能了,还需要在这个字段上建索引吗
答:不具备。只能说可以partition prune
1)partition column is not indexed column
2)Whether to create index on partition key,depends on whether the
column meets the conditions of creating index.
虽然不具备,但是字符型对于like & = &都会range scan
分区修剪(Partition
pruning)指的是一种查询可以跳过一个或多个分区对应的数据文件不进行读取的技术。假如你能安排你的查询从查询计划中剪除大量的不必要的分区,查询使用更少的资源,因此与剪除的不必要的分区成比例的变快,并且更可扩展(If
you can arrange for queries to prune large numbers of unnecessary
partitions from the query execution plan, the queries use fewer
resources and are thus proportionally faster and more
scalable)。
例如,如果一个表使用 YEAR, MONTH, DAY 分区,这样如 WHERE year = 2013, WHERE year
& 2010, WHERE year BETWEEN 1995 AND 1998 等 WHERE 子句允许 Impala
除了指定范围的分区外,跳过所有其他分区的数据文件。同样的,WHERE year = 2013 AND month BETWEEN 1
AND 3 甚至可以剪除更多的分区,只读取一年中的一部分数据文件。
http://my.oschina.net/weiqingbin/blog?disp=2&p=2&catalog=423691
http://www.itpub.net/forum.php?mod=viewthread&tid=1342243&extra=&highlight=&page=1
为了更好的性能,一般都在分区列上建立局部索引;
问:对于海量数据的查询效率是一个很关键的问题,而分区可以提高查询效率。问题是
对于分区表,如果在select语句中不显式的指定去哪个分区查(如果指定的话也只能指定一个分区,如果多个分区的话还要union过,有点麻烦),但在where子句中有分区字段的between,in,=等语句(可能还有其他属性字段的限制),那么oracle执行该查询语句时暗地里会不会根据分区去查?
看了一些文档,好象都没明确说这件事,望有这方面经验的朋友指点,谢谢
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=927594
/liuweihua/archive//2484441.html
使用ORACLE在线重定义将普通表改为分区表,被转义的表必须有主键,转义的表不需要
.cn/4032.html
http://www.blogjava.net/willpower88/archive//111987.html
http://blog.csdn.net/lnwf5188588/article/details/8839337
http://blog.csdn.net/stevendbaguo/article/details/9849311
其中需要赋dbms_redefinition的执行权限给对应用户:
grant&execute&on&dbms_redefinition&to&dex&;
还可能需要建物化视图的权限;
所以最好用sys执行dbms_redefinition,对应用户执行常规sql
1、exec dbms_redefinition.start_redef_table('joinspider', 't_test',
't_temp');
只是将t_test表数据 同步到
t_temp,不变更任何索引信息;比如原来t_test有索引,t_temp无索引,这些都不会受任何影响;
2、exec dbms_redefinition.finish_redef_table('joinspider', 't_test',
't_temp');
交换两个表的信息,包括索引,分区信息等等;
3、失败了使用exec&
DBMS_REDEFINITION.abort_redef_table(‘joinspider’, 't_test',
't_temp')放弃在线重定义
--创建含on prebuilt table的物化视图和物化视图日志
--实现通过物化视图刷新当前表中数据进入中间表
SQL& EXEC DBMS_REDEFINITION.START_REDEF_TABLE(USER, 'TEST',
'TEST_PARTITION');
PL/SQL 过程已成功完成。
select owner,mview_name from user_
select log_owner,master,log_table from user_mview_是有数据的
--实现物化视图刷新在执行同步时操作过程中变化数据。
SQL& EXEC dbms_redefinition.sync_interim_table(user,
'TEST','TEST_PARTITION') ;
PL/SQL 过程已成功完成。
--锁定原表,防止表上的DML,物化视图执行刷新,完成刷新后,将删除物化视图和对应的日志。
SQL& EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE(USER, 'TEST',
'TEST_PARTITION');
PL/SQL 过程已成功完成。
finish后 上面两个查询无数据
FINISH_REDEF_TABLE最后一步,如果TEST有其他同义词引用,可以导致失败,提示
ORA-12093: 中间表 "USER"."TEST_PARTITION" 无效
ORA-06512: 在 "SYS.DBMS_REDEFINITION", line 78
ORA-06512: 在 "SYS.DBMS_REDEFINITION", line 1680
ORA-06512: 在 line 1
奇怪的是,表的信息已经交换?匪夷所思。。。待求证。
/html//155.html
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 oracle 全局变量 的文章

 

随机推荐