【Cache】将常用的“小表”缓存到Buffer Cache
对于那些被经常以全表扫描访问获取数据的“小表”来说,为了提升性能可以考虑将这些表cache在Buffer Cache中。什么样的表可以称其为“小表”呢?例如经常被访问的参数表,此类表通常包含的数据量并不大,经常以全表...
【FLUSH】将Buffer Cache内容强制写出到数据文件
在某些情况下需要手工将Data Buffer Cache写出到数据文件,例如为防止Buffer Cache中的数据对SQL执行性能的影响,为公平起见需要先对缓冲区中的数据清理。在Oracle的不同版本里清理Buffer Cache的方法也略有不同,总...
【参数】使用lock_sga和pre_page_sga参数保证SGA常驻物理内存
通过修改lock_sga和pre_page_sga参数可以保证SGA不被换出到虚拟内存,进而可以提高SGA的使用效率。通过这个小文儿给大家展示一下这两个参数的修改过程,不要太乐观,修改过程是存在“小坎坷”的。当lock_sga参数设置...
【读后感】【Tom】《Effective Oracle by Design》
利用三个月的零星时间“读”完了Tom的这本经典之作《Oracle高效设计》,之所以这里的“读”加了引号,是因为在阅读的过程中完成了大量的实验,这本书秉承着Tom的一贯作风:“用实验来说明问题”,有理有例,甚是精彩...
【优化】使用反向索引(Reverse Key Indexes)减少索引热点块
反向索引就是将正常的键值头尾调换后再进行存储,比如原值是“1234”,将会以“4321”形式进行存储,这样做可以高效地打散正常的索引键值在索引叶块中的分布位置。1.反向索引应用场合1)发现索引叶块成为热...
【表压缩】使用表压缩技术将表所占用空间降低到最小
很多情况下,Oracle默认的表存储策略并不符合我们使用数据的实际情况。例如,在OLAP类型的系统中,数据的使用方式一般是定期批量初始化大量数据,此后的工作便是查询、分析和统计,很少的修改动作。基于这样...
【视图】利用USER_TAB_MODIFICATIONS视图辅助监控表的增删改等操作
USER_TAB_MODIFICATIONS视图记录了当前用户中表自最后一次分析之后所有增、删、改等操作信息。通过对其查询可以得到一个简化版的审计功能效果。因为该视图中记录的信息会因表的分析自动清除,同时Oracle从性能上...
【索引】使用索引分析快速得到索引的基本信息
我们在使用“validate structure”对索引进行分析后,通过查询index_stats可以得到很多有关索引本身的属性信息。通过这个实验简单展示一下几个重要的信息列。1.创建测试表t,在t表的x列上存在主键。2.对索引(主键)...
【优化】INDEX FULL SCAN (MIN/MAX)访问路径
Oracle对单独使用max或min函数时给出了一种非常高效的访问路径,就是“INDEX FULL SCAN (MIN/MAX)”,该方法可以避免索引的全部读取,进一步提高数据结果的获取效率。通过这个实验简单记录一下。1.创建...
【SQLLDR】使用SQL*Loader辅助生成外部表创建语句
如果想使用外部表技术完成数据的加载,一般的步骤如下:1.因为外部表需要directory对象,首先需要创建一个directory数据库对象;2.需要对创建外部表所需的参数和格式非常了解,以便完成外部表创建语句的...
【Direct-Path】直接路径加载提升插入效率及其自身限制
在加载大量数据的时候,可以考虑使用直接路径加载技术来加速。不过该技术本身也存在一些弊端,在使用前需要权衡利弊。本文将通过实验介绍该技术的一些点滴细节,供大家参考。1.初始化实验用表共两张表。表t...
【INSERT】逐行提交、批量提交及极限提速方法
在Oracle数据库中,不是提交越频繁越好。恰恰相反,批量提交可以得到更好的性能。这篇文章给大家简单展示一下在Oracle数据库中逐行提交于批量提交两者之间的性能差别。最后再给出一种可以极大改变性能的方法。1....
【探索】两种查询和删除重复记录的方法及其性能比较
这里我来给出两种查询和删除重复记录的方法,一种是使用rowid辅助完成的,另外一种是借助分析函数的力量来完成的。这两种方法的执行效率相对其他方法是高效的。即便如此,这两种方法之间也有着本质上的...
【SCRIPTS】快速清理Schema中所有表和序列的PL/SQL脚本
如果想要快速的删除一个Schema下的所有数据库对象,您会使用什么样的手段来完成呢?如果您是DBA,可能更倾向于先删除用户然后再重新创建用户。优点:删除的彻底,不留任何痕迹(这是DBA伟大和危险的真实体现)。...
【11gR2】使用runfixup.sh脚本彻底告别曾经琐碎的系统参数设置步骤
Oracle 11gR2数据库安装过程中的一大特色功能是“Fix & Check again”,这个功能极大的简化了在Oracle安装之前对系统参数的繁琐设置,从今儿以后,即使在部署安装之前不对系统参数做任...
【AUTO】配置Oracle数据库和监听随Linux系统自启动
在某些情况下需要在Linux操作系统上提供一种无人值守的随机启动Oracle的功能,目的也许仅仅是为了帮助那些对Oracle细节非常不关心的朋友。当然,如果有可能,一定不要使用这种自动化的方法,因为有太多...
【优化】ALL_ROWS模式和FIRST_ROWS模式的适用场景
在CBO的优化模式下,我们可以使用optimizer_mode参数控制优化模式。主要有两种模式,一种是ALL_ROWS模式,另外一种是FIRST_ROWS模式。ALL_ROWS模式适用场景:希望优化程序给出一种尽快得到全部记录的执...
【比较】CHAR?or VARCHAR2?
一种疑问:在进行Oracle数据库设计时,字符类型的字段我们应该使用什么类型,是CHAR?还是VARCHAR2?一个声音:定长的字符串使用CHAR类型,变长字符串使用VARCHAR2类型。这种声音的通常解释:当字符串的长度...
【参数】使用db_file_multiblock_read_count参数控制全表扫描成本
在CBO优化模式下也是可以调整全表扫面的成本的,通过这个技术可以适当的改变CBO下的SQL执行路径。这个小技术需要用到一个Oracle的一个重要的参数db_file_multiblock_read_count,这个参数控制着Oracle在进行全表...
【Shell】使用Shell脚本快速完成SQL脚本中重复枯燥的任务
通过这个小文儿给大家展示一下shell对SQL脚本批量处理的小小魅力。1.具体需求现有成百上千个SQL脚本文件,每个文件中均包含数量不等的insert语句。为保证在脚本执行过程中有一个比较友好的输出提示,需要在inser...