请教两个问题1 什么是pctXXX?比如 pctincrese, pctfree?2 什么是快照太旧?使快照太旧的原因?
解决方案 »
- 无法定位程序输入点于动态库orageneric10.dll上
- sqlplus /nolog和sqlplus之后写用户名密码区别
- 如何处理Oracle里面Long类型字段?
- 服务里边的voracleservicedatabase服务、lisener服务被杀掉了,如何恢复?
- 求教!:备份整个数据库后数据、日志、控制文件全部删除后怎么恢复数据库啊?
- Oracle92安装成功, OracleOraHome92ManagerService的服务就是不能启动 ?
- 请问如何取最新的指定条数纪录?比如50条?
- 哪位能帮我写出这个SQL??
- 如何入门Oracle Forms 的开发
- oracle 11g 安装库文件出现的问题 求解答!
- sql语句改错
- 在使用PL/SQL查询Oracle时,出现问题:内部错误代码,参数:[15160],[],[],[],[]:
如 前所述,对于一个表(而不是一个IOT,有关内容稍后再介绍),PCTFREE会告诉Oracle:块上应该保留多大的空间来完成将来的更新。这说明,如 果我们使用的块大小为8KB,只要向块中增加一个新行,就会导致块上的自由空间下降大约800字节,Oracle会使用FREELIST的另一个块,而不 是现有的块。块上这10%的数据空间会预留出来,以便更新该块上的行。
1. 实际上PCTUSED的含义是,如果块上不自由的空间到达或小于PCTUSED参数指定的百分比时,这个块将重新变为自由,如倘若PCTUSED为40%,那么块上不自由的空间小于40%时,即自由空间达到60%时,这个块就重新变为自由。——译者注。
注意 对 于不同的表类型,PCTFREE和PCTUSED的实现有所不同。对于某些表类型,这两个参数都要使用,而另外一些表类型只使用PCTFREE,而且对于 这些表类型,仅当创建对象时才会使用PCTFREE。IOT在创建时可以使用PCTFREE在表中预览空间来完成将来的更新,但是在其他方面并不使用 PCTFREE,例如,PCTFREE不用于决定何时停止向一个给定块中插入行。
根 据你使用的是ASSM表空间还是MSSM表空间,这两个参数的实际作用会有所不同。使用MSSM时,这些参数设置控制着块何时放入freelist中,以 及何时从freelist中取出。如果使用默认值:PCTFREE为10,PCTUSED为40,那么在块到达90%满之前(有10%以上的自由空间), 这个块会一直在freelist上。一旦到底90%,就会从freelist中取出,而且直到块上的自由空间超过了块的60%时,才会重新回到 freelist上,在此之前,这个块一直不在freelist上。
使用ASSM时,PCTFREE仍然会限制能否将一个新行插入到一个块中,但是它不会控制一个块是否在freelist上,因为ASSM根本不使用freelist。在ASSM中,PCTUSED将被忽略。
PCTFREE有3 种设置:太高、太低好刚好。如果把块的PCTFREE设置得过高,就会浪费空间。如果把PCTFREE设置为50%,而你从未更新数据,那么每个块都会浪 费50%的空间。不过,在另一个表上,50%可能非常合理。如果行初始很小,现在想将行的大小加倍,但是倘若PCTFREE设置得太小,更新行时就会导致 行迁移。
第10章
A,B仍存在数据库的回退段中, 基于scn号1和2如果一个长sql, 时间1时开始执行, 那么它的查询结果应基于时间1
但它到了3时仍没有执行完因为太多的更新没有提交, 回退段的东西太多了, 所以较早的1时的A出了回退段, 它不在数据库里了现在这个sql基于scn号去找值A, A不在了,就会报快照太旧
解决的办法是增大回退段和分段提交
自由范围的碎片整理 表空间中的一个自由范围是表空间中相连自由(空间)块的集合。当一个段关闭时,它的范围将被释放,并被标记为自由范围。然而,这些自由范围再也不能与相邻的自由范围合并,它们之间的界线始终存在。但是当表空间的缺省值pctincrease设置不为0时,SMON后台进会定期的将这些相邻的自由范围合并。若pctincrease设置为0,那相邻自由范围不会被数据库自动合并。但可以使用 alter tablespace 命令coalesce选项,来强迫进行相邻自由范围的合并。 不进行自由范围合并,在日后的空间请求中,会影响到表空间中的空间分配。当需要一个足够大的范围时,数据库并不会合并相邻的自由范围,除非没有其他选择。这样,当表空间中前面较小自由范围已被相关使用时,将使用表空间中后面部分最大的一个自由范围。结果,会因为它们没有足够多的使用空间,从而导致表空间中速度上的矛盾。由于这样的进程出现,使数据库的空间分配距理想越来越远。自由空间碎片常会出现在那些经常关闭又重新生成的数据库表和索引中。在理想的ORACLE表空间中,每一个数据库对象存储在一个单独的范围中,并且所有有效自由空间集中在一个巨大而连续的范围中。这样,在一个对象需要附加存储空间时,可以在增加获取足够大自由空间的可能性同时,最小化空间中的循环调用,提高自由空间使用率