随笔分类 - 数据库 / Oracle
都已经比较老旧的内容了,很久以前做Oracle DBA时期的总结
摘要:昨天有个同事找我看了一段SQL,说是很慢,我首先看了看执行计划,发现COST很大,但是同时我也发现分区读取的有很大的问题。表示这样的: create table test1 ( day_id number ) partition by range(day_id) ( partition part_0
阅读全文
摘要:最近整理了一下系统内所有表的空间占用情况,发现其中一些表其实只有及万行,却占用了非常大的空间,那么显而易见,这个表的“碎片”实在是太多了。 最开始接触oracle的时候我认为删除数据就是delete,但是后来的学习中,发现事情并不是我想象的那么简单,delete之后,系统也只是将这部分数据块置为可写
阅读全文
摘要:今天有同事告诉我,有个SQL执行了好久好久执行不出来,我说好就是多久?她说一天左右了。真是令人咋舌的SQL。于是我要来了SQL看了看执行计划,确实让人咋舌。 下图中就是执行计划的截图: 25G的COST和75T的Bytes确实是无法承受之重。这个SQL是这样子的: select部分做了很多sum运算
阅读全文
posted @ 2013-03-28 20:30
wingsless
摘要:最近负责起了DBA的部分工作,于是有一天在对表空间的清理中发现了一张表,这个表有27G那么大,是一个分区表,按天分区。我查看了过程,每天删除35天以前的数据,但是用的方法是delete,那么我就可以很明确的推断出,这个表占用了大量本应该释放的空间。 我第一个使用的方法是move: alter tab
阅读全文
摘要:很久以前写了一个关于分区表的博文(http://www.cnblogs.com/wingsless/archive/2012/08/06/2625809.html),后来在实际的工作中发现,我们的存储过程中存在很多这样子的写法: CREATE OR REPLACE PROCEDURE P_TEST_
阅读全文
摘要:前一篇随笔被我写的乱七八糟的,于是新开一块。 从库建好了的准备工作开始写吧。 1 创建表空间: SQL> CREATE TABLESPACE WINGS DATAFILE 'D:\app\user\oradata\oracl\WINGS_F01.DB F' SIZE 50M AUTOEXTEND O
阅读全文
摘要:今天收到一个同事的问题,有一段SQL跑了很久很久,根本没有结果,根据同事的反映,这个SQL一个月比一个月要慢。这是不被允许的事情,我们要做的就是对这个SQL进行一次优化。下面就是这次优化的记录。 首先说SQL: select t.month_id, t1.area_id, t1.local_id,
阅读全文
摘要:我一直不知道到底有没有函数可以实现标题的功能,所以我写了个适合我们业务的。如果大家有更好的,请告诉我。下面是源码: CREATE OR REPLACE FUNCTION REPLACE_POSITION(STR_IN VARCHAR2, POSITION INTEGER, NEW_CHAR VARC
阅读全文
摘要:熬过了月初的匆忙之后终于有一个喘息的机会了。最近又开始接手过去的存储过程的改造工作,我在改造中发现了一些问题,我们的同事写insert语句的时候总是喜欢加上append这个hints。这个习惯的养成应该都是我们那个模板造成的,大家在写的时候也就不去思考为什么要加这个hints了,也不知道加这个hin
阅读全文
摘要:我曾经迷茫于一个问题,为什么有的时候明明有索引,却无法提升效率。后来我在很多书上和论坛上看到,索引分为3种,默认的是B树索引,这个类型的索引在对付重复很多很多的列的时候并没有任何优势,比如性别列这个只有两个值(不排除会有第三值)的列。而这种重复度很高的列在我平时的生产系统中非常多,比如运营商的行政区
阅读全文
摘要:昨天写了一下关于Oracle表压缩的问题(http://www.cnblogs.com/wingsless/archive/2012/09/23/2699309.html),由于时间原因没有具体的实验,只是使用了网上的资料,但是这并不是我的风格,因为网上资料直接拿来转载的多,自己原创的少。所谓事必躬
阅读全文
摘要:这周客户的问题非常多,总是说我的数据不对。于是我对数据梳理了以后发现以前认为是重复数据的,其实并不是,而是我忽略了一个维度。那么这样一来,我们的周详单表就会有500多万的数据。一个月按照4周计算,就要有2000万条数据。而我大概计算了一下,每一个周的分区要占用2G多的存储空间,要知道电信给我们的空间
阅读全文
摘要:前一阵子写了一点有关分区表的东西(http://www.cnblogs.com/wingsless/archive/2012/02/11/2347111.html)。我们的项目限于甲方的抠门,分配给我们的磁盘空间相当的小,因此我们的项目中并不习惯使用索引这个好用的东西,因为索引也是要耗用很大的空间的
阅读全文
摘要:我的项目有一张表,始终是手动导入数据。我接手之前的同事总是喜欢用pl/sql developer,但是我觉得还是黑框框看着有技术含量。 这里顺便就写一下有关sqlldr的简单用法。 有关sqlldr资料比较全面的应该就是帮助了,打出来看一下。 SQL*Loader: Release 11.2.0.1
阅读全文
摘要:DECLARE V_SQL VARCHAR2(1000); V_SQL_HEAD VARCHAR2(100); V_SQL_TAIL VARCHAR2(10); V_DAY VARCHAR2(8); CURSOR C_CUR IS SELECT TO_CHAR((TO_DATE('2012-01',
阅读全文
摘要:declare v_sql varchar2(1000); TABLE_NAME VARCHAR2(100); I_DAY VARCHAR2(8) := '20120611'; I_L_DAY VARCHAR2(8); begin I_L_DAY := TO_CHAR((TO_DATE(I_DAY,
阅读全文
摘要:DELETE FROM table1 WHERE id IN (SELECT id FROM table1 GROUP BY id HAVING COUNT(id) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROM table1 GROUP BY id HA
阅读全文
摘要:学oracle的人总会纠结于各种各样的函数。nvl应该算是一个非常好用的玩意儿。 nvl其实很简单,就是没有就返回一个指定值。 假定一个表中有两列,id和names,id=2的names为null。那么这个语句会返回这样的结果: 1 select nvl(t.names, 'noname') fro
阅读全文
摘要:从今天开始我决定每周抽出一些空闲时间,记录一下Oracle的一些基础知识,也算是方便用baidu和google的人吧。 今天介绍一个非常有数学气息的--连接。 首先介绍我今天需要使用的两张表,test1和test2。test1是学生基本信息表,包括学生的名字和学号;test2是成绩表,有学生学号,成
阅读全文
摘要:很多朋友都问过我优化SQL的事情。我觉得在我不断地鼓励下,很多朋友现在都知道优化SQL之前要先看看执行计划,也在优化中获得了很多快乐。但是今天有人问我执行计划应该怎么看。我觉得这是个值得写一写的东西。 2012年6月21日增加: 我下面的执行计划是怎么打印出来的,很多朋友还是不知道。其实语句只有三条
阅读全文

浙公网安备 33010602011771号