ORACLE的表空间类型包括大文件表空间和小文件表空间,小文件表空间是ORACLE默认的。他们的文件大小与数据块的大小相关,而且也与文件系统的块的大小相关,文件可以达到如下:
数据块的大小(单位:K) |
大表空间是大值(单位T) |
小表空间最大值(单位:G) |
2K |
8T |
8G |
4K |
16T |
16G |
8K |
32T |
32G |
16K |
64T |
64G |
32K |
128T |
128G |
大文件表空间只能包含一个文件,但文件的大小可以达到4G个数据块大小;小文件表空间可以包含多个文件,单个文件大小可以达到4M个数据块大小。在现实环境中,数据块的大小是由操作系统的文件系统的数据块大小限制的。
下面我们以 Linux 操作系统为例:
sql> SHOW parameters db_block_size
db_block_size integer 8192
也就是说,我们创建的小表空间单文件大小可以达到32G,也可以通过增加表空间文件的方式增加小表空间的大小;我们创建的大表空间的大小可以达到32T。
1.小表空间
1.1 创建小表空间
DROP TABLESPACE myTableSpace INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS; CREATE TABLESPACE myTableSpace DATAFILE '/home/oracle/oradata/myTableSpace.dbf' SIZE 200M AUTOEXTEND ON NEXT 512K MAXSIZE UNLIMITED LOGGING ONLINE EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT MANUAL FLASHBACK ON; //创建一个小表空间,表空间名称为myTableSpace,表空间的数据文件名为/home/oracle/oradata/myTableSpace.dbf,表空间文件的初始大小是200M,文件自动扩展,文件块的大小是8K,表空间文件最大是32G。 // LOGGING会创建重做日志,方便在数据丢失后找回数据 //ONLINE 表空间的状态设置成ONLINE,允许外部对表空间的对象进行访问;如果设置 成OFFLINE,则不允许外部对表空间的对象进行访问。 // extent是“区间”的意思,在oracle数据库中:extent management 有两种方式 extent management local(本地管理); extent management dictionary(数据字典管理),默认的是local,本地管理表空间与字典管理表空间相比大大提高了管理效率和数据库性能。 // SEGMENT SPACE MANAGEMENT MANUAL 手动管理,Oracle使用自由列表(Free List)管理段中的块,自由列表列出允许进行插入操作的数据块;自动管理,段的手工管理使用自由列表管理段中数据块的使用,自动管理使用位图来管理数据快,当块发生变化时,Oracle会更新位图,以反映这个块是否允许INSERT操作,位图使Oracle自动管理自由空间。 // FLASHBACK ON将以前被修改,删除了的数据,通过开启Flashback 模式,回到我们需要回到的时间来查看数据, |
1.2查询表空间的大小
select * from dba_data_files where tablespace_name='myTableSpace'; |
alter tablespace myTableSpace ADD DATAFILE '/home/oracle/oradata/myTableSpace_2.dbf ' SIZE 200M AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED; |
2.创建大表空间
DROP BIGFILE TABLESPACE myTableSpace INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS; CREATE TABLESPACE myTableSpace DATAFILE '/home/oracle/oradata/myTableSpace.dbf' SIZE 200M AUTOEXTEND ON NEXT 512K MAXSIZE UNLIMITED LOGGING ONLINE EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT MANUAL FLASHBACK ON; |