Oracle创建表空间
的有关信息介绍如下:为了简化表空间的管理并提高系统性能,Oracle建议将不同类型的数据对象存放到不同的表空间中。因此,在创建数据库后,数据库管理员还应该根据具体应用的情况,建立不同类型的表空间。例如,建立专门用于存放表数据的表空间、建立专门用于存放索引或簇的表空间等,因此创建表空间的工作就显得十分重要,在创建表空间时必须考虑以下几点: 1、是创建小文件表空间,还是大文件表空间(默认为小文件表空间)。 2、是使用局部盘区管理方式,还是使用传统的目录盘区管理方式(默认为局部盘区管理管理)。 3、是手动管理段空间,还是自动管理段空间(默认为自动)。 4、是否用于临时段或撤销段的特殊表空间。
创建表空间的基本语法如下:
1、语法中的关键字:
SMALLFILE/BIGFILE:表示创建的是小文件表空间还是大文件表空间。REUSE:表示若该文件存在,则清除该文件再从新建立该文件,若该文件不存在,则创建该文件。AUTOEXTEND [ON|OFF] NEXT:表示数据文件为自动扩展(ON)或非自动扩展(OFF),如果是自动扩展,则需要设置NEXT的值。MAXSIZE:表示当数据文件自动扩展时,允许数据文件扩展的最大长度字节数,如果指定UNLIMITED关键字,则不需要指定字节长度。MININUM EXTENT:指定最小的长度,由操作系统和数据库的块决定。DEFAULT STORAGE:指定以后要创建的表、索引、簇的存储参数值,这些参数将影响以后表的存储参数值。ONLINE|OFFLINE:创建表空间时可以指定为在线或离线。LOGGING|NOLOGGING:指定该表空间内的表在加载数据时是否产生日志,默认为产生日志(LOGGING)。即使设置为NOLOGGING,但在进行INSERT、UPDATE、和DELETE操作时,Oracle仍会将操作信息记录到Redo Log Buffer中。PERMANENT|TEMPORARY:指定创建的表空间是永久表空间或临时表空间,默认为永久性表空间。EXTENT MANAGEMENT DICTIONARY|LOCAL:指定表空间的扩展方式是使用数据字典管理还是本地化管理,默认为本地化管理。Oracle不推荐使用数据字典管理表空间。AUTOALLOCATE|UNIFORM SIZE:如果采用本地化管理表空间,在表空间扩展时,指定每次盘区扩展的大小是由系统自动指定还是按照等同大小进行。若是按照等同大小进行,则默认每次扩展的大戏笑傲为1MB.
2、语法中的参数:
tablespace_name:该参数表示要创建的表空间的名称。'/path/filename':该参数表示数据文件的路径与名字。
通过本地化管理方式创建表空间:
本地化表空间管理使用位图跟踪表空间所对应的数据文件的自由空间和块的使用状态,位图中的每个单元对应一个块或一组块。当分配或释放一个扩展时,Oracle会改变位图的值以指示该块的状态。这些位图值的改变不会产生回滚信息,因为它们不更新数据字典的任何表。所以,本地管理表空间具有以下优点:
1、使用本地化的扩展功能(包括自动大小和等同大小两种),可以避免发生重复的空间管理操作。 2、本地化管理的自动扩展(AUTOALLOCATE)能够跟踪临近的自由空间,这样可以消除结合自由空间的麻烦。本地化的扩展大小(UNIFORM)。通常使用EXTENT MANAGEMENT LOCAL子句创建本地化的可变表空间。
例如:通过本地化管理方式(LOCAL)创建一个大小为10MB的表空间,其扩展大小为等同的256KB
例如:通过本地化管理方式(LOCAL)创建一个大小为10MB的表空间,其扩展大小为自动管理
通过段空间管理方式创建表空间:
段空间管理方式是建立在本地管理方式基础之上的,即只有本地化管理方式的表空间,才能在其基础上进一步建立段空间管理方式,它使用“SEGMENT SPACE MANAGEMENT MANUAL/LOCAL”语句,段空间管理又可分为手动段和自动段两种空间管理方式。
1、手动段管理方式: 手动段管理方式是为了往后兼容而保留的,它使用自由块列表和PCT_FREE与PCT_USED参数来标识可供插入操作使用的数据块。
在每个INSERT或UPDATE操作后,数据库都会比较该数据块中的剩余自由空间与该段的PCT_FREE设置。如果数据块的剩余自由空间少于PCT_FREE自由空间(即剩余空间已经进入系统的下限设置),则数据库就会从自由块列表上将其取下,不再对其进行擦汗如操作。剩余的空余空间给可能会增大该数据块中行大小的UPDATE操作。
而在每个UPDATE操作或DELETE操作后,数据库会比较该数据块中的已用空间与PCT_USED设置,如果已用空间少于PCT_USED已用空间(即已用空间未达到系统的上限设置),则该数据块会被加入到自由列表中,供INSERT操作使用。
例如:通过本地化管理方式(LOCAL)创建一个表空间,其扩展大小为自动管理,其段空间管理方式为手动。
2、自动段空间管理方式:
如果采用自动段空间管理方式,那么数据库会使用位图而不是自由列表来标识哪些数据块可以用于插入操作,哪些数据块需要从自由块列表上将其取下。此时,表空间段的PCT_FREE和PCT_USED参数会被自动忽略。
例如:通过本地化管理方式(LOCAL)创建一个大小为20MB的表空间,其扩展大小为自动管理,其段空间管理方式为自动。