Oracle学习系列—数据库优化—性能优化工具
Oracle中对于SQL的执行计划和跟踪功能是很强大的,其中包括EXPLAIN PLAN,TKPROF和SQL Trace, Auto Trace.[@more@] EXPLAIN PLAN Explain Plan语句能够显示优化器对SELECT,UPDATE,INSERT,DELETE等语句分析的执行计划.一条语句的执行计划是Oracle运行SQL的顺序.行源树是执行计划的核心,主要包含下列信息: Ø 参考表的顺序 Ø 每个表的访问方式 Ø 表的连接方式 Ø 最佳化:成本和基数 Ø 分区 Ø 并行化 创建PLAN_TABLE表 @C:UserDefineora
Oracle学习系列—数据库优化—RBO访问路径
Oracle推荐使用CBO方式,不过在缺乏统计信息的情况下,RBO还是值的关注得.....[@more@]使用RBO时,优化器基于可用的访问路径或队列选择相应的执行计划.Oracle访问路径队列是启发式的可能有多种方式执行一个SQL语句,RBO会选择低队列的操作. The list shows access paths and their ranking: RBO Path 1: Single Row by Rowid RBO Path 2: Single Row by Cluster Join RBO Path 3: Single Row by Hash Cluster Key with Unique or Primary Key RBO Path 4: Single Row by Unique or Primary Key RBO Path 5: Cluster
Oracle学习系列—数据库优化—In和Exists的使用
关于In和Exists的使用优劣,在官方文档<Oracle9iR2.Database.Performance.Tuning.Guide.and.Reference>有很好的说明. 实际上并不存在优劣之分,Oracle会跟据实际情况进行In和Exists的相互转换,因此可以说大多数情况下是等效的.[@more@]In certain circumstances, it is better to use IN rather than EXISTS. In general, if the selective predicate is in the subquery, then use IN. If the selective predicate is in the parent query, then use EXISTS. 在某种情况,使用In要比Exists更好一些.通常情况下,如果选择断言使
Oracle学习系列—数据库优化—Collect Statistics
虽然提倡使用DBMS_STATS包,估计ANALYZE使用还是会多一些吧,毕竟方便...[@more@]收集统计信息,收集分区对象的全局信息,调整你的统计信息. 但是,以下情况下,你必须使用ANALYZE语句,而不是DBMS_STATS来收集统计信息(这些信息与CBO优化无关): n To use the VALIDATE or LIST CHAINED ROWS clauses n To collect information on freelist blocks Table 3–1 Statistics Gathering Procedures in the DBMS_STATS Package Procedure Collects GATHER_INDEX_STATS Index statistics GATHER_TABLE_STATS Table, column,
Oracle学习系列—数据库优化—Statistics Summary
关于统计中表字段索引所搜集的相关信息有那些....[@more@]Statistics generated include the following: n Table statistics – Number of rows – Number of blocks – Average row length n Column statistics – Number of distinct values (NDV) in column – Number of nulls in column – Data distribution (histogram) n Index statistics – Number of leaf blocks – Levels – Clustering factor n System statistics – I/O performance and utilization – CPU
Oracle学习系列—数据库优化—Sort Operation
虽然知道其适用场合,但是确实不太清楚对COST的影响...[@more@]Ø SORT UNIQUE 假如用户指定Distinct语法或者下一步操作需要唯一值,将会导致Sort Unique Ø SORT AGGREGATE Sort Aggregate不一定涉及到排序,当聚合用来计算所有行值时,会使用到Sort Aggregates Ø SORT GROUP BY 当聚合用来计算不同组的数据时将会使用Sort Group By,排序需要将把行值分成不同的组 Ø SORT JOIN 假如行按照连接键排序,在排序合并连接时将会发生Sort Join Ø
Oracle学习系列—数据库优化—Full Scans和Fast Full Index Scans
两个好像都是直接读取索引块,而无需读取数据块的情况.前提是待查询字段已经包含在该组合索引中. 不过看Oracle9i Database Performance Tuning Guide and Reference,好像没太多区别[@more@]Full Scans A full scan is available if a predicate references one of the columns in the index. The predicate does not need to be an index driver. A full scan is also available when there is no predicate, if both the following conditions are met: n All of the columns in the table referenced in the query are inc
Oracle学习系列—数据库优化—Access Path和join学习
呵呵,边学习边翻译,权当笔记了...[@more@] CBO的访问路径(Access Path) 访问路径是从数据库中查询数据的方式.主要包括 Ø 全表扫描 Ø ROWID扫描 Ø 索引扫描 Ø 聚簇扫描 Ø HASH扫描 Ø 样例表扫描 全表扫描 全表扫描时,读取该表所有的记录,然后过滤掉不满足要求的数据.仅扫描和读取高水平线一下的块. 全表扫描时,所有块被顺序读取.因为块一半都是毗邻的,为了加速处理,通常I/O调用比单块要大些.每次块读取的数量是由DB_FILE_MULTIBLOC
Oracle学习系列—数据库优化—Analyze语句和数据字典
执行Analyze语句后,系统会把表索引统计记入相应数据字典表,CBO依据这些统计进行执行计划分析.下面是几个简单的例子,黄颜色部分是执行分析后,数据字典发生的变化[@more@] CREATE TABLE MainTable AS SELECT * FROM ALL_ALL_TABLES; CREATE TABLE Owner AS SELECT DISTINCT Owner FROM MainTable; CREATE INDEX MainTable_Owner ON MainTable (Owner); CREATE INDEX Owner_Owner ON Owner (Owner); ANALYZE TABLE MainTable Compute STATISTICS; S
Oracle学习系列—数据库优化—CBO介绍
CBO(Cost-based optimizer)是根据系统统计信息并以系统吞吐为最佳优化目标的Oracle优化方式。边学边翻译,边翻译边体会..[@more@]通常情况下,CBO是缺省的 假如数据字典中包括至少一个待访问表的统计信息,那么优化器将选择基于成本的优化方式,以获取最大吞吐量的目标。假如数据字典仅包含部分统计信息,仍将使用CBO方式,但是优化器不得不猜测那些没有任何统计信息的表的统计。这可能会导致次优化的执行计划。假如数据字典没有包含任何待访问表的统计信息,优化器将选择RBO方式 以下是要必须使用CBO进行优化的内容 分区表和
Oracle学习系列—数据库备份—RMAN备份
RMAN(Recovery Manager,恢复管理器)是数据的备份工具,是一个与操作系统无关的数据库备份工具,可以跨越不同操作系统进行数据库备份。 以前从来不敢使用这玩意,也不太清楚到底有何用途,只知道很难使用;经过3天的实践总算硬着头皮把例子一个个做了一遍,对RMAN的基本命令和用途有了基本的了解。。。 唉,其实我还是没太搞明白,也许等冷静一段时间研究一下恢复的时候,才知道RMAN的真正用途。。。[@more@] --Create RMAN enviroment --Create RMAN default tablespace --Create RMAN User -
Oracle学习系列—关于字符数字混合排序和中文排序的问题
关于汉字排序的问题源于曾经做过的114号码百事通查询,当时要求提供按笔画、部首、拼音的多种查询方式,拼音排序直接按名称字段进行排序时总有些是是而非的错误,百思不得其解;同时笔画、部首排序也摸不着头脑。。。 数字和英文混合排序 1,3,A,B,101,301,AB,BA 要求按照数字,字符分别进行排序,同时在统一类别数据中,首先按数字ASC,再次按长度排序,要求结果如下 1,101,3,301,A,AB,B,BA 或者 1,3,101,301,A,B,AB,BA 但是很奇怪,第一个排序似乎在合并两个视图之后,排序规则有点乱了。。。[@more@]
Oracle学习系列—数据库备份—热备份
热备份一般采用数据库命令和操作系统的物理拷贝来完成文件系统的备份。 热备份的内容主要包括数据库物理文件。 热备份仅适用于归档状态。 热备份可以根据业务需求,在应用不繁忙的时候进行灵活备份,不会影响用户的正常使用。比较适合做为7×24小时运行的数据库备份策略[@more@]热备份的操作步骤: 1、 查看数据库归档状态 2、 查看要备份的表空间和数据文件 3、 启用alter tablespace XXX begin backup;命令开始备份 4、 操作系统命令拷贝改表空间的数据文件 5、 启用alter tablespace XXX end backup;命
Oracle学习系列—数据库备份—脱机备份
脱机备份一般均采用操作系统的物理拷贝来完成文件系统的备份。 脱机备份的内容包括数据库物理文件、联机日志文件、控制文件。 脱机备份对归档和非归档无特别要求,不需要对归档日志进行备份。 脱机备份耗时可能比较长,备份的关闭数据库的要求,影响用户的正常使用。不适合做为7×24小时运行的数据库备份策略[@more@]脱机备份的操作步骤: 1、 通过数据字典获取文件备份列表 2、 Shutdown正常关闭数据库 3、 通过操作系统拷贝物理文件 4、 启动数据库。 Microsoft Windows [Version 5.2.3
Oracle学习系列—Oracle表空间和用户的手工创建
尝试以手工方式的形式创建用户表空间及其数据文件,创建用户,分配权限,并以用户身份登陆,进行验证。同时复习了一下数据库的归档(手工创建数据库后,默认为非归档方式)[@more@] 数据库的归档重新复习,关于归档的参数设置可以通过alter system参数直接完成。 以系统管理员身份登陆数据库 关闭数据库 启动数据库到mount状态 更改归档方式 查看归档状态 修改归档目录 修改归档启动方式 关闭数据库 重新启动数据库 查看归档状态 归档联机日志 SQL*Plus: Release 9.2.0.1.0 - Prod
Oracle学习系列—Window操作系统下Oracle软件的安装
安装目的:旨在进行Window操作系统下Oracle软件的安装,不包含数据库的自动安装,稍后提供Oracle数据库的手工创建全过程。操作系统:Window2003机器环境:VisualPC虚拟机内 存:256M[@more@]1.插入Oracle启动盘或者对网络路径进行盘符映射,点击根目录下的Setup.exe,自动调用基于java的安装界面,进入安装向导页面。2.确定安装文件所在路径即安装到本机硬盘所在路径,并且设定Oracle Home的名称和Oracle软件的安装目录。3.选择要安装的数据库产品类型,其中包含三种安装方式。•Oracle9i Database 9.2.0.1.0主要是安装Oracle数据库软
Oracle学习系列—Windows下数据库进程的启动和关闭
windows下Oracle的启动一般是伴随windows自动启动,自动关闭的。但是如果同过任务管理器杀掉了Oracle进程,如果通过命令行方式打开Oracle就会报错误信息。。。具体解决办法详见。。。[@more@]Microsoft Windows XP [Version 5.1.2600](C) Copyright 1985-2001 Microsoft Corp.C:/Documents and Settings/wangbao>cd/C:/>net stop OracleServiceWBQThe OracleServiceWBQ service is stopping........The OracleServiceWBQ service could not be stopped.C:/>net start OracleServiceWBQThe OracleServiceWBQ service is starting.
Oracle学习系列—归档模式的切换
说来很惭愧,Oracle也算学习了很久,可是我连归档日志都没用起来过,所以说都不好意思说自己的Oracle水平如何如何。。。参阅了网上许多资料,亲自动手做了一下测试,可以说既不简单也不复杂。。。一句话动手最重要。。。来吧。。。[@more@] SQL*Plus: Release 9.2.0.1.0 - Production on Wed Mar 14 00:31:13 2007 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. REM以系统管理员用户登陆Oracle,并启动到mount状态 SQL> connect as sysdba; Enter user-name: sys Enter password: Connected to an idle