Oracle管理学习笔记
文章平均质量分 62
wingsless
我属于勤奋好学的人,有着很大的工作热情,喜欢在工作中寻找技术带给我的乐趣。
展开
-
有关nologging和append提高插入效率的研究(一)
那天接到一个事情,我们的数据库表空间已经快用完了,我们需要将一个3GB的表里的数据转储到历史表里去,3天干完。但是我们因为是给运营商服务的,所以白天是绝对不能做这个事情的,只能晚上干,这就要求我们必须尽可能的提高效率。有同事提议使用nologging和append提高效率,但是nologging和append是不是能够提高效率呢。我查询了官方文档,有这么一个描述: Conve原创 2011-12-07 22:27:08 · 11050 阅读 · 1 评论 -
对WITH和from(select ...)的一点比较
在之前的工作中,我曾经遇到过表特别大的情况,这个时候我想到了使用with来降低查询的消耗,前文中已经有了描述:http://blog.csdn.net/uncle_six/article/details/7203078。今天我突然想到,其实用with和from (select)应该没有本质的差别。所以做了个小实验。 我的表大概7W行,使用with的SQL语句如下:原创 2012-02-04 21:18:48 · 918 阅读 · 0 评论 -
一周以来的工作学习总结
上周我写了一篇博文,里面有一点关于分区表的论述(http://blog.csdn.net/uncle_six/article/details/7233958)。但是我发现我少写了一点,在你的查询条件和分区列没有太大关系的时候,分区表不会帮助你提高效率。 图1图2 我是按照area_id分区的,图1的执行计划: 图2的执行计划:原创 2012-02-11 21:43:22 · 1229 阅读 · 0 评论 -
简介如何查看执行计划以及执行计划的准确性
很多朋友都问过我优化SQL的事情。我觉得在我不断地鼓励下,很多朋友现在都知道优化SQL之前要先看看执行计划,也在优化中获得了很多快乐。但是今天有人问我执行计划应该怎么看。我觉得这是个值得写一写的东西。 先告诉大家一个原则,看执行计划的时候,从第一行开始向右下看,一直到最右边。如果有并列的,那么先上再下。如果没并列,右边的先执行。 闲话少说,先上图吧:原创 2012-02-24 20:43:29 · 729 阅读 · 0 评论 -
关于分区表的初探
以前我写了一篇博文,里面有一点关于分区表的论述(http://www.cnblogs.com/wingsless/archive/2012/02/04/2338292.html)。但是我发现我少写了一点,在你的查询条件和分区列没有太大关系的时候,分区表不会帮助你提高效率。 图1图2 我是按照area_id分区的,图1的执行计划:原创 2012-09-27 22:18:50 · 584 阅读 · 0 评论 -
再学学表的分区
前一阵子一直在研究着Oracle的表分区的相关知识。在数据量不断扩大的现在,分区技术是一种非常有效的提高效率的技术。 限于业务的原因,我以前每次建立分区表的时候都喜欢用日期进行分区,每天一个range分区。但是突然有一天我遇到了一个很讨厌的表,是一个对应关系表,只有产品和销售品的对应关系,这个样子的表是没有办法建立我最熟悉的range分区的,经过我查阅资料以后我发现hash分区是一原创 2012-09-28 19:34:13 · 777 阅读 · 0 评论 -
一周以来的工作总结
这周客户的问题非常多,总是说我的数据不对。于是我对数据梳理了以后发现以前认为是重复数据的,其实并不是,而是我忽略了一个维度。那么这样一来,我们的周详单表就会有500多万的数据。一个月按照4周计算,就要有2000万条数据。而我大概计算了一下,每一个周的分区要占用2G多的存储空间,要知道电信给我们的空间不过是500G左右,我们大家都在用,我一个人每周消耗2G,显然不合适。 这个时候有原创 2012-09-24 22:32:42 · 701 阅读 · 0 评论 -
一周以来工作总结--关于表的压缩
昨天写了一下关于Oracle表压缩的问题(http://www.cnblogs.com/wingsless/archive/2012/09/23/2699309.html),由于时间原因没有具体的实验,只是使用了网上的资料,但是这并不是我的风格,因为网上资料直接拿来转载的多,自己原创的少。所谓事必躬亲嘛,做个实验。 有两张表,一张压缩(TEST_1)一张不压缩(TEST)。原创 2012-09-24 22:33:25 · 737 阅读 · 0 评论 -
一周以来的工作总结--oracle分区的迁移
这周很平静,没有客户的纷纷扰扰。 前一阵子写了一些有关数据表的压缩的东西,我现在感觉把数据压缩了迁移走,或者直接迁移走也是一种不错的办法。 现在有这样一张表: CREATE TABLE TABLE_1 ( MONTH_ID VARCHAR2(10), AREA_ID VARCHAR2(10), SERI NUMBER原创 2012-10-17 21:52:59 · 1274 阅读 · 2 评论 -
一周以来工作总结--关于位图索引
我曾经迷茫于一个问题,为什么有的时候明明有索引,却无法提升效率。后来我在很多书上和论坛上看到,索引分为3种,默认的是B树索引,这个类型的索引在对付重复很多很多的列的时候并没有任何优势,比如性别列这个只有两个值(不排除会有第三值)的列。而这种重复度很高的列在我平时的生产系统中非常多,比如运营商的行政区列,西安市只有市区,户县,周至,蓝田等几个行政区,这种重复在百万级甚至千万级的表中属高重复的。那么这原创 2012-10-25 20:40:33 · 1056 阅读 · 0 评论 -
一次优化记录
今天收到一个同事的求助,说有一个SQL跑了一个多小时没有结果。我看了看,这个SQL是这样的(隐藏了敏感信息): SELECT 电话号码, 列2, 列3, MAX(STARTTIME), FLAG FROM 表1 T1 WHERE FLAG = '0' AND 电话号码 NOT IN (SELECT 电话号码 FROM 表2 T2) GROUP BY 电话号码, 列2原创 2012-11-23 09:07:14 · 697 阅读 · 0 评论 -
一周工作总结--一次SQL优化记录
今天收到一个同事的问题,有一段SQL跑了很久很久,根本没有结果,根据同事的反映,这个SQL一个月比一个月要慢。这是不被允许的事情,我们要做的就是对这个SQL进行一次优化。下面就是这次优化的记录。 首先说SQL:select t.month_id, t1.area_id, t1.local_id, count(distinc原创 2013-01-08 14:31:06 · 774 阅读 · 0 评论 -
rank() over(partition)的使用
有的时候会遇到这样的问题,我们需要查询一张表,而且要按照业务排序,比如我需要如下的结果: 地区 日期 费用 产品编号 用户编号 290 201202 258 1 s1 290 201202 200 1 s5 290 201202 100 1 s100原创 2012-02-04 21:02:08 · 1204 阅读 · 0 评论 -
使用WITH提高查询效率
前两天的业务需求里需要关联好几张表出一个详单报表,这个需求其实很简单,但是数据量大,源表又不是分区表,就变得很头疼了。 最初我的代码大概是这样子的:select a.id,a.name,a.code,b.type,( select p_name from C c where c.pid = b.pid)from A a, B bwhere a.id = b.id原创 2012-01-15 20:57:52 · 1184 阅读 · 0 评论 -
DBA管理常用SQL(未完待续)
查询锁表: select sess.SID, sess.SERIAL#, sess.USERNAME, decode(l.LMODE, 0, 'none', 1, 'null', 2,原创 2011-12-09 23:32:31 · 514 阅读 · 0 评论 -
OCP题库笔记1z0-052
1 关于undo数据库可以有一个以上的undo表空间;undo段可以自动增长,按需shrink2 关于Oracle Data Dump export和importimport操作同时可以更改表名;可以在export操作期间重写一个存在的dumpfile。3 关于无效索引会被优化器忽略;只能通过rebuild生效。4 关于监听多个监听能原创 2011-12-12 22:17:26 · 937 阅读 · 0 评论 -
如何理解oracle实例(instance)和数据库(database)的概念
今天群里有朋友问什么是instance,什么是database。于是群友七嘴八舌的说了很多很理论很理论的东西,这些东西网上很多,如果提问者能看懂的话也就不问我们了。很显然,提问者刚刚接触oracle,这个问题是困扰oracle新丁的一个常见问题。 我举个通俗易懂的例子,虽然不是很恰当,但是对于初学者理解instance和database很有帮助。 我的C:\下放了一个文本文原创 2011-12-11 10:25:26 · 587 阅读 · 0 评论 -
一次简单的SQL优化给我的经验--索引不可用的情况
有一天我遇到了一个同事的求助,他让我帮忙优化一个SQL,这个SQL执行时间很长。于是我查询了执行计划,发现这个SQL竟然要进行一次全表扫描。当时我查看了表的定义,发现在where子句中的条件列上是建了索引的,那为什么执行计划会显示全表扫描呢。这个问题困扰了我很长时间,于是后来我又看了看表的定义,发现了问题的根本所在,作为条件的字段是varchar,而SQL语句中的条件是一串数字!这样的话就会造成索原创 2011-12-09 23:05:00 · 735 阅读 · 0 评论 -
Linux安装oracle时需要修改的系统参数具体说明
装了无数次oracle,一直都是按照文档更改/etc/sysctl.conf的参数,却从没有想过为什么,这些是什么,今天终于查到了,共享之。 这幅图片上的内容来自于《oracle管理艺术》(台湾地区)申建忠 著 ISBN 978-7-302-24131-7。不敢说这是我原创的,要标明出处。顺便推荐一下这本书,这是一本好书,作者把很多平时我们知道怎么做,但是不知道为什原创 2011-12-10 01:09:10 · 867 阅读 · 0 评论 -
学习绑定变量
学习一下这个有意思的东西。 绑定变量能够有效的降低硬解析。这里需要查询几个视图:v$mystat,v$statname,v$sqlarea。 先查一下现在系统存在的解析数:select name, value from v$mystat a, v$statname b where a.STATISTIC# = b.STATISTIC# and b.N原创 2011-12-10 01:48:13 · 493 阅读 · 0 评论 -
oracle控制文件的一点研究
控制文件是非常重要的文件,实例读取控制文件才能到mount状态。DBA的一个原则就是多路控制文件,今天我就做了个实验,学习了一下这个。 代码如下:alter system set control_files='D:\app\wings\oradata\testdb\CONTROL03.CTL','D:\app\wings\oradata\testdb\CONTROL04.CTL' s原创 2011-12-13 23:08:38 · 418 阅读 · 0 评论 -
SQL语句的执行过程
服务器接收到SQL语句之后,要经过如下步骤完成操作:Parse(解析)—> Bind(绑定)—> Execute(执行)。 画个流程图比较明显的表示了这些过程: 下面说明执行的具体细节: 1 Select(查询) 2 INSERT/DELETE/UPDATE 这些都是对数据进行修改的语句,画个原创 2011-12-13 21:16:03 · 468 阅读 · 0 评论 -
安装oracle时还需要修改的几个文件和参数
安装oracle时还需要修改的几个文件和参数:/etc/security/limits.confnproc:可以开启的进程数量nofile:可以开启的文件数量/etc/pam.d/login,改成这样:#Add for Install Oracle Database 11gsession required /lib/security/pam原创 2011-12-24 23:30:03 · 848 阅读 · 1 评论 -
关于oracle的启动
有这么一道题,是关于在实例启动的时候,哪些文件在某个阶段是不是可以改动的,我觉得这个题是一个很基础的题,对于理解oracle有很大的帮助。于是我就查了一下相关资料,分享一下,适合初学者看。 1 shutdown-->nomount: 读取参数文件,根据参数文件的记录,配置SGA,启动后台进程。这个阶段因为只读取了参数文件,因此能干的事情不少:建立数据库;重建控制文件原创 2011-12-24 22:49:31 · 427 阅读 · 0 评论 -
有关LGWR
今天群里有人问关于数据库进程的事情,当然,他对oracle的后台进程不是很熟悉。当时我举了个例子,是关于LGWR,但是由于我学艺不精,当时只想起来了这个进程会被commit激发,实在是贻笑大方。回来以后查了一下书,于是记录在此,也算是和大家的分享吧。 LGWR被触发的情况: 1 commit。在提交之后,oracle会先把确认信息写到日志缓冲区里,然后再激发LGWR原创 2011-12-28 21:38:11 · 1411 阅读 · 0 评论 -
好用的函数sign和decode
今天遇到了一个问题,需要对比一个字段和5的大小,大于5的输出0,小于五的输出1。如果是用PLSQL编程的话可以用if/else这种逻辑进行判断,但是在SQL里可不能这么写,经过网友推荐,我组合使用了sign和decode,效果很好,代码小清新。 代码如下: DECODE(SIGN(TRUNC(COL1 - COL2) - 5), 1, 0, 1) ONT原创 2012-01-08 00:08:33 · 655 阅读 · 0 评论 -
一周工作总结--左连接造成的一些问题
今天有同事告诉我,有个SQL执行了好久好久执行不出来,我说好就是多久?她说一天左右了。真是令人咋舌的SQL。于是我要来了SQL看了看执行计划,确实让人咋舌。 下图中就是执行计划的截图: 25G的COST和75T的Bytes确实是无法承受之重。这个SQL是这样子的: select部分做了很多sum运算,还有dis原创 2013-03-28 20:28:44 · 1015 阅读 · 0 评论