暂无图片
分享
周伟
2019-09-24
关于临时表空间使用率的真实计算

请教专家,

关于在计算临时表空间的使用率的时候,通常会有这几个数据字典进行参考:

DBA_TEMP_FREE_SPACE

v$temp_header_space

v$temp_extent_pool

v$sort_usage

v$tempseg_usage

v$sort_segment

请问:

  1. 从查询得出的结果来看,v$sort_usage和v$tempseg_usage都指向的是同一个v_$sort_usage,也就是他们是等效的,oracle为什么会创建这样两个不同别名呢?他们各自有什么特殊的作用么?

  2. 关于v$temp_extent_pool,这个视图到底是干什么的,官方文档说是“displays the state of temporary space cached and used for the instance.”,我没能理解这里所谓的“cached”和“used”到底是指的什么,他们到底是表示目前正在被使用的临时表空间,还是属于曾经被使用过,但是没有deallocated,只是被标记为“free”的表空间?

  3. v$sort_segment 里面的 used_blocks表示的是当前“正在”使用的block,还是表示的是“曾经”被使用的最大值,free_blocked表示的是“从来”没有被分配给任何排序段的block,还是包含“从来”没有被分配+“已经”分配过但是排序已完成并且可用被reuse的block ?

  4. 能否提供一个实际靠谱一点的,计算真实的临时表空间的使用率的脚本(RAC环境)?

收藏
分享
2条回答
默认
最新
章芋文

你这问题有点多,可以单独拿出来一个个提问,或者是你研究出来了分享给大家,^_^

说下我平时的做法吧,关注下表空间使用率和ALERT中是否有temp的报错,有没有enq: TS的等待事件,以及当前每个会话的temp使用情况

SELECT b.tablespace,
     ROUND(((b.blocks*p.value)/1024/1024),2)||'M' AS temp_size,
     a.sid||','||a.serial# AS sid_serial,
     NVL(a.username, '(oracle)') AS  username,
     a.program 
FROM   v$session a,
       v$sort_usage b,
       v$parameter p WHERE  p.name  = 'db_block_size'
 AND    a.saddr = b.session_addr 
ORDER BY b.tablespace, b.blocks;
暂无图片 评论
暂无图片 有用 0
周伟
问题已关闭: 正在研究中
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏