zoukankan      html  css  js  c++  java
  • 慢sql查询思路

    select /*+ monitor   */ count(1)  from ZX.RECORD_TO_TEXT_LIST_DAY;   //语句



    select * from table(dbms_xplan.display_cursor());   //调出SQL_ID



    SET LONG 1000000
    SET LONGCHUNKSIZE 1000000
    SET LINESIZE 1000
    SET PAGESIZE 0
    SET TRIM ON
    SET TRIMSPOOL ON
    SET ECHO OFF
    SET FEEDBACK OFF
    SELECT DBMS_SQLTUNE.report_sql_monitor(sql_id => '&sql_id', type => 'TEXT') AS report FROM dual;   //看具体执行计划




    select TABLE_OWNER,TABLE_NAME,PARTITION_NAME,NUM_ROWS from dba_tab_partitions where table_name='RECORD_TO_TEXT_LIST_DAY';   //看分区表的表数据



    select table_name,column_name,segment_name,tablespace_name from dba_lobs where table_name='RECORD_TO_TEXT_LIST_DAY';   //查看lob字段
    select segment_name,bytes/1024/1024 from dba_segments where segment_name in ('SYS_LOB0000110477C00039$$','SYS_LOB0000110477C00040$$','SYS_LOB0000110477C00041$$');     //看lob字段大小




    select table_name,PARTITION_NAME,NUM_ROWS,EMPTY_BLOCKS,CHAIN_CNT,LAST_ANALYZED from dba_tab_statistics where table_name='RECORD_TO_TEXT_LIST_DAY';    //看看表的统计信息情况




     CREATE OR REPLACE PROCEDURE show_space                                                          
      (                                                                                               
          p_segname IN VARCHAR2,                                                                      
          p_owner IN VARCHAR2 DEFAULT USER,                                                           
          p_type IN VARCHAR2 DEFAULT 'TABLE',                                                         
          p_partition IN VARCHAR2 DEFAULT NULL                                                        
      )                                                                                               
      -- this procedure uses authid current user so it can query DBA_*                                
          -- views using privileges from a ROLE, and so it can be installed                           
          -- once per database, instead of once per user who wanted to use it                         
      AUTHID CURRENT_USER AS                                                                          
          l_free_blks NUMBER;                                                                         
          l_total_blocks NUMBER;                                                                      
          l_total_bytes NUMBER;                                                                       
          l_unused_blocks NUMBER;                                                                     
          l_unused_bytes NUMBER;                                                                      
          l_LastUsedExtFileId NUMBER;                                                                 
          l_LastUsedExtBlockId NUMBER;                                                                
          l_LAST_USED_BLOCK NUMBER;                                                                   
          l_segment_space_mgmt VARCHAR2(255);                                                         
          l_unformatted_blocks NUMBER;                                                                
          l_unformatted_bytes NUMBER;                                                                 
          l_fs1_blocks NUMBER;                                                                        
          l_fs1_bytes NUMBER;                                                                         
          l_fs2_blocks NUMBER;                                                                        
          l_fs2_bytes NUMBER;                                                                         
          l_fs3_blocks NUMBER;                                                                        
          l_fs3_bytes NUMBER;                                                                         
          l_fs4_blocks NUMBER;                                                                        
          l_fs4_bytes NUMBER;                                                                         
          l_full_blocks NUMBER;                                                                       
          l_full_bytes NUMBER;                                                                        
          -- inline procedure to print out numbers nicely formatted                                   
          -- with a simple label                                                                      
          PROCEDURE p                                                                                 
          (                                                                                           
              p_label IN VARCHAR2,                                                                    
              p_num IN NUMBER                                                                         
          ) IS                                                                                        
          BEGIN                                                                                       
              dbms_output.put_line(rpad(p_label, 40, '.') ||                                          
                                   to_char(p_num, '999,999,999,999'));                                
          END;                                                                                        
      BEGIN                                                                                           
          -- this query is executed dynamically in order to allow this procedure                      
          -- to be created by a user who has access to DBA_SEGMENTS/TABLESPACES                       
          -- via a role as is customary.                                                              
          -- NOTE: at runtime, the invoker MUST have access to these two                              
          -- views!                                                                                   
          -- this query determines if the object is an ASSM object or not                             
          BEGIN                                                                                       
              EXECUTE IMMEDIATE 'select ts.segment_space_management                                   
      from dba_segments seg, dba_tablespaces ts                                                       
      where seg.segment_name = :p_segname                                                             
      and (:p_partition is null or                                                                    
      seg.partition_name = :p_partition)                                                              
      and seg.owner = :p_owner                                                                        
      and seg.tablespace_name = ts.tablespace_name'                                                   
                  INTO l_segment_space_mgmt                                                           
                  USING p_segname, p_partition, p_partition, p_owner;                                 
          EXCEPTION                                                                                   
              WHEN too_many_rows THEN                                                                 
                  dbms_output.put_line('This must be a partitioned table, use p_partition => ');      
                  RETURN;                                                                             
          END;                                                                                        
          -- if the object is in an ASSM tablespace, we must use this API                             
          -- call to get space information, otherwise we use the FREE_BLOCKS                          
          -- API for the user-managed segments                                                        
          IF l_segment_space_mgmt = 'AUTO' THEN                                                       
              dbms_space.space_usage(p_owner,                                                         
                                     p_segname,                                                       
                                     p_type,                                                          
                                     l_unformatted_blocks,                                            
                                     l_unformatted_bytes,                                             
                                     l_fs1_blocks,                                                    
                                     l_fs1_bytes,                                                     
                                     l_fs2_blocks,                                                    
                                     l_fs2_bytes,                                                     
                                     l_fs3_blocks,                                                    
                                     l_fs3_bytes,                                                     
                                     l_fs4_blocks,                                                    
                                     l_fs4_bytes,                                                     
                                     l_full_blocks,                                                   
                                     l_full_bytes,                                                    
                                     p_partition);                                                    
              p('Unformatted Blocks ', l_unformatted_blocks);                                         
              p('FS1 Blocks (0-25) ', l_fs1_blocks);                                                  
              p('FS2 Blocks (25-50) ', l_fs2_blocks);                                                 
              p('FS3 Blocks (50-75) ', l_fs3_blocks);                                                 
              p('FS4 Blocks (75-100)', l_fs4_blocks);                                                 
              p('Full Blocks ', l_full_blocks);                                                       
          ELSE                                                                                        
              dbms_space.free_blocks(segment_owner => p_owner,                                        
                                     segment_name => p_segname,                                       
                                     segment_type => p_type,                                          
                                     freelist_group_id => 0,                                          
                                     free_blks => l_free_blks);                                       
              p('Free Blocks', l_free_blks);                                                          
          END IF;                                                                                     
          -- and then the unused space API call to get the rest of the                                
          -- information                                                                              
          dbms_space.unused_space(segment_owner => p_owner,                                           
                                  segment_name => p_segname,                                          
                                  segment_type => p_type,                                             
                                  partition_name => p_partition,                                      
                                  total_blocks => l_total_blocks,                                     
                                  total_bytes => l_total_bytes,                                       
                                  unused_blocks => l_unused_blocks,                                   
                                  unused_bytes => l_unused_bytes,                                     
                                  LAST_USED_EXTENT_FILE_ID => l_LastUsedExtFileId,                    
                                  LAST_USED_EXTENT_BLOCK_ID => l_LastUsedExtBlockId,                  
                                  LAST_USED_BLOCK => l_LAST_USED_BLOCK);                              
          p('Total Blocks', l_total_blocks);                                                          
          p('Total Bytes', l_total_bytes);                                                            
          p('Total MBytes', trunc(l_total_bytes / 1024 / 1024));                                      
          p('Unused Blocks', l_unused_blocks);                                                        
          p('Unused Bytes', l_unused_bytes);                                                          
          p('Last Used Ext FileId', l_LastUsedExtFileId);                                             
          p('Last Used Ext BlockId', l_LastUsedExtBlockId);                                           
          p('Last Used Block', l_LAST_USED_BLOCK);                                                    
      END;
      /

    //看空间分配情况
    set serveroutput  on
    exec show_space('表名','用户名','段类型','分区名');

    exec show_space('RECORD_TO_TEXT_LIST_DAY','ZX','TABLE PARTITION','RECORD_TO_TEXT_201908');    //查看具体分区表情况



  • 相关阅读:
    bq25896 IINDPM 及 無 IINDPM 時的 regsiter
    不同狀況下的 bq25896 register
    bq25896 charging status CHRG_STAT register 0xB
    快充 IC BQ25896 如何判斷 手機插著 adapter 充電器時,adapter Iout 大於限制,adapter Vout 小於 限制,導致 battery 不但沒充電且還需放電。
    在 kernel 下打出 有帶參數的log。 怪異現象與解決方式。
    mtk flash tool,Win7 On VirtualBox
    java 去最后一位字符 str.substring(0,str.length()-1)
    Windows下Oracle的下载与安装及配置
    关于Java中SQL语句的拼接规则
    <id name="ID"> <generator class="assigned" /> </id>
  • 原文地址:https://www.cnblogs.com/dataroot123/p/12529562.html
Copyright © 2011-2022 走看看