Oracle11g
文章平均质量分 80
thy822
这个作者很懒,什么都没留下…
展开
-
oracle表分区详解(按天、按月、按年等)
分区表的概念: 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。分区表的优点:1) 改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。2)转载 2018-01-24 09:35:26 · 1412 阅读 · 0 评论 -
Oracle 10g数据表压缩的一些细节(上)
在Oracle 11g中,Advanced Compression是一个重要引入的新特性。Advanced Compression针对OLTP下的数据对象、Dataguard Redo Log等进行了较大程度的优化。在笔者之前的文章中,也针对此项特性进行了浅析。 目前,还有很多系统是运行在Oracle 10g乃至9i下,对这些系统而言,Oracle压缩有一些什么特性呢?本篇一起来探讨。 1、环境准...转载 2018-05-10 09:23:39 · 358 阅读 · 0 评论 -
聊聊Append、nologging和Redo Log
刚刚接触Oracle的时候,Append+Nologging可以减少Redo Size的说法在网络上讨论的很广。各种流言频出,混淆了很多人的概念体系。之后,一些牛人自此着手,澄清了很多的概念和观点。老实说:我们不是Oracle的设计者,也没有机会研读源代码。实验看看是一种最简单、也是最直接的验证手段。本篇就一起将archive log/noarchive log、append、nologging和...转载 2018-05-10 09:24:06 · 313 阅读 · 0 评论 -
Oracle索引合并coalesce操作
索引rebuild和rebuild online是运维环境中经常遇到的问题。但是无论哪种,大数据索引对象的rebuild都是消耗资源的大规模操作,都需要进行时间窗规划,避免对在线系统运行有影响。本篇主要介绍对索引的另一种精简操作方法:coalesce合并。从之前的讨论我们已经知道,索引结构一般是一个不断“退化”的平衡结构,如果有一个新值加入,就可能会伴随叶子节点拓展,甚至包括分支节点创建。而一个值...转载 2018-05-10 10:36:43 · 2392 阅读 · 0 评论 -
HWM的一点研究
今天一位同事发现11g环境中一张实验数据表筛选变得很慢,即使为空表。通过EM观察,发现指定sql语句等待时间和执行时间都很长(达到秒级)。 经过进一步询问,确定该表曾经进行批量数据DML操作,多次重复操作。而且数据表包括分区信息。所以初步认为是高水位线HWM过大引起的问题。 在Oracle中,数据表的存储结构是一种类似河道水位的结构。数据表段(segment)就在一系列不连续的区(extents)...转载 2018-05-10 16:17:54 · 439 阅读 · 0 评论 -
唯一性索引(Unique Index)与普通索引(Normal Index)差异(上)
索引是我们经常使用的一种数据库搜索优化手段。适当的业务操作场景使用适当的索引方案可以显著的提升系统整体性能和用户体验。在Oracle中,索引有包括很多类型。不同类型的索引适应不同的系统环境和访问场景。其中,唯一性索引Unique Index是我们经常使用到的一种。 唯一性索引unique index和一般索引normal index最大的差异就是在索引列上增加了一层唯一约束。添加唯一性索引的数据列...转载 2018-05-10 16:27:34 · 49007 阅读 · 5 评论 -
聊聊索引Index Rebuild和Rebuild Online(上)
在Oracle运维领域,两个围绕索引的概念一直在网络上被讨论,一个是Index定期重构的必要性,另一个对Rebuild和Rebuild Online的讨论。前者很多前辈在各种场合,包括Oracle MOS,都有了比较深刻的讨论。对后者的讨论主要是集中两个方面,即:ü 对于大数据、高可用性的系统,索引rebuild动作一定要慎用,最好选择在DML操作比较少的时间窗进行,避免影响业务系统;ü Re...转载 2018-05-11 09:40:05 · 568 阅读 · 0 评论 -
Oracle启动三阶段(一)
Oracle启动是可以分为三个阶段的,分别为:nomount、mount和open。在这三个阶段中,Oracle分别实现了不同的职责和目标,将数据库服务器相关的信息和数据进行加载。 下面就一起来看一下三个阶段的现象和作用。 基础知识——关于Oracle实例相关的三个组成 在谈到Oracle启动关闭的时候,我们需要提一下三个主要组件:Oracle监听器、Oracle实例和OEM管理工具。 在笔者...转载 2018-05-11 12:50:54 · 736 阅读 · 0 评论 -
Oracle 统计量NO_INVALIDATE参数配置(上)
Oracle统计量对于CBO执行是至关重要的。RBO是建立在数据结构的基础上的,DDL结构、约束会将SQL语句分为不同的成本结构等级。而CBO是在数据结构的基础上,加入数据表细粒度信息,将成本结构细化为成本cost值。相对于数据表的DDL结构,统计量反映了当下数据表数据分布情况,可变性更强。我们经常遇到这样的场景,数据导入操作之后,原有一个运行良好的作业突然效率低下。当我们手工收集一下统计转载 2018-05-08 15:27:10 · 955 阅读 · 0 评论 -
巧用函数索引解决数据倾斜列查询
首先声明:本方法是受到dbsnake的指导,再次感谢指点。 通常来说,索引选取的数据列最好为分散度高、选择性好。从索引树结构的角度看,列值都是分布在叶节点位置。这样,通过树结构搜索得到的叶节点数量效率比较高。 实际中,我们常常遇到数据列值倾斜的情况。就是说,整个列数据取值有限。但是大部分数据值都集中在少数一两个取值里,其他取值比例极少。比如:一个数据列值有“N”、“B”、“M”、“P”、“Q”几个...转载 2018-05-08 16:37:30 · 683 阅读 · 0 评论 -
从五个SQL看with as使用
SQL语句是关系型数据库最直接也是最普遍的数据访问、操作方式。应该说,RDBMS的成功因素之中,SQL语言标准的推广有不可磨灭的功劳。Oracle、SQL Server和DB2等主流数据库都是在标准SQL的基础上,加以个性化拓展,实现高效的数据库应用。with as是Oracle SQL语系里面经常使用到的一种语句结构。特别是在一些数据仓库挖掘系统中,SQL语句结构和嵌套结构是很复杂的。with ...转载 2018-05-08 17:16:24 · 3069 阅读 · 0 评论 -
聊聊分区Partition——我们为什么要分区(上)
一直想系统的聊聊分区。网络上Oracle技术中,讨论的最多的话题之一就是Partition。各种分区类型、分区组合和随之而来的各种优缺点,一直被大家讨论。但是,实际中,我们往往看到很多以偏概全、舍本逐末的分区使用现象。各种分区类型和创建语句,是很多文章探讨的中心。一些开发设计人员,甚至是DBA也感觉分区成了大表的万灵药。笔者这个系列文章不想讨论各种语法和分区使用,而是集中在几个常见话题难点。从“...转载 2018-05-10 09:22:48 · 4667 阅读 · 0 评论 -
使用闪回挽救我们的数据
我们在开发和运维过程中,经常遇到数据被误删除的情况。无论是在应用开发中的Bug,还是修改数据的时候,如果提交了错误数据修改结果,会带来很多问题。一般来说,一旦提交Commit事务,我们是不能获取到之前的数据情况,除非使用较复杂的数据恢复手段,利用备份数据恢复。 但是在Oracle中,可以使用其闪回FlashBack特性来解决这个问题。首先,声明一点,闪回Flashback的范围很大,包括数据库、表...转载 2018-05-10 09:21:35 · 850 阅读 · 0 评论 -
从10046看分区裁剪(下)
上篇中我们讨论了单纯数据表段分区的行为特性和方式。本篇我们继续讨论如果有索引对象参与,会是如何呢? 3、全局索引Global Index情况 Global Index是分区表中使用的一种默认索引方案。对于分区的数据表,Global Index形成的是一个覆盖所有分区的索引树结构,对应的是一个段对象。行业里面对于Global Index的“声誉”并不是很好。一般优化人员对于分区表索引,都是推荐使用L...转载 2018-05-10 09:20:46 · 171 阅读 · 0 评论 -
Oracle表连接操作——Merge Sort Join(合并排序连接)
关系型数据库并不是最早出现的数据库表现形式,之前还存在层次、网状数据库结构。随着关系型数据库的出现,以数据表的方式进行信息留存的方案迅速发展起来。关系型数据库的重要元素包括数据表和表连接,借助各种类型的表连接,可以将平铺直叙的信息加以组装拼接。 1、Merge Sort Join原理机制 Nest Loop Join嵌套循环是一种比较古老的连接匹配方式,特点是通过两层的循环结构,将符合条件的数据...转载 2018-05-09 13:20:38 · 1462 阅读 · 0 评论 -
Oracle表连接操作——Nest Loop Join(嵌套循环)
关系型数据库并不是最早出现的数据库表现形式,之前还存在层次、网状数据库结构。随着关系型数据库的出现,以数据表的方式进行信息留存的方案迅速发展起来。关系型数据库的重要元素包括数据表和表连接,借助各种类型的表连接,可以将平铺直叙的信息加以组装拼接。 在Oracle数据库中,应对不同的连接情况和数据特征,数据库CBO会生成不同的执行计划和连接操作。本篇介绍各种连接中的一种——Nest Loop Joi...转载 2018-05-09 14:02:40 · 5203 阅读 · 0 评论 -
Oracle表连接操作——Hash Join(哈希连接)上
在Oracle中,确定连接操作类型是执行计划生成的重要方面。各种连接操作类型代表着不同的连接操作算法,不同的连接操作类型也适应于不同的数据量和数据分布情况。 无论是Nest Loop Join(嵌套循环),还是Merge Sort Join(合并排序连接),都是适应于不同特殊情况的古典连接方法。Nest Loop Join算法虽然可以借助连接列索引,但是带来的随机读成本过大。而Merge Sor...转载 2018-05-09 14:10:15 · 440 阅读 · 0 评论 -
统计量收集Method_Opt参数使用(上)
SQL调优是很多Oracle DBA和开发人员的重要工作。一个高效的SQL改写调优,可以大幅度优化执行计划,提高执行效率,进而增强关键用例模块的可用性和满意度。 进行SQL调优中不可缺少的操作就是获取指定SQL的执行计划。在目前的Oracle版本中,有很多可以使用的执行计划获取方法。本篇就加以总结,供需要的朋友不时之需。 1、方便易用的explain plan Explain plan命令在Ora...转载 2018-05-09 14:24:24 · 877 阅读 · 0 评论 -
介绍几种获取SQL执行计划的方法(下)
上篇中,我们介绍了几种获取执行计划的方法。本篇我们继续探讨其他获取到执行计划详细信息的方法。 4、从shared_pool中直接抽取执行计划 我们执行过的SQL,在Oracle中会将执行计划缓存一段时间,就在shared_pool的library cache中。这是真实使用的执行计划,我们可以使用手段加以抽取展现。 在shared_pool中,执行计划主要是以shared cursor方式进行保存...转载 2018-05-09 15:01:23 · 781 阅读 · 0 评论 -
Oracle并行操作——并行DML操作
对大部分的OLTP系统而言,并行DML(PDML)的应用场景不多。大多数的PDML操作集中在下面几个场景下: ü 系统移植,从旧系统中导入原始数据和基础数据;ü 数据仓库系统Data Warehouse定期进行大批量原始数据导入和清洗;ü 借助一些专门的工具,如sql loader,进行数据海量导入; 本篇主要介绍并行DML操作的一些细节和注意方面。 1、...转载 2018-05-09 15:12:53 · 3204 阅读 · 0 评论 -
Oracle并行操作——浅议使用并行的时机
相对于我们经常使用的Oracle优化技术,并行操作是一种很特殊的选择。恰当合理、有选择的对一些SQL语句进行并行化处理,可以有针对性的提升系统一些关键业务场景的执行效率。但是,另一方面,如果使用并行过多过滥,甚至处处并行,那么可能引起服务器整体过载的现象。 那么,我们如何判断此时应该进行并行化处理?如何得知哪个时候可以使用并行呢? 1、影响并行因素分析 并行技术是一种软硬件综合技术。硬件方面的基础...转载 2018-05-09 15:21:53 · 526 阅读 · 0 评论 -
Oracle并行操作——从串行到并行
并行(Parallel)操作特性,是Oracle为更充分利用服务器硬件处理资源,提高特定大数据量操作效率,应对海量生产数据而推出的一种技术特性。通常,我们进行的SQL处理都是单进程操作,对应单个CPU操作单元。所谓的并行操作,就是在软硬件条件允许的情况下,Oracle调用多个处理单元分别进行处理,最后汇合结果的过程。对一些SQL进行有计划的并行操作,可以显著提高系统操作速度。 1、海量数据的困局 ...转载 2018-05-09 15:24:18 · 564 阅读 · 0 评论 -
Oracle并行操作——并行查询(Parallel Query)
“Parallel Query option is essentially nonscalable”——《Practical Oracle8i:Building Efficient Database》 Oracle的并行操作特性,本质上就是强行榨取除数据库服务器空闲资源(主要是CPU资源),对一些高负荷大数据量数据进行分治处理。并行操作是一种非确定性的优化策略,在选择的时候要小心对待。目前,使用并...转载 2018-05-09 15:29:00 · 10568 阅读 · 0 评论 -
从10046看分区裁剪(上)
分区裁剪(Partition Pruning)是我们选择Oracle分区表的一个重要原因。在之前的文章中,笔者讨论过实践中选择分区的两个出发点:性能出发点和管理出发点。在海量数据库环境中,管理优势是我们选择分区策略和分区键的一个主要出发点,性能出发点主要强调的就是分区裁剪。分区裁剪是建立在Oracle多段结构(segment)的基础情况下。默认情况下,数据表和索引都是对应一个段segment结构。...转载 2018-05-09 15:33:51 · 359 阅读 · 0 评论 -
Oracle优化07-分析及动态采样-DBMS_STATS 包
性能数据的收集包含这样几个存储过程:GATHER_DATABASE_STATS ProceduresGATHER_DICTIONARY_STATS ProcedureGATHER_FIXED_OBJECTS_STATS ProcedureGATHER_INDEX_STATS ProcedureGATHER_SCHEMA_STATS ProceduresGATHER_SYSTEM_STATS Pro...转载 2018-05-08 17:50:08 · 231 阅读 · 0 评论