分类: Oracle
2006-06-01 13:28:31
ORA-12913 错误的原因,在ORACLE9I之后,系统缺省安装时为本地管理表空间(Local Managed Tablespace)LMT。REFERENCE( http://www.devx.com/tips/Tip/14387 )
1:本地管理的表空间比字典式管理的表空间有如下优点:
本地管理避免了循环空间管理操作,而这种操作在字典式管理表空间中可能发生(当消耗或释放某个区的空间,导致另一个消耗或释放回退段或数据字典表内空间的操作)这些操作在数据字典管理的方式会造成系统性能的下降,因为会有等待操作.
本地管理正在解决这一问题,因为本地管理的表空间不记录数据字典表中的空闲空间,从而减少了对这些表的争用区的本地管理自动跟踪邻近的空闲空间,因而无须合并空闲区
本地管理的区大小可以由系统自动决定,作为选择本地管理的表空间内的所有的区都可以有相同大小转换为区的位图不会生成回退信息,因为它们不更新数据字典中的表(除表空间定额信息等特殊情况外)
2:创建本地管理表空间的一些选项
在Oracle 9i数据库中,本地管理表空间(LMT)是默认的空间管理方式。要想创建本地管理表空间(LMT),只需要在CREATE TABLESPACE 语句的EXTENT MANAGEMENT 子句中指定LOCAL字句。创建LMT时,你可以选择使用AUTOALLOCATE 选项来使用Oracle 自动管理盘区,或者可以使用一个指定大小(UNIFORM SIZE字句) 的统一盘区来管理该表空间。如果省略UNIFORM SIZE选项,则默认选项是AUTOALLOCATE。
CREATE TEMPORARY TABLESPACE temp
TEMPFILE '/tmpfile.dbf'
SIZE 6m
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 2M;
CREATE TABLESPACE MEDIUM_TABLES
DATAFILE '/medium_tables_01.dbf'
SIZE 1000M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1MB;
3:AUTOALLOCATE与UNIFORM的比较:
(1):如果表空间中的EXTENT的尺寸是不一定的,即需要不同的盘区大小和拥有很多盘区的大小变动的对象,这时使用AUTOALLOCATE 是比较合理的选择。虽然有可能浪费了一些空间,但是由Oracle来管理空间的使用(空间分配和回收的工作),简化了用户空间的管理。
(2):如果想要准确控制未用的空间,并且能够精确地预计为一个或更多对象要分配的空间和盘区的数目、大小等,那么使用UNIFORM 选项更合适,因为它确保在表空间中永远不会有一定数量的未用空间。UNIFORM SIZE的默认大小是1MB,此时,使用此方式创建数据文件时,数据文件的大小至少为1MB。 (位图空间加上一个块)。