Oracle ACE,腾讯云TVP,墨天轮MVP,Oracle 10g/11g OCP,11g OCM,Exin DevOps Master,OCMU成员,Oracle YEP成员,微信公众号:bisal的个人杂货铺
优化器: 1、优化器的模式: 用于决定在Oracle中解析目标SQL时所用优化器的类型,以及决定当使用CBO时计算成本值的侧重点。这里的“侧重点”是指当使用CBO来计算目标SQL各条执行路径的成本值时,计算成本值的方法会随着优化器模式的不同而不同。
今天老婆问到一个问题:Oracle中,插入多条记录后,读的时候如果不用Order by,那顺序是如何?如果中间涉及UPDATE和DELETE,是否有影响? 这个其实之前总结过这个问题,但确实感觉没有深刻理解,才导致不是十分确定,看来还是方法上要改进。
ORA-60死锁的实验 创建表: SQL> create table tbl_ora_60 ( id number(5), name varchar2(5) ); SQL> insert into tbl_ora_60 values(1, 'a'); 1 row created.
CBO优化器的基本概念: 可传递性: 1、简单谓词传递 t1.c1=t2.c1 and t1.c1=10,Oracle会自动将t2.c1=10的条件添加。
开始学习崔老师的《基于Oracle的SQL优化》,七百多页,虽然可能会比较痛苦,但想必是一个痛并快乐的过程,尽情享受了。。。 第一章:Oracle里的优化器 优化器是Oracle数据库中内置的一个核心子系统,可以理解为一个核心模块或者一个核心功能组件。
打算分几次,将这次西班牙之行做个记录,一方面做个总结,方便后人查看,另一方面也是重温这次旅行的点点滴滴,确实有意义。 《旅行开始前的准备》 说到准备,这次决定到西班牙旅行,也是6月份的时候,听到同事到巴塞罗那开会,碰巧老婆上半年刚从德国出差回来,对欧洲印象很好,而且我们没有一起到国外旅行过,于是心血来潮,半开玩笑地说到西班牙游一遭。
问题现象: 测试库使用如下方式创建索引: create index IDX_ANA_OFFICE on ANA (OFFICE_CITY, OFFICE_NO) tablespace IDX pctfree 10 initrans 2 ...
今天QQ有问个问题,说有个应用报错3113,按照常规,让其检查了: 1、用户profile是否设置了idle_time参数,没有。 2、应用与数据库之间有防火墙超时设置,没有。
create table eg_60 ( num number, txt varchar2(10) ); insert into eg_60 values ( 1, 'First' ); insert into eg_60 values ( 2, ...
当前应用时常会出现deadlock的alert记录,关于如何判断与解决deadlock的问题,有一些介绍性的文章值得阅读。 How to Identify ORA-00060 Deadlock Types Using Deadlock Graphs in Trace (文档 ID 1507093.1) 当Oracle检测到死锁后,会取消当前检测到死锁的SQL执行,并进行语句级回滚,以释放资源,不会阻塞所有活动。
今天有位同事说“传言一次删除量大,是更慢”,这句话有对的地方,但重要的是问个为什么,只有知道了它的原因才能更好地使用Oracle提供的技术。 我个人的理解是:删除量大小主要受限于UNDO表空间,因为执行DELETE每条记录时会将原始数据(镜像)放...
非常著名的Oracle官方文档汇总的下载地址: http://tahiti.oracle.com/ 另外,对于10g以前的若干安装版本当前官网已经没有提供下载地址了,但可以通过提交一个SR来寻求帮助。
之前某应用就存在长时间不调用,再次调用时处于hang,等待10分钟返回3113的连接错误。今天正好同事也问了个相同的问题,也是应用长时间不调用就出现这种情况。
IO的类型: 平均响应时间直接关联到具体的IO类型: 1. 读或写 2. 单块或多块 单块IO,指一次只读一个块。例如,当一个session等待一个单块IO时,典型的等待事件就是“db file sequential read”,表明正在等待需要的块。
系统变慢的原因有很多,有时是因为SQL,有时是因为硬件,有时又可能是系统,就如前几篇文章介绍的,AWR是一个查找问题原因的重要手段,同时OSWatcher等工具也是排查系统问题必不可少的方法。
昨天有篇“db file sequential read”的介绍,还有一篇类似的:Resolving Issues Where Application Queries are Waiting Too Frequently for 'db file sequential read' Operations (文档 ID 1475825.1) 诊断“db file sequential read”的步骤: 简述: 低效的SQL会引起不同节点间非常多的块读。
最近某些系统AWR的top 5中“Db File Sequential Read”占据的时间百分比非常大,通常这种等待事件是一种正常的。但当前系统性能是有些问题的,并发量大,有些缓慢,因此需要判断这种等待事件是否能够减少。
“log file sync”有三个参数: P1 = buffer# P2 = 未使用 P3 = 未使用 buffer# 这个buffer编号(在日志缓冲区中)的所有改变必须刷新到磁盘,写操作的完成保证了交易COMMIT的执行,即使实例crash也会保证COMMIT。
“log file sync”是等待事件中非常常见的一种,他排在AWR的top5中有时是正常情况,有时则需要格外注意。昨天也听了一次Oracle的网络研讨会,介绍的是AWR相关的分析,从中学习到最重要的一点,就是对于AWR报告中若干信息的判断不能独立地看,需要综合起来,一个参数值大,不一定代表有问题,也可能是正常的,需要具体问题具体分析,其实和日常生活是一样的,头疼,不一定是感冒,也可能是缺少睡眠。
一般为了防止过多活动的session占用资源,可以对允许连接到数据库的session个数,已连接到数据库的session空闲时间等进行限制(当然也可以对尝试连接次数等其它很多内容进行限制)。
续《表扫描与索引扫描返回的行数不一致》 上篇文章主要介绍了如何从分析表得到的报错,以及trace中的信息,判断表返回的记录与索引返回记录不一致时的处理方式。
EXEC SQL BEGIN DECLARE SECTION; char a[10000][3]; VARCHAR b[10000][31]; char c[3]; EXEC SQL END DECLARE SECTION; .
某个应用最近总出现死锁,其中一些是因为报了索引和数据行存在不匹配的问题,MOS中有如下文档可以参考。 ORA-1499. Table/Index row count mismatch(文档 ID 563070.1)现象: 使用“validate structure cascade”分析表时报ORA-1499的错误,trace文件中包含“Table/Index row count mismatch”的错误信息。
使用索引快速全扫描(Index FFS)避免全表扫描(FTS) (文档 ID 70135.1) 什么使用使用Index FFS比FTS好? Oracle 8的Concept手册中介绍: 1. 索引必须包含所有查询中参考到的列。
Buffer Cache与IO相关的等待事件: 这种等待事件的产生原因是包含DBWR进程和IO Slaves的Buffer Cache操作。
与Redo日志IO相关的等待事件: Redo日志活动期间会有很多的等待事件,而且他们大多是和IO相关的。最重要的两个就是‘log file sync’和‘log file parallel write’。
与控制文件IO相关的等待事件: 这种等待事件通常产生于一个或多个控制文件的IO。像redo日志切换和检查点事件,都会产生频繁的控制文件访问。
'db file parallel read' 当Oracle从多个数据文件并行读到内存(PGA或Buffer Cache)的非连续缓冲时,可以看到这种等待事件。
'db file scattered read' 这是另一种常见的等待事件。他产生于Oracle从磁盘读取多个块到Buffer Cache中非连续("scattered")缓存的时候。
与数据文件IO相关的等待事件: 接下来的等待事件是与数据文件的IO操作时产生的。 'db file sequential read' 这是一种最常见的IO相关的等待。
解决IO问题的常用方法: 使用Statspack类似的工具对数据库响应时间分析之后,已经表明与IO相关的等待事件限制了系统性能,有许多的方法可以判断这种问题。
Troubleshooting步骤: Troubleshooting与IO相关的等待: 数据库性能调优方面一项关键的方法就是响应时间分析。找出时间都花费在数据库的哪些环节。
近来XX应用充分暴露出开发人员最初只关心功能,未考虑性能的问题,夜维、OLTP应用均出现了不同程度的与数据库相关的性能问题。 这个应用所在磁盘的IO较差,原因在于这块磁盘较旧,已进入更换的流程,但短期内还不能更换,对应用是个极大的隐患。
今天看了一篇关于调优的概念性文章(61998.1: Introduction to Tuning Oracle7 / Oracle8 / 8i / 9i )。
最近某个应用的AWR中总显示“db file sequential read“等待事件位于top 5之首,下面检索下MOS关于这个等待事件的说明。 等待事件: "db file sequential read" Reference Note (文档 ID 34559.1) 这种等待事件是一种IO读请求相关的等待。
A表:30万,主键ID B表:300万,主键ID 从B表中删除ID=A表ID的记录。 DELETE FROM B WHERE EXISTS (SELECT 1 FROM (SELECT ID FROM (SELECT T.
今天alert日志报ORA-00060的死锁错误,查看trc文件: *** 2013-09-29 01:03:47.762 *** SERVICE NAME:(SYS$USERS) 2013-09-29 01:03:47.
1、创建新的表空间; 2、创建用户; 3、通过修改文件大小与增加文件的方式扩容表空间; 4、人为移动数据文件,检验创建表的效果; 1、创建新的表空间; SQL> create tablespace test_data 2 logging ...
Exadata从这些日子以来,炒得很热,OOW也是进一步加大了对它的宣传力度,但与我当前的工作联系甚少,这里仅仅摘抄一份老盛的blog,以做备份。 摘自: http://space.itpub.net/26686207/viewspace-773065 一体机云服务器近年可是风起云涌,多个IT界大佬级公司都陆续推出了自己的一体机。
之前写过一篇blog《新用户使用sqlplus / as sysdba登录报错》http://blog.csdn.net/bisal/article/details/9285087 今天碰巧看到一篇推荐的帖子《新建一个用户(非oracle),在不赋予dba所属组的情况下,不能使用操作系统验证》 http://www.itpub.net/thread-1811278-1-1.html,也是按照实际操作的流程解释了处理的方法,很实际。
看到leonarding大神总结的有关Oracle高可用性的概述,之前开会的时候,有人也提到过Oracle HA、RAC等等,当时这些概念不是特别清楚,下来查过后感觉HA是一个概念,像RAC、Stream Replication等是一种HA的实现手段,现在又碰巧看到这篇总结,更加确信了这一点,凡事都要讲实力,都需要积累。
昨天说到REVERSE关键字可以指REVERSE函数和REVERSE索引,简单介绍了下REVERSE函数的含义,今天简单整理下REVERSE索引。
昨天说到@dbsnake讲的一个reverse函数索引避免全表扫描的案例,REVERSE关键字可以用于函数和索引。REVERSE函数和REVERSE索引。
今天有同事询问Oracle在线浏览的手册是否可以下载,确实下载到本地浏览才是非常方便的,之前从@secooler大神这里找过下载链接,特此转载,以备查询,向大神致敬! @secooler 转载地址:http://space.itpub.net/519536/viewspace-567429 oracle不同版本的官方文档在线参考和打包下载地址汇总,罗列在这里,供你我参考。
昨天听了@dbsnake的SQL方法论,感觉比第一次要更有感觉,希望对实际工作能有帮助。 昨天讲到一处利用reverse函数建立索引,避免全表扫描的case,颇有感触,拿出来试一下。
看一篇的时候碰巧看到有关inline view的概念,不太熟悉,查了下。 所谓inline view,也叫内前视图,说白了,就是执行的时候才建立的视图。
今天有幸又一次可以听@dbsnake的讲座,虽然从ppt看与去年相同,仍是他新书的一个章节,但这次听要带着问题和思考,当作一次知识的升华,加油!
WIN7 64bit安装Oracle 10.2.0.1后,运行cmd-sqlplus / as sysdba会提示: C:\Users\Liu>sqlplus / as sysdba SP2-1503: 无法初始化 Oracle 调用界面 SP2-0152: ORACLE 不能正常工作 解决方法: 1、临时方案:此时可以以“管理员身份”运行cmd,然后再执行sqlplus就行了。
当使用错误的用户名或密码登陆数据库时,会提示如下报错内容: bash-4.1$ sqlplus a/a@test SQL*Plus: Release 10.
如果Linux或Unix平台,安装了Oracle,而且有root账号,则使用“su Oracle安装账户”的方式,sqlplus登录到数据库,这种方式是最可靠的。