Oracle性能优化基本方法详解

oracle性能优化基本方法包括一下几个步骤,包括:

  1)设立合理的Oracle性能优化目标。

  2)测量并记录当前的Oracle性能。

  3)确定当前Oracle性能瓶颈(Oracle等待什么、哪些SQL语句是该等待事件的成分)。

  4)把等待事件记入跟踪文件。

  5)确定当前的OS瓶颈。

  6)优化所需的成分(应用程序、、I/O、争用、OS等)。

  7)跟踪并实施更改控制过程。

  8)测量并记录当前性能

  9)重复步骤3到7,直到满足优化目标

  下面来一一详述。

  1.设立合理的Oracle性能优化目标

  重点:关于设立目标的最重要的一点是它们必须是可量化和可达到的。

  方法:目标必须是当前性能和所需性能的的陈述形式的语句。

  2.测量并记录当前Oracle性能重点:

  1)需要在峰值活动时间获得当前系统性能快照

  2)关键是要在出现性能问题的时间段内采集信息

  3)必须在合理的时间段上采集,一般在峰值期间照几个为期15分钟的快照

  3.确定当前Oracle性能瓶颈重点:从Oracle 等待接口v$system_event、v$session_event和v$session_wait中获得等待事件,进而找出影响性能的对象和sql语句。方法如下:

  1)首先,利用v$system_event视图执行下面的查询查看数据库中某些常见的等待事件:

  1.select * from v$system_event

  2.

硅基智能 硅基智能

基于Web3.0的元宇宙,去中心化的互联网,高质量、沉浸式元宇宙直播平台,用数字化重新定义直播

硅基智能 62 查看详情 硅基智能

  3.where event in (‘buffer busy waits’,

  4.

  5.’db file sequential read’,

  6.

  7.’db file scattered read’,

  8.

  9.’enqueue’,

  10.

  11.’free buffer waits’,

  12.

  13.’latch free’,

  14.

  15.’log file parallel write’,

  16.

  17.’log file sync’);

  18.

  2)接着,利用下面对v$session_event和v$session视图进行的查询,研究具有对上面显示的内容有贡献的等待事件的会话:

  1.select se.sid,s.username,se.event,se.total_waits,se.time_waited,se.average_wait

  2.

  3.from v$session s,v$session_event se

  4.

  5.where s.sid = se.sid

  6.

  7.and se.event not like ‘SQL*Net%’

  8.

  9.and s.status = ‘ACTIVE’

  10.

  11.and s.username is not null;

  12.3)使用下面查询找到与所连接的会话有关的当前等待事件。这些信息是动态的,为了查看一个会话的等待最多的事件是什么,需要多次执行此查询。

  1.select sw.sid,s.username,sw.event,sw.wait_time,sw.state,sw.seconds_in_wait SEC_IN_WAIT

  2.

  3.from v$session s,v$session_wait sw

  4.

  5.where s.sid = sw.sid

  6.

  7.and sw.event not like ‘SQL*Net%’

  8.

  9.and s.username is not null

  10.

  11.order by sw.wait_time desc;

  12.

  4)查询会话等待事件的详细信息

  1.select sid,event,p1text,p1,p2text,p2,p3text,p3

  2.

  3.from v$session_wait

  4.

  5.where sid between &1 and &2

  6.

  7.and event not like ‘%SQL%’

  8.

  9.and event not like ‘%rdbms%’;

  10.

  5)利用P1、P2的信息,找出等待事件的相关的段

  1.select owner,segment_name,segment_type,tablespace_name

  2.

  3.from dba_extents

  4.

  5.where file_id = &fileid_in

  6.

  7.and &blockid_in between block_id and block_id + blocks – 1;8.

  6)获得操作该段的sql语句:

  1.select sid, getsqltxt(sql_hash_value,sql_address)

  2.

  3.from v$session

  4.

  5.where sid = &sid_in;

  6.

  7)getsqltxt函数

  8)至此已经找到影响性能的对象和sql语句,可以有针对性地优化

  4.把等待事件记入跟踪文件

  重点:如果在跟踪系统上的等待事件时,由于某种原因遇到了麻烦,则可以将这些等待事件记入一个跟踪文件。方法如下:

  1)对于当前会话:

  1.alter session set timed_statistics=true;

  2.

  3.alter session set max_dump_file_size=unlimited;

  4.

  5.alter session set events ‘10046 trace name context forever, level 12’;

  6.

  2)执行应用程序,然后在USER_DUMP_DEST指出的目录中找到跟踪文件。

  3)查看文件中以词WAIT开始的所有行。

  4)对于其它的会话

  5)确定会话的进程ID(SPID)。下面的查询识别出名称以A开始的所有用户的会话进程ID:

  1.select S.Username, P.Spid from V$SESSION S, V$PROCESS P

  2.

  3.where S.PADDR = P.ADDR and S.Username like ‘A%’;

  4.

  6)以sysdba进入sqlplus执行

  1.alter session set timed_statistics=true;

  2.

  3.alter session set max_dump_file_size=unlimited;

  4.

  5.oradebug setospid

  6.

  7.oradebug unlimit

  8.

  9.oradebug event 10046 trace name context forever, level X /* Where X = (1,4,8,12) */

  10.

  7)跟踪某个时间间隔得会话应用程序。

  8)在USER_DUMP_DEST 的值指出的目录中利用SPID查看跟踪文件

  9)查看文件中以词WAIT开始的所有行。

  5.确定当前OS瓶颈1)Windows NT上的监控

  使用控制面板-〉管理工具-〉性能即可

  2)UNIX上的监控

  使用通用性的工具,包括sar、iostat、cpustat、mtat、netstat、top、osview等。

  6.Oracle性能优化所需的成分(应用程序、数据库、I/O、争用、OS等)。

  7.跟踪并实施更改控制过程。

  8.测量并记录当前Oracle性能

  9.重复步骤3到7,直到满足优化目标

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/512211.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
win10怎么激活呀 正版系统激活方法汇总
上一篇 2025年11月9日 01:20:17
sublime怎么重置为出厂默认设置_sublime恢复初始配置的步骤
下一篇 2025年11月9日 01:20:24

相关推荐

  • Workerman开发技巧指南:优化TCP/IP通信性能的秘笈

    workerman开发技巧指南:优化tcp/ip通信性能的秘笈 引言:在网络编程中,TCP/IP通信是一种常用的方式。而Workerman作为一款高性能的PHP Socket网络编程框架,能够轻松地实现TCP/IP通信。然而,要想实现高效的通信性能,开发者需要掌握一些技巧。本篇文章将向你介绍一些Wo…

    用户投稿 2026年9月22日
    100
  • MySQL最新版本如何下载?官方下载指南

    MySQL最新版本如何下载?官方下载指南MySQL最新版本如何下载?官方下载指南MySQL最新版本如何下载?官方下载指南MySQL最新版本如何下载?官方下载指南

    要下载mysql,推荐从官网直接下载;选择社区版或商业版取决于用途;下载时需选对操作系统和版本;安装遇到问题可查错误提示并搜索解决方案;验证安装成功可用命令行登录。下载步骤包括访问官网、选择版本与操作系统、使用installer、注册账号、开始下载安装。安装后配置root密码、字符集等。验证方式为命…

    2026年9月22日 用户投稿
    300
  • Flyway多数据库与CI/CD测试集成策略

    本文深入探讨了在CI/CD流程中,如何高效地配置Flyway以管理多数据库环境下的迁移,尤其关注集成测试场景。我们将比较使用真实数据库服务、Testcontainers以及Flyway自身多数据库配置的优劣,并提供关于分离生产与测试环境迁移脚本的实用策略,旨在确保开发、测试与生产环境的数据一致性与流…

    2026年9月22日
    200
  • Oracle定时任务

    oracle 介绍 oracle job 是应用在数据库层面,用来定时执行存储过程或者 SQL 语句的定时器。 测试数据代码语言:javascript代码运行次数:0运行复制 –建测试表CREATE TABLE TEST_JOB( DATETIME DATE, BEG_DATE VARCHAR2(…

    2026年9月22日
    500
  • MySQL数据备份自动化实施_MySQL定时任务与脚本管理

    MySQL数据备份自动化实施_MySQL定时任务与脚本管理MySQL数据备份自动化实施_MySQL定时任务与脚本管理MySQL数据备份自动化实施_MySQL定时任务与脚本管理MySQL数据备份自动化实施_MySQL定时任务与脚本管理

    mysql数据备份的自动化实施核心在于结合mysqldump等工具与操作系统的定时任务(如linux的cron或windows的task scheduler),通过编写和管理脚本实现定期执行备份。1. 使用mysqldump作为基础工具,编写包含数据库连接信息、时间戳文件名、日志记录、压缩清理等功能…

    2026年9月21日 用户投稿
    200
  • VSCode编写Java代码方法_VSCode搭建Java开发环境实战教程

    答案:在VSCode中配置Java开发环境需安装JDK并设置环境变量,再安装VSCode及Java扩展包,即可实现Java项目的创建、编写、运行与调试。它轻量、启动快,支持多语言和丰富扩展,集成Maven/Gradle,适合日常开发。 在VSCode里编写Java代码,说白了,就是把这个轻量级的代码…

    2026年9月21日
    100
  • mysqlmysql如何优化in条件大列表查询

    使用EXPLAIN和慢查询日志判断IN性能问题,type为ALL且possible_keys为空或rows过大说明需优化;JOIN在有索引时通常优于IN,尤其当列表值来自另一表时;大IN列表可拆分为多个小IN结合UNION ALL,或存入临时表后用JOIN提升效率。 优化 MySQL 中 IN 条件…

    2026年9月21日
    100
  • 在Linux中如何通过命令行安装Java JDK

    在Linux中安装Java JDK可通过包管理器或手动安装,推荐使用系统自带工具安装OpenJDK。对于Ubuntu/Debian系统,先更新软件包列表:sudo apt update,再搜索可用版本:apt search openjdk-*,然后安装指定版本如OpenJDK 17:sudo apt…

    2026年9月20日
    000
  • 如何配置Scala与Java混合开发环境 Scala环境与JDK整合方法

    配置Scala与Java混合开发环境的关键是安装JDK、Scala并统一管理依赖。1. 安装JDK 8或11,配置JAVA_HOME和PATH;2. 安装Scala并设置SCALA_HOME;3. 使用SBT创建项目,配置build.sbt,组织src目录;4. 在IntelliJ IDEA中安装S…

    2026年9月20日
    100
  • 如何在Laravel中实现数据加密

    在laravel中实现数据加密的最直接且推荐方式是使用内置的crypt门面,其基于openssl并默认采用aes-256算法,通过app_key进行加解密。1. 使用crypt::encryptstring()或crypt::encrypt()对字符串或数组/对象进行加密;2. 使用crypt::d…

    2026年9月13日
    100
  • 如何在mysql中迁移分区表数据

    答案:MySQL分区表数据迁移需确保结构兼容性和数据完整性,常用方法包括:1. 使用INSERT INTO…SELECT迁移数据,要求目标表已存在且WHERE条件匹配分区范围;2. 通过mysqldump导出导入,适用于跨实例迁移,操作简单但大表性能差;3. 模拟EXCHANGE PAR…

    2026年9月10日
    100
  • thinkphp8相比thinkphp6有哪些新特性

    ThinkPHP8在性能、架构、功能和开发体验上全面升级,采用全新模块化架构,优化路由解析与数据库查询,提升响应速度;支持PHP 8.0+新特性,代码更简洁高效;增强中间件、路由、模型及验证功能,强化安全防护;兼容TP6代码,无缝升级,降低迁移成本。 ThinkPHP8 相比 ThinkPHP6 进…

    2026年9月10日
    400
  • 样样超 Pro!感受一加 13 带来的性能与影像双重盛宴

    样样超 Pro!感受一加 13 带来的性能与影像双重盛宴样样超 Pro!感受一加 13 带来的性能与影像双重盛宴样样超 Pro!感受一加 13 带来的性能与影像双重盛宴样样超 Pro!感受一加 13 带来的性能与影像双重盛宴

    如果你追求极致的性能、顶级的屏幕显示效果、专业的影像体验,并且希望拥有一部兼具质感与实力的旗舰手机,那么一加 13 无疑是当前市场上的有力竞争者。它没有选择折叠形态,而是将所有 “pro” 级体验,浓缩在一部直板旗舰之中。 核心性能:骁龙 8 至尊版,释放极致潜能 一加 13…

    2026年9月9日 用户投稿
    000
  • Laravel如何优化数据库查询_数据库性能调优技巧

    Laravel应用中最常见的数据库性能瓶颈包括N+1查询、缺少索引、SELECT 未指定列、不合理的大事务及复杂JOIN操作。N+1问题因循环中频繁查询关联数据导致数据库负载激增,可通过Eloquent的with()预加载解决;缺少索引会使WHERE、JOIN或ORDER BY操作引发全表扫描,应为…

    2026年9月9日
    000
  • Oracle DATE类型的时间组件处理与日期存储策略

    Oracle数据库的`DATE`数据类型始终包含日期和时间组件,即使未明确指定时间,系统也会默认填充午夜(00:00:00)。因此,当期望只存储日期时,实际存储的仍会包含时间部分。本文将深入探讨这一特性,并提供在SQL查询和应用程序层面有效管理和显示日期(不含时间)的策略,强调应通过格式化而非尝试修…

    2026年9月9日
    200
  • MEOW R16 Ultra 高颜驾到!异次元拼图风,主打新潮外观和旗舰性能

    8 月 27 日,七彩虹旗下年轻化潮流品牌 colorfire 正式推出 meow 系列全新旗舰机型——meow r16 ultra。作为继 meow r16 标准版与 pro 版之后的又一力作,这款新品专为追求个性与性能兼备的年轻用户打造,进一步拓展品牌在潮流游戏本领域的影响力。 MEOW R16…

    2026年9月9日
    100
  • mysql中如何审计用户操作

    答案:MySQL审计可通过企业版插件、通用日志、触发器或外部工具实现。使用MySQL Enterprise Audit插件可详细记录登录与操作行为;社区版可启用general_log记录所有SQL语句,但影响性能;关键表可创建审计表和触发器追踪DML变更;还可结合Percona、ProxySQL或E…

    2026年9月9日
    100
  • 如何在安装完成后配置表空间管理

    首先创建表空间并指定存储路径与大小,Oracle和PostgreSQL通过CREATE TABLESPACE命令实现;接着可为用户设置默认表空间,避免每次建表显式指定;然后在建表时可通过TABLESPACE子句指定对象存储位置;定期使用系统视图或函数监控表空间使用情况,防止空间不足;当空间紧张时,可…

    2026年9月9日
    000
  • 什么是mysql数据库及其基本概念

    MySQL是开源关系型数据库,基于SQL操作,用于Web开发;包含数据库、表、行、列等基本概念,支持主键唯一标识和外键关联表,常用SQL语句包括SELECT、INSERT、UPDATE、DELETE,广泛应用于电商、博客等需数据持久化与一致性的场景。 MySQL 是一种广泛使用的关系型数据库管理系统…

    2026年9月8日
    100
  • OpenJPA与Oracle:解决4000字节字符串限制警告

    当openjpa在oracle数据库环境中记录“warn: … is being mapped with a handler that may not be able to store values over 4000 bytes/chars long”警告时,这通常意味着实体中某个字符…

    2026年9月8日
    000

发表回复

登录后才能评论
关注微信