Oracle TOPSQL整理

–top 10 sql

SELECT *
FROM (
    SELECT b.username AS username
        , a.disk_reads / DECODE(a.executions, 0, 1, a.executions) AS rds_exec_ratio
        , a.sql_text AS STATEMENT
    FROM v$sqlarea a, dba_users b
    WHERE a.parsing_user_id = b.user_id
        AND b.username = 'ZYK'
    ORDER BY rds_exec_ratio DESC
)
WHERE ROWNUM < 11
ORDER BY rds_exec_ratio DESC

1. 识别’低效执行’的SQL语句
用下列SQL工具找出低效SQL:

SELECT EXECUTIONS , DISK_READS, BUFFER_GETS, 
        ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio, 
        ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run, 
        SQL_TEXT 
FROM   V$SQLAREA 
WHERE  EXECUTIONS>0 
AND     BUFFER_GETS > 0 
AND (BUFFER_GETS-DISK_READS)/BUFFER_GETS < 0.8 
ORDER BY 4 DESC; 

2.查找单条语句的内存占用率

alter system set pga_aggregate_target=10m 
alter system set workarea_size_policy=auto; 
select distinct * from a where rownum<500000; 

select sql_text,operation_type,policy,(last_memory_used/1024/1024), 
last_execution,last_tempseg_size 
from v$sql i,v$sql_workarea a 
where i.hash_value=a.hash_value 
and sql_text='select distinct * from a where rownum<500000'; 

Top 10 by Buffer Gets:

set linesize 100 
set pagesize 100 
SELECT * FROM 
(SELECT substr(sql_text,1,40) sql, 
buffer_gets, executions, buffer_gets/executions "Gets/Exec", 
hash_value,address 
FROM V$SQLAREA 
WHERE buffer_gets > 10000 
ORDER BY buffer_gets DESC) 
WHERE rownum <= 10 ; 

Top 10 by Physical Reads:

set linesize 100 
set pagesize 100 
SELECT * FROM 
(SELECT substr(sql_text,1,40) sql, 
disk_reads, executions, disk_reads/executions "Reads/Exec", 
hash_value,address 
FROM V$SQLAREA 
WHERE disk_reads > 1000 
ORDER BY disk_reads DESC) 
WHERE rownum <= 10 ; 

Top 10 by Executions:

set linesize 100 
set pagesize 100 
SELECT * FROM 
(SELECT substr(sql_text,1,40) sql, 
executions, rows_processed, rows_processed/executions "Rows/Exec", 
hash_value,address 
FROM V$SQLAREA 
WHERE executions > 100 
ORDER BY executions DESC) 
WHERE rownum <= 10 ; 

Top 10 by Parse Calls:

set linesize 100 
set pagesize 100 
SELECT * FROM 
(SELECT substr(sql_text,1,40) sql, 
parse_calls, executions, hash_value,address 
FROM V$SQLAREA 
WHERE parse_calls > 1000 
ORDER BY parse_calls DESC) 
WHERE rownum <= 10 ; 

Top 10 by Sharable Memory:

set linesize 100 
set pagesize 100 
SELECT * FROM 
(SELECT substr(sql_text,1,40) sql, 
sharable_mem, executions, hash_value,address 
FROM V$SQLAREA 
WHERE sharable_mem > 1048576 
ORDER BY sharable_mem DESC) 
WHERE rownum <= 10 ; 

Top 10 by Version Count:

set linesize 100 
set pagesize 100 
SELECT * FROM 
(SELECT substr(sql_text,1,40) sql, 
version_count, executions, hash_value,address 
FROM V$SQLAREA 
WHERE version_count > 20 
ORDER BY version_count DESC) 
WHERE rownum <= 10 ;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#!/bin/sh #安装插件 cd /root/mysql if test -e ./sharutils-4.6.1-2.x86_64.rpm then echo 'sharutils开始安装...' rpm -ivh sharutils-4.6.1-2.x86_64.rpm echo 'sharutils安装完成...' else echo 'sharutils文件不存在!' exit fi #安装msql8 if test -e ./mysql8.0.19_64-636.sh then if test -e ./mysql8.0.19_64-636.sh.sha256 then echo '准备安装mysql8' sh ./mysql8.0.19_64-636.sh else echo 'mysql8.sha256文件不存在!' exit fi else echo 'mysql8.sh文件不存在!' exit fi if [ $? -eq 0 ]; then echo 'mysql安装完成...' else echo 'mysql安装失败!' exit fi #执行重启不需验证 /topwalk/baseapp/bin/mysqld restart --skip_grant_tables #安装tcl sh ./tcl-install.sh if [ $? -eq 0 ]; then echo 'tcl安装完成...' else echo 'tcl安装失败!' exit fi #安装expect sh ./expect-install.sh if [ $? -eq 0 ]; then echo 'expect安装完成...' else echo 'expect安装失败!' exit fi #创建mysql用户,授权 sh ./initdb.sh if [ $? -eq 0 ]; then echo 'mysql用户创建,授权完成...' else echo 'mysql用户创建,授权失败!' exit fi ln -s /topwalk/baseapp/bin/mysqld /etc/init.d/ sed -i '/MYSQL_HOME/d' /etc/profile echo "export MYSQL_HOME=/topwalk/baseapp/mysql" >>/etc/profile echo 'export PATH=$PATH:$MYSQL_HOME/bin' >>/etc/profile systemctl enable mysqld source /etc/profile service mysqld restart #初始化库 /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 < topsql/CREATE_TOPBASIC.sql /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 < topsql/CREATE_TOPDMS.sql /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 < topsql/CREATE_TOPUIS.sql #初始化表 /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 TOPBASIC < topsql/TOPBASIC.sql /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 TOPDMS < topsql/TOPDMS.sql /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 TOPUIS < topsql/TOPUIS.sql #安装nginx cp -dpRf ./nginx /usr/local/ useradd nginx -m -d /usr/local/nginx/ -s /bin/bash chown -R nginx.nginx /usr/local/ngi
07-14

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值