基于Linux平台Oracle 10g数据库性能调优

基于Linux平台Oracle 10g数据库性能调优
基于Linux平台Oracle 10g数据库性能调优

基于Linux平台Oracle 10g数据库性能调优笔者单位对外业务网站为宣传、承揽主营业务的重要窗口。随着业务范围

的逐步扩大,网站数据库的数据量迅速增长。系统性能设计不足的问题逐步暴漏出来,如页面加载速度慢,执行数据库操作等待时间过长等。针对这一问题,笔者提出了对系统所采用的数据库的优化设计,最终实现了网页数据加载速度加快及数据库操作时间等待减少的调优目标。本文旨在结合此项实践分享基于Linux 操作系统平台的Oracle数据库服务器的调优实践,进而归纳几个调整和优化基于Linux操作系统平台的Oracle数据库服务器的方法。

标签:Linux Oracle 数据库性能调整优化

引言

笔者单位的对外业务网站为宣传、承揽主营业务的重要窗口。随着各项业务范围的逐步扩大,网站数据库的数据量迅速增长。系统性能设计不足的问题逐步暴露出来,出现了页面加载速度慢,执行数据库操作等待时间过长等问题。系统使用Oracle 10g数据库,笔者根据多年数据库管理和开发经验,以满足業务性能需求为出发点,对业务数据库进行了调整、优化。取得了预期的成效。

数据库性能优化技术主要包含以下几个方面[1]:查询优化;优化数据库内存配置;优化操作系统及网络配置。笔者将从各个不同角度考虑、分析数据库问题及解决之道。

本文将结合此项工作实践分享构建在Linux操作系统之上的Oracle 10g数据库的调优心得,总结调整、优化基于Linux操作系统平台的Oracle数据库服务器的几种方法。

一、Linux操作系统层面优化

1.Linux常用的调优工具

Linux系统性能监控命令可用于监控Oracle数据库性能,进而根据这些监控数据决定数据库的调优需求。这些命令可查看进程信息、服务器CPU使用信息以及操作系统内存交换情况。概述如下:

vmstat 查看Linux的进程、虚拟内存等情况。例如:vmstat 2 5可以查看系统每隔2秒钟共5次的系统负载采样情况;

iostat 显示磁盘活动。在平衡I/O负载时很有用;

free 查看内存及交换空间使用情况。如:free -m;

Linux性能监控、调优(CPU篇)

Linux性能监控、调优(CPU篇) 前言: 网上其实有很多关于这方面的文章,那为什么还会有此篇呢,有这么几个原因,是我翻 译的动力,第一,概念和内容虽然老套,但都讲得很透彻,而且还很全面.第二,理论结合实际,其中案例分析都不错.第三,不花哨,采用的工具及命令都是最基本的,有助于实际操作.但本人才疏学浅,译文大多数都是立足于自己对原文的理解,大家也可以自己去OSCAN上找原文,如果有什么较大出入,还望留言回复,甚是感激! 1.0 性能监控介绍 性能优化就是找到系统处理中的瓶颈以及去除这些的过程,多数管理员相信看一些相关的"cook book"就可以实现性能优化,通常通过对内核的一些配置是可以简单的解决问题,但并不适合每个环境,性能优化其实是对OS 各子系统达到一种平衡的定义,这些子系统包括了: CPU Memory IO Network 这些子系统之间关系是相互彼此依赖的,任何一个高负载都会导致其他子系统出现问题.比如: 大量的页调入请求导致内存队列的拥塞 网卡的大吞吐量可能导致更多的CPU开销 大量的CPU开销又会尝试更多的内存使用请求 大量来自内存的磁盘写请求可能导致更多的CPU 以及IO问题 所以要对一个系统进行优化,查找瓶颈来自哪个方面是关键,虽然看似是某一个子系统 出现问题,其实有可能是别的子系统导致的. 1.1 确定应用类型 基于需要理解该从什么地方来入手优化瓶颈,首先重要的一点,就是理解并分析当前系 统的特点,多数系统所跑的应用类型,主要为2种: IO Bound(译注:IO 范畴): 在这个范畴中的应用,一般都是高负荷的内存使用以及存储系统,这实际上表示IO 范畴的应用,就是一个大量数据处理的过程.IO 范畴的应用不对CPU 以及网络发起更多请求(除非类似NAS这样的网络存储硬件).IO 范畴的应用通常使用CPU 资源都是为了产生IO 请求以及进入到内核调度的sleep 状态.通常数据库软件(译 注:mysql,oracle等)被认为是IO 范畴的应用类型.

linux_操作系统优化方案

按照传统,Linux不同的发行版本和不同的内核对各项参数及设置均做了改动,从而使得系统能够获得更好的性能。下边将分四部分介绍在Red Hat Enterprise Linux AS和SUSE LINUX Enterprise Server系统下,如何用以下几种技巧进行性能的优化: 1、Disabling daemons (关闭daemons) 2、Shutting down the GUI (关闭GUI) 3、C hanging kernel parameters (改变内核参数) 4、Kernel parameters (内核参数) 5、Tuning the processor subsystem(处理器子系统调优) 6、Tuning the memory subsystem (内存子系统调优) 7、Tuning the file system(文件系统子系统调优) 8、Tuning the network subsystem(网络子系统调优) 1 关闭daemons 有些运行在服务器中的daemons (后台服务),并不是完全必要的。关闭这些daemons可释放更多的内存、减少启动时间并减少C PU处理的进程数。减少daemons数量的同时也增强了服务器的安全性。缺省情况下,多数服务器都可以安全地停掉几个daemons。 Table 10-1列出了Red Hat Enterprise Linux AS下的可调整进程. Table 10-2列出了SUSE LINUX Enterprise Server下的可调整进程

注意:关闭xfs daemon将导致不能启动X,因此只有在不需要启动GUI图形的时候才可以关闭xfs daemon。使用startx 命令前,开启xfs daemon,恢复正常启动X。 可以根据需要停止某个进程,如要停止sendmail 进程,输入如下命令: Red Hat: /sbin/service sendmail stop SUSE LINUX: /etc/init.d/sendmail stop 也可以配置在下次启动的时候不自动启动某个进程,还是send mail: Red Hat: /sbin/chkconfig sendmail off SUSE LINUX: /sbin/chkconfig -s sendmail off 除此之外,LINUX还提供了图形方式下的进程管理功能。对于Red Hat,启动GUI,使用如下命令:/usr/bin/redhat-config-serv ices 或者鼠标点击M ain M enu -> System Settings -> Serv er Settings -> Serv ices.

2020年(Oracle管理)Oracle SQL性能优化方法

(Oracle管理)Oracle SQL性能优化方法

OracleSQL性能优化方法探讨 Oracle性能优化方法(SQL篇)1 1综述2 2表分区的应用2 3访问Table的方式3 4共享SQL语句3 5选择最有效率的表名顺序5 6WHERE子句中的连接顺序.6 7SELECT子句中避免使用’*’6 8减少访问数据库的次数6 9使用DECODE函数来减少处理时间7 10整合简单,无关联的数据库访问8 11删除重复记录8 12用TRUNCATE替代DELETE9 13尽量多使用COMMIT9 14计算记录条数9 15用Where子句替换HAVING子句9 16减少对表的查询10 17通过内部函数提高SQL效率.11 18使用表的别名(Alias)12 19用EXISTS替代IN12 20用NOT EXISTS替代NOT IN13 21识别低效执行的SQL语句13

22使用TKPROF 工具来查询SQL性能状态14 23用EXPLAIN PLAN 分析SQL语句14 24实时批量的处理16

1综述 ORACLE数据库的性能调整是个重要,却又有难度的话题,如何有效地进行调整,需要经过反反复复的过程。在数据库建立时,就能根据应用的需要合理设计分配表空间以及存储参数、内存使用初始化参数,对以后的数据库性能有很大的益处,建立好后,又需要在应用中不断进行应用程序的优化和调整,这需要在大量的实践工作中不断地积累经验,从而更好地进行数据库的调优。 数据库性能调优的方法 ●调整内存 ●调整I/O ●调整资源的争用问题 ●调整操作系统参数 ●调整数据库的设计 ●调整应用程序 本文针对应用程序的调整,来说明对数据库性能如何进行优化。 2表分区的应用 对于海量数据的表,可以考虑建立分区以提高操作效率。建立分区一般以关键字为分区的标志,也可以以其他字段作为分区的标志,但效率不如关键字高。建立分区的语句在建表时可以进行说明: createtableTABLENAME() partitionbyrange(PutOutNo) (partitionPART1valueslessthan(200312319999) partitionPART2valueslessthan(200412319999)

LINUX性能调优方法总结

LINUX性能调优方法总结 大多数 Linux 发布版都定义了适当的缓冲区和其他 Transmission Control Protocol(TCP)参数。可以修改这些参数来分配更多的内存,从而改进网络 性能。设置内核参数的方法是通过 proc 接口,也就是通过读写 /proc 中的值。幸运的是,sysctl 可以读取 /etc/sysctl.conf 中的值并根据需要填充 /proc,这样就能够更轻松地管理这些参数。清单 2 展示在互联网服务器上应用于 Internet 服务器的一些比较激进的网络设置。 # Use TCP syncookies when needed net.ipv4.tcp_syncookies = 1 # Enable TCP window scaling net.ipv4.tcp_window_scaling: = 1 # Increase TCP max buffer size net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 # Increase Linux autotuning TCP buffer limits net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 # Increase number of ports available net.ipv4.ip_local_port_range = 1024 65000 将这些设置添加到 /etc/sysctl.conf 的现有内容中。第一个设置启用TCP SYN cookie。当从客户机发来新的 TCP 连接时,数据包设置了 SYN 位,服务 器就为这个半开的连接创建一个条目,并用一个 SYN-ACK 数据包进行响应。在正常操作中,远程客户机用一个 ACK 数据包进行响应,这会使半开的连接 转换为全开的。有一种称为 SYN 泛滥(SYN flood)的网络攻击,它使 ACK 数据包无法返回,导致服务器用光内存空间,无法处理到来的连接。SYN cookie 特性可以识别出这种情况,并使用一种优雅的方法保留队列中的空间(细节参见参考资料一节)。大多数系统都默认启用这个特性,但是确保配 置这个特性更可靠。 启用 TCP 窗口伸缩使客户机能够以更高的速度下载数据。TCP 允许在未从远程端收到确认的情况下发送多个数据包,默认设置是最多 64 KB,在与延迟比 较大的远程客户机进行通信时这个设置可能不够。窗口伸缩会在头中启用更多的位,从而增加窗口大小。 后面四个配置项增加 TCP 发送和接收缓冲区。这使应用程序可以更快地丢掉它的数据,从而为另一个请求服务。还可以强化远程客户机在服务器繁忙时发

Oracle数据库性能优化

1系统问题 XX公司BI系统上线运行以来,客户反映系统目前存在着下面的几个问题,涉及到数据库和ETL. 问题一:表空间增长太快,每个月需增加3—5G空间。 问题二:ETL JOB会经常导致数据库产生表空间不足错误。 2系统优化分析 2.1分析思路 要解决表空间的问题,我们必须搞清楚下面几个问题: 思路一:真正每个月数据仓库增量是多少空间 目的:得出一个正确的月表空间增长量。 思路二:目前的数据仓库表空间是是如何分布的。 目的:找出那些对象是最占空间,分析其合理性。 2.2分析过程 要得到真实的数据分布必须对表进行分析,首先需要对数据仓库的oracle数据库进行表分析,。执行下面脚本可以对数据库进行表分析。

脚本一 analyze table SA_IMS_PRODUCT_GROUP compute statistics; analyze table SA_CONSUMP_ACT_DEL compute statistics; analyze table SA_FINANCE_ACT compute statistics; analyze table SA_CONSUMP_TGT_DEL compute statistics; analyze table SA_FACT_IS compute statistics; analyze table SA_CPA compute statistics; analyze table SA_REF_TERR_ALIGNMENT_DEL compute statistics; analyze table SA_IMS_MTHLC_BK compute statistics; analyze table SA_IMS_CHPA compute statistics; analyze table SA_FINANCE_PNL compute statistics; analyze table SA_CUST_TARG_SEG compute statistics; analyze table SA_CONSUMP_ACT compute statistics; analyze table SA_FINANCE_BS compute statistics; analyze table SA_FINANCE_BGT_QTY compute statistics; analyze table SA_CONSUMP_ACT0423 compute statistics; analyze table SA_CALLS compute statistics; analyze table SA_COMPANY_DAILY_SALES_ALL compute statistics; analyze table SA_IMS_MTHLC compute statistics; analyze table SA_IMS_MTHUS compute statistics; analyze table SA_CONSUMP_TGT compute statistics; analyze table TEST_TABLE compute statistics; analyze table SA_DOCTOR_CYCLE_EXTRACT compute statistics; analyze table SA_EXCHANGE_ACT compute statistics;

系统参数设置-Oracle性能优化(精)

一、SGA 1、Shared pool tunning Shared pool的优化应该放在优先考虑,因为一个cache miss在shared pool中发生比在data buffer中发生导致的成本更高,由于dictionary数据一般比library cache中的数据在内存中保存的时间长,所以关键是library cache的优化。 Gets:(parse)在namespace中查找对象的次数; Pins:(execution)在namespace中读取或执行对象的次数; Reloads:(reparse在执行阶段library cache misses的次数,导致sql需要重新解析。 1)检查v$librarycache中sql area的gethitratio是否超过90%,如果未超过90%,应该检查应用代码,提高应用代码的效率。Select gethitratio from v$librarycache where namespace=’sql area’; 2 v$librarycache中reloads/pins的比率应该小于1%,如果大于1%,应该增加参数shared_pool_size的值。Select sum(pins “executions”,sum(reloads “cache misses”,sum(reloads/sum(pins from v$librarycache; reloads/pins>1%有两种可能,一种是library cache空间不足,一种是sql中引用的对象不合法。 3)shared pool reserved size一般是shared pool size的10%,不能超过50%。 V$shared_pool_reserved中的request misses=0或没有持续增长,或者free_memory 大于shared pool reserved size的50%,表明shared pool reserved size过大,可以压缩。 4)将大的匿名pl/sql代码块转换成小的匿名pl/sql代码块调用存储过程。 5)从9i开始,可以将execution plan与sql语句一起保存在library cache中,方便进行性能诊断。从v$sql_plan中可以看到execution plans。 6)保留大的对象在shared pool中。大的对象是造成内存碎片的主要原因,为了腾出空间许多小对象需要移出内存,从而影响了用户的性能。因此需要将一些常用的大的对象保留在shared pool中,下列对象需要保留在shared pool中: a. 经常使用的存储过程; b. 经常操作的表上的已编译的触发器 c. Sequence,因为Sequence移出shared pool后可能产生号码丢失。查找没有保存在library cache中的大对象: Select * from v$db_object_cache where sharable_mem>10000 and type in ('PACKAGE','PROCEDURE','FUNCTION','PACKAGE BODY' and kept='NO'; 将这些对象保存在library cache中:Execute dbms_shared_pool.keep(‘package_name’; 对应脚本:dbmspool.sql 7查找是否存在过大的匿名pl/sql代码块。两种解决方案:A.转换成小的匿名块调用存储过程 B.将其保留在shared pool中查找是否存在过

linux中的weblogic性能调优

Linux中的Weblogic性能测试调整 一.操作系统参数调整 1.linux TCP连接数调整 通过命令:ulimit –n 查看当前最大TCP连接数,这表示当前用户的每个 进程最多允许同时打开多少个文件。一般系统默认为1024,在并发量大 的情况下肯定不够用。 修改此限制的最简单办法:ulimit –n 设置单一进程允许打开 的最大文件数。如果系统回显类似于“Operation not permitted”之类的话,说明修改失败,需要修改系统对该用户打开文件数的软限制或硬限制。 修改软限制或硬限制: 修改/etc/security/limits.conf文件,在文件中添加如下行: * soft nofile 10240 * hard nofile 10240 表示修改所有用户的限制,也可以用指定用户名替代。 修改/etc/pam.d/login文件,在文件中添加如下行: session required /lib/security/pam_limits.so 查看Linux系统级的最大打开文件数限制:cat /proc/sys/fs/file-max 2.修改网络内核对TCP连接的有关限制 端口范围: 修改/etc/sysctl.conf文件,在文件中添加如下行: net.ipv4.ip_local_port_range = 1024 65535 另外,有时无法建立TCP连接的原因可能是因为Linux网络内核的IP_TABLE防火 墙对最大跟踪的TCP连接数有限制 修改/etc/sysctl.conf文件,在文件中添加如下行:net.ipv4.ip_conntrack_max = 10240 这表明将系统对最大跟踪的TCP连接数限制设置为10240。请注意,此限制值要尽 量小,以节省对内核内存的占用。 3.其他参数调整 在/etc/sysctl.conf文件中增加如下参数,进行系统参数调整 net.core.rmem_default=128388607 默认的TCP数据接收缓冲 net.core.wmem_default=128388607 默认的TCP数据发送缓冲 net.core.rmem_max=128388607 net.core.wmem_max=128388607

Linux-2.6.31内核优化指南

Linux 2.6.31内核优化指南 作者:Ken Wu Email: ken.wug@https://www.360docs.net/doc/f416466311.html, 介绍 本文档是一篇关于Linux Kernel 2.6.31的最简优化指南。作者旨在编译一份性 能最佳且适合普通Application/Server开发用的内核。(非生产环境) 本文提及的内核调优,主要是通过选择最佳编译选项,删除无用驱动,减少内核尺寸,关闭部分安全特性等方式来进行的。 优化后的效果,主要体现在OS启动时间,启动后的内存占用以及应用程序运行性能。 由于作者水平有限,如果描述错误,还请不吝指教。 运行环境 虚拟机Virtualbox 3.1.4 CPU Core 2 Duo P9500 2.53G双核开启vt-x, APIC 磁盘 虚拟10G的SATA磁盘 内存 分了1G物理内存 网卡 虚拟AMD PCNet32 100M 其他USB,串口,显卡,声卡全关 作者是在虚拟机中编译的内核,如果你与作者的运行环境不同,则本文档中的部分描述可能会与你的实际情况有一定出入。 不过,相信大部分用户在看到选项释义时,能做出适合自己的选择。 说明 下列选项中,通过"// "注释的行,代表金国步写的内核选项简介中未提及的选项释义。 通过红色"<==="注释的行,代表内核默认开启,本文档推荐关闭的选项,释

义部分会给出关闭的理由。 参考资料 金国步写的内核选项简介 Linux Kernel Database Linuxsir BBS 优化前后性能对比 项目优化前优化后 内核尺寸 4.1M 1.6M 启动时间(含dhcp+默认init service)22s14s 启动后的内存占用25M22M APP SPEC测试成绩待测待测 General setup ---> [ ] Prompt for development and/or incomplete code/drivers <===显示尚在开发中或尚未完成的代码和驱动.我不是内核或驱动开发人员。 () Local version - append to kernel release [ ] Automatically append version information to the version string Kernel compression mode (Bzip2) ---> <===对比默认的Gzip,Bzip2拥有更高的压缩比 [*] Support for paging of anonymous memory (swap) [*] System V IPC [*] BSD Process Accounting

OracleSQL性能优化方法

OracleSQL性能优化方法 Oracle性能优化方法(SQL篇) (1) 1综述 (2) 2表分区的应用 (2) 3访咨询Table的方式 (3) 4共享SQL语句 (3) 5选择最有效率的表名顺序 (5) 6WHERE子句中的连接顺序. (6) 7SELECT子句中幸免使用’*’ (6) 8减少访咨询数据库的次数 (6) 9使用DECODE函数来减少处理时刻 (7) 10整合简单,无关联的数据库访咨询 (8) 11删除重复记录 (8) 12用TRUNCATE替代DELETE (9) 13尽量多使用COMMIT (9) 14运算记录条数 (9) 15用Where子句替换HA VING子句 (9) 16减少对表的查询 (10) 17通过内部函数提高SQL效率 (11) 18使用表的不名(Alias) (12) 19用EXISTS替代IN (12) 20用NOT EXISTS替代NOT IN (13) 21识不低效执行的SQL语句 (13) 22使用TKPROF 工具来查询SQL性能状态 (14) 23用EXPLAIN PLAN 分析SQL语句 (14) 24实时批量的处理 (16)

1综述 ORACLE数据库的性能调整是个重要,却又有难度的话题,如何有效地进行调整,需要通过反反复复的过程。在数据库建立时,就能依照顾用的需要合理设计分配表空间以及储备参数、内存使用初始化参数,对以后的数据库性能有专门大的益处,建立好后,又需要在应用中不断进行应用程序的优化和调整,这需要在大量的实践工作中不断地积存体会,从而更好地进行数据库的调优。 数据库性能调优的方法 ●调整内存 ●调整I/O ●调整资源的争用咨询题 ●调整操作系统参数 ●调整数据库的设计 ●调整应用程序 本文针对应用程序的调整,来讲明对数据库性能如何进行优化。 2表分区的应用 关于海量数据的表,能够考虑建立分区以提高操作效率。建立分区一样以关键字为分区的标志,也能够以其他字段作为分区的标志,但效率不如关键字高。建立分区的语句在建表时能够进行讲明: create table TABLENAME() partition by range (PutOutNo) (partition PART1 values lessthan (200312319999) partition PART2 values lessthan (200412319999) 。。。。。。 如此,在进行大部分数据查询,数据更新和数据插入时,Oracle自动判定操作应该在哪个分区进行,幸免了整表操作,提高了执行的效率

Linux 性能测试与分析报告

Linux 性能测试与分析 Linux 性能测试与分析 Revision History 1 性能测试简介 l 性能测试的过程就是找到系统瓶颈的过程。 l 性能测试(包括分析和调优)的过程就是在操作系统的各个子系统之间取得平衡的过程。l 操作系统的各个子系统包括: ?CPU

?Memory ?IO ?Network 他们之间高度依赖,互相影响。比如: 1. 频繁的磁盘读写会增加对存的使用 2. 大量的网络吞吐,一定意味着非常可观的CPU利用率 3. 可用存的减少可能增加大量的swapping,从而使系统负载上升甚至崩溃 2 应用程序类型 性能测试之前,你首先需要判断你的应用程序是属于那种类型的,这可以帮助你判断哪个子系统可能会成为瓶颈。 通常可分为如下两种: CPU bound –这类程序,cpu往往会处于很高的负载,当系统压力上升时,相对于磁盘和存,往往CPU首先到达瓶颈。Web server,mail server以及大部分服务类程序都属于这一类。 I/O bound –这类程序,往往会频繁的访问磁盘,从而发送大量的IO请求。IO类应用程序往往利用cpu发送IO请求之后,便进入sleep状态,从而造成很高的IOWAIT。数据库类程序,cache服务器往往属于这种类型。 3 CPU

3.1 性能瓶颈 3.1.1 运算性能瓶颈 作为计算机的计算单元,其运算能力方面,可能出现如下瓶颈: 1. 用户态进程CPU占用率很高 2. 系统态(核态)CPU占用率很高 测试CPU的运算性能,通常是通过计算圆周率来测试CPU的浮点运算能力和稳定性。据说Pentium CPU的一个运算bug就是通过计算圆周率来发现的。圆周率的计算方法,通常是计算小数点后104万位,通过比较运算时间来评测CPU的运算能力。 常用工具: 1. SUPER PI(π) 2. Wprime 与SuperPI不同的是,可以支持多核CPU的运算速度测试 3. FritzChess 一款国际象棋测试软件,测试每秒钟可运算的步数 突破CPU的运算瓶颈,一般只能靠花钱。比如提高时钟频率,提高L1,L2 cache容量或不断追求新一代的CPU架构: Core -> Nehalem(E55x,如r710,dsc1100) -> Westmere –> Sandy Bridge 3.1.2 调度性能瓶颈 CPU除了负责计算之外,另一个非常重要的功能就是调度。在调度方面,CPU可能会出现如下性能瓶颈: 1. Load平均值超过了系统可承受的程度 2. IOWait占比过高,导致Load上升或是引入新的磁盘瓶颈 3. Context Switch过高,导致CPU就像个搬运工一样,频繁在寄存器(CPU Register)和运行队列(run queue)之间奔波 4. 硬中断CPU占比接近于100% 5. 软中断CPU占比接近于100% 超线程 超线程芯片可以使得当前线程在访问存的间隙,处理器可以使用它的机器周期去执行另外一个线程。一个超线程的物理CPU可以被kernel看作是两个独立的CPU。 3.2 典型监控参数 图1:top

( O管理)ORACLESL性能优化(内部培训资料)

(O管理)ORACLESL性能优化(内部培训资料)

ORACLESQL性能优化系列(一) 1.选用适合的ORACLE优化器 ORACLE的优化器共有3种: a.RULE(基于规则) b.COST(基于成本) c.CHOOSE(选择性) 设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS.你当然也在SQL句级或是会话(session)级对其进行覆盖. 为了使用基于成本的优化器(CBO,Cost-BasedOptimizer),你必须经常运行analyze命令,以增加数据库中的对象统计信息(objectstatistics)的准确性. 如果数据库的优化器模式设置为选择性(CHOOSE),那么实际的优化器模式将和是否运行过analyze命令有关.如果table已经被analyze过,优化器模式将自动成为CBO,反之,数据库将采用RULE形式的优化器. 在缺省情况下,ORACLE采用CHOOSE优化器,为了避免那些不必要的全表扫描(fulltablescan),你必须尽量避免使用CHOOSE优化器,而直接采用基于规则或者基于成本的优化器.

2.访问Table的方式 ORACLE采用两种访问表中记录的方式: a.全表扫描 全表扫描就是顺序地访问表中每条记录.ORACLE采用一次读入多个数据块(databaseblock)的方式优化全表扫描. b.通过ROWID访问表 你可以采用基于ROWID的访问方式情况,提高访问表的效率,,ROWID包含了表中记录的物理位置信息..ORACLE采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系.通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高. 3.共享SQL语句 为了不重复解析相同的SQL语句,在第一次解析之后,ORACLE将SQL语句存放在内存中.这块位于系统全局区域SGA(systemglobalarea)的共享池(sharedbufferpool)中的内存可以被所有的数据库用户共享.因此,当你执行一个SQL语句(有时被称为一个游标)时,如果它和之前的执行过的语句完全相同,ORACLE就能很快获得已经被解析的语句以及最好的执行路

oracle数据库性能调优

Centos6.5操作系统下,oracle数据库性能调优 1.在liunx下对数据库性能调优,首先要考虑操作系统级别的问题如:如CPU、内存、IO的瓶颈,再考虑oracle本身参数的设置。 1. 可通过top 命令判断是否为CPU瓶颈,如果oracle进程占用CPU过多,可考虑为CPU的问题。 目前我们针对的主要是内存和磁盘的问题。 2.Oracle数据库内存参数的优化 ?与oracle相关的系统内核参数 ?SGA、PGA参数设置 (1)系统内核参数 修改/etc/sysctl.conf 这个文件,加入以下的语句: kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.shmall = 2097152 kernel.sem = 250 32000 100 128 fs.file-max = 65536 参数依次为: Kernel.shmmax:共享内存段的最大尺寸(以字节为单位)。 Kernel.shmmni:系统中共享内存段的最大数量。 Kernel.shmall:共享内存总量,以页为单位。 fs.file-max:文件句柄数,表示在Linux系统中可以打开的文件数量。 net.ipv4.ip_local_port_range:应用程序可使用的IPv4端口范围。 可通过sysctl -p 查看内核参数的值,请确认各个内核参数只有一个,避免出现一个内核参数出现好几次的情况,导致正确的参数别覆盖。

需要注意的几个问题 关于Kernel.shmmax Oracle SGA 由共享内存组成,如果错误设置SHMMAX可能会限制SGA 的大小,SHMMAX设置不足可能会导致以下问题:ORA-27123:unable to attach to shared memory segment,如果该参数设置小于Oracle SGA设置,那么SGA就会被分配多个共享内存段。这在繁忙的系统中可能成为性能负担,带来系统问题。 Oracle建议Kernel.shmmax最好大于sga,以让oracle共享内存区SGA在一个共享内存段中,从而提高性能。 Oracle 11g实现了数据库所有内存块的全自动化管理,使得动态管理SGA和PGA成为现实。 日志文件及表空间文件的大小及位置也是影响性能的一个因素,排查过程如下。 应用 iotop -ao 命令查看oracle对磁盘读写对资源的占用情况, ora_lgwr_first进行对磁盘的访问较多。 使用

linux系统性能优化及瓶颈分析

linux系统性能优化及瓶颈分析 一,用vmstat分析系统I/O情况 [root@localhost ~]# vmstat -n 3 (每个3秒刷新一次) procs-----------memory--------------------swap--- ---io---- --system---- ------cpu-------- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 144 186164 105252 2386848 0 0 18 166 83 2 48 21 31 0 2 0 144 189620 105252 2386848 0 0 0 177 1039 1210 34 10 56 0 0 0 144 214324 105252 2386848 0 0 0 10 1071 670 32 5 63 0 0 0 144 202212 105252 2386848 0 0 0 189 1035 558 20 3 77 0 2 0 144 158772 105252 2386848 0 0 0 203 1065 2832 70 14 15 0 IO -bi:从块设备读入的数据总量(读磁盘)(KB/S) -bo:写入到块设备的数据总量(写磁盘)(KB/S) 随机磁盘读写的时候,这2个值越大(如超出1M),能看到CPU在IO等待的值也会越大 二,用iostat分析I/O子系统情况 如果你的系统没有iostat,sar,mpstat等命令,安装sysstat- 7.0.2-1.el5.i386.rpm包,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU 使用情况。同vmstat

Oracle SQL性能优化方法研究

Oracle SQL性能优化方法探讨 Oracle性能优化方法(SQL篇) (1) 1综述 (2) 2表分区的应用 (2) 3访问Table的方式 (3) 4共享SQL语句 (3) 5选择最有效率的表名顺序 (5) 6WHERE子句中的连接顺序. (6) 7SELECT子句中幸免使用’*’ (6) 8减少访问数据库的次数 (6) 9使用DECODE函数来减少处理时刻 (7) 10整合简单,无关联的数据库访问 (8) 11删除重复记录 (8) 12用TRUNCATE替代DELETE (9) 13尽量多使用COMMIT (9) 14计算记录条数 (9) 15用Where子句替换HAVING子句 (9) 16减少对表的查询 (10) 17通过内部函数提高SQL效率 (11)

18使用表的不名(Alias) (12) 19用EXISTS替代IN (12) 20用NOT EXISTS替代NOT IN (13) 21识不低效执行的SQL语句 (13) 22使用TKPROF 工具来查询SQL性能状态 (14) 23用EXPLAIN PLAN 分析SQL语句 (14) 24实时批量的处理 (16)

1综述 ORACLE数据库的性能调整是个重要,却又有难度的话题,如何有效地进行调整,需要通过反反复复的过程。在数据库建立时,就能依照顾用的需要合理设计分配表空间以及存储参数、内存使用初始化参数,对以后的数据库性能有专门大的益处,建立好后,又需要在应用中不断进行应用程序的优化和调整,这需要在大量的实践工作中不断地积存经验,从而更好地进行数据库的调优。 数据库性能调优的方法 ●调整内存 ●调整I/O ●调整资源的争用问题 ●调整操作系统参数 ●调整数据库的设计 ●调整应用程序 本文针对应用程序的调整,来讲明对数据库性能如何进行优化。 2表分区的应用 关于海量数据的表,能够考虑建立分区以提高操作效率。建

Linux 性能调优的几种方法

Linux 性能调优的几种方法 按照传统,Linux不同的发行版本和不同的内核对各项参数及设置均做了改动,从而使得系统能够获得更好的性能。下边将分四部分介绍在Red Hat Enterprise Linux AS和SUSE LINUX Enterprise Server系统下,如何用以下几种技巧进行性能的优化: 1、Disabling daemons (关闭daemons) 2、Shutting down the GUI (关闭GUI) 3、Changing kernel parameters (改变内核参数) 4、Kernel parameters (内核参数) 5、Tuning the processor subsystem(处理器子系统调优) 6、Tuning the memory subsystem (内存子系统调优) 7、Tuning the file system(文件系统子系统调优) 8、Tuning the network subsystem(网络子系统调优) 1 关闭daemons 有些运行在服务器中的daemons (后台服务),并不是完全必要的。关闭这些daemons可释放更多的内存、减少启动时间并减少CPU处理的进程数。减少daemons数量的同时也增强了服务器的安全性。缺省情况下,多数服务器都可以安全地停掉几个daemons。 Table 10-1列出了Red Hat Enterprise Linux AS下的可调整进程. Table 10-2列出了SUSE LINUX Enterprise Server下的可调整进程

注意:关闭xfs daemon将导致不能启动X,因此只有在不需要启动GUI图形的时候才可以关闭xfs daemon。使用startx命令前,开启xfs daemon,恢复正常启动X。

linux性能调优学习笔记

Linux 性能调优 1.Profiling几种工具 profiling 包括几种:cpu profiling,即提到的性能分析。memory profiling,即分析程序性能。network profiling,即网络流量的分析。 另外,profiling又分两种:1, sampling。即采样方式。2, instruments,即插装代码技术。(包含: 编译期间,链接期间,运行期间)。 oprofile ---- 属于sampling 方式,即不影响程序行为,也不需要重启程序,它是对cpu进行采样分析。 gprof ---- 属于插装技术,需在编译期间增加-pg 选项,属于GNU 部分,不需安装,随着gcc附带。 valgrind--- 属于插装技术,需要在运行期间增加valgrind选项。(其中massif工具用于内存分析,callgrind用于性能分析) google-perftools ---- 属于插装技术,需要在链接期间增加-L/usr/lib -lprofiler 选项。 2.gprof 分析linux程序性能瓶颈 gcc -pg -o test test.c test运行的时候会把搜集的信息保存在gmoun.out中 fedora 不能使用-lc_p选项的问题 一般gprof只能查看用户函数信息。如果想查看库函数的信息,需要在编译是再加入“-lc_p”编译参数代替“-lc”编译参数,这样程序会链接libc_p.a库,才可以产生库函数的profiling信息。 需要安装glibc-profile,下载地址 http://ftp.riken.jp/Linux/fedora/core/updates/2/i386/glibc-profile-2.3.3-27.1.i386.rp。 gprof hello gmon.out -p 得到每个函数占用的执行时间 gprof hello gmon.out -q 得到call graph,包含了每个函数的调用关系,调用次数,执行时间等信息。 gprof hello gmon.out -A 得到一个带注释的“源代码清单”,它会注释源码,指出每个函数的执行次数。这需要在编译的时候增加-g选项。 3.Oprofile性能调优 https://www.360docs.net/doc/f416466311.html,/news/ 要使用oprofile 首先得采用打开oprofile支持的内核启动。 Oprofile需要重新编译内核,请确认: .config 文件中设置: CONFIG_PROFILING=y CONFIG_OPROFILE=y 另外,还要在Processor type and features 菜单中启用Local APIC 和IO-APIC: CONFIG_X86_LOCAL_APIC=y CONFIG_X86_IO_APIC=y 查看处理起本身没有集成APIC oprofile.ko内核模块已经被集成到linux 2.6内核中,所以只需要安装前端工具,可以从

Oracle性能调优原则

Oracle性能调优原则 任何事情都有它的源头,要解决问题,也得从源头开始,影响ORACLE性能的源头非常多,主要包括如下方面:数据库的硬件配置:CPU、内存、网络条件1. CPU:在任何机器中CPU的数据处理能力往往是衡量计算机性能的一个标志,并且ORACLE是一个提供并行能力的数据库系统,在CPU方面的要求就更高了,如果运行队列数目超过了CPU处理的数目,性能就会下降,我们要解决的问题就是要适当增加CPU的数量了,当然我们还可以将需要许多资源的进程KILL掉;2. 内存:衡量机器性能的另外一个指标就是内存的多少了,在ORACLE中内存和我们在建数据库中的交换区进行数据的交换,读数据时,磁盘I/O必须等待物理I/O操作完成,在出现ORACLE 的内存瓶颈时,我们第一个要考虑的是增加内存,由于I/O的响应时间是影响ORACLE性能的主要参数,我将在这方面进行详细的讲解3. 网络条件:NET*SQL负责数据在网络上的来往,大量的SQL会令网络速度变慢。比如10M的网卡和100的网卡就对NET*SQL有非常明显的影响,还有交换机、集线器等等网络设备的性能对网络的影响很明显,建议在任何网络中不要试图用3个集线器来将网段互联。OS参数的设置下表给出了OS的参数设置及说明,DBA可以根据实际需要对这些参数进行设置内核参数名说明bufpages对buffer空间不按静态分配,采用动态分配,使bufpages值随nbuf一起对

buffer空间进行动态分配。Create_fastlinks对HFS文件系统允许快速符号链接dbc_max_pct加大最大动态buffer空间所占物理内存的百分比,以满足应用系统的读写命中率的需要。Dbc_min_pct设置最小动态buffer空间所占物理内存的百分比desfree提高开始交换操作的最低空闲内存下限,保障系统的稳定性,防止出现不可预见的系统崩溃(Crash)。Fs_async允许进行磁盘异步操作,提高CPU 和磁盘的利用率lotsfree提高系统解除换页操作的空闲内存的上限值,保证应用程序有足够的可用内存空间。Maxdsiz针对系统数据量大的特点,加大最大数据段的大小,保证应用的需要。(32位)maxdsiz_64bitmaximum process data segment size for 64_bitMaxssiz加大最大堆栈段的大小。(32_bit)maxssiz_64bit加大最大堆栈段的大小。(64_bit)Maxtsiz提高最大代码段大小,满足应用要求maxtsiz_64bit原值过大,应调小Minfree提高停止交换操作的自由内存的上限Shmem允许进行内存共享,以提高内存的利用率Shmmax设置最大共享内存段的大小,完全满足目前的需要Timeslice由于系统的瓶颈主要反映在磁盘I/O上,因此降低时间片的大小,一方面可避免因磁盘I/O不畅造成CPU的等待,从而提高了CPU的综合利用率。另一方面减少了进程的阻塞量。Unlockable_mem提高了不可锁内存的大小,使可用于换页和交换的内存空间扩大,用以满足系统对内存管理的要求。用户SQL质量以上讲的都是硬件方面的东西,在条件有限的条件下,我们可以调整应用程序的SQL质量:1. 不要进行全表扫描(Full Table Scan):全表扫描

相关文档
最新文档