zoukankan      html  css  js  c++  java
  • 关于临时表空间,在日常生产中会遇到的问题

    Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结果进行排序。在某些Oracle一体机,可能会进行大量的运算和排序,产生大量的缓冲区数据。这个时候就会对临时表空间产生压力,可能我们去看的时候查到临时表空间的使用率还远远没有到百分之百,但这些缓冲区数据的堆放不紧凑,高水位线这时候已经很高了,新的缓冲区数据进不来,应用程序会有错误。

    查看临时表空间高水位线:

    SELECT d.tablespace_name "Name",

    TO_CHAR(NVL(a.bytes / 1024 / 1024, 0),'99999990.900') "Size (M)",

    TO_CHAR(NVL(t.hwm, 0)/1024/1024,'99999999.999') "HWM (M)",

    TO_CHAR(NVL(t.hwm / a.bytes * 100, 0), '990.00') "HWM %",

    TO_CHAR(NVL(t.bytes/1024/1024,0),'99999999.999') "Using (M)",

    TO_CHAR(NVL(t.bytes / a.bytes * 100, 0), '990.00') "Using %"

    FROM sys.dba_tablespaces d,

    (select tablespace_name, sum(bytes) bytes from dba_temp_files group by tablespace_name) a,

    (select tablespace_name, sum(bytes_cached) hwm, sum(bytes_used) bytes from gv$temp_extent_pool group by tablespace_name) t

    WHERE d.tablespace_name = a.tablespace_name(+)

    AND d.tablespace_name = t.tablespace_name(+)

    AND d.extent_management like 'LOCAL'

    AND d.contents like 'TEMPORARY';

    收缩临时表空间

    排序等操作使用的临时段,使用完成后会被标记为空闲,表示可以重用,占用的空间不会立即释放,有时候临时表空间会变得非常大,此时可以通过收缩临时表空间来释放没有使用的空间。收缩临时表空间是ORACLE 11g新增的功能。

    SQL> ALTER TABLESPACE TEMP SHRINK SPACE KEEP 8G;

    SQL> ALTER TABLESPACE TEMP SHRINK TEMPFILE '/u01/app/oracle/oradata/GSP/temp02.dbf' keep 3000M

    对于这两个命令,可以指定可选的KEEP 子句,该子句定义了表空间/临时文件可收缩到的下限。

    如果忽略KEEP 子句,则只要满足其它存储属性,数据库就会尽可能尝试收缩表空间/临时文件(所有当前使用的区的总空间)。此操作需联机执行。但是,如果所分配的当前使用的一些区超出了收缩估计值,系统将等待这些区被释放以完成收缩操作。


    ---执行以下命令释放temp表空间(详见文档:How to Release the Temp LOB Space and Avoid Hitting ORA-1652 (文档 ID 802897.1) )

    declare

    clb clob;

    ch varchar2(32767);

    k number;

    begin

    dbms_lob.createtemporary(clb,true,dbms_lob.call);

    for i in 1..1500 loop

    ch:=lpad('o',32767,'Y');

    dbms_lob.writeappend(clb,length(ch),ch);

    end loop;

    k:=dbms_lob.getlength(clb);

    dbms_lob.freetemporary(clb);

    dbms_output.put_line('the clob length: '||k);

    end;

    /

  • 相关阅读:
    [转] 献给所有正在找路的人
    在同一表单内,多个提交按钮的处理方式
    javascript高级选择器querySelector和querySelectorAll
    一位年轻女董事长的37条忠告很受启发吧?
    函数的延迟加载
    WCF的CommunicationObjectFaultedException异常问题
    WCF Test Client对象数组输入问题
    [转载]C#开发Winform记录用户登录状态的方法
    using(C#)
    使用 SCTP 优化网络
  • 原文地址:https://www.cnblogs.com/kawashibara/p/10473703.html
Copyright © 2011-2022 走看看