精华内容
下载资源
问答
  • --临时表空间 1.创建用户时,为用户指定默认临时表空间 ...数据库管理员还需要监控临时表空间使用情况,以判断是否需要采取措施来减少临时表空间使用来提高数据库的查询功能。 查看 v$sort_segmen
    --临时表空间
     1.创建用户时,为用户指定默认临时表空间
     2.合理设置PGA,减少临时表空间的使用几率
           根据需要来设置初始化参数SORT_AREA_SIZE参数。这个参数主要控制这个PGA程序全局区内排序区的大小。
     3.数据库管理员还需要监控临时表空间的使用情况,以判断是否需要采取措施来减少临时表空间的使用来提高数据库的查询功能。
           查看 v$sort_segment这张动态功能视图。通过这张动态功能视图可以查看系统排序段(临时段的一种)的使用情况。
           通过动态功能视图 v$sort_usage还可以查询使用排序段的用户与会话内容。
     4.临时表空间防止在一个独立的分区内,是一个不错的想法。不仅可以保证临时文件有存储的空间,而且还可以提高数据库的功能
    select * from dba_data_files
    select * from dba_tablespaces
    select * from DBA_TEMP_FILES  --临时表空间
    select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE'; --默认临时表空间
    select * from v$sort_segment
    select * from v$sort_usage
       	USERNAME	USER	SESSION_ADDR	SESSION_NUM	SQLADDR	SQLHASH	TABLESPACE	CONTENTS	SEGTYPE	SEGFILE#	SEGBLK#	EXTENTS	BLOCKS	SEGRFNO#
    1	YSWG	YSWG	68223B18	24	65DC489C	2613960004	TEMP	TEMPORARY	SORT	201	125449	14	1792	1
    2	YSWG	YSWG	68223B18	24	65DC489C	2613960004	TEMP	TEMPORARY	SORT	201	123657	98	12544	1
    
    
    --查询临时表空间使用率,大小等
    SELECT temp_used.tablespace_name,
           total - used as "Free",
           total as "Total",
           round(nvl(total - used, 0) * 100 / total, 3) "Free percent"
      FROM (SELECT tablespace_name, SUM(bytes_used) / 1024 / 1024 used
              FROM GV_$TEMP_SPACE_HEADER
             GROUP BY tablespace_name) temp_used,
           (SELECT tablespace_name, SUM(bytes) / 1024 / 1024 total
              FROM dba_temp_files
             GROUP BY tablespace_name) temp_total
     WHERE temp_used.tablespace_name = temp_total.tablespace_name
     
        	TABLESPACE_NAME	Free	Total	Free percent  --临时表空间爆满
          TEMP	          0	    12288	     0
    
    --根据错误提示,查询发生问题的文件
    错误原因:Select error: ORA-01114:将块写入文件 * 时出现 IO 错误 (块 # ****)
    ORA-27069: skgfdisp: 尝试在文件范围外执行 I/O
    OSD-04026: 无效的参数经过. (OS ****)
    --写入文件 *,加入*为201,执行如下代码
    SELECT * FROM (
    SELECT file_name , tablespace_name ,file_id,'datafile' AS TYPE
    FROM DBA_DATA_FILES
    UNION ALL
    SELECT file_name , tablespace_name ,file_id + value ,'tempfile '
    FROM DBA_TEMP_FILES , v$parameter p
    WHERE p.name = 'db_files'
    )
    WHERE file_id = 201;
    
    --重建temp表空间(最有效在线方式)
    select name from v$tempfile;
    select username,temporary_tablespace from dba_users;
    1.创建中转临时表空间
    create temporary tablespace TEMP1 TEMPFILE 'E:\ORACLE\ORADATA\ORCL\temp02.DBF' SIZE 512M REUSE AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED;  
    2.改变缺省临时表空间 为刚刚创建的新临时表空间temp1
    alter database default temporary tablespace temp1;
    3.删除原来临时表空间
    drop tablespace temp including contents and datafiles;
    4.重新创建临时表空间
    create temporary tablespace TEMP TEMPFILE 'E:\ORACLE\ORADATA\ORCL\temp01.DBF' SIZE 512M REUSE AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED;  
    5.重置缺省临时表空间为新建的temp表空间
    alter database default temporary tablespace temp;
    6.删除中转用临时表空间
    drop tablespace temp1 including contents and datafiles;
    7.如果有必要,那么重新指定用户表空间为重建的临时表空间
    alter user arbor temporary tablespace temp;

    展开全文
  • 文章中关键技术解释取自潇湘...近期公司一个项目的oracle数据库需要优化,在优化过程中同事发现了一个问题:用同事给的sql进行查询SYSAUX,'SYSTEM,UNDOTBS1,TEMP表空间时,发现TEMP表空间使用率为100% SELECT * FR...
        

    文章中关键技术解释取自潇湘隐者大神的博客园
    地址:http://www.cnblogs.com/kerryc...

    近期公司一个项目的oracle数据库需要优化,在优化过程中同事发现了一个问题:
    用同事给的sql进行查询SYSAUX,'SYSTEM,UNDOTBS1,TEMP表空间时,发现TEMP表空间使用率为100%

    SELECT * FROM ( 
    SELECT D.TABLESPACE_NAME, 
            SPACE || 'M' "SUM_SPACE(M)", 
            BLOCKS "SUM_BLOCKS", 
            SPACE - NVL (FREE_SPACE, 0) || 'M' "USED_SPACE(M)", 
            ROUND ( (1 - NVL (FREE_SPACE, 0) / SPACE) * 100, 2) || '%' 
               "USED_RATE(%)", 
            FREE_SPACE || 'M' "FREE_SPACE(M)" 
       FROM (  SELECT TABLESPACE_NAME, 
                      ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE, 
                      SUM (BLOCKS) BLOCKS 
                 FROM DBA_DATA_FILES 
             GROUP BY TABLESPACE_NAME) D, 
            (  SELECT TABLESPACE_NAME, 
                      ROUND (SUM (BYTES) / (1024 * 1024), 2) FREE_SPACE 
                 FROM DBA_FREE_SPACE 
             GROUP BY TABLESPACE_NAME) F 
      WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+) 
     UNION ALL                                                           
     SELECT D.TABLESPACE_NAME, 
            SPACE || 'M' "SUM_SPACE(M)", 
            BLOCKS SUM_BLOCKS, 
            USED_SPACE || 'M' "USED_SPACE(M)", 
            ROUND (NVL (USED_SPACE, 0) / SPACE * 100, 2) || '%' "USED_RATE(%)", 
            NVL (FREE_SPACE, 0) || 'M' "FREE_SPACE(M)" 
       FROM (  SELECT TABLESPACE_NAME, 
                      ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE, 
                      SUM (BLOCKS) BLOCKS 
                 FROM DBA_TEMP_FILES 
             GROUP BY TABLESPACE_NAME) D, 
            (  SELECT TABLESPACE_NAME, 
                      ROUND (SUM (BYTES_USED) / (1024 * 1024), 2) USED_SPACE, 
                      ROUND (SUM (BYTES_FREE) / (1024 * 1024), 2) FREE_SPACE 
                 FROM V$TEMP_SPACE_HEADER 
             GROUP BY TABLESPACE_NAME) F 
      WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+) 
     ORDER BY 1)  
     WHERE TABLESPACE_NAME IN ('SYSAUX','SYSTEM','UNDOTBS1','TEMP');

    如图所示:
    临时表空间使用率为100%

    用另外一个SQL查询TEMP表空间的实际使用情况,发现实际上TEMP已经被oracle回收,实际利用率为0%

    SELECT D.tablespace_name,
           SPACE "SUM_SPACE(M)",
           blocks "SUM_BLOCKS",
           used_space "USED_SPACE(M)",
           Round(Nvl(used_space, 0) / SPACE * 100, 2) "USED_RATE(%)",
           SPACE - used_space "FREE_SPACE(M)"
      FROM (SELECT tablespace_name,
                   Round(SUM(bytes) / (1024 * 1024), 2) SPACE,
                   SUM(blocks) BLOCKS
              FROM dba_temp_files
             GROUP BY tablespace_name) D,
           (SELECT tablespace,
                   Round(SUM(blocks * 8192) / (1024 * 1024), 2) USED_SPACE
              FROM v$sort_usage
             GROUP BY tablespace) F
     WHERE D.tablespace_name = F.tablespace(+)
       AND D.tablespace_name in ('TEMP', 'TEMP1')

    第二种情况发现temp实际是0%

    当然在分析这个问题的时候发现自己当时建立表空间并且指定默认表空间的时候,错误的将默认表空间指给了oracle建库的时候的临时表空间,而自己特意划出来的TEMP01表空间给的10G表空间一点都没用上。。。。。于是赶紧先把临时表空间切到TEMP01上。

    两种查询结果不一致,让我感觉很好奇,于是在网上找一些资料,最后翻到潇湘大神的博客,给出的解释为:

    视图v$temp_space_header显示的是每一个temp文件在某一个时刻使用过的最大大小,从本质上说,它显示的是每一个tempfile的初始化大小,而不是实际分配的块大小。
    所以说从视图v$temp_space_header获取的数据其实并不是实际使用的大小,它是不准确的。那么肯定有人会问,脚本里面不是访问的GV_$TEMP_SPACE_HEADER视图吗? 跟这个视图v$temp_space_header有关系吗? 答案是有关系,他们的数据来源是一致的,也就是说来自相同的内部表。

    呵呵,看到这里就应该能明白了,原来第一个语句中查询的数据库视图的信息是记录了temp文件在某一时刻使用过的最大大小,这个数据库刚建立的时候进行过impdp操作,所以肯定涉及大量的数据读写,当然就会将oracle自带的临时表空间占满,并且默认的临时表空间是可自动扩展的,这样肯定有一个时刻占用率为100%,后续即使oracle释放了表空间,那么按照MOS解释,v$temp_space_header视图肯定记录了达到100%时候的情况,这样用第一个语句无论怎么查询,TEMP表空间都会是100%。

    根据这个现象,想到公司很多同事都遇到过临时表空间一到100%,就疯狂的往上扩数据文件,但是临时表空间真的满了吗?通过这个例子来看,未必。也许是一直以来查询临时表空间的方式就有问题呢?

    分享这个SQL,让之前没深入了解过的人参考。

    展开全文
  • 今天开发反映说临时表空间不够要求添加临时表空间,添加完成(添加了30G的临时表空间)又报临时表空间的不足,开发又要求是添加,有添加了10G,监控临时表空间使用情况,又撑满了,又添加了30G,最后临时表空间又撑...

    今天开发反映说临时表空间不够要求添加临时表空间,添加完成(添加了30G的临时表空间)又报临时表空间的不足,开发又要求是添加,有添加了10G,监控临时表空间的使用情况,又撑满了,又添加了30G,最后临时表空间又撑满了,最后批处理还是没有执行,SQL语句的执行是一次性全部执行完成,最后的解决办法是开发使用游标,一万条数据一提交或者定量提交,下午监控临时表空间的使用情况发现使用率 74.91%。不禁有些疑问到底是那些用户在使用临时表空间,使用临时表空间的大小有多大,

    在做一些什么操作,SQL语句是什么。

        首先要说明一点的是表空间的使用惰性,如果你一下使用几十个G的临时表空间,如果SQL语句执行失败,临时表空间的释放需要时间,不会一下全部释放,这个时候我们检查临时表空间的使用率发现使用率已经是99%,如果你扩容临时表空间,扩容30G,开发又开始执行sql,你会发现临时表空间使用率蹭蹭的网上增最后又达到了99%,开发的sql又没有执行过去,还是报临时表空间不足,而临时表空间释放有需要时间,如果开发的非常着急需要执行sql。所以建议dba一次扩容临时表,扩容大点,

        说一下今天处理问题的过程,

        1.查询临时表空间的使用率:

    select c.tablespace_name,

    to_char(c.bytes/1024/1024/1024,'99,999.999') total_gb,

    to_char( (c.bytes-d.bytes_used)/1024/1024/1024,'99,999.999') free_gb,

    to_char(d.bytes_used/1024/1024/1024,'99,999.999') use_gb,

    to_char(d.bytes_used*100/c.bytes,'99.99') || '%'use

    from  (select tablespace_name,sum(bytes) bytes

    from dba_temp_files GROUP by tablespace_name) c,

    (select tablespace_name,sum(bytes_cached) bytes_used

    from v$temp_extent_pool GROUP by tablespace_name) d

    where c.tablespace_name = d.tablespace_name;

        2.查询那些用户在使用

    select a.username,

           a.sql_id,

           a.SEGTYPE,

           b.BYTES_USED/1024/1024/1024||‘G’,

           b.BYTES_FREE/1024/1024/1024  from   V$TEMPSEG_USAGE  a  join  V$TEMP_SPACE_HEADER b on   a.TABLESPACE=b.tablespace_name; 

            解释username  正在执行sql的用户名

                sql_id    正在执行的sql的的sql_id

                segtype   正在执行的SQL语句做的是什么操作

                BYTES_USED 正在执行sql语句使用的临时表空间的大小

                BYTES_FREE  剩余多少临时表空间

       大家可以看到这个临时表空间的有6个数据文件,查询的结果显示按照每个临时的数据文件使用了多少,还剩余多少,又又有一个问题是第一用户DBSNMP用户已经把临时表空间占满了那么第二个用户还能使用这个六个数据文件的临时表空间么,个人理解是六个数据文件中有第一个用户在使用,也有第二个用户在使用。

       查询实例中时候是否有大字段在使用临时表空间:

        select *  from V$TEMPORARY_LOBS;

    关于数据字典V$TEMP_SPACE_HEADER官方文档的解释:

    V$TEMP_SPACE_HEADER 显示每个LOCALLY MANAGED临时表空间的每个文件的聚合信息,包括当前正在使用的空间量以及空间头中标识的空闲量。    

        

    Column Datatype Description
    TABLESPACE_NAME VARCHAR2(30) Name of the temporary tablespace
    FILE_ID NUMBER Absolute file number
    BYTES_USED NUMBER How many bytes are in use
    BLOCKS_USED NUMBER How many blocks are in use
    BYTES_FREE NUMBER How many bytes are free
    BLOCKS_FREE NUMBER How many blocks are free
    RELATIVE_FNO NUMBER The relative file number for the file

    关于V$TEMPSEG_USAGE的官方文档的解释:

    V$TEMPSEG_USAGE 描述临时段使用情况。 

    数据类型 描述
    USERNAME VARCHAR2(30) 请求临时空间的用户
    USER VARCHAR2(30) 此列已过时并维护以便向后兼容。 此列的值始终等于中的值 USERNAME
    SESSION_ADDR RAW(4 | 8) 会话地址
    SESSION_NUM NUMBER 会话序列号
    SQLADDR RAW(4 | 8) SQL语句的地址
    SQLHASH NUMBER SQL语句的哈希值
    SQL_ID VARCHAR2(13) SQL语句的SQL标识符
    TABLESPACE VARCHAR2(31) 分配空间的表空间
    CONTENTS VARCHAR2(9) 指示表是否 TEMPORARY PERMANENT
    SEGTYPE VARCHAR2(9) 排序类型的类型:
    • SORT

    • HASH

    • DATA

    • INDEX

    • LOB_DATA

    • LOB_INDEX

    SEGFILE# NUMBER 初始范围的文件号
    SEGBLK# NUMBER 初始范围的块号
    EXTENTS NUMBER 分配给排序的范围
    BLOCKS NUMBER 分配给排序的块中的范围
    SEGRFNO# NUMBER 初始范围的相对文件号


    关于V$TEMP_EXTENT_POOL的官方文档中的解释

    V$TEMP_EXTENT_POOL显示缓存并用于实例的临时空间的状态。请注意,临时空间缓存的加载是惰性的,并且实例可以处于休眠状态。

    数据类型 描述
    TABLESPACE_NAME VARCHAR2(30) 表空间的名称
    FILE_ID NUMBER 绝对文件号
    EXTENTS_CACHED NUMBER 已缓存的范围数
    EXTENTS_USED NUMBER 实际使用的范围数
    BLOCKS_CACHED NUMBER 缓存的块数
    BLOCKS_USED NUMBER 使用的块数
    BYTES_CACHED NUMBER 缓存的字节数
    BYTES_USED NUMBER 使用的字节数
    RELATIVE_FNO NUMBER 相对文件号

    关于V$TEMPORARY_LOBS官方文档解释

    V$TEMPORARY_LOBS 显示临时LOB。

    数据类型 描述
    SID NUMBER 会话ID
    CACHE_LOBS NUMBER 缓存临时LOB的数量
    NOCACHE_LOBS NUMBER nocache临时LOB的数量
    ABSTRACT_LOBS NUMBER 抽象LOB的数量

    如果书写过程或者对官方文档理解有什么错误欢迎大家留言。

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31547066/viewspace-2286048/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/31547066/viewspace-2286048/

    展开全文
  • 查询临时表空间和回滚表空间的情况: --临时表空间使用查询: 11:06:52 SQL> select sess.SID, segtype, blocks*8/1000 "MB" ,sql_text11:08:37...

    查询临时表空间和回滚表空间的情况:

    --临时表空间使用查询:

    11:06:52 SQL> select sess.SID,  segtype, blocks*8/1000 "MB" ,sql_text
    11:08:37   2  from v$sort_usage sort, v$session sess ,v$sql sql
    11:08:37   3  where sort.SESSION_ADDR = sess.SADDR
    11:08:37   4  and sql.sql_id = sess.sql_id
    11:08:37   5  order by blocks desc;

           SID SEGTYPE           MB SQL_TEXT
    ---------- --------- ---------- ------------------------------
           131 SORT        3667.968 select * from dba_objects a,db
                                    a_objects b order by 1


    11:08:38 SQL> /

           SID SEGTYPE           MB SQL_TEXT
    ---------- --------- ---------- ------------------------------
           131 SORT        3734.528 select * from dba_objects a,db
                                    a_objects b order by 1


    11:09:00 SQL> select 'the '||name||' temp tablespaces '||tablespace_name||' idle
     '||round(100-(s.tot_used_blocks/s.total_blocks)*100,3)||'% at '||to_char(sysdat
    e,'yyyymmddhh24miss')
    11:09:24   2  from
    11:09:24   3          (select d.tablespace_name tablespace_name,
    11:09:24   4                                          nvl(sum(used_blocks),0) to
    t_used_blocks,
    11:09:24   5                                          sum(blocks) total_blocks
    11:09:24   6           from v$sort_segment v ,dba_temp_files d
    11:09:24   7           where d.tablespace_name=v.tablespace_name(+)
    11:09:24   8           group by d.tablespace_name) s, v$database;

    'THE'||NAME||'TEMPTABLESPACES'||TABLESPACE_NAME||'IDLE'||ROUND(100-(S.TOT_USED_B

    --------------------------------------------------------------------------------

    the ORCL temp tablespaces TEMP idle .027% at 20081007110925

     

    --用户取消查询:

    10:44:56 SQL> select * from dba_objects a,dba_objects b order by 1;
    ^C
    C:\Documents and Settings\weifengz>
    C:\Documents and Settings\weifengz>


    --临时表空间使用率查询,持续增长:

    11:12:23 SQL> select sess.SID,  segtype, blocks*8/1000 "MB" ,sql_text
    11:12:24   2  from v$sort_usage sort, v$session sess ,v$sql sql
    11:12:24   3  where sort.SESSION_ADDR = sess.SADDR
    11:12:24   4  and sql.sql_id = sess.sql_id
    11:12:24   5  order by blocks desc;

           SID SEGTYPE           MB SQL_TEXT
    ---------- --------- ---------- ------------------------------
           131 SORT        4314.112 select * from dba_objects a,db
                                    a_objects b order by 1


    11:12:25 SQL>
    11:12:33 SQL> /

           SID SEGTYPE           MB SQL_TEXT
    ---------- --------- ---------- ------------------------------
           131 SORT        4337.664 select * from dba_objects a,db
                                    a_objects b order by 1


    11:12:35 SQL>
    11:12:36 SQL> /

           SID SEGTYPE           MB SQL_TEXT
    ---------- --------- ---------- ------------------------------
           131 SORT        4345.856 select * from dba_objects a,db
                                    a_objects b order by 1


    11:12:37 SQL>
    11:12:40 SQL> /

           SID SEGTYPE           MB SQL_TEXT
    ---------- --------- ---------- ------------------------------
           131 SORT        4359.168 select * from dba_objects a,db
                                    a_objects b order by 1


    11:12:41 SQL>
    11:12:50 SQL>
    11:12:51 SQL> /

           SID SEGTYPE           MB SQL_TEXT
    ---------- --------- ---------- ------------------------------
           131 SORT        4378.624 select * from dba_objects a,db
                                    a_objects b order by 1


    11:12:51 SQL>
    11:12:53 SQL>
    11:12:53 SQL>
    11:12:53 SQL> /

           SID SEGTYPE           MB SQL_TEXT
    ---------- --------- ---------- ------------------------------
           131 SORT        4383.744 select * from dba_objects a,db
                                    a_objects b order by 1


    11:12:54 SQL>
    11:12:57 SQL>
    11:13:53 SQL>
    11:13:53 SQL> /

           SID SEGTYPE           MB SQL_TEXT
    ---------- --------- ---------- ------------------------------
           131 SORT        4553.728 select * from dba_objects a,db
                                    a_objects b order by 1


    11:13:54 SQL> /

           SID SEGTYPE           MB SQL_TEXT
    ---------- --------- ---------- ------------------------------
           131 SORT        4799.488 select * from dba_objects a,db
                                    a_objects b order by 1


    --杀掉该进程:


    11:15:55 SQL> select sid,serial#,status from v$session where sid=131;

           SID    SERIAL# STATUS
    ---------- ---------- --------
           131         16 ACTIVE

    11:16:02 SQL> alter system kill session '131,16';

    系统已更改。

    11:16:33 SQL> select sid,serial#,status from v$session where sid=131;

    未选定行


    --临时表空间释放:

    11:19:57 SQL> l
      1  select sess.SID,  segtype, blocks*8/1000 "MB" ,sql_text
      2  from v$sort_usage sort, v$session sess ,v$sql sql
      3  where sort.SESSION_ADDR = sess.SADDR
      4  and sql.sql_id = sess.sql_id
      5* order by blocks desc
    11:19:58 SQL> /

    未选定行

    11:19:59 SQL> select 'the '||name||' temp tablespaces '||tablespace_name||' idle
     '||round(100-(s.tot_used_blocks/s.total_blocks)*100,3)||'% at '||to_char(sysdat
    e,'yyyymmddhh24miss')
    11:20:12   2  from
    11:20:12   3          (select d.tablespace_name tablespace_name,
    11:20:12   4                                          nvl(sum(used_blocks),0) to
    t_used_blocks,
    11:20:12   5                                          sum(blocks) total_blocks
    11:20:12   6           from v$sort_segment v ,dba_temp_files d
    11:20:12   7           where d.tablespace_name=v.tablespace_name(+)
    11:20:12   8           group by d.tablespace_name) s, v$database;

    'THE'||NAME||'TEMPTABLESPACES'||TABLESPACE_NAME||'IDLE'||ROUND(100-(S.TOT_USED_B

    --------------------------------------------------------------------------------

    the ORCL temp tablespaces TEMP idle 100% at 20081007112013


    --回滚段使用率:

    11:09:25 SQL> select  decode(sign(round(100*((UNDOB-UNDO*DBS)/UNDOB),0)-10), 1,'
    normal:',
    11:10:10   2                            decode(sign(round(100*((UNDOB-UNDO*DBS)/
    UNDOB),0)-20), 1,'warning:','error:'))
    11:10:10   3                            ||' the '||instance_name||' undo tablesp
    ace '||tablespace_name||' total space '
    11:10:10   4                            ||UNDOB/1024/1024||'MB used space '||rou
    nd((UNDO*DBS/1024/1024),0)||'MB idle '||
    11:10:10   5                            round(100*((UNDOB-UNDO*DBS)/UNDOB),0)||'
    % at '||to_char(sysdate,'yyyymmddhh24miss') as a
    11:10:10   6  FROM
    11:10:10   7                            (select instance_name  from V$instance),

    11:10:10   8                            (select nvl(sum(undoblks),0) UNDO from v
    $undostat
    11:10:10   9                                                            where be
    gin_time >(select sysdate - UR/(3600*24) from
    11:10:10  10                                                            (select
     value as UR from v$parameter where name='undo_retention'))),
    11:10:10  11                            (select  value as DBS from v$parameter w
    here name='db_block_size'),
    11:10:10  12                            (select sum(bytes) as UNDOB,tablespace_n
    ame from dba_data_files
    11:10:10  13                    where tablespace_name=(select upper(value) as UN
    DO
    11:10:10  14                    from v$parameter where name='undo_tablespace')
    11:10:10  15                    group by tablespace_name);

    A
    --------------------------------------------------------------------------------

    normal: the orcl undo tablespace UNDOTBS1 total space 105MB used space 0MB idle
    100% at 20081007111011

     

    11:11:38 SQL> select tablespace_name,status,sum(bytes)/1024/1024/1024 from dba_u
    ndo_extents group by tablespace_name,status;

    TABLESPACE_NAME                STATUS    SUM(BYTES)/1024/1024/1024
    ------------------------------ --------- -------------------------
    UNDOTBS1                       UNEXPIRED                .000061035
    UNDOTBS1                       EXPIRED                  .041870117

     

    --格式化的脚本

     

    select sess.SID,  segtype, blocks*8/1000 "MB" ,sql_text
    from v$sort_usage sort, v$session sess ,v$sql sql
    where sort.SESSION_ADDR = sess.SADDR
    and sql.sql_id = sess.sql_id
    order by blocks desc

     

    select 'the '||name||' temp tablespaces '||tablespace_name||' idle '||round(100-(s.tot_used_blocks/s.total_blocks)*100,3)||'% at '||to_char(sysdate,'yyyymmddhh24miss')
    from
            (select d.tablespace_name tablespace_name,
                                            nvl(sum(used_blocks),0) tot_used_blocks,
                                            sum(blocks) total_blocks
             from v$sort_segment v ,dba_temp_files d
             where d.tablespace_name=v.tablespace_name(+)
             group by d.tablespace_name) s, v$database;        
            
            
            
    select  decode(sign(round(100*((UNDOB-UNDO*DBS)/UNDOB),0)-10), 1,'normal:',
        decode(sign(round(100*((UNDOB-UNDO*DBS)/UNDOB),0)-20), 1,'warning:','error:'))
        ||' the '||instance_name||' undo tablespace '||tablespace_name||' total space '
        ||UNDOB/1024/1024||'MB used space '||round((UNDO*DBS/1024/1024),0)||'MB idle '||
        round(100*((UNDOB-UNDO*DBS)/UNDOB),0)||'% at '||to_char(sysdate,'yyyymmddhh24miss') as a
    FROM
        (select instance_name  from V$instance),
        (select nvl(sum(undoblks),0) UNDO from v$undostat
            where begin_time >(select sysdate - UR/(3600*24) from
            (select  value as UR from v$parameter where name='undo_retention'))),
        (select  value as DBS from v$parameter where name='db_block_size'),
        (select sum(bytes) as UNDOB,tablespace_name from dba_data_files
           where tablespace_name=(select upper(value) as UNDO
           from v$parameter where name='undo_tablespace')
           group by tablespace_name);

     

    select tablespace_name,status,sum(bytes)/1024/1024/1024 from dba_undo_extents group by tablespace_name,status;

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/756652/viewspace-468168/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/756652/viewspace-468168/

    展开全文
  • 临时表空间: SELECT a.tablespace_name, a.BYTES total, a.bytes - nvl(b.bytes, 0) free FROM (SELECT tablespace_name,...
  • 剩余表空间语句,很多人都会用会写,temp临时表空间使用率语句就复杂点了。经过日常使用和搜索回来的资料,下面总结下吧!语句都验证过的,sys用户可用--查看剩余表空间使用情况 语句set pagesize 100;set linesize ...
  • 所以说当查询临时表空间使用率100%,先别急着扩容,先分析下SQL是否准确。另外查询临时表空间建议参考如下sql SELECT T.TABLESPACE_NAME,  round(( U.TOT_USED_BLOCKS / T.TOTAL_BLOCKS ) * 100,2)*100 || '%...
  • oracle 查看表空间使用率(包括临时表) select * from ( Select a.tablespace_name, to_char(a.bytes/1024/1024/1024,'99,999.999') total_bytes(G), to_char(b.bytes/1024/1024/1024,'99,999.999') free_bytes(G),...
  • Oracle 临时表空间常用操作 1、查询临时表空间使用率 SELECT D.TABLESPACE_NAME, SPACE || 'M' "SUM_SPACE(M)", BLOCKS SUM_BLOCKS, USED_SPACE || 'M' "USED_SPACE(M)", ROUND(NVL(USED_SPACE, 0) / SP...
  • 查询临时表空间SELECT tt.con_id ,nvl(x.name, 'CDB$ROOT') AS DB_NAME ,ts1.tablespace_name AS "RES_NAME" ,round(nvl(tt.tmp_max_size, 0) / 1024 / 1024, 2) AS "TABLE_SIZE" ,round(nvl(tu.tmp_used_si...
  • 接到客户反馈,他们的数据库使用了长连接,临时表空间使用率一直不下降,一个会话占用了几百M甚至几个G的临时表空间不释放,随着时间的积累,会话占用的临时表空间还在继续增加,最终的现象是100G的数据文件,160G的临时表...
  • 由于C盘过大,使用SpaceSniffer.exe扫描了一下磁盘空间,发现是因为oracle数据库文件占用过大导致,查询表空间大小和使用率 SELECT a.tablespace_name "表空间名", total / (1024 * 1024 * 1024) "表空间大小(G)",...
  • oracle 11g 解决临时表空间占满问题

    万次阅读 2017-09-05 14:20:35
    oracle 11g 清理临时表空间 运维人员在查询亿级数据排序时,数据库报错,...1、查询表空间使用率: select * from ( Select a.tablespace_name, to_char(a.bytes/1024/1024,'99,999.999') total_bytes, to_c...
  • 一、问题描述:Linux操作系统环境,数据存储磁盘空间共200G,使用率已经高达99%,临时表空间增长到182G。二、问题原因:应用使用大量union查询sql,导致大量temp表空间消耗。 --查询数据库高MTAB的20 SQL(即temp...
  • ORA-1652错误, 适当增加临时表空间

    千次阅读 2011-07-25 17:31:07
    今天发现网临时表空间一直很紧张,alert日志一直报这样的错误ORA-1652: unable to extend temp segment by 128 in tablespace TEMP查询临时表空间使用率: v$temp_space_he
  • oracle查询表空间

    2013-06-20 23:18:31
    ----临时表空间 SELECT a.tablespace_name "表空间名", total "表空间大小", total - used "表空间剩余大小", used "表空间使用大小", ROUND(used / total, 4) * ...
  • 目录查看表分配的物理空间大小查看表实际存储空间大小查看每个表空间的大小查看表空间大小及使用率查看数据库中数据文件信息查看临时表空间信息 oracle表大小有两种含义,即表分配的空间大小和实际占用的物理空间...
  • 业务维护人员在登录数据库的时候,temp表空间使用率告警,他就去重新resize tempfile的大小,但是在resize 32G的时候,由于手误写错了,resize 2G,发现不对,就立即ctrl+c取消操作。 之后又往temp表空间里面添加了2...
  • 关于Oracle大字段表空间的清理思路

    千次阅读 2018-08-30 15:34:02
    最近发现生产库中有一个临时的大字段缓存表增长的非常厉害,几乎两天就需要...1.查询表空间使用情况,定位问题表空间。 查询发现表空间sa****已经使用了125G,使用率已经高达92%了。 SELECT a.tablespace_...
  • Oracle 数据库性能监控语句 TOC \o "1-1" \h \z \u 一查看临时表空间使用情况 2 二查看使用临时表空间的 SQL 2 三收缩临时表空间 3 四重建索引 3 五查看表空间使用情况 3 六查询表空间的总容量 4 七查询表空间使用率 ...
  • 现象:磁盘空间使用率的监控曲线有一个非常陡峭的峰值,达到90%后瞬间下滑 问题分析步骤:查看那段时间的慢查询记录,定位到是一个多的join操作(PS,mysql.slow_log表里的start_time列指的是SQL执行结束的时间) ...
  • 1.查询临时表空间使用率   SELECT d.tablespace_name "Name", TO_CHAR(NVL(a.bytes / 1024 / 1024, 0),'99,999,990.900') "Size (M)", TO_CHAR(NVL(t.hwm, 0)/1024/1024,'99999999.999') "HWM (M)", TO_CHAR...
  • oracle数据库空间满了,如果你是程序员,你会使用哪种解决方式? 一.临时表空间占满问题 ...1、查询表空间使用率: select * from ( Select a.tablespace_name, to_char(a.bytes/1024/1024,‘99,999...
  • 周一处理一台Oracle服务器表空间满的问题(又是一台新库),扩充完毕后发现磁盘只剩100G空间,空间使用率接近90%!按现有数据增长量粗略推算,这个库大约抗不过这周末天! 查询磁盘中无用的日志文件等内容,发现清的...
  • v$SORT_USAGE.SQL_ID 不是会话当前的执行的SQL IDKevin Zou2011-9-2数据库的临时表空间使用率较高,在查询那个会话在使用临时表空间时,发现视图v$SORT_USAGE.SQL_ID ...
  • -- 查询临时表空间使用率 SELECT d.Tablespace_Name, Space "SUM_SPACE(M)", Blocks "SUM_BLOCKS", Space - Nvl(Free_Space, 0) "USED_SPACE(M)", Round((1 - Nvl(Free_Space, 0) / ...
  • 中字段的宽度设得尽可能小:char的上限为255字节(固定占用空间),varchar的上限65535字节(实际占用空间),text的上限为65535。 尽量把字段设置为NOT NULL,执行查询的时候,数据库不用去比较NULL值。 2.使用...
  • BACKUP_JOB_DETAILS查看备份状态,一直卡着不出结果,很长一段时间之后抛出ORA-1652: unable to extend temp segment by 128 in tablespace ,此时查看临时表空间使用情况,发现占用很少,然后重新执行查询,...
  • Toad 使用快速入门

    2008-11-27 15:22:14
     注意,如果是选择了专门建立toad这个用户的话,需要先修改一下脚本,指定用户的默认表空间和临时表空间。 需要使用Oracle8i 的Profile analyzer,必须运行ToadProfiler.sql  需要加强Toad的安全性,必须...

空空如也

空空如也

1 2 3 4 5 6
收藏数 108
精华内容 43
关键字:

查询临时表空间使用率