OracleFreelist和HWM原理及性能优化(6)

文章作者 100test 发表时间 2007:03:14 13:43:21
来源 100Test.Com百考试题网


在Oracle中删减表只有如下的两种办法:

1.使用0drop语句

先使用0drop语句删除整个表,然后再重建这个表。在删除-重建的过程中,与表相关的所有索引、完整性约束以及触发器都会丢失,并且所有依赖于该表的对象都会变为INVALID状态,同时原来争对表的授权也会失效。因此采用这种方式删除表中的记录代价太大。

2.使用TRUNCATE语句

TRUNCATE语句属于DDL语句,不会产生任何回退信息,并且被立即自动提交。在执行TRUNCATE语句时不会影响到与被删减表相关的任何数据库对象与授权,也不会触发表中所定义的触发器。此外,在对标进行删减时,HWM将重置,已经为表分配的存储空间将被回收。

在执行TRUNCATE语句时,可以通过0drop storage子句和reuse storage子句来控制被释放的区是否回收到表空间中。如何作在线系统的TRUNCATE,不希望表长时间锁住,那么可以使用reuse storage子句,仅将HWM重置。

4.3 free list优化

free list 竞争出现在多个进程使用同一个free list并试图同时修改free list头部数据块时。可以通过查询视图v$waitsate的class类型为data block 的记录来检查竞争情况。

产生data block类型竞争的主要原因是多个进程试图同时修改free list头部数据块。 然而,它也会出现在当进程准备将块读入buffer cathe时,另一个进程需要访问同一个块。如果能在V$SESSION_WAIT中正好捕获buffer busy waits,就可以通过查询V$SESSION_WAIT中的P3来判定是那一类。A 0 或 1014代表读类型,其他的值为修改竞争的类型。


相关文章


用Oracle和Python武装你的头脑(1)(2)
Oracle数据库数据安全面面观(一)(1)
Oracle数据库的备份及恢复策略研究(3)
Oracle数据库的备份及恢复策略研究(2)
OracleFreelist和HWM原理及性能优化(6)
通过NetAppSimulator学习RAC(5)
OracleFreelist和HWM原理及性能优化(4)
用Oracle和Python武装你的头脑(1)(1)
见识了一次Oracle9i标准版
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛