zoukankan      html  css  js  c++  java
  • 达梦TEMP表空间回收

      在DBA日常工作中,TEMP表空间使用情况一直都是运维时比较关注的一个指标。需要不定时对TEMP进行回收。那么达梦应该是怎样回收呢?

    达梦回收TEMP表空间

    Temp 表空间检查

    TEMP 表空间完全由 DM 数据库自动维护。当 SQL 语句需要磁盘空间来完成某个操作时,DM 数据库会从 TEMP 表空间分配临时段。如创建索引、无法在内存中完成的排序操作、SQL 语句中间结果集以及用户创建的临时表等都会使用到 TEMP 表空间。

    Temp 表空间可自动扩充,为了不影响磁盘空间的使用,通常会通过 ini 参数 TEMP_SIZE 配置大小,TEMP_SPACE_LIMIT 设置上限,通过存储过程 SP_TRUNC_TS_FILE 来收缩 Temp 表空间文件。

    生产环境中要针对 Temp 表空间的大小做专项检查,经常过大可能说明内存过小或者存在大量排序或者中间结果集存放,需要视情况开展优化工作。

    检查 Temp 表空间的大小,SQL 语句如下所示:

    SELECT
    a.tablespace_name "表空间名称" ,
    total / (1024 * 1024) "表空间大小(M)" ,
    free / (1024 * 1024) "表空间剩余大小(M)" ,
    (total - free) / (1024 * 1024 ) "表空间使用大小(M)" ,
    total / (1024 * 1024 * 1024) "表空间大小(G)" ,
    free / (1024 * 1024 * 1024) "表空间剩余大小(G)" ,
    (total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)",
    round((total - free) / total, 4) * 100 "使用率 %"
    FROM
    (
    SELECT
    tablespace_name,
    SUM(bytes) free
    FROM
    dba_free_space
    GROUP BY
    tablespace_name
    )
    a,
    (
    SELECT
    tablespace_name,
    SUM(bytes) total
    FROM
    dba_data_files
    GROUP BY
    tablespace_name
    )
    b
    WHERE
    a.tablespace_name = b.tablespace_name and a.tablespace_name='TEMP';

    执行结果如下图所示:

    5_4_01

    回收 Temp 表空间,SQL 语句如下所示:

    CALL SP_TRUNC_TS_FILE (ts_id ,file_id, to_size);

    其中 ts_id,file_id 可以通过 v$datafile 查询,to_szieb 表示指定将文件截断至多大,以 MB 为单位;to_size 大小换算成页数后,值必须在 4096 到 2 GB 之间。

    Select * from v$datafile;

    5_4_02

    • Ts_id 对应 GROUP_ID。
    • File_id 对应 ID。
    • CALL SP_TRUNC_TS_FILE (3 ,0, 32) 表示将临时表空间文件号为 0 的文件截断缩小到 32 MB 大小。

    更多资讯请上达梦技术社区了解: https://eco.dameng.com

    24小时免费服务热线:400 991 6599

  • 相关阅读:
    mysql数据库基本类型
    常用辅助类【转】
    Java 并发笔记】并发机制底层实现整理[转发]
    关于PROPAGATION_NESTED的理解
    线程数设置
    c# Expression 扩展[转]
    Net定时器 【转载】
    【转】高可用设计-58沈剑
    【转】委托的三种调用示例(同步调用 异步调用 异步回调)
    [coursera OA] acme match
  • 原文地址:https://www.cnblogs.com/last-one/p/15319056.html
Copyright © 2011-2022 走看看