1 本地管理方式创建表空间:
语法:
CREATE TABLESPACE ts2 DATAFILE '/oradata/ts2_01.dbf' SIZE 50M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
CREATE TABLESPACE ts3 DATAFILE '/oradata/ts3_01.dbf' SIZE 50M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;
: 原理:
表空间是一种为段(表,索引等)提供空间的逻辑结构,所以,当在表空间中增加,删除段的时候,数据库就必须跟踪这些空间的使用。如下例所示,假定一个新创建的表空间包含了五个表
表空间和未用空间
当我们删除表四的时候,就有如下结果
表+表+空闲空间段+表+未用空间
很明显,ORACLE需要有一个机制来管理表空间中各数据文件的这些分配的或未分配的空间,为了跟踪这些可以使用的空间(包括未分配使用的和可以重复使用的),对于每一个空间,我们必须知道:
1、数据文件类型
2、这个空间的尺寸
3、哪一个段占用的这个空间
优点:1 提升存储效率
2 避免表空间存储管理递归
3 避免重做和撤销记录
4 简化管理
2 段空间管理方式创建表空间:
语句:
①MSSM:由你设置freelists、freelistgroups、pctused、pctfree、initrans等参数来控制如何分配、使用段中的空间 ②ASSM:你只需控制一个参数pctfree,其他参数即使建了也将被忽略 ⑴freelist 使用MSSM表空间管理时,Oracle会在freelist中为有自由空间的对象维护HWM以下的块 freelist和freelistgroup在ASSM表空间中根本不存在,仅在MSSM表空间使用这个技术 ⑵pctfree和pctused pctfree告诉Oracle:块上应该保留多大的空间来完成将来的更新 对于MSSM,她控制着块何时放入freelist中,以及何时从freelist中取出。 如果大于pctfree,则这个块会一直在freelist上 对于ASSM,因为ASSM根本不使用freelist。在ASSM中,pctused也将被忽略。 但她仍然会限制能否将一个新行插入到一个块中 适当的设置pctfree有助于减小行迁移 ⑶initrans 无论是ASSMorMSSM这个参数仍然有效 块头的事务槽的初始化大小有对象的initrans指定 CREATE TABLESPACE tbs_name DATAFILE '/u01/oracle/data/tbs_name1.dbf' SIZE 50M AUTOEXTEND ON MAXSIZE xxx ---设定 autoextend on 最好设定 maxsize EXTENT MANAGEMENT LOCAL UNIFORM SIZE 8M BLOCKSIZE xxk ---非标准块表空间要配置db_xxk_cache_size SEGMENT SPACE MANAGEMENT AUTO|MANUAL;原理: 自动管理表空间
优点: