zoukankan      html  css  js  c++  java
  • Oracle Temp表空间切换

    来源于:  http://www.2cto.com/database/201507/418564.html

    一.TEMP表空间作用

    临时表空间主要用途是在数据库进行排序运算、管理索引、访问视图等操作时提供临时的运算空间,当运算完成之后系统会自动清理。当 oracle 里需要用到 sort 的时候, PGA 中 sort_area_size 大小不够时,将会把数据放入临时表空间里进行排序,同时如果有异常情况的话,也会被放入临时表空间 , 正常来说,在完成 Select 语句、create index 等一些使用 TEMP 表空间的排序操作后, Oracle 是会自动释放掉临时段的。注意这里的释放,仅仅是将这些空间标记为空闲,并可重用,真正占用的磁盘空间并没有释放。所以 Temp 表空间可能会越来越大。

    排序是很耗资源的, Temp 表空间满了 , 关键是优化你的语句,尽量使排序减少才是上策 .

    总结为:

    临时表空间的主要作用:
    索引create或rebuild;
    Order by 或 group by;
    Distinct 操作;
    Union 或 intersect 或 minus;
    Sort-merge joins;
    analyze.

    二、oracle temp表空间切换

    2.1 查询TEMP表空间使用情况:

    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;

    加载中...

    数据库默认表空间:

    SQL> SELECT PROPERTY_NAME, PROPERTY_VALUE
    2 FROM DATABASE_PROPERTIES
    3 WHERE PROPERTY_NAME = 'DEFAULT_TEMP_TABLESPACE';

    2.2 新建Temp2表空间

    create temporary tablespace temp1 tempfile 'D:APPADMINISTRATORORADATASDXJTEMP2.dbf' size 20M autoextend on next 1M maxsize unlimited
    tablespace group ''
    extent management local uniform size 1M;

    2.3 修改数据库默认表空间为Temp1

    SQL> alter database default temporary tablespace temp1;
    数据库已更改。

    2.4 删除原来表空间

    退出session,删除原表空间

    DROP TABLESPACE TEMP INCLUDING CONTENTS AND DATAFILES;

    删除完成。

    三、Temp 表空间一些常用查询

    3.1、更改系统的默认临时表空间:
    --查询默认临时表空间
    select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';
    --修改默认临时表空间
    alter database default temporary tablespace temp1;
    --所有用户的默认临时表空间都将切换为新的临时表空间:
    select username,temporary_tablespace,default_ from dba_users;
    --更改某一用户的临时表空间:
    alter user scott temporary tablespace temp;

    3.2 查找消耗资源比较的sql语句
    /* Formatted on 2015/7/14 21:58:17 (QP5 v5.163.1008.3004) */
    SELECT se.username,
    se.sid,
    su.extents,
    su.blocks * TO_NUMBER (RTRIM (p.VALUE)) AS Space,
    tablespace,
    segtype,
    sql_text
    FROM v$sort_usage su,
    v$parameter p,
    v$session se,
    v$sql s
    WHERE p.name = 'db_block_size'
    AND su.session_addr = se.saddr
    AND s.hash_value = su.sqlhash
    AND s.address = su.sqladdr
    ORDER BY se.username, se.sid

    3.3、查看当前临时表空间使用大小与正在占用临时表空间的sql语句
    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.ADDRESS = sess.SQL_ADDRESS
    order by blocks desc;

    4.4 对临时表空间进行shrink(11g新增的功能)
    --将temp表空间收缩为20M
    alter tablespace temp1 shrink space keep 20M;
    --自动将表空间的临时文件缩小到最小可能的大小
    ALTER TABLESPACE temp1 SHRINK TEMPFILE ’.../temp01.dbf’;

    总结: 至此Temp表空间维护完成。

  • 相关阅读:
    .NET破解之百分百营销软件系列
    未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序
    .NET破解之百度网盘批量转存工具
    The system clock has been set back more than 24 hours
    64位系统中读写注册表
    FME2014汉化问题
    FME中Cass扩展属性转Shp的方法
    Hosts文件小结
    浅谈Java中的equals和==
    mysql读写分离
  • 原文地址:https://www.cnblogs.com/ys-wuhan/p/6054772.html
Copyright © 2011-2022 走看看