摘要:
在分析ORACLE的AWR报告时,发现SQL ordered by Executions(记录了按照SQL的执行次数排序的TOP SQL。该排序可以看出监控范围内的SQL执行次数)下有一个SQL语句执行非常频繁,一个小时执行了上万次: update seq$ set increment$=:2, minvalue=:3, maxvalue=:4, cycle#=:5, order$=:6, c... 阅读全文
随笔分类 - 数据库技术(Oracle)
ORACLE Index Lookup索引访问路径总结
2017-08-23 10:11 by 潇湘隐者, 977 阅读, 收藏, 编辑
摘要:
在ORACLE中,索引访问/查找(Index Lookup)路径有五种方式,分别为INDEX UNIQUE SCAN、INDEX RANGE SCAN、INDEX FULL SCAN、INDEX FAST FULL SCAN 、INDEX SKIP SCAN。下面通过一些案例介绍、总结一下这五种索引访问路径。本文是总结这方面的知识点,所以文中一些地方参考、引用了参考资料中的部分内容。详细、具体... 阅读全文
ORACLE实际执行计划与预估执行计划不一致性能优化案例
2017-08-19 16:16 by 潇湘隐者, 4182 阅读, 收藏, 编辑
摘要:
在一台ORACLE服务器上做巡检时,使用下面SQL找出DISK_READ最高的TOP SQL分析时,分析过程中,有一条SQL语句的一些反常现象,让人觉得很奇怪: SELECT SQL_ID, SQL_TEXT, DISK_READS, BUFFER_GETS, PARSING_SCHEMA_NAME, EXECUTION... 阅读全文
ORACLE等待事件:SQL*Net message from client & SQL*Net message to client
2017-08-15 08:26 by 潇湘隐者, 19358 阅读, 收藏, 编辑
摘要:
在ORACLE当中有两个很常见的等待事件“SQL*Net message from client”与“SQL*Net message to client”,两者有点区别,下面整理这方面的资料如下: SQL*Net message from client 表示服务端等待着Cilent发来请求让它处理,这时就会产生SQL*Net message from client等待事件。 ... 阅读全文
ORA-1652: unable to extend temp segment by 128 in tablespace xxx Troubleshootin
2017-08-08 22:54 by 潇湘隐者, 2663 阅读, 收藏, 编辑
摘要:
当收到告警信息ORA-01652: unable to extend temp segment by 128 in tablespace xxxx 时,如何Troubleshooting ORA-1652这样的问题呢? 当然一般xxx是临时表空间,也有可能是用户表空间。 我们先来模拟一下这个情况,在两个会话窗口执行下面SQL语句,这个视图比较特殊(因为比较懒,不想去构造一个大量消耗临时段的SQ... 阅读全文
ORACLE中修改表的Schema的总结
2017-07-11 11:00 by 潇湘隐者, 5940 阅读, 收藏, 编辑
摘要:
前阵子遇到一个案例,需要将数据库中的几个表从USER A 移动到USER B下面,在ORACLE中,这个叫做更改表的所有者或者修改表的Schema。其实遇到这种案例,有好几种解决方法。下面我们通过实验来测试、验证一下。首先准备简单测试数据,如下所示: SQL> CREATE TABLE TEST.KKK( ID INT , NAME VARCHAR2(12) , CONS... 阅读全文
ORA-01440: column to be modified must be empty to decrease precision or scale
2017-06-08 08:26 by 潇湘隐者, 7326 阅读, 收藏, 编辑
摘要:
在修改表字段的NUMBER类型的精度或刻度时,你可能会遇到ORA-01440: column to be modified must be empty to decrease precision or scale,下面介绍一下,如何处理这个问题。测试案例如下: SQL> drop table test; Table dropped. SQL>create table test(pro... 阅读全文
ORACLE 中NUMBER类型默认的精度和Scale问题
2017-06-07 16:06 by 潇湘隐者, 54689 阅读, 收藏, 编辑
摘要:
在ORACLE数据库中,NUMBER(P,S)是最常见的数字类型,可以存放数据范围为10^-130~10^126(不包含此值),需要1~22字节(BYTE)不等的存储空间。P 是Precison的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过38个有效数字。S是Scale的英文缩写,表示从小数点到最低有效数字的位数,它为负数时,表示从最大有效数字到小数点的位数。有时候,我们在创建表的时候,... 阅读全文
ORACLE中死锁的知识点总结
2017-06-01 12:20 by 潇湘隐者, 20796 阅读, 收藏, 编辑
摘要:
死锁的概念 什么是死锁呢? 其实我们生活中也有很多类似死锁的例子。 我先举一个生活中的例子:过年回家,父亲买了一把水弹枪,儿子和侄子争抢着要先玩,谁也不让谁,拆开包装后,一个抢了枪, 一个逮住了子弹和弹夹。两个都争着要先玩,但是都互不相让。结果两个人都玩不了。如果儿子要先玩,就必须让侄子把子弹和弹夹给他,如果侄子要先玩,就必须让儿子把枪给侄子。他们就这样对峙了十几分钟,互不相让。 ... 阅读全文
Linux平台下RMAN异机恢复总结
2017-05-29 16:30 by 潇湘隐者, 19997 阅读, 收藏, 编辑
摘要:
下面总结、整理一下RMAN异机恢复这方面的知识点,这篇笔记在个人笔记里面躺了几年了,直到最近偶然被翻看到,遂整理、总结一下。如下所示,个人将整个RMAN异机恢复分为准备工作和操作步骤两大部分。当然,准备工作里面,有些步骤不是必须的,可以跳过或忽略的。这个取决于你的实际环境和你对RMAN异机恢复的熟悉程度。 准备工作 1:了解一下目标服务器与源服务器的操作系统版本信息 需要对比一下目标... 阅读全文
ORACLE关于段的HEADER_BLOCK的一点浅析
2017-05-15 15:27 by 潇湘隐者, 2956 阅读, 收藏, 编辑
摘要:
在学习段(segment)、区间(extent)时,对段的HEADER_BLOCK有一些疑问,本文记录一下探究的实验过程以及相关总结,,如有不对的地方,敬请指出。以SCOTT.EMP表为例(下面测试环境为Oracle Database 10g Release 10.2.0.5.0 - 64bit Production): SELECT FILE_ID, BLOCK_ID, ... 阅读全文
关系数据库如何快速查询表的记录数
2017-05-09 15:58 by 潇湘隐者, 17718 阅读, 收藏, 编辑
摘要:
在数据库中,很多人员习惯使用SELECT COUNT(*)、SELECT COUNT(1)、SELECT COUNT(COL)来查询一个表有多少记录,对于小表,这种SQL的开销倒不是很大,但是对于大表,这种查询表记录数的做法就是一个非常消耗资源了,而且效率很差。下面介绍一下SQL Server、 Oracle、MySQL中如何快速获取表的记录数。 SQL SERVER 数据库 在S... 阅读全文
ORACLE中关于外键缺少索引的探讨和总结
2017-04-17 15:59 by 潇湘隐者, 4789 阅读, 收藏, 编辑
摘要:
在ORACLE数据库中,定义外键约束时,ORACLE是不会自动创建对应索引的,必须手动在外键约束相关的列上创建索引。那么外键字段上是否有必要创建索引呢?如果有必要的话,巡检时,如何找出外键字段上没有创建索引的相关表,并生成对应的索引的脚本呢? 外键缺失索引影响 外键列上缺少索引会带来三个问题,限制并发性、影响性能、还有可能造成死锁。所以对于绝大部分场景,我们应该尽量考虑在外键... 阅读全文
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor案例2
2017-04-12 13:39 by 潇湘隐者, 286424 阅读, 收藏, 编辑
摘要:
今天使用SQL Developer连接一台测试服务器数据库(ORACLE 11g)时,遇到了“ORA-12514, TNS:listener does not currently know of service requested in connect descriptor”错误,具体提示如下所示: 执行请求的操作时遇到错误: Listener refused the connection ... 阅读全文
关于ORACLE通过file_id与block_id定位数据库对象遇到的问题的一点思考
2017-03-19 00:15 by 潇湘隐者, 4193 阅读, 收藏, 编辑
摘要:
在ORACLE中,我们可以通过file_id(file#)与block_id(block#)去定位一个数据库对象(object)。例如,我们在10046生成的trace文件中file#=4 block#=266 blocks=8,那么我可以通过下面两个SQL去定位对象 SQL 1:此SQL效率较差,执行时间较长。 SELECT OWNER, SEGMENT_NAME, ... 阅读全文
ORACLE的Dead Connection Detection浅析
2017-01-17 12:27 by 潇湘隐者, 4127 阅读, 收藏, 编辑
摘要:
在复杂的应用环境下,我们经常会遇到一些非常复杂并且有意思的问题,例如,我们会遇到网络异常(网络掉包、无线网络断线)、客户端程序异常(例如应用程序崩溃Crash)、操作系统蓝屏、客户端电脑掉电、死机重启等异常情况,此时数据库连接可能都没有正常关闭(Colse)、事务都没有提交,连接(connections)就断开了。如果遇到这些情况,你未提交的一个事务在数据库中是否会回滚? 如果回滚,什么条... 阅读全文
ORACLE从共享池删除指定SQL的执行计划
2016-12-29 11:14 by 潇湘隐者, 7961 阅读, 收藏, 编辑
摘要:
Oracle 11g在DBMS_SHARED_POOL包中引入了一个名为PURGE的新存储过程,用于从对象库缓存中刷新特定对象,例如游标,包,序列,触发器等。也就是说可以删除、清理特定SQL的执行计划,这样在特殊情况下,就避免你要将整个SHARED POOL清空的危险情况。例如某个SQL语句由于优化器产生了错误的执行计划,我们希望优化器重新解析,生成新的执行计划,必须先将SQL的执行计划从共享池中... 阅读全文
SQL*Plus生成html文件
2016-12-27 12:12 by 潇湘隐者, 3182 阅读, 收藏, 编辑
摘要:
最近使用SQL*Plus命令生成html文件,遇到一些有意思的知识点,顺便记录一下,方便以后需要的时候而这些知识点又忘记而捉急。好记性不如烂笔头吗! 为什么要用SQL*Plus生成html文件? 有些人肯定会问,我使用SQL*Plus为什么要生成html文件呢? SQL*Plus本身就是一个命令工具,生成html文件有必要吗? 下面是个人的一些看法,如有不对,敬请指正: 有很大一部分ORA... 阅读全文
PMON failed to acquire latch, see PMON dump
2016-12-23 12:18 by 潇湘隐者, 5177 阅读, 收藏, 编辑
摘要:
前几天,一台Oracle数据库(Oracle Database 10g Release 10.2.0.4.0 - 64bit Production)监控出现"PMON failed to acquire latch, see PMON dump"错误,连接数据库出现短暂异常,告警日志中具体错误如下所示: Tue Dec 20 09:13:16 2016PMON failed to acquire... 阅读全文
ORACLE中STATUS为INACTIVE但是SERVER为SHARED状态的会话浅析
2016-12-15 16:46 by 潇湘隐者, 2702 阅读, 收藏, 编辑
摘要:
我们知道当ORACLE数据库启用共享服务器模式时,通过共享服务器模式连接到数据库的会话是有一些特征的。在v$session里面,其SERVER的状态一般为SHARED和NONE, 为SHARED时,表示当前会话正在执行SQL语句,其占用共享服务器进程,会话的STATUS状态为ACTIVE;当会话状态STATUS处于INACITVE时,它的SERVER字段值一般为NONE,意味着此时并没有共享... 阅读全文