精华内容
下载资源
问答
  • Oracle 查询耗时 SQL

    千次阅读 2015-08-28 11:23:42
    当你的系统变慢时,如何查询系统中最耗时的 SQL 呢?试一试下面的 SQL 吧。 select * from ( select * from V$SQLSTATS -- 最耗时的 SQL -- ELAPSED_TIME 指的是总耗时(毫秒),平均耗时 = ELAPSED_TIME/...

    -- Start

    当你的系统变慢时,如何查询系统中最耗时的 SQL 呢?试一试下面的 SQL 吧。

    select * from (
    	select * from V$SQLSTATS
    	
    	-- 最耗时的 SQL
    	-- ELAPSED_TIME 指的是总耗时(毫秒),平均耗时 = ELAPSED_TIME/EXECUTIONS
    	-- order by ELAPSED_TIME DESC
    	
    	-- 查询执行次数最多的 SQL
    	-- order by EXECUTIONS DESC
    	
    	-- 读硬盘最多的 SQL
    	-- order by DISK_READS DESC
    	
    	-- 最费 CPU 的 SQL
    	-- order by BUFFER_GETS DESC
    ) where rownum <=50;

    一旦查询到耗时 SQL,你需要查看一下它们的执行计划才能知道它们为什么慢,不知道如何查询执行计划?看看这里吧 <Oracle 查看执行计划>


    --更多参见:Oracle SQL 优化精萃

    -- 声明:转载请注明出处

    -- Last edited on 2015-08-28

    -- Created by ShangBo on 2015-08-28

    -- End

    展开全文
  •  ORACLE的连接数(sessions)与其参数文件中的进程数(process)有关,它们的关系如下:  sessions=(1.1*process+5)  摘(二)    查询 数据库 当前进程的连接数:  select count(*) from v$process;   查看...
    第一步,在cmd命令行,输入sqlplus 或者直接在plsql中打开command window

    第二步,根据提示输入用户名与密码

    1. 查看processes和sessions参数

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SQL> show parameter processes
     
       NAME                                 TYPE        VALUE
     
      db_writer_processes                 integer    1
     
      gcs_server_processes                integer    0
     
      job_queue_processes                 integer    10
     
      log_archive_max_processes           integer    2
     
      processes                           integer    50
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SQL> show parameter sessions
     
       NAME                                 TYPE        VALUE
     
      license_max_sessions                integer    0
     
      license_sessions_warning            integer    0
     
      logmnr_max_persistent_sessions      integer    1
     
      sessions                            integer    60
     
      shared_server_sessions              integer
      2. 修改processes和sessions值   
    ?
    1
    2
    3
    4
    5
    6
    7
    SQL> alter system set processes=300 scope=spfile;
     
      系统已更改。
     
      SQL> alter system set sessions=335 scope=spfile;
     
      系统已更改。

     3. 修改processes和sessions值必须重启oracle服务器才能生效

      ORACLE的连接数(sessions)与其参数文件中的进程数(process)有关,它们的关系如下:
      sessions=(1.1*process+5)

      摘(二)

       查询数据库当前进程的连接数:
      select count(*) from v$process;

       查看数据库当前会话的连接数:
      elect count(*) from v$session;

       查看数据库的并发连接数:
      select count(*) from v$session where status='ACTIVE';

       查看当前数据库建立的会话情况:
      select sid,serial#,username,program,machine,status from v$session;

      查询数据库允许的最大连接数:
      select value from v$parameter where name = 'processes';

      或者:show parameter processes;

       修改数据库允许的最大连接数:
      alter system set processes = 300 scope = spfile;

      (需要重启数据库才能实现连接数的修改)

       重启数据库:

      shutdown immediate;

      startup;

       查看当前有哪些用户正在使用数据:

      select osuser,a.username,cpu_time/executions/1000000||'s',sql_fulltext,machine

      from v$session a,v$sqlarea b

      where a.sql_address = b.address

      order by cpu_time/executions desc;

      备注:UNIX 1个用户session对应一个操作系统process,而Windows体现在线程。

      启动oracle

      su - oracle

      sqlplus system/pwd as sysdba //进入sql

      startup //启动数据库

      lsnrctl start //启动监听

      sqlplus "/as sysdba"

      shutdown immediate;

      startup mount;

      alter database open;

    但是:我更改最大为1200,java中356就又报错

    展开全文
  • select a.sql_text SQL语句, b.etime 执行耗时, c.user_id 用户ID, c.SAMPLE_TIME 执行时间, c.INSTANCE_NUMBER 实例数, u.username 用户名, a.sql_id SQL编号 from dba_hist_sqltext a, (...
    select a.sql_text SQL语句,
           b.etime 执行耗时,
           c.user_id 用户ID,
           c.SAMPLE_TIME 执行时间, 
           c.INSTANCE_NUMBER 实例数,
           u.username 用户名, a.sql_id SQL编号
      from dba_hist_sqltext a,
           (select sql_id, ELAPSED_TIME_DELTA / 1000000 as etime
              from dba_hist_sqlstat
             where ELAPSED_TIME_DELTA / 1000000 >= 1) b,
           dba_hist_active_sess_history c,
           dba_users u
     where a.sql_id = b.sql_id
       and u.username = 'MYDB'
       and c.user_id = u.user_id
       and b.sql_id = c.sql_id
       and a.sql_text like '%select * from big_data_tbl%'
     order by  SAMPLE_TIME desc, 
      b.etime desc; 
    

    输出:

    SQL语句执行耗时用户ID执行时间实例数用户名SQL编号
    (HUGECLOB)5.247487942018/7/9 21:25:29.6101MYDB47gdmxd9a2fjx
    展开全文
  • 这个需要sys'权限查看v$session_longops和v$sqlarea。因为CPU和磁盘读写非常占时间,就看这两个吧:CPU:select *from (select v.sql_id,v.child_number,v.sql_text,v.elapsed_time,v.cpu_time,v.disk_reads,rank() ...

    这个需要sys'权限查看v$session_longops和v$sqlarea。

    因为CPU和磁盘读写非常占时间,就看这两个吧:

    CPU:

    select *

    from (select v.sql_id,

    v.child_number,

    v.sql_text,

    v.elapsed_time,

    v.cpu_time,

    v.disk_reads,

    rank() over(order by v.cpu_time desc) elapsed_rank

    from v$sql v) a

    where elapsed_rank <= 10;

    磁盘:

    select *

    from (select v.sql_id,

    v.child_number,

    v.sql_text,

    v.elapsed_time,

    v.cpu_time,

    v.disk_reads,

    rank() over(order by v.disk_reads desc) elapsed_rank

    from v$sql v) a

    where elapsed_rank <= 10;

    取消

    评论

    展开全文
  • select a.sql_text SQL语句, b.etime 执行耗时, c.user_id 用户ID, c.SAMPLE_TIME 执行时间, c.INSTANCE_NUMBER 实例数, u.username 用户名, a.sql_id SQL编号 from dba_hist_sqltext a, ...
  • Oracle语句块耗时

    2015-01-29 13:17:49
    方法一: declare cnt number; b_time number; e_time number; begin cnt := 0; b_time := DBMS_UTILITY.GET_TIME; while cnt do something ...; commit; cnt := cnt + 1; e
  • 请问各位大侠,Oracle中有没有系统表可以查询SQL语句,在特定时间 比如:2020-10-10 16:42:00 运行耗时多久??? 另外在问下,Oracle中 对表的 所有操作查询,比如 oracle 自动会表进行分析统计,这个分析统计记录...
  • 这条SQL,执行,查询所有员工当月的考勤记录汇总,展示全部数据耗时2.3秒 String sql = "select userid,orgid," + 子查询,性能太慢,不适用 "(select username from t_acl_userinfo where userid=t.userid) ...
  • 查看Oracle耗时的SQL

    千次阅读 2013-12-13 00:36:52
    1.查看总消耗时间最多的前10条SQL语句 select *  from (select v.sql_id,  v.child_number,  v.sql_text,  v.elapsed_time,  v.cpu_time,  v.disk
  • oracle查看sql耗时

    2020-02-21 12:26:15
    1.总消耗时间:elapsed_time 2.cpu 占用时间:cpu_time 3.执行日期:last_active_time 4.用户等待时间:user_to wait_time select * from (select * ... from v$sql v where v.sql_text like ' excutesq...
  • Oracle表数据很少,但是select时候却执行很长时间; Oracle表数据很少,但是select时候却执行很长时间; Oracle表数据很少,但是select时候却执行很长时间;
  • oracle 模糊查询优化

    2019-05-23 14:42:43
    数据量如何上千万建议使用全文索引,维护成本相对较高,如果几百万的数据,...使用传统 like '%关键字%' 进行查询 查询 耗时 0.764 秒 使用 instr(字段,’关键字’)>0 方式查询耗时 0.483秒 ,效率要相对高...
  • Oracle分页查询优化

    2019-03-05 11:35:53
    优化在查询列中有子查询时优化效果明显 耗时(s) 不分页 未处理前分页 处理后分页 提升 未排序 0.5 13.9 0.25 98% 排序 0.5 14.25 0.296 97.9% 不分页SQL -- 耗时0.5s SELECT ROWNUM ROWINDEX, ...
  • oracle简单查询

    千次阅读 2010-11-25 16:46:00
    --================= --author:yeeXun --date:2010-11-25 16:46:00 ...oracle简单查询 查看表结构 SQL>desc table_name;   查询所有列 SQL>select * from table_name; ❤少用此查询,因为
  • oracle如何查看很耗时的sql
  • selecta.sql_textSQL语句, b.etime执行耗时, c.user_id用户ID, c.SAMPLE_TIME执行时间, c.INSTANCE_NUMBER实例数, u.username用户名,a.sql_idSQL编号 fromdba_hist_sqltexta, ...
  • oracle分页查询

    千次阅读 2009-04-06 09:41:00
    Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用。 分页查询格式:SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM )WHERE RN >= 21其中最内层的查询SELECT * ...
  • 这两个故事给我们一个很重要的启示,性能问题都是由于资源竞争导致的,所以,一个简单的想法就是尽量分开执行耗时的操作。这看似一个最简单不过的道理,但是随着软件变得越来越大,到最后可能没有人知道什么时候执行...
  • Oracle分页查询语句

    千次阅读 2010-03-24 00:54:00
    Oracle分页查询语句 url:http://yangtingkun.itpub.net/post/468/100278 Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用。分页查询格式:SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * ...
  • Oracle分页查询格式

    千次阅读 2013-02-26 18:19:05
    Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用。 这篇介绍分析函数用于分页,且排序字段上包含索引的情况。 Oracle分页查询格式(一):http://yangtingkun.itpub.net/post/468/100278 ...
  • Oracle 查看SQL执行耗时

    千次阅读 2018-12-03 11:28:01
    运行超长SQL监控SQL: select * from v$session_longops a where a.time_remaining&gt;0   可以监控运行时间长的sql,可以大概评估时间 只能看 有全表扫描的,或者hash jion的。 ...
  • Oracle 查询慢排查

    2021-02-09 09:09:41
    生产环境Oracle 查询慢排查 现象是生产环境Oracle rac有一个查询很慢(比较少用),查询大概10秒钟才返回,但是有时又很快,而且其他的查询都没问题。 但是把sql语句单独在pl/sql 上执行也很快,执行计划也没有啥...
  • Oracle 并行查询

    2012-12-04 20:56:17
    并行查询允许将一个SQL SELECT语句划分为多个较小的查询,每个部分的查询并发地运行,然后会将各个部分的结果组合起来,提供最终的答案。    我们来看一个例子:    1. 执行如下一串SQL语句,创建一个叫big...
  • 1.查看总消耗时间最多的前10条SQL语句 select * from (select v.sql_id, v.child_number, v.sql_text, v.elapsed_time, v.cpu_time, v.disk_reads, rank() over(order by v.elapsed_time desc) elapsed_rank ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,054
精华内容 12,421
关键字:

oracle耗时查询