文档章节

oracle11g分区中的两大陷阱

strict_nerd
 strict_nerd
发布于 05/17 21:39
字数 876
阅读 5
收藏 0

如何使用Oracle分区功能?

1.个别场景不能从根本上提高查询速度

在Oracle10g时不支持自动生成分区,技术人员都是手动创建一年或者半年的分区或者当超过限制时把数据都load到最大值分区,但是一年半年过后要么出现数据无法插入或者某个分区数据剧增,这个时候出现了Oracle11g的自动分区功能,但是自动分区名称不能人为设置。如果说数据量过大或者出现跨分区查询会出现性能问题。

举个栗子:线上有一个日志储存系统,每天大概存储1000W左右的数据,支持分页排序并且按照日期查询功能(如果不排序,这个数据量对于Oracle是小ks)于是我们采用了分区+覆盖索引(如果想进一步了解.....)查询的的功能,性能稍微提升。但是一段时间后发现还是拖死系统。(因为这就是CAP问题,想从根本上解决问题,请建议公司采用nosql(habase、ELK)实现)。

如果有这样一种这样场景,工资小于等于5000,大于5000并且小于等于12000,大于12000并且小于25000,大于等于25000分别按照这些工资级别创建分区则非常高效,因为可以指定分区进行查询(select * from TBL_OPR_CNT partition(5000_part);),因为指定分区查询,效率直接提升。

由此得知,关系数据库效率高低,在于我们如何发挥它的长处。

2. 手动对表进行move操作,或者删除表分区会导致索引失效

在实际线上环境,常常当发现性能出现问题时,这个时候才采取分区的解决方案,但是分区表一般都是全局索引,然后直接在原表采取分区功能,用了一段时间产生了历史分区数据,然后删除了其中一部分历史分区,发现数据无法插入了。如下错误:

jdbc.exception.UncategorizedSQLException: uncategorized SQLException for SQL [insert into AUDITS(C_ID,N_PERSON_ID,C_NAME,C_CODE,C_DEPT,N_LOG_TIME,C_LOG_TYPE,C_CONTENT,C_RESULT,C_SN,N_DEPT_ID) values(?,?,?,?,?,?,?,?,?,?,?)]; SQL state [72000]; error code [1502]; ORA-01502: index 'AUDITS_PK' or partition of such index is in unusable state
; caused by: ORA-01502: index 'AUDITS_PK' or partition of such index is in unusable state

采取如下方法重建索引解决处理。

select index_name,index_type,tablespace_name,table_type,status from user_indexes where index_name='AUDITS_PK';

alter session set skip_unusable_indexes=false;

alter index AUDITS_PK rebuild;
commit;

3.其出现这个问题的根本原因和解决方法是什么呢?

移动或者删除表空间或者分区后,基于该table的索引会自动失效UNUSABLE;此时访问或操作该table时,会报ORA-01502异常;无论唯一还是普通索引都要通过重建解决。

解决方法:在使用表分区时尽量创建本地索引.( 例如: create index AUDITS_PK on AUDITS(id) local;--因为id是分区键,所以这样就创建了一个有前缀的本地索引) 这样在删除分区后则索引不会出现失效问题。

© 著作权归作者所有

strict_nerd
粉丝 11
博文 53
码字总数 27387
作品 0
郑州
程序员
私信 提问
CentOS6.7系统下安装配置Oracle11G R2

一、安装Oracle 11G前环境搭建 本次实验是基于Linux(CentOS6.7_64)下搭建oracle 11g环境,这里选择CentOS安装oracle并不是最佳选择,可以根据需要选择不同的Linux发行版,如Oracle Linux、...

HMLinux
2016/10/16
0
0
oracle11g静默安装grid,database,asm,dbca

安装asm磁盘自动管理,需要先安装grid和database 再插入多个磁盘进行设置分配asm组,最后在安装数据库dbca 1 静默安装grid 1.1 解压p10404530112030Linux-x86-64_3of7.zip 生成grid目录 1.2 ...

胡子叭槎
2017/01/22
0
0
oracle11g安装过程提示swap size 检查失败问题

#time 2016/12/6 00:43 #@auth liu 场景描述:我在自己电脑的虚拟机上linux环境下安装oracle11g数据库。 Linux版本为:CentOS release 6.8 (Final),Oracle版本为:linux.x64_11gR2 问题描述...

SHUIMOMO
2017/11/08
0
0
oracle 11g的interval partition 如何按天\周\月\年分区

转自: https://blog.csdn.net/sdtysdu2000/article/details/9066413 ORACLE11g的表分区功能中可以建立新类型的Interval分区表,它可以根据加载数据,自动创建指定间隔的分区,也就是说建立了...

JUN_LJ
2018/07/23
0
0
Oracle 11g R2 For Linux发布

Oracle Database(数据库) 11g 中许多新的更改确保(Oracle 称之为“真正应用测试”)特性使这个梦想更加接近现实。日前,Oracle发布Oracle Database 11g Release 2 For Linux版本。例如,数...

红薯
2009/09/02
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

硬件配置

https://akkadia.org/drepper/futex.pdf sudo lshw -businfo[sudo] lambda 的密码: Bus info Device Class Description======================================......

MtrS
54分钟前
2
0
springmvc的return “success”源码解读

qqqq

architect刘源源
今天
4
0
Java程序员五面阿里分享 逆袭成功 太不容易了!

前言 拿到阿里实习offer,经历了5次面试,其中4轮技术面,1轮HR面试。在这里分享一下自己的面试经验和学习心得。希望能够帮助更多的小伙伴。 我本科毕业于中南大学信管专业,真正开始学习Jav...

别打我会飞
昨天
4
0
Android Camera模块解析之视频录制

《Android Camera架构》 《Android Camera进程间通信类总结》 《Android Camera模块解析之拍照》 《Android Camera模块解析之视频录制》 《Android Camera原理之CameraDeviceCallbacks回调模...

天王盖地虎626
昨天
2
0
手把手教你使用issue作为博客评论系统

自从上周在阮一峰的 每周分享第 60 期 看到了可以将 GitHub 的 issue 当作评论系统,插入第三方网页的 JS 库——utterances。我就对此“魂牵梦绕”。个人博客使用的是VuePress。 TLDR (不多废...

jump--jump
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部