Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1185028
  • 博文数量: 398
  • 博客积分: 10110
  • 博客等级: 上将
  • 技术积分: 4055
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-23 20:01
个人简介

新博客http://www.cnblogs.com/zhjh256 欢迎访问

文章分类

全部博文(398)

文章存档

2012年(1)

2011年(41)

2010年(16)

2009年(98)

2008年(142)

2007年(100)

我的朋友

分类: Oracle

2007-12-25 19:04:27


有些时候临时段不会被像想象的那样清除掉,而是一只驻留n个小时,这会导致表空间不恰当的运行溢出,为了避免
这种问题的发生,dba可以定期激活清除孤独的临时段。
产生的原因?
    当一个段被删除时,其分区不会立刻释放。当进程删除段后,段仅仅更改为其类型为临时段,如果语句失败,该
操作将会备回滚。临时段通常被清除并基于调用的结果释放分区,但是如果字典缓存行代表的段仍然在使用或是脏的
,临时段清除将不会在此时发生。这通常在临时段被递归调用释放时出现,因为父事务没有提交,临时段不会被立刻
清除。
如何使孤独的临时段被清除?
    清除临时段并释放它们的分区是SMON进程的任务。虽然smon每5分钟被唤醒,但是除非被显示唤醒,否则其每隔
2:05才检查一次临时段。即使如此,每次也只能清除5个临时段,并且必须在5秒内得到锁。因此临时段清除可能很长
时间才出现。
    但是如果smon被其他进程显示唤醒,它将执行临时段清除。smon在每次空间事务失败时也会被唤醒。通常较好的
方法是使用ORADEBUG WAKEUP命令进行唤醒,如下:
column pid new_value Smon
set termout off
select
  p.pid
from
  sys.v_$bgprocess b,
  sys.v_$process p
where
  b.name = 'SMON' and
  p.addr = b.paddr
/
set termout on
oradebug wakeup &Smon
undefine Smon
阅读(587) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~