可加入Autoextend On Next 100M Maxsize Unlimited,否则会由于空间不足报ORA-01659错误(表示无法分配超出的MINEXTENTS)。
表空间默认区大小为64KB,可通过UNIFORM SIZE 128k来指定区大小为128k;或使用AUTOALLOCATE,区的大小由数据库根据情况指定。此时需要加入EXTENT MANAGEMENT LOCAL,表示表空间的区管理方式为本地管理(否则为字典管理)。
Oracle的Data block address共32bit,其中10bit记录file_id,22bit(ROWID)记录block_id,在一个数据文件中最多能够记录2 22 − 1 ( 4194303 ) 2^{22}-1(4194303)2
22−1(4194303)个block,由于db_block_size = 8k,所以一个数据文件的最大值为8k*2 222^{22}2 22=31.9999924G。(DBA_DATA_FILES视图中的MAXBLOCKS为4194302,MAXBYTES为34359721984,单位为字节BYTE)
Oracle大文件表空间
Oracle大文件表空间只包含一个数据文件,这个数据文件可包含4GB个数据块,一个数据文件大小可达32TB(8KB*4GB)。区(Extent)管理方式为本地管理(LOCAL),段(SEGMENT)管理方式为自动管理(AUTO)。
建立大表空间语句如下:
Create Bigfile Tablespace btbs1 Datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ BTBS01. DBF' Size 200M;
(2)修改表空间数据文件大小
Alter Database Datafile 'D:\oracle\product\10.2.0\oradata\orcl\tbs01.dbf' Resize 200M;
(3)表空间不足时,增加数据文件(可增加1个或多个)
ALTER TABLESPACE tbs01 add Datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TBS01-1.DBF' Size 50M, D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TBS01-2.DBF' Size 50M;
(4)重命名表空间数据文件
Alter Tablespace tbs01 Rename Datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TBS01.DBF' To 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TBS01-0.DBF'
修改控制文件和数据字典中数据文件的位置和名称信息,在执行之前需要保证数据文件在操作系统中已经被正确重命名。
(5)删除表空间
DROP TABLESPACE tbs01 INCLUDING CONTENTS AND DATAFILES;