oracle
swordmanwk
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
发现了《Oracle高效设计》中文版的一个问题
今天发现了《Oracle高效设计》中文版有个很大的问题,第三章体系结构选择少翻译了一节,我从google上搜到了前三章的英文pdf样本,对照中文版,我发现在3.2节利用集群和3.3节了解何时使用分区之间,实际上还有一节,讨论表空间的一节,竟然被漏译了,这种错误是不可容忍的,本来翻译的就不好,还出现这样的问题。原创 2011-02-28 16:44:00 · 1142 阅读 · 0 评论 -
Arraysize的设置以及对查询性能的影响
<br />Arraysize是sql*plus中可以设置的一个参数,这个参数设置的意思表示,sql*plus一次可以从数据库服务器端获取的记录行数。<br />show arraysize<br />arraysize 15<br />可以看到,在SQL*plus中,默认设置是15。有效值是1-5000。按照《Oracle9i Database Performance Tuning Guide and Reference Release 2》的说法,当这个值的设置超过100后,对性能改进基本上不会有多少帮原创 2011-03-20 17:33:00 · 7150 阅读 · 0 评论 -
索引组织表(IOT)和堆组织表的性能对比测试
<br />索引组织表(index organized table,IOT)就是存储在一个索引结构中的表,存储在堆中的表是无组织的,IOT中的数据则按照主键存储和排序。<br />使用堆组织表,Oracle会为表和表主键索引分别留出空间,而IOT则不存在主键的空间开销,因为索引就是数据,数据就是索引,两者已经合而为一了。<br />为了比较IOT和堆组织表的效率,首先创建两张表:<br />create table iot<br />( username varchar2(30),<br /> docum原创 2011-03-22 11:22:00 · 1231 阅读 · 0 评论 -
对IOT进行压缩
对IOT表进行压缩与对普通表进行压缩一样。首先创建一个iot表create table iot( owner, object_type, object_name, constraint iot_pk primary key(owner,object_type,object_name))organization indexNOCOMPRESSasselect distinct owner, object_type, object_name from all_objects/analyze index io原创 2011-03-22 13:56:00 · 938 阅读 · 1 评论 -
对索引组织表(IOT)进行分区
<br />IOT支持分区,包括范围分区,散列分区和列表分区,但不支持组合分区,以下是测试脚本:<br /> <br />范围分区:<br /> <br />CREATE TABLE iot_range_example<br />( range_key_column date ,<br /> object_id number,<br /> data varchar2(20),<br /> constraint iot_range_pk primary key (ra原创 2011-03-23 19:24:00 · 1637 阅读 · 0 评论 -
分析的成本——《Oracle高效设计》学习笔记
<br />Oracle有两类分析:<br />1)硬分析:语句通过语句执行阶段的每一个步骤:从分析到优化、到行资源生成、到执行。<br />2)软分析:语句通过语句执行阶段的某些步骤,而不是每一个步骤。特别是跳过优化步骤(最昂贵的步骤)。<br /> <br />使用绑定变量减少了Oracle硬分析的次数,从而改进了效率:<br />create table t ( x varchar2(5) );<br />exec runstats_pkg.rs_start<br /> <br />declare<b原创 2011-03-27 20:35:00 · 830 阅读 · 0 评论 -
使用分析函数和不使用分析函数的性能对比测试
<br />set autotrace traceonly statistics;<br /> <br />select t1.owner, t1.last_ddl_time, t1.object_name, t1.object_type<br />from big_table t1<br />where last_ddl_time = (select max(last_ddl_time)<br /> from big_table t2<br />原创 2011-03-30 19:44:00 · 834 阅读 · 0 评论 -
使用BULK COLLECT和FORALL来提升性能——《Oracle高效设计》学习笔记
<br />使用PL/SQL中的bulk collect语句,相当于在sql*plus设置araysize,如果使用的恰当,对提高性能会有帮助。<br />先看一个简单例子:<br />exec runstats_pkg.rs_start;<br /> <br />begin<br /> for i in 1 .. 5000<br /> loop<br /> for x in ( select ename, empno, hiredate from emp )<br />原创 2011-03-29 19:12:00 · 2164 阅读 · 0 评论 -
组合分区与范围分区效率对比测试(2)
1 组合分区与范围分区索引创建效率对比<br />exec runstats_pkg.rs_start<br />create index idx_comp_big_table on comp_big_table(id) local compress<br />/<br />exec runstats_pkg.rs_middle<br />create index idx_range_big_table on range_big_table(id) local compress<br />/<br原创 2011-04-08 22:02:00 · 1674 阅读 · 0 评论 -
组合分区与范围分区效率对比测试(3)
1 组合分区与范围分区删除效率对比<br />删除一个owner的数据:<br />exec runstats_pkg.rs_start<br />delete from comp_big_table where owner = ‘SCOTT’<br />/<br />commit<br />/<br />exec runstats_pkg.rs_middle<br /> <br />delete from range_big_table where owner = ‘SCOTT’<br />/<原创 2011-04-08 22:07:00 · 844 阅读 · 0 评论 -
索引键压缩
<br />索引占用空间对比:<br />create table t1<br />as<br />select * from dba_objects;<br /> <br />create index uncompressed_idx<br />on t1( owner,object_type,object_name );<br /> <br />查询索引的高度:<br />Select index_name,blevel,num_rows from user_indexes where table_na原创 2011-03-19 09:49:00 · 1347 阅读 · 0 评论 -
Oracle存储层次体系小结
<br />(1)数据库由一个或多个表空间构成;<br /> <br />(2)表空间由一个或多个数据文件构成,不会出现多个表空间共享一个数据文件的情况,一个数据文件只属于某个表空间。<br /> <br />(3)段(Segments)由一个或多个区段(Extents)构成。段只在一个表空间中,但段可以处在多个文件中,<br /> 一个文件中也可能有多个段。<br /> 常见的段类型包括:聚簇(cluster),表,分区,索引,索引分区,lob分区,嵌套表,回滚段。<br />原创 2011-03-17 14:38:00 · 719 阅读 · 0 评论 -
pipelined 函数
<br />pipelined表函数用于返回行结果集。<br /> <br />下面是一个例子:<br /> <br />CREATE PACKAGE pkg1 AS<br />TYPE numset_t IS TABLE OF NUMBER;<br />FUNCTION f1(x NUMBER) RETURN numset_t PIPELINED;<br />END pkg1;<br />/<br /><br />CREATE PACKAGE BODY pkg1 AS<br />-- FUNCTION f原创 2011-02-23 14:31:00 · 1422 阅读 · 0 评论 -
Oracle性能分析工具小结——《Oracle高效设计学习笔记》
<br />1.使用Explain plan<br /> <br />2.使用autotrace<br /> <br />3.使用TKPROF工具<br /> <br />4.使用Runstats工具<br /> <br />5.使用Statspack<br /> <br />6.使用DBMS_PROFILER包原创 2011-03-02 08:35:00 · 1221 阅读 · 0 评论 -
普通表索引,分区表局部索引和分区表的全局索引分区的效率对比测试
首先创建一个大表:create table big_tableasselect rownum id, a.* from all_objects a where 1=0/alter table big_table nologging;declare l_cnt number; l_rows number := &1;begin insert /*+ append */ into big_table select rownum, a.* from all_objects原创 2011-03-08 11:06:00 · 4692 阅读 · 2 评论 -
设置DB_CREATE_FILE_DEST初始化参数
<br />这个参数用于指定Oracle数据库服务器创建以下文件的缺省路径:<br /> <br />■ Datafiles<br />■ Tempfiles<br />■ Redo log files<br />■ Control files<br />■ Block change tracking files<br /> <br />指定这个参数后,就不需要在创建表空间时指定具体的datafile的文件路径和名称了。<br /> <br />例如:<br />在设置这个路径参数之前:<br />show原创 2011-03-08 20:09:00 · 13232 阅读 · 0 评论 -
dbms_lob的instr和substr函数的用法
<br />转自:http://www.cnblogs.com/hellofei/archive/2010/03/25/1695363.html<br /> <br />instr函数与substr函数<br />instr函数用于从指定的位置开始,从大型对象中查找第N个与模式匹配的字符串。<br />用于查找内部大对象中的字符串的instr函数语法如下:<br />dbms_lob.instr(<br />lob_loc in blob, <br />pattern in raw, <br />offse转载 2011-02-24 11:41:00 · 25001 阅读 · 0 评论 -
怎样使用TKPROF工具——《Oracle高效设计》学习笔记
<br />Oracle具有打开一个相当低层的跟踪功能的能力。<br />一旦启用跟踪文件,Oracle将会记录许多有价值的信息。<br />TKPROF工具就是用于将这些跟踪文件转换成我们容易阅读的格式。<br /> <br />1.启用跟踪功能<br />alter session set timed_statistics = true;<br />alter session set events '10046 trace name context forever, level 12';<br /> <原创 2011-02-22 19:02:00 · 3442 阅读 · 0 评论 -
Oracle/PLSQL: BFilename函数
<br />原文:http://www.techonthenet.com/oracle/functions/bfilename.php<br /> <br />在Oracle/PLSQL, bfilename函数用于返回一个BFILE定位器,这个定位器指向一个物理的LOB二进制文件。<br />bfilename函数的语法如下:<br />bfilename( 'directory', 'filename' )<br />其中directory是指一个目录对象,该目录对象对应该文件的全路径,该文件位于文件服翻译 2011-02-23 15:07:00 · 8557 阅读 · 0 评论 -
使用绑定变量和不使用绑定变量的效率对比测试——《Oracle高效设计》学习笔记
<br />为了模拟真实环境,考虑在并发情况下,对比使用绑定变量和不使用绑定变量情况的多个性能指标。<br />测试使用statspack,如果没有安装此工具,可以参考《Oracle9i Database Performance Tuning Guide and Reference Release 2》<br /> <br />create table job_parameters<br />( jobid number primary key,<br /> iterations number,<br /原创 2011-03-11 15:01:00 · 1109 阅读 · 0 评论 -
绑定变量的弱点——《Oracle高效设计》学习笔记
<br />绑定变量虽然有很多优点,但在某些情况下不可以使用绑定变量, <br /> <br />比如,对于被绑定的字段的值,如果对于不同的值,Oracle应该使用不同的查询计划,这种情况下就不应该使用绑定变量。<br /> <br /> <br />以下的例子说明了这个问题:<br /> <br />create table records_to_be_processed<br />as<br />select decode( mod(rownum,100), 0, 'N', 'Y' ) processe原创 2011-03-11 17:18:00 · 682 阅读 · 0 评论 -
避开绑定变量的弱点的一个经典解决方案——《Oracle高效设计》学习笔记
<br />假如我们在应用程序中对数据库进行查询时,经常会对某个字段使用Like语句,而数据库是对这个字段添加了索引的,如果查询的sql中like<br /> <br />的内容是以%开头的,那么索引很可能会被忽略,但当like的内容不是以%开头的,索引会被利用。假设这个查询会被经常使用,我们希望对<br /> <br />于这些查询使用绑定变量,这样可以减少硬解析的次数,但使用绑定变量的代价是,在查询时我们很可能使用错误的查询计划。<br /> <br />对于这个问题《Oracle高效设计》中给出了一个原创 2011-03-12 11:24:00 · 901 阅读 · 0 评论 -
组合分区与范围分区效率对比测试(1)
1 测试数据准备<br />首先创建一个大表big_table:<br />create table big_table<br />as<br />select rownum id, a.*<br /> from all_objects a<br /> where 1=0<br />/<br />alter table big_table nologging;<br />向大表加入2千万条记录:<br />declare<br /> l_cnt number;<br /> l_row原创 2011-04-08 21:56:00 · 785 阅读 · 0 评论
分享