什么时候需要重建索引
条件1 在分析(analyze)指定索引之后,查询index_stats的height字段的值,如果这个值>=4 ,则最好重建(rebuild)这个索引。虽然这个规则不是总是正确,但如果这个值一直都是不变的,则这个索引也就不需重建。 条件2 在分析(analyze)指定索引之后,查询index_stats的del_lf_rows和lf_rows的值,如果(del_lf_rows/lf_rows)*100 > = 20,则这个索引也需要重建。 例子: SQL > analyze index IND_PK validate structure; SQL > select name,height,del_lf_rows,lf_rows,(del_lf_rows/lf_rows) *100 from index_stats; NAME HEIGHT D
Oracle 物化视图创建
Oracle的物化视图提供了强大的功能,可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。物化视图有很多方面和索引很相似:使用物化视图的目的是为了提高查询性能;物化视图对应用透明,增加和删除物化视图不会影响应用程序中SQL语句的正确性和有效性;物化视图需要占用存储空间;当基表发生变化时,物化视图也应当刷新。物化视图可以分为以下三种类型:包含聚集的物化视图;只包含连接的物化视图;嵌套物化视图。三种物化视图的快速刷新的限制条
关于append 提示总结
Table Mode Insert Mode ArchiveLog mode result----------- ------------- ----------------- ----------LOGGING APPEND ARCHIVE LOG redo generatedNOLOGGING APPEND ARCHIVE LOG no redoLOGGING no append ARCHIVE LOG redo generatedNOLOGGING no append ARCHIVE LOG redo generatedLOGGING APPEND noarchive log mode no redoNOLOGGING APPEND noarchive log mode no redoLOGGING no append noarchive log mode redo generatedNOLOGGING no append noarchive log mode redo generated 简单来讲,就是表的模式和归档模式具有优先决
sql的几个数据字典
v$sqltext 存储的是完整的SQL,SQL被分割 SQL> desc v$sqltext Name Null? Type ----------------------------------------- -------- ---------------------------- ADDRESS RAW(4) --------- HASH_VALUE NUMBER --------- 和 address 一起唯一标志一条sql COMMAND_TYPE NUMBER PIECE NUMBER ---------- 分片之后的顺序编号 SQL_TEXT VARCHAR2(64) -------------- 注意长度[@more@]v$sqlarea --------- 存储的SQL 和一些相关的信息,比如累计的执行次数,逻辑读,物理读等统计信息 SQL> desc v$s
行分链与行迁移
行分链与行迁移----------------如果经常删除,那么可能不能重用块中的自由空间,所以对于这种情况,我们要利用空间的话,可以把pctused设置高点主要是在INSERT操作期间引发行分链操作。而行的迁移主要由UPDATE操作引起。行链接-- 行链接: Insert or Update引起,一个Row存在不同的block中, 行不同部分通过不同块地址(ROWID)链成一个链,可以通过设置大的DB_BLOCK_SIZE来减少行链接的发生,但无法避免(LOB) -- 行迁移: Update引起,由于PCTFREE过小,ROWID未变, 可以通过增大PCTFREE的值减少行迁移的发生 ------行分链是DB_BLOCK_SIZE设置不够大,
dbms_stats包介绍
ORACLE数据库的PL/SQL语句执行的优化器,有基于代价的优化器(CBO)和基于规则的优化器(RBO)。oracle推荐使用CBO优化器,RBO基于一套严格的语法规则,sql只要按照严格的语法规则书写,不管表和索引是否改变,都不影响PL/SQL的执行计划。CBO自ORACLE 7版被引入,ORACLE自7版以来采用的许多新技术都是只基于CBO的,如星型连接排列查询,哈希连接查询,反向索引,索引表,分区表和并行查询等。CBO计算各种可能"执行计划"的"代价",即cost,从中选用cost最低的方案,作为实际运行方案。各"执行计划"的cost的计
关于dbms_stats和Analyze的比较分析
1. 对于分区表,建议使用DBMS-STATS,而不是使用Analyze语句。a) 可以在不同级别上Compute Statistics:单个分区,子分区,全表,所有分区 b) 可以倒出统计信息 c) 可以用户自动收集统计信息 2. DBMS_STATS的缺点 a) 不能Validate Structure b) 不能收集CHAINED ROWS, 不能收集CLUSTER TABLE的信息,这两个仍旧需要使用Analyze语句。c) DBMS_STATS 默认不对索引进行Analyze,因为默认Cascade是False,需要手工指定为True 3. 对于oracle 9里面的External Table,Analyze不能使用,只能使用DBMS_STATS来收集信息。[@more@]
SQL*Plus常用命令
show和set命令是两条用于维护SQL*Plus系统变量的命令 SQL> show all --查看所有68个系统变量值 SQL> show user --显示当前连接用户 SQL> show error --显示错误 SQL> set heading off --禁止输出列标题,默认值为ON[@more@]show和set命令是两条用于维护SQL*Plus系统变量的命令 SQL> show all --查看所有68个系统变量值 SQL> show user --显示当前连接用户 SQL> show error --显示错误 SQL> set heading off --禁止
我面试中遇到的一个类似题目!
SQL题:请用一条SQL查询(ORACLE)语言实现行列转换假设有张学生成绩表(CJ)如下 [姓名] [学科] [成绩] 张三 语文 80 张三 数学 90 张三 物理 85 李四 语文 85 李四 数学 92 李四 物理 82 王五 数学 60 想变成 [姓名] [语文] [数学] [物理] 张三 80 90 85 李四 85 92 82 王五 null 60 null select 姓名,nvl(sum(语文),-1) as 语文,nvl(sum(数学),-1) as 数学,nvl(sum(物理),-1) as 物理from ( select 姓名, case when cource=语文 then 成绩else null end as 语文, case when cource=数学 then 成绩 else null end as 数学, case when cour
Set autotrace命令及解释!
二、设置Autotrace的命令。序号命令解释1SET AUTOTRACE OFF此为默认值,即关闭Autotrace2SET AUTOTRACE ON EXPLAIN只显示执行计划3SET AUTOTRACE ON STATISTICS 只显示执行的统计信息4SET AUTOTRACE ON包含2,3两项内容5SET AUTOTRACE TRACEONLY 与ON相似,但不显示语句的执行结果。三、Autotrace执行计划的各列的涵义序号列名 解释1ID_PLUS_EXP每一步骤的行号2PARENT_ID_PLUS_EXP每一步的Parent的级别号3PLAN_PLUS_EXP实际的每步4OBJECT_NODE_PLUS_EXP Dblink或并行查询时才会用到四、AUTOTRACE Statistics常用列解释序号统计列解释1db bl
查询成本
基表访问成本表扫描:nblks/k(k取决于oracle的版本和初始化参数db_file_multiblock_read_count)唯一扫描:blevel + 1快速全扫描:leaf_blocks/k索引:blevel + FF*leaf_blocks范围扫描:blevel+FF*leaf_blocks+FF*clustering_factorSelectivity=FF=估计card/基表card ó 估计card=FF*基表card其中FF表示过滤因子,基表card表示基表的行数目比如(NUM_ROWS)。2. 连接成本嵌套循环连接对于外部行集中每一行,都需要访问内部行集以查找所有匹配的行用于连接。因此,在嵌套循环连接中,内部行集访问的次数与外部行集的行数目一致。成本
Tkprof工具介绍和分析
Tkprof是一个用于分析Oracle跟踪文件并且产生一个更加清晰合理的输出结果的可执行工具。如果一个系统的执行效率比较低,一个比较好的方法是通过跟踪用户的会话并且使用Tkprof工具使用排序功能格式化输出,从而找出有问题的SQL语句。 [@more@]Tkprof命令后面可以带各种类型的排序选项,具体如下: Usage: tkprof tracefile outputfile [explain= ] [table= ] [print= ] [insert= ] [sys= ] [sort= ] table=schema.tablename Use 'schema.tablename' with 'explain=' option. explain=user/password Connect to ORACLE and iss
PCTFREE与PCTUSED对高性能和有效地重新使用表块的策略
PCTFREE=(Average Row Size-Initial Row Size)*100/Average Row Size PCTUSED=(100-PCTFREE) -Average Row Size * 100/Availabe Data Space Oracle的其中一个优点时它可以管理每个表空间中的自由空间。Oracle负责处理表和索引的空间管理,这样就可以让我们无需懂得Oracle的表和索引的内部运作。不过,对于有经验的Oracle调优专家来说,他需要懂得Oracle是如何管理表的extent和空闲的数据块。对于调整拥有高的insert或者update的系统来说,这是非常重要的。[@more@] 要精通对象的调整,你需要懂得freelists和freelist组