自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Colin Lau Oracle

Striving for Optimal Performance

  • 博客(53)
  • 收藏
  • 关注

原创 Hive优化

1. 概述1.1 hive的特征:可以通过SQL轻松访问数据的工具,从而实现数据仓库任务,如提取/转换/加载(ETL),报告和数据分析; 它可以使已经存储的数据结构化; 可以直接访问存储在Apache HDFS或其他数据存储系统(如Apache HBase)中的文件; Hive除了支持MapReduce计算引擎,还支持Spark和Tez这两种分布式计算引擎; 它提供类似sql的查询语句HiveQL对数据进行分析处理; 数据的存储格式有多种,比如数据源是二进制格式,普通文本格式等等;1.2

2020-07-08 23:16:35 439

原创 oracle 10g废材参数 log_archive_start

SQL> show parameters log_archive_start; NAME TYPE VALUE------------------------------------ ----------- ------------------------------log_a

2012-07-20 14:42:48 1155

原创 使用alter database datafile 'XXX' offline drop 是否能够恢复(非归档模式下)

今天在群里面听到一位网友在说使用了alter database datafile 'XXX' offline drop命令是否能够恢复数据,在非归档模式下,下面是用一个实验来验证一下 SQL> create tablespace test datafile '/u01/app/oracle/oradata/orcl/test01.dbf' size 10M autoextend on next 1

2012-07-11 16:16:30 11339

原创 等待时间 single-task message

昨天在快要下班的时候,我的同事突然碰到一个问题,说一个只需要执行几十秒钟的procedure,居然跑了半个小时都还没有完。我不相信,然后我也去跑了一下,果然是这样,由于当时马上下班啦,我就跟我同事说,我明天来帮你看。最开始我以为是锁表的原因,跑这个procedure,查看v$locked_objects为空,没有一条记录,,然后再查看当前session如下: 发现有条sql

2012-07-04 10:35:56 8102

转载 linux if语句内判断参数

shell 编程中使用到得if语句内判断参数–b 当file存在并且是块文件时返回真-c 当file存在并且是字符文件时返回真-d 当pathname存在并且是一个目录时返回真-e 当pathname指定的文件或目录存在时返回真-f 当file存在并且是正规文件时返回真-g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真-h 当file存在并且是符号链接文件时返回真

2012-06-04 16:33:00 812

原创 Windows无法连接到选定网络,网络可能不在区域中

今天在连接无线的时候,第三方的无线网络可以连接,但是同事自己建的无线网络始终连接不上。问题描述:Windows无法连接到选定网络,网络可能不在区域中。请刷新可用网络的列表,重新尝试。问题原因:路由器设置的加密方式为wp2,windows XP SP2以下的版本不支持这种加密方式。解决方法:路由器设置了密码。改一下设置密码的方式,路由有三四种加密方式。如果还不行,这个问题的原因可能是

2012-04-18 11:22:23 10526

转载 ANSI语法-join小节

A Inner join:返回所有符合条件的行,不包含不一致的行。A.1 Natural Join:要求有同名同数据类型的列名,在使用的时候不能运用表的别名,可以连接多个表。Select * from table_a natural join table_b;A.2 Join using:有同名但数据类型不一致的列名,可将列名加在using后。也不能使用表的别名。Select

2012-04-12 11:27:25 2123

转载 oracle的show_space存储过程

在tom大师的记录中看到使用show_space,这里展示上面的代码create or replace procedure show_space(p_segname   in varchar2,                                       p_owner     in varchar2 default user,

2012-03-30 17:01:59 878 1

转载 db block gets&&consistent gets&&physical reads

db block get s : number of data blocks read in CURRENT mode ie) not in a read consistentfashion, but the current version of the data blocks. 产生db_block_gets的主要方式:1.DML like Update, Delete will nee

2012-03-30 15:49:50 733

原创 VIEW新的理解

create table test1 as select * from dba_objects where object_id test1有38笔数据create table test2 as select * from dba_objectscreate table test3 as select * from dba_objectscreate table test4 as s

2012-03-28 11:22:58 552

原创 动态行转列

在开发过程中,很多时候并不知道有多上行转换为列,所以只有通过动态来进行转换。下面是我在工作中的一个简答例子(其实行转列的动态sql无非就是拼sql语句,然后通过游标的方式进行读取转换):CREATE OR REPLACE PROCEDURE P_TEST_LIUHC(CYCLE_DATE IN VARCHAR2)AUTHID CURRENT_USERIS V_SQL VARCHAR

2012-03-26 16:37:12 3051

原创 'alter system switch logfile' 和 'alter system archive log current'的区别

首先看一下文档上面的定义:ALTER SYSTEM SWITCH LOGFILE V.S. ALTER SYSTEM ARCHIVE LOG CURRENT ===========================================================ALTER SYSTEM SWITCH LOGFILE ;SWITCH LOGFILE Clause

2012-03-02 16:09:44 1705

原创 索引失效原因总结

今天一个同事突然问我索引为什么失效。说实在的,失效的原因有多种:但是如果是同样的sql如果在之前能够使用到索引,那么现在使用不到索引,以下几种主要情况:1. 随着表的增长,where条件出来的数据太多,大于15%,使得索引失效(会导致CBO计算走索引花费大于走全表)2. 统计信息失效      需要重新搜集统计信息3. 索引本身失效      需要重建索引下面是一些不会使用到索

2012-02-28 10:38:23 53470 3

转载 EXP,EXPDP数据导入本地性能测试

大家都知道,Oracle数据库有两种比较方便的导出导入工具,那就是exp/imp和expdp/impdp。熟悉此工具的人也会了解到,exp/imp的使用(服务器端和客户端都可以执行,并且备份文件可以在客户端产生);expdp/impdp的使用(服务器端和客户端都可以执行,备份文件只能存在服务器里面)。         但鉴于导出导入工具的特点,我们就想能否通过expdp将远端数据库数据

2012-02-13 16:05:03 1496

转载 执行计划 - EXPLAIN PLAN产生的操作和选项值

AND-EQUAL.接受多组rowid的操作,返回集合的交集,消除重复。用于在单列索引访问路径。BITMAPCONVERSIONTO ROWIDS:转换位图表示为的可用于访问表的实际rowid。FROM ROWIDS:转换rowids为位图表示。COUNT:如不需要实际值,返回ROWIDs数量。BITM

2012-02-08 14:42:09 2023

原创 不能取代的analyze

话说对表分析有两种方式,一种是用analyze,另外一种是用dbms_stat,目前来看大多数情况都使用后者,主要原因是可以使用并行。但是昨天我在对表查看是否高水位的时候(我腻断肯定高水位),使用dbms_stat不能查看表是否高水位,最后还得看analyze。使用dbms_stat搜集统计信息之后SQL> SELECT TABLE_NAME,NUM_ROWS,BLOCKS,EMPTY

2012-02-02 15:40:11 621

原创 如何创建合适的索引

索引的创建直接关系到执行sql语句的好坏,下面举个实例:SELECT SR_KPI_TYPE,       SR_ASSESS_TYPE,       SR_BSS_ORG_ID,       SR_BSS_ORG_NAME,       SR_CHANNEL_TYPE_ID,       0                   GZ_HSL_AMOUNT_CUR,

2012-01-31 17:01:07 927

原创 RMAN如何恢复到指定时间点

1. 首先提一点,刚才在群里面看到一条信息,问oracle默认的固定排序是根据什么排的,给出下面的实例就知道啦:从上面结果查询知道oracle默认的排序方式时按照rowid升序排列的。2. RMAN如何恢复到固定时间:在做restore和recover之前指定时间点:如run{set until time "to_date('2010-3-10 13','yyyy-mm

2012-01-06 10:41:19 6634

原创 flashback恢复表数据被错误update

在之前的项目实施过程中,一个同事跟我说了一个现象,说一不小心把表的某一列所有数据给update,并且已经提交,搞得他焦头烂泥的,最后他的解决方案着实把我吓到拉,他说幸运的是还可以从其他表中恢复,因为这一列的数据跟另外一张表的数据是一样的。最后,我直接跟他说,我只需要一条语句就可以解决。下面通过示例来看一下:先创建一张临时表: 查看系统时间,当然这个时间可以是大概时间,在实际过程

2011-12-31 14:08:57 1263

原创 ORA-01092:ORACLE instance terminated. Disconection forced

重建undo表空间之后,发生数据库不能正常启动,报错ORA-01092: ORACLE instance terminated. Disconnection forced查看日志文件原来是报错ORA-30012undo表空间不存在,重建表空间之后,表空间的名称跟之前不一样。解决方案:修改启动pfile,重建spfile()不能直接修改spfile

2011-12-30 11:26:27 1286

原创 IMP导入常见错误及解决方法

在做IMP导入的时候经常会碰到一些常见的错误,我在这里列举出来,希望有所帮助1. IMP-00017: 由于 ORACLE 错误 957, 以下语句失败: 创建表时,出现中文字符列名导致imp报错。导出端和导入端的字符集不一样, 解决方法   导入端使用american2. IMP-00003: 遇到 ORACLE 错误 604ORA-00604: error occurred

2011-12-29 16:45:08 27107

原创 ORA-19502 write error on file '/u01/'

今天在创建表空间的时候突然报如下错误:先查看数据库版本 原因是因为磁盘空间不足,查看磁盘空间只剩下135M,所以只能创建130M的数据文件.再次查看磁盘空间我的虚拟机只有可怜的5M可以使用,悲泣,只有从xp系统中抽取一部分空间到VM来。

2011-12-29 15:46:08 2751

原创 ORA-00257 archiver error.connect internal only,until freed

今天在做imp的时候突然跳出来这个错误:用sys登陆查看数据库是否处于归档模式:我靠,sys进不去,有新的错误ORA-09817,但是出现了关键错误 Linux Error: 28: No space left on device;查看系统空间使用情况:根目录/ 使用100%,使用满啦,为什么会突然满呢,我做imp只有100多M,查看系统日志:

2011-12-29 12:11:12 1999

原创 arraysize和consistent get的关系

首先看一下两个词的定义arraysizeArraysize specifies how many rows SQL*Plus will fetch in a call. The number n can be between 1 and 5000.arraysize定义了一次返回到客户端的行数,当扫描了arraysize 行后,停止扫描,返回数据,然后继续扫描。所以假如一个数据块超过A

2011-12-26 17:07:52 909

原创 v$access 与 v$locked_object 的区别

在开发过程中,很多时候都会遇到锁表,我们都还去查看v$locked_object这张表,但是另外一张表v$access这张表有的时候也会使用到,下看一下这两张表的定义:V$LOCKED_OBJECT lists all locks acquired by every transaction on the system. It show which sessins are holding DML

2011-12-20 14:28:34 7859 1

原创 ORA-04043 存储过程不能删除

今天早上突然收到同事一个询问,说遇到一个灵异事件,存储过程不能删除。我去查看一下情况:SQL> drop procedure  P_Information_Copy;drop procedure  P_Information_CopyORA-04043: object P_Information_Copy does not exist在pl/sql中直接删除也是报P_Informa

2011-12-14 12:32:00 6415

转载 oracle 所有 hint

oracle 10g 有64个hints , 11g 增加到71 个, 下表中红色的代表已经过时的, 粗体的是11g 新增.Optimization Goals and Approaches (2)Access Path Hints (17)Other (20)Join Operation (7)ALL_ROWSFIR

2011-12-13 14:55:53 1035

原创 oracle执行计划中的filter

filter这个操作在《Cost Based Oracle Fundamental》此书第九章有介绍。filter的操作是对外表的每一行,都要对内表执行一次全表扫描,所以很多时候提到filter都会感到可怕。他其实很像我们熟悉的neested loop,但它的独特之处在于会维护一个hash table。其实filter 的性能实际上跟列值distinct数有关,oracle在执行的时候实际上做了很

2011-11-30 15:07:56 14458 1

原创 oracle三组难缠的hint no_unnest/unnest,push_subq,push_pred

最近在看一个哥们优化sql里面,使用到了几个特殊的hint,但我总是对此不解,所以针对此问题自己做了一些测试(参考了一些资料) 1. no_unnest, unnest unnest我们称为对子查询展开,顾名思义,就是别让子查询孤单地嵌套(nest)在里面。 所以un_unnest双重否定代表肯定,即让子查询不展开,让它嵌套(nest)在里面。 如果一个查询中的where 中出现

2011-11-30 11:58:14 6013

原创 磁盘空间不足(三)重建undo表空间

有的时候导致磁盘空间不足的是因为undo表空间增长迅速导致的,这个时候我们可能需要通过重建undo表空间来shrinkundo表空间,下面介绍一下操作步凑:1. 检查数据库占用情况如果发现undo表空间占用很大,那么这里就需要shrink undo表空间。2. 确认shrink的undo表空间  3. 检查UNDO Segment状态SQL> SELECT

2011-11-29 12:42:08 1277

原创 磁盘空间不足(二)

今天早上刚到公司,就被分公司的抓到说不能通过pl/sql登陆数据库,我马上问他们加磁盘空间没有,他们说还没有,这里真想BS一下电信的工作效率。好啦回归正题,我马上登陆系统查看情况,再一次提示磁盘空间满,并且查看数据库status为mount,根本无法启动数据库。我分析了一下这次磁盘占用空间的情况,前一次已经查看了tablespace使用情况很正常,并且挂在另外一个盘的tempspace也有剩余,查

2011-11-29 11:44:53 856

原创 磁盘空间不足(一)

项目进入白热化阶段,各种问题都有可能出现,当每个人都在忙碌着做自己的事情时,突然一个分公司的支撑人员突然告诉我,当她插入数据的时候报错:磁盘空间不足。这个时候我马上上server上面去看,果然只剩下可怜的40M,1.5T的空间全部洗白。我马上查看表空间的使用情况,很悲剧的是空间不足。  这个时候咋办呢,我把udump下面的文件全部干掉(这些文件一般在单个进程出问题的时候我才会去查看)。干掉之后

2011-11-29 10:53:00 1196

原创 TNS 标示符不能含有空格

最近项目上的问题还真多,练平时没在意的TNS都出问题,真的是扯淡。之前我一直都是把配置好的TNS 直接发给他们,都没有出问题,这次突然发给一位雅安的美妹就出问题啦,这问题也很怪,TNS里面都没有问题,结果还是报ORA-12154:无法解析指定的链接标示符。 后来查找网上的资料才发现,TNS里面不能第一行标示符不能出现空格,否则就会报错ORA-12154.>注意查看上

2011-11-28 10:41:40 795

原创 使用merge into优化update语句

最近项目进入白热化阶段,在工作忙碌之余,突然收到一个同事的请求,说表里面只有20多万行的数据,使用update语句,已经跑了30分钟,为什么还没有出结果。我就马上把他的语句拿来看:查看一下执行计划:执行计划是old version,重新建一下plan_table表: 存在资源繁忙,我把刚才执行的语句关闭掉就OK,现在从新看一下执行计划:现在可

2011-11-28 10:18:54 1369

原创 通过锁定统计信息来锁定执行计划

今天在群里面看到一个消息。提问是这样的  他认为oracle 10g很痛苦,随着数据量的变化,sql的执行计划在不停的改变,导致同一个存储过程,时间点不同,执行效率就不同.他的问题是有没有好的方法让执行计划不改变,个人认为是锁定统计信息。如何锁定统计信息,下面来分布说明:1. 首先收集统计信息:BEGIN  DBMS_STATS.GATHER_TABLE_STATS(own

2011-11-15 12:03:21 3032

转载 AWR之response time

一般来说,调优的第一手资料,很可能就是典型业务期的一个AWR报告,那么如何根据AWR报告来判断是哪些SQL消耗了最多的系统资源?哪些SQL是最需要调整的呢?这里给出了一个大致的优化思路。当然,思路是死的,人是活的,优化也需要随需应变。一般来说,需要关注下面四种Top SQL消耗最多CPU的(逻辑IO过多) 导致过多物理I/O的 执行次数较频繁的 执行时间较长的 我们知道,一个语句的

2011-11-15 11:16:40 1455

原创 使用with as优化sql解决filter

最近一个地市的报表系统老是说数据出得慢,基本上要到中午才能出数据,但是查看过程是比较简单的。后来发现一条sql有问题,居然要跑5个多小时。查看跑2个小时以上的sqlSELECT SQ.SQL_TEXT,       S.SQL_ID,       S.SID,       S.SERIAL#,       S.LAST_CALL_ET,       TO_CHAR(S.

2011-11-10 10:52:21 3781 1

原创 ORACLE几种表连接方式的区别

在查看执行计划中,大家熟知的oracle表的连接方式有几种主要表连接嵌套循环连接 排序合并连接 哈希连接三种,具体的如何使用这里就不用分析啦,google一下多得数不清楚,下面在这里通过表格来说明一下他们几个之间的区别类别嵌套循环连接排序合并连接哈希连接优化器提示        USE_NLUS

2011-11-03 13:29:10 4541

原创 ORA-03117: 双工保存区域上溢

今天下午在上班的时候,碰到一个从来没有碰到过的问题, ORA-03117: 双工保存区域上溢,看到这个错误太茫然啦,后来在论坛上面找了一些资料关于这个错误的,在这里分享一下:SQL> select * from v$version;BANNER----------------------------------------------------------------Oracle

2011-11-02 17:30:56 4654

原创 如何估算oracle内存(SGA篇)

一般情况下,在系统稳定之前,是不知道SGA和PGA该调整为多少。在这里根据经验,在调整系统的时候有个规则。SGA 通常情况下不能大于memory的50%, 另外oracle推荐得有一个分配规则,oracle推荐分配给oracle实例的内存为物理内存的80%。比如8GB的物理内存,按照Oracle的推荐,分配给Oracle实例的内存大约为6.4G(8*80%),对于OLAP应用来说,分配给SGA的值

2011-11-02 14:07:29 8978 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除