打对了

实践Oracle优化技术在医疗信息化中的深入应用,探索医院信息系统性能优化设计之道。公众号:医信系统性能优化。

 

随笔分类 -  Oracle

上一页 1 2 3 下一页

对表的pctfree和pctused两个参数进行估算的方法
摘要:对于不同的应用系统,表的pctfree 和pctused两个参数有不同的设计原则,以下是根据特定的应用系统进行估算的例子,从中可以掌握基本的估算方法。 表的存储参数调整,一般情况,设置为pctfree 5 pctused 85即可(缺省为pctfree 10 pctused 40)1.对于Pctfree参数除了可以按字段及字段长度估算平均行长外,下面的方面可以根据已有数据分析出平均行长和每块行数例... 阅读全文

posted @ 2006-11-23 17:11 知道得越多知道的越少 阅读(2410) 评论(2) 推荐(0)

dbms_stat与analyze的区别
摘要:自从Oracle8.1.5引入dbms_stats包,Experts们便推荐使用dbms_stats取代analyze。 理由如下 dbms_stats可以并行分析 dbms_stats有自动分析的功能(alter table monitor ) analyze 分析统计信息的不准确some times 1,2好理解,且第2点实际上在VLDB中是最吸引人的;3以前比较模糊,看了metalin... 阅读全文

posted @ 2006-11-12 21:49 知道得越多知道的越少 阅读(2009) 评论(0) 推荐(1)

SESSION_CACHED_CURSORS参数对性能的意义
摘要:SESSION_CACHED_CURSORS,就是说的是一个session可以缓存多少个cursor,让后续相同的SQL语句不再打开游标,从而避免软解析的过程来提高性能。(绑定变量是解决硬解析的问题) 软解析同硬解析一样,比较消耗资源.所以这个参数非常重要. Oracle 9i及以前,该参数缺省是0,10G上缺省是20 阅读全文

posted @ 2006-11-11 17:21 知道得越多知道的越少 阅读(1797) 评论(0) 推荐(0)

Select什么时候会产生重作日志
摘要:在进行块清除的时候,如果是一个大事务,就会进行延迟块清除块清除就是删除所修改数据块上与"锁定"有关的信息,即事务信息 Oracle在事务相关的提交列表中,记录下已修改的块列表,每个列表记录20个块,根据需要可能分配有多个这种列表.这种块列表有一个上限,就是缓冲区缓存大小的10%.如果一次修改的块,没有超过了缓冲区缓存大小的10%,并且这些块在内存中,则commit时,会清除块上的事务信息,否则,就... 阅读全文

posted @ 2006-11-11 13:11 知道得越多知道的越少 阅读(636) 评论(0) 推荐(0)

怎样查看存储过程当前正在被哪些用户使用
摘要:表的使用状态可以通过查锁的情况来了解,但是存储过程的使用怎么监控呢? Oracle提供了建立在神秘的X$表基础上的一个特殊视图:DBA_DDL_Locks 要使用这个视图需要先运行一个脚本: rdbms/admin/catblock.sql 阅读全文

posted @ 2006-11-06 18:16 知道得越多知道的越少 阅读(825) 评论(0) 推荐(0)

如果一个触发器中只有一条Null语句,是否会产生日志?为什么?
摘要:是否产生日志,以及产生多少日志,应区分:三种不同的触发器(Befor,After,Instead),三种不同的DML操作(Insert,Update,Delete),两类Oracle版本(9i及以下,10G)区别来说. 触发器中的什么都不执行也可能产生日志,并且某些情况下产生大量的额外日志,影响性能. 主要情况如下:1.Befor和After触发器在9i及以下进行Insert操作会额外增加近3倍的... 阅读全文

posted @ 2006-10-17 10:50 知道得越多知道的越少 阅读(652) 评论(0) 推荐(0)

关于Tom的新书
摘要:最近在看Tom的新作看了一半左右,基本上是新瓶装旧酒,算是的升级版,不过,还是有一些关于9i和10g方面的新东西.关于触发器对重作日志的影响这一点,研究得确实很细,但是发现两本书在同一个问题的实验结果有一个地方表述不一致估计确实是因为这个问题比较复杂,TOM被搞晕了.具体就是:10g以前,update操作会受before触发器的影响,产生额外的日志,而不受after触发器的影响新书307页的总结表... 阅读全文

posted @ 2006-10-17 10:43 知道得越多知道的越少 阅读(421) 评论(0) 推荐(0)

原来这种情况下的全表扫描不是真的全表扫描
摘要:看到我们的程序中较多的使用类似下面的语句来取得字段类型等信息,一看执行计划,紧张了一下,全表扫描 后来通过多次试验才发现,这种全表扫描是假的,它不读数据,所以不耗资源. (注意:第一次执行时,会较多的递归SQL,造成逻辑读存在的假象,所以需要第二次以上执行后观察) SQL> select * from 病人信息 where rownum select * from 病人信息 where 病人id=... 阅读全文

posted @ 2006-09-19 13:22 知道得越多知道的越少 阅读(443) 评论(0) 推荐(0)

授权操作引发存储过程重编译
摘要:公司产品中的授权操作将涉及大量的存储过程授权,此操作将会使这些存储过程重编译,如果此时并发会话很多的话,可能正在执行某些存储过程,授权操作就会被卡住,表现为等待时间加长. 可能你会觉得奇怪授权怎么会导致过程重编译呢?事实上Oracle正是这样做的,grant,revoke与alter procedure操作一样,都会导致存储过程重编译. 前两天看到盖国强分析buffer cache latch的一... 阅读全文

posted @ 2006-08-11 10:15 知道得越多知道的越少 阅读(476) 评论(0) 推荐(0)

强制刷新Buffer Cache的几种方法
摘要:很多时候,我们在做一些试验中,需要清空数据缓冲区,以便显示正确的物理读和逻辑读 据我所知,有下面三种方法,你知道还有哪些方法吗?(除了重启数据库) 1.表空间脱机再联机的方法alter tablespace xx offline;alter tablespace xx online; 2.在Oracle9i里,Oracle提供了一个内部事件,用以强制刷新Buffer Cache,其语法为:alte... 阅读全文

posted @ 2006-07-13 11:23 知道得越多知道的越少 阅读(1951) 评论(0) 推荐(0)

对latch的一点理解
摘要:我们在一些书藉和电子文档对latch的介绍,一般的解释都是翻译过来的,缺乏本地化的理解介绍. 轻量级的内存保护机制,栓(闩)锁等,各种解释,让人很难有直观,透彻的理解. 我觉得,如果把对表的lock的理解与对latch的理解联系起来的话,就很容易了. 为了解决并发冲突,Oracle通过lock来对表进行并发控制,但区别于SQL Server等数据库很重要的一点就是:Oracle读取数据(Selec... 阅读全文

posted @ 2006-06-30 14:21 知道得越多知道的越少 阅读(813) 评论(0) 推荐(0)

8174上占用CPU过高('CPU used by this session' has high value)
摘要:Oracle v8174 在启用了statspack的自动作业后,发现Statspack报告中出现了下面的信息: Instance Activity Stats for DB: INSIDE Instance: inside Snaps: 17 -19 Statistic Total per Second per ... 阅读全文

posted @ 2006-06-29 14:25 知道得越多知道的越少 阅读(920) 评论(0) 推荐(0)

在statspack显示完整的SQL
摘要:用spreport.sql生成statspack文件时,其中的SQL语句只显示了5行,往往显示不完整,有时又需要完整的SQL来进一步分析SQL的性能问题.以前一直不知道怎么办,今天查资料找到了解决办法. 对于8i,直接修改spreport.sql文件中的下面这一句,把5改为20等更大的值 define num_rows_per_hash=5; 对于9i以上,是修改这个文件中的值\rdbms\adm... 阅读全文

posted @ 2006-06-28 18:31 知道得越多知道的越少 阅读(524) 评论(0) 推荐(0)

使用全文检索的intermedia索引时遇到ORA-03212问题的解决
摘要:Bug系统中按反馈描述或处理情况的关键字查询,有时会找不到,但明明有这样的记录.后来,查到是因为该搜索使用了Oracle的intermedia索引,该索引需要定期重建和收集,但自动任务失效了. 查到那个执行失败的过程,手工执行时出现了如下错误:ORA-03212 : Temporary Segment Cannot Be Created In Locally-Managed Tablespace进... 阅读全文

posted @ 2006-06-07 19:17 知道得越多知道的越少 阅读(589) 评论(0) 推荐(0)

位图索引深度探讨
摘要:一.什么是位图索引我们目前大量使用的索引一般主要是B*Tree索引,在索引结构中存储着键值和键值的RowID,并且是一一对应的.而位图索引主要针对大量相同值的列而创建(例如:类别,操作员,部门ID,库房ID等),索引块的一个索引行中存储键值和起止Rowid,以及这些键值的位置编码,位置编码中的每一位表示键值对应的数据行的有无.一个位图索引块可能指向的是几十甚至成百上千行数据的位置. 这种方式存储... 阅读全文

posted @ 2006-05-29 13:46 知道得越多知道的越少 阅读(1332) 评论(3) 推荐(0)

Oracle8i 函数索引实验
摘要:Oracle自8.1.5版开始支持基于函数的索引,但仅在8i的企业版和个人版中支持,标准版不支持.使用基于函数的索引,可以在某此情况下加快查询速度. 下面以一个例子来详细说明.病人姓名要求支持按简码查询,目前病人信息表没有简码这个字段,如果在程序中直接调用zlspellcode(姓名)进行查询的话,会进行全表扫描,就比较慢.如果要在不增加字段的情况下,实现索引查找,就可以利用函数索引来实现. --... 阅读全文

posted @ 2006-04-15 13:57 知道得越多知道的越少 阅读(1143) 评论(0) 推荐(0)

SQL Trace的使用示例
摘要:SQL Trace的方法有好几种,详细可以参考http://www.eygle.com/case/Use.sql_trace.to.Diagnose.database.htm下面介绍一个基本的详细操作过程.以sys用户登录SQL PLUSSQL> alter system set timed_statistics=true; 查询获得需要跟踪的session信息:SQL> select sid,s... 阅读全文

posted @ 2006-04-13 16:54 知道得越多知道的越少 阅读(883) 评论(0) 推荐(0)

Wrap加密Oracle 存储过程,函数,包遇到的问题
摘要:E:\>wrap iname=t1.sql oname=t13.plbkgepop: no error frame to pop to for error 1801遇到上面的错误,查资料发现是因为客户端字符集的问题,在CMD下执行set nls_lang=american_america.usascii7然后,再运行就行了.如果,过程,函数,包中的对象名称含中文的话,使用引号引起来,否则会出现下面... 阅读全文

posted @ 2006-04-07 19:17 知道得越多知道的越少 阅读(1736) 评论(0) 推荐(0)

Oracle性能误区--MTS,RAC,分区,并行查询
摘要:为了提高性能,我们针对Oracle数据库本身提供了的方法或方案进行过不少的偿试主要包括:共享服务器模式(MTS)集群技术(Clustering),RAC 分区并行处理(主要是并行查询) Oracle提供的这些特性确实是用来进行性能改善的,但我们往往忽略了对自身应用特性的分析,它们是否适合于我们.最近,通过对这方面知识的深入了解,发现我们以前存在一些错误的认识.我觉得有必要,大家一起来改变这种误解... 阅读全文

posted @ 2006-04-06 14:27 知道得越多知道的越少 阅读(2048) 评论(0) 推荐(0)

在Oracle中重编译所有无效的存储过程
摘要:SQL_PLUS中spool ExecCompProc.sql select 'alter procedure '||object_name||' compile;' From all_objects where status = 'INVALID' and object_type = 'PROCEDURE'; spool off @ExecCompProc.Sql; 整理成一个存储过程Creat... 阅读全文

posted @ 2006-04-04 12:22 知道得越多知道的越少 阅读(798) 评论(1) 推荐(0)

上一页 1 2 3 下一页

导航