- 浏览: 562934 次
- 性别:
- 来自: 杭州
-
文章分类
- 全部博客 (340)
- Spring (4)
- Hibernate (2)
- Linux (34)
- Oracle (145)
- Eclipse (1)
- UML (1)
- HTML&&JAVASCRIPT (11)
- JAVA (33)
- 设计模式 (1)
- 版本控制 (1)
- wrap框架 (3)
- IBATIS (5)
- Ruby (1)
- DWR (1)
- MINA (11)
- JBPM (2)
- 缓存技术 (4)
- 网络 (3)
- 应用服务器 (1)
- GWT (5)
- 杂谈 (2)
- ICE (4)
- XML (2)
- ArcGis (2)
- Flex (8)
- junit单元测试 (1)
- SNMP (1)
- 存储 (1)
- office (1)
- MongoDB (0)
- Greenplum (3)
- 管理点滴 (1)
- C++ (6)
- 网络入门 (3)
- Tomcat (7)
- JMX (0)
- webservice (1)
- Oracle的10046事件 (1)
- Library cache内部机制详解 (1)
- expdp通过dblink来导入 (1)
最新评论
-
yuanliangding:
有没有关于mock的更多知识。
基于mock对象和JUnit框架简化Spring Web组件单元测试 -
saup007:
ssh端口不是22,怎么搞呢?
Greenplum 学习笔记 -
springmvc-freemarker:
java开源项目源码实例下载
Apache上全部JAVA开源项目简介 -
bobbell:
哇塞,你真厉害,整理的非常全面。我是一个java barcod ...
Greenplum 学习笔记 -
wsj55133245513324:
这不是bug,你将日志级别从debug提升到INFO 就好了 ...
Spring,smppapi,apache mina, ssl快速实现安全的smpp(5)
下面我们从技术的角度入手,来探讨数据库优化方面的问题。通常作为优化Oracle系统的人,或者是DBA,其实很多时候对应用并不很了解甚至可以说是完全不了解,更不要说对应用程序代码的了解。事实上呢,一个系统运行的快或者慢相信大家都明白,第一重要的是数据库的设计,然后是应用的设计, SQL语句的编写,最后才是数据库参数的调整和硬件、网络的问题,等等。所以在我们不了解一个系统的时候来优化数据库应用不是一个轻松的容易的事情。那么我们第一步应该怎么做呢?
通常有两类方法:
其中一个方法就是我们常用的,使用statspack来进行诊断系统的瓶颈所在。在statspack中oracle给出了几乎涵盖oracle大部分重要内容的信息。
另外一种方式,就是trace session。假如某个session运行很慢或者某个用户的某个查询很慢,那么这个时候我们可以通过trace session的方式来诊断到底是慢在哪里,看究竟执行计划是怎样的,然后在user_dump_dest下根据该session的进程号或者线程号可以找到一个产生的trace文件。通过使用tkprof格式化文件之后我们就可以看见很多的统计信息,这里包括了执行计划、parse/fetch等步骤消耗cpu的时间。通常我们是观察query模式下的consistent gets来首先看sql是否使用了索引,然后看执行计划是不是正常,是不是有调整的余地。当然如果您没有实际做过的话,这些内容说起来很抽象。这是在不了解应用和程序下针对特定session的诊断和调整过程。
trace session的方式是一种自下而上的方法,从sql入手;而statspack是自顶向下的方法,也就是从宏观上先诊断数据库的瓶颈在哪里,然后从瓶颈入手来做调整,这个习惯上又可以称为通过等待事件(wait event)入手的方法。
2.1 使用statspack
statspack 是一个性能诊断工具,首先发布于Oracle8.1.6版本,在8.1.7版本中功能得到加强。Statspack除了查找实例中的性能问题外,还可以查找应用程序中高负荷的SQL语句,很容易确定Oracle 数据库的瓶颈所在,并且记录数据库性能状态。
在数据库中Statspack 的脚本位于$ORACLE_HOME/RDBMS/ADMIN 目录下,对于ORACLE8.1.6,是一组以stat 开头的文件;对于ORACLE8.1.7,是一组以sp 开头的文件。
在Statspack 发布之前,我们通常能够使用诊断数据库的工具是两个脚本UTLBSTAT.SQL 和UTLESTAT.SQL,BSTAT/ESTAT 是一个非常简单的性能诊断工具。UTLBSTAT 获得开始时很多V$视图的快照,UTLESTAT 通过先前的快照和当前视图生成一个报表。
该报表实际上相当于statspack 中的两个采样点。
Statspack 通过连续的采样,能够给我们提供至关重要的趋势分析数据。这是一个巨大的进步。能够使用Statspack 的环境我们就尽量不要使用BSTAT/ESTAT 的方式来诊断数据库问题。
2.1.1 安装statapack
§ 步骤一:
为了能够顺利安装和运行Statspack ,首先需要设置以下两个系统参数:
1. job_queue_processes
为了能够建立自动任务,执行数据收集,该参数需要大于0。你可以在初试化参数文件中修改该参数(使该参数在重起后以然有效)。
该参数可以在系统级动态修改(重起后失效)。
SQL> alter system set job_queue_processes = 6;
System altered
在Oracle9i 当中,可以指定范围,如 both,这样该修改在当前及之后保持有效(仅当你使用spfile 时,如果在9i 中仍然使用pfile,那么更改方法同8i 相同):
SQL> alter system set job_queue_processes = 6 scope=both;
System altered
2. timed_statistics
收集操作系统的计时信息,这些信息可被用来显示时间等统计信息、优化数据库和 SQL 语句。要防止因从操作系统请求时间而引起的开销,请将该值设置为False。
使用statspack 收集统计信息时建议将该值设置为 TRUE,否则收集的统计信息大约只能起到10%的作用,将timed_statistics 设置为True 所带来的性能影响与好处相比是微不足道的。
该参数使收集的时间信息存储在在V$SESSTATS 和V$SYSSTATS 等动态性能视图中。
timed_statistics 参数也可以在实例级进行更改
SQL> alter system set timed_statistics = true;
System altered
如果你担心一直启用timed_statistics 对于性能的影响,你可以在使用statspack 之前在system 更改,采样过后把该参数动态修改成false。
§ 步骤二:
需要单独为statspack创建一个存储数据的表空间,如果采样间隔较短,周期较长,打算长期使用,那么可能需要一个大一点的表空间,如果每个半个小时采样一次,连续采样一周,数据量是很大的。下面的例子中创建了一个500M 的测试表空间。
注意: 这里创建的表空间不能太小,如果太小的话创建对象会失败,建议至少建立100M 表空间。
SQL> create tablespace perfstat
2 datafile '/oracle/oradata/oradata/res/perfstat.dbf'
3 size 500M;
Tablespace created。
§ 步骤三:
在 sqlplus 中用internal 身份登陆,或者拥有SYSDBA(connect / as sysdba)权限的用户登陆。
注: 在Oracle9i 中,不存在internal 用户,可以使用sys 用户以sysdba 身份连接。
先转到$ORACLE_HOME/RDBMS/ADMIN 目录,检查安装脚本是否存在,同时我们执行脚本也可以方便些。
$ cd $ORACLE_HOME/rdbms/admin
$ ls -l sp*.sql
-rw-r--r-- 1 oracle other 1774 Feb 18 2000 spauto.sql
-rw-r--r-- 1 oracle other 62545 Jun 15 2000 spcpkg.sql
-rw-r--r-- 1 oracle other 877 Feb 18 2000 spcreate.sql
-rw-r--r-- 1 oracle other 31193 Jun 15 2000 spctab.sql
-rw-r--r-- 1 oracle other 6414 Jun 15 2000 spcusr.sql
-rw-r--r-- 1 oracle other 758 Jun 15 2000 spdrop.sql
-rw-r--r-- 1 oracle other 3615 Jun 15 2000 spdtab.sql
-rw-r--r-- 1 oracle other 1274 Jun 15 2000 spdusr.sql
-rw-r--r-- 1 oracle other 6760 Jun 15 2000 sppurge.sql
-rw-r--r-- 1 oracle other 71034 Jul 12 2000 spreport.sql
-rw-r--r-- 1 oracle other 2191 Jun 15 2000 sptrunc.sql
-rw-r--r-- 1 oracle other 30133 Jun 15 2000 spup816.sql
$
接下来我们就可以开始安装Statspack 了。在Oracle8.1.6 版本中运行statscre.sql; 在Oracle8.1.7 版本中运行spcreate.sql。
这期间会提示你输入缺省表空间和临时表空间的位置,输入我们为 perfstat 用户创建的表空间和你的临时表空间。安装脚本会自动创建perfstat 用户。
$ sqlplus
SQL*Plus: Release 8.1.7.0.0 - Production on Sat Jul 26 16:27:31 2003
(c) Copyright 2000 Oracle Corporation. All rights reserved.
Enter user-name: internal
Connected to:
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
SQL>
SQL> @spcreate
... Installing Required Packages
Package created.
Grant succeeded.
View created.
Package body created.
Package created.
Synonym dropped.
Synonym created.
……
Specify PERFSTAT user's default tablespace
Enter value for default_tablespace: perfstat
Using perfstat for the default tablespace
User altered.
User altered.
Specify PERFSTAT user's temporary tablespace
Enter value for temporary_tablespace: temp
Using temp for the temporary tablespace
User altered.
NOTE:
SPCUSR complete. Please check spcusr.lis for any errors.
……
如果安装成功,你可以接着看到如下的输出信息:
….
Creating Package STATSPACK...
Package created.
No errors.
Creating Package Body STATSPACK...
Package body created.
No errors.
NOTE:
SPCPKG complete. Please check spcpkg.lis for any errors.
可以查看.lis 文件查看安装时的错误信息。
§ 步骤四:
如果安装过程中出现错误,那么可以运行spdrop.sql 脚本来删除这些安装脚本建立的对象。然后重新运行spcreate.sql来创建这些对象。
SQL> @spdrop
Dropping old versions (if any)
Synonym dropped.
Sequence dropped.
Synonym dropped.
Table dropped.
Synonym dropped.
View dropped.
……
NOTE:
SPDUSR complete. Please check spdusr.lis for any errors.
(以上的安装过程描述是在 HP 11.11 + Oracle 8.1.7 平台上得到的)
发表评论
-
expdp通过dblink来导入
2011-12-14 15:01 1813create.sql: spo create.log rem ... -
Library cache内部机制详解
2011-12-14 14:55 933Library cache内部机制详解 http://www ... -
Oracle的10046事件
2011-12-14 14:53 2118Oracle的10046事件,可以跟踪应用程序所执行的SQL语 ... -
REDO LOG MEMBER STATUS 和 REDO LOG GROUP STATUS
2011-12-14 14:51 951V$LOG 中列出的是REDO LOG GROUP STA ... -
oracle的exp/imp使用方法学习(转)
2011-08-30 08:54 981exp/imp两个命令可以说是oracle中最常用的命令了 ... -
oracle几个awr报告
2011-08-09 14:25 913工作中,碰到的数据库慢的几个awr报告 -
Oracle Profile 使用详解
2011-06-21 14:41 989一、目的: Oracle系统中的profile可以用来对 ... -
ORA-27013
2011-04-13 14:25 1529很新的一个bug,看下你的 memory_target是不是& ... -
ACLE表连接方式分析及常见用法
2011-03-23 09:14 1129摘要: 针对在数据仓库 ... -
ORACLE 外部表应用
2011-03-09 14:58 1082SQL> create or replace direc ... -
How to convert a 32-bit database to 64-bit database on Linux
2011-02-18 14:09 1230How to convert a 32-bit databas ... -
expdp impdp 数据库导入导出命令详解
2011-02-16 09:10 1970一、创建逻辑目录,该命令不会在操作系统创建真正的目录,最 ... -
Oracle手工解/锁表
2011-01-25 14:15 2522手工锁表:lock table tbl_t1 in row ... -
oracle动态性能视图
2011-01-22 10:47 872Oracle动态性能视图个人整理 -
RBO规则介绍
2011-01-17 16:45 1102•无条件使用索引•使用内置的优先级别决定访问路径•比较难以 ... -
关于排序、sort_area_size、临时表空间
2011-01-13 15:30 1131简单陈述一下:针对每 ... -
创建索引ORACLE 需要做的工作
2011-01-13 14:53 1336一. 先来看一下创建索引要做哪些操作:1. 把inde ... -
表之间的连接
2011-01-13 10:42 815Join是一种试图将两个表结合在一起的谓词,一次只能连接2 ... -
重建索引的条件
2011-01-12 16:43 971如果索引存在碎片,那每个索引数据块上的索引数据就更少,会导致我 ... -
TKPROF使用学习
2011-01-10 17:38 744Tkprof工具可用来格式化sql trace产生的文件, ...
相关推荐
Oracle Tuning (Oracle 性能调整)的一些总结关于Oracle的性能调整,一般包括两个方面,一是指Oracle数据库本身的调整,比 如SGA、PGA的优化设置,二是连接Oracle的应用程序以及SQL语句的优化。做好这两个方面的 优化...
Oracle性能调整是数据库管理员在日常工作中的一项重要任务,它涉及到多个层面,包括SQL优化、数据库参数调整、存储结构优化以及操作系统层面的优化等。Oracle Tuning的目的是提高系统的响应速度,减少资源消耗,确保...
### Oracle Database 12c Release 2性能调优技巧与技术 #### 一、引言 随着企业数据量的不断增长和技术的快速发展,确保数据库高效运行成为IT部门的一项关键任务。Oracle Database 12c Release 2(简称12c R2)...
Oracle Database 12c Release 2 Performance Tuning Tips and Techniques是当前数据库专业人士必须掌握的高级资料。从给出的描述和部分内容来看,该资源提供了大量的性能调整技巧和最佳实践,以帮助DBA(数据库管理...
Oracle Tuning主要包括以下几个方面:SQL调优、数据库结构优化、内存管理、进程与并行性设置、I/O系统优化以及数据库参数调整。 1. SQL调优:SQL查询是数据库操作的核心,优化SQL语句可以显著提升系统性能。这包括...
为了深入理解Oracle Tuning,建议阅读相关的专业书籍,不断学习和实践,以便在面对复杂的性能问题时,能有效地调整数据库参数,提升整体系统的性能。总的来说,Oracle Tuning是一门深奥的技术,需要结合理论与实践...
根据提供的信息,我们可以推断出这本名为“高级owi与oracle性能调整”的书籍主要讨论了高级owi技术以及Oracle数据库性能优化的相关内容。由于提供的部分页面信息仅包含联系方式,并没有具体的章节内容,因此以下将...
Oracle 11gR2 Performance Tuning 性能优化 参考手册
以下是一些关于"Oracle SQL Tuning"的重要知识点: 1. **SQL执行计划**:SQL执行计划是Oracle解析器为每个SQL语句制定的执行策略,包括表的扫描方式(全表扫描或索引扫描)、连接顺序、排序操作等。理解执行计划有...
Oracle SQL Tuning with Oracle SQLTXPLAIN: Oracle Database 12c Edition by Stelios Charalambides English | 8 May 2017 | ISBN: 1484224353 | 408 Pages | PDF | 24.39 MB Learn through this practical guide ...
本文将根据《Oracle Performance Tuning Guide》的内容,详细介绍Oracle数据库性能调优的相关知识点。 #### 二、性能调优概述 性能调优是指通过一系列技术和方法来提高系统或应用的响应速度和吞吐量的过程。对于...
Oracle Tuning是一个重要的数据库管理任务,它涉及到对Oracle数据库本身及与其交互的应用程序进行优化,以提高系统的性能和效率。本文主要围绕Oracle Tuning的两个关键方面展开:Oracle数据库的内部调整,特别是...
实用经典的9i教材,虽然oracle11g出了很久了,但是9i教材撰写的还是非常详细和经典的。相对11g糟烂晦涩的教材来说,是绝对不可替代的。 对于新手来说是必备的首选教材。 多收两分,可以理解吧.... 不多说了 希望...
《Oracle® Database 2 Day + Performance Tuning Guide》(11g Release 2(11.2)版)是一本全面介绍Oracle性能调优的专业指南,由Lance Ashdown、Immanuel Chan等多位Oracle专家共同编写。 #### 书籍概述 本书...
Oracle Database 11g R2是Oracle公司推出的一款企业级关系型..."Oracle Database 11gR2性能调整与优化.pdf"这份文档很可能是对这些主题的详细阐述,包括实际案例和最佳实践,对于理解和应用这些优化技术非常有价值。
本文主要探讨了Oracle 11g数据库性能调整和优化的常用准则、影响性能的一些相关因素、未达到优化目的应该怎样设置有关参数等等。最后,文章还简要介绍了Oracle 11g自带的优化工具。 本文的关键词有性能调整和优化、...
2. **工作负载分析**:通过对历史工作负载的分析,可以预测未来可能出现的性能问题,提前进行调整,避免高峰期的性能下降。 3. **SQL调优建议**:对于性能低下的SQL语句,调优包会提供改进建议,如修改SQL语句结构...
《Oracle® Database 2 Day + Performance Tuning Guide》是一本由Oracle官方提供的、针对Oracle 10g Release 2 (10.2)版本数据库性能调优的专业指南。本书主要介绍了如何使用Oracle Diagnostics Pack、Oracle ...