Oracle 表空间的段管理

当用户进行插入、更新和删除操作时,段中的数据块的空间会发生变化,块的状态也会发生变化。 

Oracle使用两种方法进行块管理:
手动管理(Manual Segment Space Management)
自动管理(Automatic Segment Space Management,ASSM)


1) 手动管理
Oracle使用自由列表(Free List)管理段中的块,自由列表列出允许进行插入操作的数据块。 

Oracle通过PCT_FREE和PCT_USED两个参数来控制一个数据块是否允许插入数据。当对一个块进行INSERT或者UPDATE操作后,Oracle会把这个块中剩余的自由空间和PCT_FREE进行对比,如果这个数据块中的自由空间小于PCT_FREE的设置,Oracle将把这个快从自由列表中取出,这时,这个块不再允许进行INSERT操作,但这个块仍然允许UPDATE操作。当对一个块进行DELETE或者UPDATE操作以后,Oracle会把这个块中已经使用的空间和PCT_USED进行对比,如果这个数据块中已经使用的空间小于PCT_USED的设置,则Oracle把这个块重新放回自由列表中,这时,这个块又可以进行INSERT了。 

在创建表空间的时候,使用子句Segment Space Management Manual设置段的手动管理。 

例:创建手动管理表空间


2) 自动管理
段的手工管理使用自由列表管理段中数据块的使用,自动管理使用位图来管理数据快。当块发生变化时,Oracle会更新位图,以反映这个块是否允许INSERT操作。位图使Oracle自动管理自由空间。 

例:创建自动管理表空间
 

你可能感兴趣的:(oracle,list,delete,insert)