请问:执行DDL语句时,回滚段和临时段、回滚表空间和临时表空间,都起什么样的作用?在什么时候起作用?
一直搞得不很清楚,非常谢谢大家阿。

解决方案 »

  1.   

    S Q L的r o l l b a c k命令使用户能撤消对数据库所做的事务。这种功能对任何u p d a t e、i n s e r t或
    者d e l e t e事务都有效;但对数据库对象的变动则无能为力(如alter table命令)。当选择其他用户
    正在改变的数据时, O r a c l e使用回滚段来展示变动前的数据。临时段( Temporary segment)用于在进行排序操作(如大型查询、创建索引和联合)期间存储
    临时数据。每一个用户都有一个临时表空间,该表空间在创建帐号时由create user指定,或在改变帐号时由alter user指定。用户的临时表空间应当指向S Y S T E M (缺省)之外的其他地方。
    当创建一个临时段时,它使用这个表空间的缺省存储参数。在它存在时,不能通过改变
    表空间的缺省存储参数来修改其存储参数。临时段会在必要时自行扩展,并且在操作完成或
    出现错误时自行撤消。由于临时段自己也会导致错误(如超过最大盘区值或表空间缺乏),所以
    当规划临时表空间大小时,应考虑大型排序查询及相应的操作的大小。
    通常称作T E M P的临时表空间,由于其自身特点会有很多碎片。临时段总是在不断地创建、
    扩展和撤消,因此必须充分利用已撤消的盘区的重复使用能力。对于临时表,将i n i t i a l和n e x t
    盘区大小设为表空间大小的1 / 2 0 ~ 1 / 5 0。对于这个表空间, i n i t i a l和next 缺省设置应当相等。将
    p c t i n c r e a s e值设为0,这样,段将由同样大小的盘区构成。当撤消这些段时,下一个临时段将
    能重新利用这些已撤消的盘区。
    可以将一个表空间指定为“临时”表空间。“临时”表空间不能用于存储任何永久段,只
    能存储操作时创建的临时段。使用临时表空间的第一个排序操作会在临时表空间中创建一个
    临时段;当查询结束时,临时段所使用的空间并没有撤消。而且临时段所使用的空间对其他
    查询依然可用。这样就可以使排序操作避免临时段空间的分配与释放。如果应用程序为排序
    操作频繁使用临时段,则使用专用临时段会改善排序进程。