1、SMON的作用
1.1自动恢复例程
前滚以恢复尚未记入数据文件但已经记入联机重做日志中的数据
打开数据库以允许用户登录。任何没有被未恢复事务锁定的数据都立即可用
回滚未提交的事务
1.2合并数据文件中邻近区域的空闲块
SMON 每5分钟会检查一次所有pctincrease != 0的空间,并把它们合并成一个大块。
但这只限于于字典管理模式。
1.3回收临时段,将它们作为数据文件中的空闲块返回
何时会回收临时段?
建立INDEX:在建立索引的时候,oracle会先在临时段中创建索引,建好了之后才回移动到永久表空间中。
如果这时进程中断,则由SMON进行临时段的回收。
DROP 对像:在删除对像的时候,Oracle会先把对像所占的空间标识为临时段,再由SMON进程回收。
用户错误:用户进程获取临时段后,突然中止连接。
1.4把回滚段回缩到optimal所设置的大小
2、合并空闲块的处理
2.1如何查看系统是否正在合并空闲块
SELECT COUNT(*) FROM DBA_FREE_SPACE;
Dba_free_space视图记录了所有空闲的块,里面有每一个空闲块的blockid、所属的表空间以及空闲块的大小。如果这个值在不断的减少,就说明SMON正在合并空闲块
2.2如何阻止SMON合并空闲块?
在合并空闲块的时候,SMON会占用大量的CPU时间,而且SMON的优先级比普通的进程高,这样就会导致其他 用户进程无法获取CPU资源。一旦SMON开始合并空闲块,那么数据库是无法shutdown的,除非SMON合并完所有的空闲块。其实,Oracle是在UN-COALESCED EXTENTS存在的情况下关闭数据库的,这里就引发一个问
题,如何不让SMON合并空闲块?
方法一,手工的执行合并空闲块的命令:
'alter tablespace coalesce'
这做法从性能上要比SMON好,速度也比SMON快,而且不会引发ora-1575的错误。
方法二,设置10269事件将会使Smon进程不去合并那些Free的空间
3、回收临时段的处理
3.1如何查看系统是否正在回收临时段
SELECT COUNT(*) FROM DBA_EXTENTS WHERE SEGMENT_TYPE = 'TEMPORARY';
DBA_EXTENTS视图记录了oracle的所有块,里面有每一个块的所有信息,包括块的类型。如果这个值在不断的减少,说明SMON正在回收临时段。
3.2建议:
不要设置过小的临时表空间的initial值和next值
不要让临时表空间无限扩大
使用LMT而不要用DMT
3.3 DROP_SEGMENTS事件可以代替SMON清除临时段
alter session set events 'immediate trace name DROP_SEGMENTS level 6';
level的等级是表空间的ID+1
3.4如何阻止SMON清除临时段
event="10061 trace name context forever, level 10" 阻止clean temp space
4、如何有效的删除大表
在删除大表的时候,oracle会先把表所占的空间标记为临时段,再进行清除。
如果是字典表空间。在删除表的时候,会把块的信息从uet$表移到fet$表中,所以如果是删除大表的时
候,一定要注意不能直接用drop,而是应该用truncate,然后再DEALLOCATE,最后再drop。
4.1 使用REUSE STORAGE子句截断表对象:
SQL> TRUNCATE TABLE BIGTAB REUSE STORAGE; //只是删除数据,先不进行空间的回收
4.2 逐步回收空间:
Night 1:
SQL> ALTER TABLE BIGTAB DEALLOCATE UNUSED KEEP 1707M; (2Gb*5/6)
Night 2:
SQL> ALTER TABLE BIGTAB DEALLOCATE UNUSED KEEP 1365M; (2Gb*4/6)
Night 3:
SQL> ALTER TABLE BIGTAB DEALLOCATE UNUSED KEEP 1024M; (2Gb*3/6)
Night 4:
SQL> ALTER TABLE BIGTAB DEALLOCATE UNUSED KEEP 683M; (2Gb*2/6)
Night 5:
SQL> ALTER TABLE BIGTAB DEALLOCATE UNUSED KEEP 341M; (2Gb*1/6)
Night 6:
SQL> DROP TABLE BIGTAB;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/814/viewspace-852337/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/814/viewspace-852337/