索引重建是一个争论不休被不断热烈讨论的议题。当然Oracle官方也有自己的观点,我们很多DBA也是遵循这一准则来重建索引,那就是Oracle建议对于索引深度超过4级以及已删除的索引条目至少占有现有索引条目总数的20% 这2种情形下需要重建索引。近来Oracle也提出了一些与之相反的观点,就是强烈建议不要定期重建索引。本文是参考了1525787.1并进行相应描述。
运行完脚本后我们查看MySQL数据库,应该可以看到表里应该有数据,而且没有重复数据
对于索引的调整,我们可以通过Oracle提供的索引监控特性来跟踪索引是否被使用。尽管该特性并未提供索引使用的频度,但仍不失为我们参考的方式之一。然而,最近在Oracle 10.2.0.3中发现收集统计信息时导致索引也被监控,而不是用于sql查询引发的索引监控。如此这般,索引监控岂不是鸡肋?
上节讲到如何利用Python获取Oracle已使用过的索引名称,这节讲如何将他们存入MySQL数据库中
黄玮(Fuyuncat),资深 Oracle DBA,从事 Oracle 数据库管理、维护与开发工作十余年,有丰富的大型数据库设计、开发与维护方面的经验,博客www.HelloDBA.com, 一个系统,经过长期的运行、维护和版本更新后,可能会产生大量的索引,甚至索引所占空间远远大于数据所占的空间。很多索引,在初期设计时,对于系统来说是有用的。但是,经过系统的升级、数据表结构的调整、应用的改变,很多索引逐渐不被使用,成为了垃圾索引。这些索引占据了大量数据空间,增加了系统的维护量,甚至会降低系统性能。因此
上节讲到建立一个MySQL数据库并新建一张用于存放索引信息的表,今天讲如何获取Oracle已使用过的索引名称
索引是一种可以选择创建的数据库对象,它主要用于提高查询性能。数据库索引的用途和一本书前面的目录索引类似。书中的索引把书的主题和页码进行关联,想在一本书中查找信息时,首先查看目录索引,从中找到要查看的章节主题,确定相关的页码,通常比直接翻书查找要快的多。有了索引提供的信息,就可以直接翻到这本书中的具体页码。如果某个主题只在书的几页内出现,那么读取的页面数量是很少的。采用这种方式,一个主题在书中出现的次数越多,索引对他产生的作用就越小。
索引是提高数据库查询性能的有力武器。没有索引,就好比图书馆没有图书标签一样,找一本书自己想要的书比登天还难。然而索引在使用的过程中,尤其是在批量的DML的情形下会产生相应的碎片,以及B树高度会发生相应变化,因此可以对这些变化较大的索引进行重构以提高性能。N久以前Oracle建议我们定期重建那些高度为4,已删除的索引条目至少占有现有索引条目总数的20%的这些表上的索引。但Oracle现在强烈建议不要定期重建索引。具体可以参考文章:Oracle 重建索引的必要性。尽管如此重建索引还是有必要的,只是不建议定期。本文给出了重建索引的脚本供大家参考。 1、重建索引shell脚本
没有索引,喜欢同样的标签库没有书籍,找书,他们想预订比登天还难。中,尤其是在批量的DML的情形下会产生对应的碎片。以及B树高度会发生对应变化。因此能够对这些变化较大的索引进行重构以提高性能。N久曾经Oracle建议我们定期重建那些高度为4。已删除的索引条目至少占有现有索引条目总数的20%的这些表上的索引。但Oracle如今强烈建议不要定期重建索引。
Oracle 监控索引特性为我们提供了一个大致判断索引是否被使用的情形。之所以这么说,是因为在Oracle 10g 中收集统计信息时会导致索引被监控,此并非sql语句而产生。而在11g则不会出现类型的情形。其次对于存在子表存在外键的情形,对于主表进行操作时是否会导致索引被监控呢?下面描述的是这个话题。
术语说明 TableQueue,消息缓冲区,在并行操作中使用,用于PX进程之间的通信,或者PX进程与QC进程之间的通信,是内存中的一些page,每个消息缓冲区的大小由参 parallel_execution_message_size控制,11GR2版本默认为16K,之前的各个大版本这个值都不一样,详细请参考ORACLE官方文档。 墙面时间、持续时间指的是物理时间、钟表时间。 HASH JOIN左边,the build side of hash join,一般为小表。 HASH JOIN右边,the prob
Oracle 开放源代码项目 这是无数个可扩展、使用以及构建于 Oracle 技术的开放源代码项目中的一个简短的示例。如果您有自己喜欢的开放源代码项目未在此处列出,请在 OTN 会员服务论坛中告知我们。 TOraTora 是用于 Oracle 的工具包,旨在帮助数据库管理员或数据库应用开发人员。包括 PL/SQL 调试程序、突出语法主题的 SQL 工作表、数据库浏览器以及一整套数据库管理员工具。cx_OracleDBATools用 Python 编写的跨平台工具,用于执行数据库管理员任务,如启动、终止和创建
合理的为数据库表上创建战略性索引,可以极大程度的提高了查询性能。但事实上日常中我们所创建的索引并非战略性索引,恰恰是大量冗余或是根本没有用到的索引耗用了大量的存储空间,导致DML性能低下。Oracle 提供了索引监控特性来初略判断未使用到的索引。本文描述如何使用Oracle 索引的监控。
索引维护是DBA的一项重要工作。当一个系统运行很长一段时间,经过需求变更、结构设计变化后,系统中就可能会存在一些不再被使用的索引,或者使用效率很低的索引。这些索引的存在,不仅占用系统空间,而且会降低事务效率,增加系统的负载。因此,需要找出那些无用或低效的索引,并删除它们(找出无用索引可以通过索引监控的方法)。但是,直接删除索引还是存在一定风险的。例如,某些索引可能只是在一些周期的作业中被使用到,而如果监控周期没有覆盖到这些作业的触发点,那么就会认为索引是无用的,从而将其删除。当作业启动后,可能就会对系统性能造成冲击。这时,可能就会手忙脚乱地去找回索引定义语句、重建索引。在Oracle 11g里,Oracle提供了一个新的特性来降低直接删除索引或者禁用索引的风险,那就是不可见索引(Invisible Indexes)。
写在开篇不管zabbix的后端数据库是oracle还是mysql,当zabbix监控的量级达到了一定程度后,那么对数据库的性能是一个非常严峻的挑战。特别是对历史数据的查询,将会变得非常非常的慢,别告诉我可以建索引优化,当量级达到一定的程度的时候,索引真的没啥效果了。如果再不继续寻找合适的解决方案,那么就一定会引发数据库层面的问题,最终导致服务不可用。当监控数据越来越大的时候,存储不足的时候,怎么办?那就删历史数据呗,但如果要求至少要保存半年甚至1年以上的历史数据,且又高端存储磁阵紧缺面临扩容难题的时候怎么办
环境设置 Linux系统为 Centos 6.8 Python环境为 Python 3.6 MySQL版本 MySQL 5.7 (GA) 连接MySQL模块:PyMySQL
经过前面的学习,对数据库有了一个大致的了解,从这周起对Oracle数据库进行进一步的深入学习。先来学习下DBA日常工作和职责 Oracle DBA的职责 系统建设当中: 数据库的设计 数据库的建模 数据安全(备份方案,容灾方案) 数据库性能(系统性能) 运维当中: 保证数据的安全(备份方案,容灾方案) 数据库的可用性 日常故障处理 性能分析处理 数据库升级(打补丁),改造 Oracle DBA的日常工作 通用数据库的监控 表空间(磁盘,ASM)容量的监控 一整块存储使用ASM管理,将数据文件设置为自动扩展
随着2月的春风吹拂,Oracle 19c 的第一个 Exadata 版本发布将马上发布出来,等待可测试版本的朋友们马上即可如愿了。
序言:优化器是Oracle数据库最引人入胜的部件之一,因为它对每一个SQL语句的处理都必不可少。优化器为每个SQL语句确定最有效的执行计划,这是基于给定的查询的结构,可用的关于底层对象的统计信息,以及所有与优化器和执行相关的特性。 本文来自Oracle 白皮书翻译(译者:苏旭辉 newkid),介绍了在Oracle数据库12c第二版中与优化器和统计信息相关的所有新特性并且提供了简单的,可再现的例子,使得你能够更容易地熟悉它们,尤其是当你从早先的版本进行迁移的时候。它还概括了已有的功能是如何被增强以改善性能
由于我们的执行计划都存在v$sql_plan中,所以我们定期从这个视图中获取索引信息,经过一段时间的积累即可知道哪些索引没被使用过
今天来给大家分享一下DBtime抖动的诊断案例。讲到的不足之处还希望大家多多指正,共同提高。案例会分下面几个方面来说。 首先来说问题的背景。因为使用的数据库环境多且复杂,数据库不只有Oracle,
目前一共包含6个脚本,若脚本的扩展名为“.sql”则表示该脚本为sql脚本,若脚本的扩展名为“.pl”则表示该脚本为perl脚本。
今天同事提了一个问题,还是值得思考的,某个作为数据分发的MySQL库,有时候需要在不同的环境中同步创建数据库,但受工具限制,只能做数据同步,索引这些对象则需要单独创建,该数据库的索引太多,导致生成过程非常地耗时,而且可能会漏掉几个索引,而实际上这些索引并不都是经常需要的,或者可能存在冗余的,因此想问问怎么能清理索引?
在 ACOUG 年会的活动上,分享了一些从前未曾分享过的内容,想起,今年还欠下一篇文章,就整理和回顾一下,分享我所见到的Oracle 19c的一些重要改变(本文内容来自OOW大会演讲,关注“数据和云”公众号回复:2018OOW 获取大会PPT)。
在开发应用程序时,可能会建立很多索引,那么这些索引的使用到底怎么样,是否有些索引一直都没有用到过,在这种情况下就需要对这些索引进行监控,以便确定它们的使用情况,并为是否可以清除它们给出依据。
在确定调优会话的目标后,例如,将用户响应时间从三分钟缩短到不到一秒,问题就变成了如何实现此目标。
作者介绍 张洪涛 富士康 DBA 注意:本文涉及的问题在9i的环境中测试的,经验证,同样适用于11g. 在用Toad的SGA Trace工具监控我们的Oracle 9.2.0.8 Patch 31古
崔华,网名 dbsnake Oracle ACE Director,ACOUG 核心专家 编辑手记:感谢崔华授权我们独家转载其精品文章,也欢迎大家向“Oracle”社区投稿。 这里我们稍微讨论一下CBO对于Cost值相同的索引的选择,可能会有朋友认为在同样Cost的情况下,Oracle会按照索引名的字母顺序来选择索引,实际上并不完全是这样,CBO对于Cost值相同的索引的选择和Oracle的版本有关。 原理说明 MOS上文章“Handling of equally ranked (RBO) or cos
我们来备份test数据库中的innodb_table表和isam_table表中id为10的数据
熊军(老熊) 云和恩墨西区总经理 Oracle ACED,ACOUG核心会员 无响应故障现象分析 ---- Oracle数据库无响应故障,简单地讲就是数据库实例不能响应客户端发起的请求,客户端提交一个SQL后,就一直处于等待数据库实例返回结果的状态。更严重的现象是客户端根本不能连接到数据库,发起一个连接请求后,一直处于等待状态。 无响应的故障现象一般有以下几种: 1.Oracle的进程在等待某个资源或事件 这种现象一般可以从V$SESSION_WAT、V$LATCH、V$LATCHHOLDER等动态视
最近一段时间和MYSQL的 performance_schema 较劲,之前总结的比较散,没有一个整体的观,仅仅是细枝末叶的东西。本次的对performance_schema 从总体来看,看看未来(MYSQL 8),以后观察MYSQL的性能问题需要什么改变。招招毙命其实是对老的监控方法来用“吸引体”来 attractiveness。
Oracle DBA的角色定义 开发型DBA 数据库安装 数据库架构设计(架构和建模) 代码开发(存储过程,SQL) 运维型DBA 数据库日常监控 故障处理 性能优化 数据备份,容灾 数据库安全规划 DBA的操守 在自己的责任范围内 让数据库设计更合理,预防设计导致的性能或安全隐患 数据更安全 数据库性能更优 数据库日常管理更合理 故障发现,处理及时 数据库的架构设计 数据库架构 分布or单库 实例的冗余 RAC or single 数据库的安全和容灾 DG or streams or Rman 空间的考虑
经过几次排除,把问题范围缩小在索引上,首先在确定索引本身没有问题的前提下,考虑索引有没有被使用到,那么新的问题来了,怎么知道指定索引是否被启用。
中通快递业务的规模目前是世界第一,是第一个达成年百亿业务量的快递企业,在 2019 年的双十一更是完成了订单量超过 2 亿的佳绩。中通科技是中通快递旗下的互联网物流科技平台,拥有一支千余人规模的研发团队,秉承着“互联网+物流”的理念,与公司的战略、业务紧密的衔接,为中通生态圈的业务打造全场景全链路的数字化平台服务。
虽说近些年来,从国内数据库市场来看,Oracle是有些势衰;但从全球角度来说,其霸主地位依然不可撼动。其技术的演讲变化,仍然对行业数据库发展有着颇大的指导引领意义。下面是我对其近三年来发布的新特性加以盘点,进而洞察行业变化,挖掘技术趋势。材料部分内容引用自盖总的《Oracle新特性》系列文章,感谢!
Oracle在年度CloudWorld大会上宣布,在数据分析云服务MySQL HeatWave增加Vector Store和新的生成式AI功能。
索引质量的高低对数据库整体性能有着直接的影响。良好高质量的索引使得数据库性能得以数量级别的提升,而低效冗余的索引则使得数据库性能缓慢如牛,即便是使用高档的硬件配置。因此对于索引在设计之初需要经过反复的测试与考量。那对于已经置于生产环境中的数据库,我们也可以通过查询相关数据字典得到索引的质量的高低,通过这个分析来指导如何改善索引的性能。下面给出了演示以及索引创建的基本指导原则,最后给出了索引质量分析脚本。
查看当前归档日志路径,空间的使用率已经到了100%,于是在rman中,删除30天之前的归档日志文件,
目前一共包含以下4个脚本,其中DB_healthcheck_lhr_v6.0.1_ALL_RW.sql 是读写版本,在脚本执行过程中会对数据库做DDL(创建一些用到的临时表)和DML操作(对自己创建的临时表DML操作),但是,在脚本执行后会清理掉创建的临时表,基本上不会留下任何痕迹。而脚本DB_healthcheck_lhr_v1.0.0_10g_RO.sql、DB_healthcheck_lhr_v1.0.0_11g_RO.sql和DB_healthcheck_lhr_v1.0.0_2c_RO.sql分别对应10g、11g和12c及其以上版本,这3个脚本都是只读版本,这3个脚本只会对数据库做查询操作,不会做DML和DDL操作,这也是很多朋友所期待的功能。
最近ORACLE 12C 的某个BUG 霸占了微信公众号,仔细看了看,其实也还好。每种数据库在上了新版本后都会有问题,其实不光是数据库,每个软件都包含着BUG,而发现了BUG 后如何处理,倒是变得重要。
Solarwinds的数据库性能分析器是一种用于监控,分析和调整数据库和SQL查询性能的高级工具。其突出的特点包括:
Last Updated: Saturday, 2004-12-04 10:28 Eygle
大家好,又见面了,我是你们的朋友全栈君。 数据库是一个数据的集合,不仅是指物理上的数据,也指物理、存储及进程对象的一个组合。Oracle是关系型数据库管理系统(RDBMS)。 二、实例(Instance) 数据库实例(也称为服务器Server)就是用来访问一个数据库文件集的一个存储结构及后台进程的集合。它使一个单独的数据库可以被多个实例访问(也就是ORACLE并行服务器– OPS)。实例和数据库的关系如下: —————————————————————————- | 实例1 SGA+进程 | 实例2 SGA+进程 | —————————————————————————- | 数据库(一组数据文件) | —————————————————————————- 决定实例的组成及大小的参数存储在init<sid>.ora文件中。 三、内部结构 表、列、数据类型(Table、Column、Datatype):Oracle中是以表的形式存储数据的,它包含若干个列;列是表的属性的描述;列由数据类型和长度组成;Oracle中定义的数据类型主要有CHAR、VARCHAR2、NUMBER、DATE、LONG、LOB、BFILE等 约束条件(Constraint) :表中以及表间可以存在一些数据上的逻辑关系、限制,也就是约束。Oracle中的约束主要有主键(PK)、外键(FK)、检查(CHECK)、唯一性(UNIQUE)等几种;拥有约束的表中每条数据均必须符合约束条件。 抽象数据类型(Abstract Datatype):可以利用CREATE TYPE命令创建自定义的抽象数据类型。 分区(Partition):可以利用分区将大表分隔成若干个小的存储单元,逻辑上仍然是一个完整的独立单一实体,以减小访问时数据的查找量,提高访问、存储效率。 用户(User):用户不是一个物理结构,但是它与数据库的对象拥有非常重要的关系–用户拥有数据库对象,以及对象的使用权。 模式(Schema):用户帐号拥有的对象集合称为模式。 索引(Index):数据库中每行记录的物理位置并不重要,Oracle为每条记录用一个ROWID来标识,ROWID记录了记录的准确位置。索引是供用户快速查找到记录的数据库结构。ORACLE8中有簇索引、表索引、位图索引三种索引形式。 簇(Cluster):经常被频繁引用的表可以在物理位置上被存储在一起,簇就是用来管理这种集中存储的。集中存储可以减少I/O次数,以达到性能的改善和提高。 散列簇(Hash Cluster):簇的另一种形式,这种簇中的数据要通过散列函数计算得出物理位置,它可以极大程度的提高等值查询的效率。 视图(View):可以理解为固化的查询或者没有数据存储的表,它是一组表的查询结果集合,对应用来说是独立的结构,除没有数据存储以外,拥有和表同样的属性。 序列(Sequence):一个唯一数值的序列生成器,它每次被引用后,自动递增。 过程、函数(Procedure、Function):编译存储在数据库中的一个PL/SQL程序段,可以被引用。函数返回调用者一个值,过程则不返回任何值。 包(Package):函数、过程的集合。包中可以包含不同的元素,可以是公有的也可以是私有的。 触发器(Trigger):触发器是一些过程或PL/SQL程序段,当一个特定的事件发生时,就会自动引发这些过程的执行。 同义词(Synonyms):在分布式数据库环境中,要完全识别一个对象,必须指出对象的主机、属主等信息,为了简化这一过程,可以对这些对象建立同义词,引用这些同义词时系统自动转义成对原始对象的引用。 权限、角色(Privilege、Role):为了引用数据库的对象,必须拥有这些对象的相应权限,角色是这些权限的集合,例如–DBA就是一个角色,它包括一组数据库权限。 数据库链路(Database Link):引用其他数据库的数据时,需要指明详细路径,链路就是详细路径的识别名。 四、内部存储结构 系统全局区(System Global Area,SGA):包括–数据块缓冲存储区(Data Block Buffer Area)、字典缓冲区(Dictionary Cache)、日志缓冲区(Redo Log Buffer)、SQL共享池(Shared SQL Pool)四部分。 正文区间(Context Area):每个用户都拥有自己的私有SQL区域,保存相关的SQL语句,直到语句相关的光标关闭为止。 程序全局区(Program Global Area,PGA):它是存储区中被单个用户进程所使用的区域,PGA不能共享。 五、后台进程(BACK
最近有位朋友,要做一个T级别的数据迁移工作,打算使用数据泵,这个工具提供了非常多的参数,为的就是控制导入导出的过程。
1.掌握HTML,CSS,JavaScript等前端基本技术,并使用JSP,Servlet开发小型网站
一·、前言:这篇博文内容非原创,是我们公司的架构师给我们做技术培训的时候讲的内容,我稍微整理了下,借花献佛。这篇博文只是做一个大概的科普介绍,毕竟SQL优化的知识太大了,几乎可以用一本书来介绍。另外,博主对SQL优化也是刚刚接触,也有很多不了解的地方,说的不对的地方,还请大家指正,共勉! 二、oracle服务器,所谓oracle服务器指的是一个数据库管理系统,它包括一个oracle实例(动态)和一个oracle数据库(静态)。 oracle实例是一个运行的概念,提供了一种访问数据库的方式,由SGA和一些后
一般在一些容灾环境中,尤其是在11g的ADG非常普及的场景下,备库被赋予了更多的责任,很多时候在容忍一些延迟的情况下,有些应用的大量数据查询任务直接放到了备库,把它当做一个只读节点来使用,所以在有些情况下,可能备库的压力还是蛮大的。 最近自从把备库纳入zabbix的监控体系之后,有一个备库总是在午夜发来一条报警邮件。内容大体如下: adb0_s1@10.127.xx.xx_报警 ------------------------------------ 报警内容: CPU utilization is too
在Windows 操作系统下安装Oracle 9i时会安装很多服务——并且其中一些配置为在Windows 启动时启动。在Oracle 运行在Windows 下时,有些服务可能我们并不总是需要但又害怕停止了服务会影响使用。在这里这篇文章对Oracle常用服务的作用进行了整理,确保我们可以有选择性地停止不需要的服务。另外,还列出了基本上所有的Oracle服务极其作用,这部分可以当作索引使用。在Oracle数据库中最常用的两个服务分别是:OracleService<SID>服务、Oracle<HOME_NAME>TNSListener服务。
说起DBA,全称是Database Administrator,不是Doctor of Business Administration,千万不要误解,那可是天壤之别!尽管如此,很多人依然认为有着神秘的面纱,高深莫测,花环簇拥,是收入丰厚的一族人。实则不然,DBA说白了就一修理工。修理啥呢,不是车床机床,也不是修理啥精密仪器,修理的是数据库,仅此而已。DBA这个行业同样也经历了由萌芽,发展到鼎盛的过程。尤其是近2年海量数据的井喷以及新数据库时代,云数据时代,DBA 2.0时代的兴起。以及最近所谓后DBA时代的说法。说到DBA的工作,我们先得搞清当前几类常用的数据库。主要有两大阵营,一类是SQL,学过计算机的人应该都知道,传统数据库,诸如Oracle,DB2,MySQL,SQL serer等主流数据库。面对的是那些传统行业,比如证券,银行,电信等使用的居多。另一类是NoSQL,诸如Hadoop,MongoDB,CouchDB等,主要用于互联网行业,如在线社交系统,Amazon 的Dynamo等。对于当前这两大阵营,貌似有划江而治之势。让人不免眼花缭乱。究竟何去何从,应当更多或更深的思考,这是一个比较大的话题,暂且不表。本文主要描述一下传统DBA的那些事,也就是DBA的工作范围与职责,更多的围绕Oracle展开。本文主要从六个方面来简要描述DBA的工作。
在Oracle 11g之前的版本,长时间运行的SQL可以通过监控VSESSION_LONGOPS来观察,当某个操作执行时间超过6秒时,就会被记录在VSESSION_LONGOPS中,通常可以监控到全表扫描、全索引扫描、哈希连接、并行查询等操作。
领取专属 10元无门槛券
手把手带您无忧上云