zoukankan      html  css  js  c++  java
  • 如何处理Oracle中TEMP表空间满的问题(转载)


    正常来说,在完成Select语句、create index等一些使用TEMP表空间的排序操作后,Oracle是会自动释放掉临时段a的。但有些有侯我们则会遇到临时段没有被释放,TEMP表空间几乎满的状况,甚至是我们重启了数据库仍没有解决问题。这个问题在论坛中也常被网友问到,下面我总结一下,给出几种处理方法。

    法一、重启库
    库重启时,Smon进程会完成临时段释放,TEMP表空间的清理操作,不过很多的时侯我们的库是不允许down的,所以这种方法缺少了一点的应用机会,不过这种方法还是很好用的。

    法二、Metalink给出的一个方法
    修改一下TEMP表空间的storage参数,让Smon进程观注一下临时段,从而达到清理和TEMP表空间的目的。
    SQL>alter tablespace temp default storage(pctincrease 1) ;
    SQL>alter tablespace temp default storage(pctincrease 1) ;
    法三、我常用的一个方法,具体内容如下:
    1、 使用如下语句a查看一下认谁在用临时段
    SELECT username,
    sid,
    serial#,
    sql_address,
    machine,
    program,
    tablespace,
    segtype,
    contents
    FROM v$session se,
    v$sort_usage su
    WHERE se.saddr=su.session_addr

    2、 那些正在使用临时段的进程
    SQL>Alter system kill session 'sid,serial#';
    3、把TEMP表空间回缩一下
    SQL>Alter tablespace TEMP coalesce;
    法四、使用诊断事件的一种方法,也是被我认为是“杀手锏”的一种方法
    1、 确定TEMP表空间的ts#
    SQL>select ts#, name from sys.ts$ ;
    TS# NAME
    -----------------------
    0 SYSYEM
    1 RBS
    2 USERS
    3* TEMP
    4 TOOLS
    5 INDX
    6 DRSYS
    2、 执行清理操作
    SQL>alter session set events 'immediate trace name DROP_SEGMENTS level 4' ;
    说明:
    temp表空间的TS# 为 3*, So TS#+ 1= 4
    其它:
    1、 出现如上问题的原因我认为可能是由于大的排序超出了TEMP表空间的空间允许范围引起的。也可能包含着其它的异常的因素。
    2、 观注TEMP等这些空间的状态是Dba日常职责之一,我们可以通过Toad、Object Browser等这些工具办到,也可以用如下的语句:
    SELECT UPPER(F.TABLESPACE_NAME) "表空间名",
    D.TOT_GROOTTE_MB "表空间大小(M)",
    D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
    TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,
    2),
    '990.99') "使用比",
    F.TOTAL_BYTES "空闲空间(M)",
    F.MAX_BYTES "最大块(M)"
    FROM (SELECT TABLESPACE_NAME,
    ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
    ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
    FROM SYS.DBA_FREE_SPACE
    GROUP BY TABLESPACE_NAME) F,
    (SELECT DD.TABLESPACE_NAME,
    ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
    FROM SYS.DBA_DATA_FILES DD
    GROUP BY DD.TABLESPACE_NAME) D
    WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
    ORDER BY 4 DESC
  • 相关阅读:
    Vsftpd 3.0.2 正式版发布
    Putdb WebBuilder 6.5 正式版本发布
    SoaBox 1.1.6 GA 发布,SOA 模拟环境
    pynag 0.4.6 发布,Nagios配置和插件管理
    Percona Playback 0.4,MySQL 负荷回放工具
    xombrero 1.3.1 发布,微型 Web 浏览器
    Hypertable 0.9.6.4 发布,分布式数据库
    libmemcached 1.0.11 发布
    CryptoHeaven 3.7 发布,安全邮件解决方案
    Android Activity生命周期
  • 原文地址:https://www.cnblogs.com/linsond/p/1587824.html
Copyright © 2011-2022 走看看