033.笔记:使用EXPLAIN和STORED OUTLINES
1.oracle的sql trace实用程序 1.1对简单查询使用SQL_TRACE的简单步骤 1)初始化参数 SQL_TRACE --在10G中SQL_TRACE是不建议(向下兼容、将来不用)使用参数。 TIMED_STATISTICS=TRUE --收集时间统计 MAX_DUMP_FILE_SIZE=unlimited USER_DUMP_DEST 2)对SQL*Plus会话启用SQL_TRACE alter session set SQL_TRACE true; alter session set SQL_TRACE false; 3)查找跟踪文件 orcl_ora_3372.trc--3372是进程ID号(SPID) select spid,s.sid,s.serial#,p.username,p.program from v$process p,v
034.笔记:基本的提示语法
1.最常用的提示 最常用的10个提示: INDEX ORDERED PARALLEL FIRST_ROWS RULE FULL LEADING USE_NL APPEND USE_HASH 1.1 谨慎使用提示 提示可以分为两个主要类别:应用指令(usage directive)和编译器指令(compliler directive)。 应用指令是指在init.ora级别或系统参数文件(SPFILE)而不是语句级别中设置的提示(比如FIRST_ROWS到ALL_ROWS)。 如果您有一个OLTP(在线事务处理)数据库,那就是可以直接设置CHOOSE到FIRST_ROWS为优化器(在实例 级别中),使得优化器可以更快地返回最初的几行 (对于大多
032.笔记:表的连接和其他高级调整技术(3.其他高级调整技术)(未完成。。。)
1.第三方性能调整工具 有时候,可借助第三方工具。尽管不能修改代码,但您可以修改索引的使用方法。 2.调整分布式查询 如果编写的不好,分布式查询(SQL中使用DBLINK)有候会成为灾难,并导致极其糟糕的性能。特别是一个分布式数据库两个结点上的两张表的嵌套循环连接会非常慢,因为Oracle 将所有的数据移到本地机器来处理(取决于查询语句)。 【技巧】当不能避免使用分布式查询的时候,使用IN子句,设置操作符(例如UNION,或者MINUS),并采用任何可以降低数据库结点间的网络拥塞的技术。所定的查询如果将引起分布 式结点间
031.笔记:表的连接和其他高级调整技术(2.双表连接等)
1.双表连接:等尺寸表(基于成本) 书中这一节主要是介绍,在无索引的情况下。表的执行顺序和表的连接方法。 示例: select small1.col1,small2.col1 from small1,small2 where small1.col1=small2.col1; 如果示例中任何一张表都没有经过分析,Oracle将借助于以前版本的方法,即读取FROM子句中的最后一张表并使用排序合并连接(即使在Oracle 10g中也这样)。此 处强调这一点可以让您在遇到这种现象时,能意识到没有分析表。 【技巧】使用基于成本的优化器,并使用ORDERED提示时,FROM子句中的第一张表将作为驱动表。这取代了
030.笔记:表的连接和其他高级调整技术(1.连接方法)
前言:驱动表或者查询中的第一张访问的表是获得更佳性能的关键。如果优化器指定了错误的表作为查询中的驱动表,那么造成的差异会有天壤之别。通常,基于成本的优化器会选择正确的表,但在表中建立的的索引将影响它的正常工作。如果需要使用提示改变驱动表,这个现象说明需要改进索引计划。在一个有10张表的连接表中,将可能有3628800种组合,尝试所有的组合是非常耗时的举措。虽然可以使用LEADING提示来处理这个烦人的事,但与一开始就建立正确的索引模式相比,其代价仍然非常巨大。1.连接方法【必须了解的知识】1)哪张表将驱动查询(即访
029.笔记:基本的索引原理-索引的类型
1.B树索引 1.1 B树索引是树形结构,包括树根块(root block)、树枝块(branch block)、叶块(leaf block)。 branch block中,树枝行包含链中下一个叶块的ID号。 leaf block包含了索引值、ROWID,以及指向前一个和后一个树叶块的指针。Oracle可以从两个方向遍历这个树。 Oracle不会对索引列上包含null值的行进行索引。如果索引是多个列的组合索引,而其中列上包含NULL值,这一行就会处于包含NULL值的索引列中,且将被处理为空(视为NULL)。 【技巧】索引列的值都存储在索引中。因此,可以建立一个组合索引,这些索引可以直接满足查询
028.笔记:基本的索引原理1
1.基本的索引概念 【索引的五种扫描类型】 INDEX UNIQUE SCAN INDEX RANGE SCAN INDEX FAST FULL SCAN INDEX FULL SCAN index full scan(max/min)--10g后出现的索引扫描方法 INDEX SKIP SCAN BITMAP INDEX SINGLE VALUE BITMAP INDEX FAST FULL SCAN 2.组合索引 组合索引的扫描类型:UNIQUE SCAN、RANGE SCAN。如果组合索引的首列包括在查询中,就可以使用这两种扫描类型。 组全索引的特殊扫描类型:FAST FULL SCAN、INDEX FULL SCAN(FFS完全可以代替IFS)、INDEX SKIP SCAN 。如果组合索引的首列不包含在查询中
027.笔记:10g新功能
0.前言 可寻址内存的理论限制。 内存 直接可寻址 16位 64K(2的16次方字节) 32位 4G (2的32次方字节) 64位 16E(2的64次方字节)(1EB=1024PB,1PB=1024GB) 目前的ORACLE 10G数据库的容量可以达到8E。1.【网格计算】当完全实现网络计算时,这些网络资源可以存在于不同类型的硬件和操作系统上,即可以存在于完全不同的环境中。2.SYSAUX表空间 Oracle提供了新的视图V$SYSAUX_OCCUPANTS,其中显示了每个组件使用的空间数量以及Oracle提供的存储过程的名称,可以使用 这些存储过程将对象移入和移出SYSAUX
17.笔记:为可用性调整数据库
3.1智能基础结构 AWR、ADDM、ASH(active session history ,ASH活动会话历史,用以追踪会话在在等待的所有事件),这些技术合起来被称为智能基础结构 MMON后台进程 MMON后台进程是Oracle Database 10g中引入的一个新的后台进程,它负责对数据库内部运行情况进行自动监视。MMON还负责在每次AWR 运行完之后启动自动数据库诊断监控器,用来检查报表中指出的瓶颈或问题。此外,MMON每隔一分钟检测一次ALERT_QUE,它是sys用户拥有 的一个队列,查找所有新添加的信息和警告。MMON既可以自动地执行纠正动作,也可通过ALERT_QUE发送一个警
16.笔记:RDBMS关于可用性的特性
1.企业管理器 Oracle数据库控制台(Oracle Database Control) Oracle网格控制台 EM网格控制台的安装与数据库安装是分离的,要求有一个仓库数据库,一个庞大的内存区,并且需要单独定价和颁发许可。 如果您想使用实时应用集群(RAC)和Data Guard管理的GUI,则需要使用EM网格控制台。 2.数据库的动态配置 ORALCE DATABASE 10G发布了218个参数,还有若干未发布的参数(以下划线开头)。 仅针对会话的参数: HASH_AREA_SIZE OLAP_PAGE_POOL_SIZE SORT_AREA_RETAINED_SIZE SORT_AREA_SIZE tracefile_identifier
14.笔记:监视与管理内存
概述:ORACLE实例的存储结构:(1)SYSTEM GLOBAL AREA,简写为SGA:是供后台进程与服务器进程共享使用的;(2)PROGRAM GLOBAL AREA,简写为PGA:各个会话私有的内存区域如果启用了SGA和PGA的自动管理,那么应当能够确保所有可用的内存被最佳地使用,同时保证服务器根本不需要交换。1.系统全局区SGA从操作系统的观点出发,SGA是共享内存。共享内存的实现根据操作系统的不同而变化。例如:SOLARIS通过/etc/system文件设置共享内存,并且任何变化都需要在重启后才起作用;但是在LINUX系统中,我们可以使用sysctl实用程序动态地配置共享内存(
13.笔记:监视与管理存储结构
1.联机与归档重做日志文件的存储 重做日志具有双重目的:对于在实例失败事件中防止数据库讹误来说,联机日志文件是必不可少的; 对于在介质失败事件中的恢复来说,归档日志文件是必需的。 1.1 磁盘I/0与联机重做日志文件 提交过程表明:在提交时,LGWR进程会将内存中的重做数据写至磁盘上的联机重做日志文件。 LGWR进程决定性能的方面为:某位用户执行提交语句时,指定会话在LGWR进程将日志缓冲区的内容转储至磁盘之前将被挂起。 如果联机日志文件组的两个成员位于相同的物理磁盘设备上,那么只能执行顺序的写
012.笔记:用于调整OracleDatabase10g的工具
1.顾问程序的方法 顾问程序能够帮助确定性能的原因并给出建议的解决方案 事件类视图:V$SYSTEM_WAIT_CLASS 所有性能调整都基于统计量。实例参数STATISTICS_LEVEL控制了收集统计量的详细级别。2.ADDM 在默认情况下,快照由MMON进程收集,并且每隔一小时被存储至AWR。因些,ADDM默认每隔一小时运行一次。 修改快照默认值的方法: (1)Database Control (2)execute dbms_workload_repository.modify_snapshot_settings(retention=>20160,interval=>20);--保留两周,20分钟收集一次 execute dbms_workload_repository.m
003.学习SQL优化的一点体会--让优化器愉快地工作
优化器在没有统计信息或统计信息不准确时,制定的执行计划会产生糟糕的性能。这就好比我们使用计算器进行数学运算,我们期望计算器提供正确的结果,但首选要保证输入是正确的。作为DBA应该保证优化器的输入是正确的(准确的统计信息),而统计信息是需要手工收集地。这就要求DBA能够制定合理的策略,及时地更新统计信息。 服务模型:DBA=》优化器=》期望的性能 数据仓库项目统计信息收集策略: 1、模型参考ODS->FDS->ADS 2、数据仓库的数据在每日的批处理后都会发生很大的改变,所以适合在数据发生改变之后,使用数据之