表空间属性:一个数据库可以包含多个表空间,一个表空间只能属于一个数据库;一个表空间包含多个数据文件,一个数据文件只能属于一个表空间
表这空间可以划分成更细的逻辑存储单元:
那么从物理的角度上看,一个表空间由多个数据文件组成,数据文件是实实在在存在的磁盘上的文件。这些文件是由oracle数据库操作系统的block 组成的。
Segment(段) :段是指占用数据文件空间的通称,或数据库对象使用的空间的集合;段可以有表段、索引段、回滚段、临时段和高速缓存段等。
Extent (区间):分配给对象(如表)的任何连续块叫区间;区间也叫扩展,因为当它用完已经分配的区间后,再有新的记录插入就必须在分配新的区间(即扩展一些块);一旦区间分配给某个对象(表、索引及簇),则该区间就不能再分配给其它的对象.
表空间根据对区间(extents)的管理分为两种类型
1.词典管理表空间(Dictionary-managed tablespaces):在表空间里,有的区间被占用了,有的没被占用,这些数据是放在数据字典里的。当你对这个表空间进行分配或释放的时候,数据文件里相关的表就会做修改。
2.本地管理表空间(locally managed tablespace):本地管理表空间不是在数据词典里存储表空间的,由自由区管理的表空间。用位图来自由的管理区间。一个区间对一个位,如果这个位是1表示已经被占用,0表示未被占用。
Undo tablespace
Undo 类型的表空间,当你对一张表或一条记录进行修改的时候,它会对修改之前的信息进行保存,这样可以保证数据的回滚。Undo 只包含undo类型的对象,不能包含任何其他对象,只适合于数据文件和区间管理。
Temporary Tablespaces
临时表空间,相当于一个临时的垃圾场。用于排序操作,比如你要做一次大数据量的查询,但在内存无法存储这么大量的数据,然后会在磁盘上建立一个临时的表空间用记存放这些数据。Oracle就会用这个临时表空间做排序,存储中间结果。
一个全局的临时表空间,可以由多个用户共享,谁需要谁使用。但它只能存放临时的数据,不能包含任何永久性对象。 建议用本地管理方式创建这个表空间。
删除表空间:
删除表空间,使用命令drop tablespace ‘表空间名’ 但是有3个选项需要注意:
INCLUDING CONTENTS:指删除表空间中的segments;
INCLUDING CONTENTS AND DATAFILES:指删除segments和datafiles;
CASCADE CONSTRAINTS:删除所有与该空间相关的完整性约束条件。
一、创建表空间:
1 create tablespace test1
2 datafile '/u01/app/oracle/oradata/PROD1/test101.dbf' size 10M
3 autoextend on next 1M maxsize 2G
4 extent management local uniform size 1M
5 segment space management auto
二、更改表空间状态:
SYS@PROD1>alter tablespace test1 read only;
Tablespace altered.
SYS@PROD1>alter tablespace test1 read write;
Tablespace altered.
三、表空间重命名:
SYS@PROD1>alter tablespace test1 rename to sales;
Tablespace altered.
四、查询表空间信息:
SYS@PROD1>select tablespace_name,initial_extent/1024/1024 m,EXTENT_MANAGEMENT,ALLOCATION_TYPE,SEGMENT_SPACE_MANAGEMENT,status from dba_tablespaces where tablespace_name='TEST1';
TABLESPACE_NAME M EXTENT_MAN ALLOCATIO SEGMEN STATUS
--------------- ---------- ---------- --------- ------ ---------
TEST1 1 LOCAL UNIFORM AUTO ONLINE
五、表空间的大小更改三种方式:
1、SYS@PROD1>alter tablespace sales add datafile '/u01/app/oracle/oradata/PROD1/sales02.dbf' size 10M;
2、SYS@PROD1>alter database datafile '/u01/app/oracle/oradata/PROD1/test101.dbf' autoextend on maxsize 2G;
3、SYS@PROD1>alter database datafile '/u01/app/oracle/oradata/PROD1/test101.dbf' resize 50M;
——查看表空间信息:
SYS@PROD1>select tablespace_name,file_name,bytes/1024/1024 m from dba_data_files where tablespace_name='SALES';
TABLESPACE_NAME FILE_NAME M
--------------- ------------------------------ --------------------------------------
SALES /u01/app/oracle/oradata/PROD1/test101.dbf 50
六、脱机
SYS@PROD1>alter tablespace sales offline;
Tablespace altered.
SYS@PROD1>select tablespace_name,status from dba_tablespaces where tablespace_name like 'SALES';
TABLESPACE_NAME STATUS
--------------- ---------
SALES OFFLINE
七、删除表空间
SYS@PROD1>create table sales_1 (id number) tablespace sales;
Table created.
SYS@PROD1>select table_name,tablespace_name from dba_tables where tablespace_name='SALES';
TABLE_NAME TABLESPACE_NAME
------------------------------ ---------------
SALES_1 SALES
SYS@PROD1>drop tablespace sales;
drop tablespace sales
*
ERROR at line 1:
ORA-01549: tablespace not empty, use INCLUDING CONTENTS option
——有对象的时候删除要用如下语句:
drop tablespace sales INCLUDING CONTENTS and datafiles;
八:OMF机制(oracle manage file)
omf机制:在数据库中删除表空间后,体系自动删除对应操作系统层的物理文件;参数db_create_file_dest 为设置OMF具体位置的。
SYS@PROD1>show parameter db_create
NAME TYPE VALUE
------------------------------------ ----- ------------------------------
db_create_file_dest strin g
db_create_online_log_dest_1 strin g
db_create_online_log_dest_2 strin g
db_create_online_log_dest_3 strin g
db_create_online_log_dest_4 strin g
db_create_online_log_dest_5 strin g
SYS@PROD1>alter system set db_create_file_dest='/u01/app/oracle/oradata/omf';
System altered.
SYS@PROD1>show parameter db_create
NAME TYPE VALUE
------------------------------------ ----- ------------------------------
db_create_file_dest strin /u01/app/oracle/oradata/omf g
——验证OMF机制::
SYS@PROD1>create tablespace sales2;
Tablespace created.
SYS@PROD1>select tablespace_name,file_name from dba_data_files where tablespace_name='SALES2';
TABLESPACE_NAME FILE_NAME
------------------------------------------------------------------------------------------------------------
SALES2 /u01/app/oracle/oradata/omf/PROD1/datafile/o1_mf_sales2_cxpsm19c_.dbf
SYS@PROD1>drop tablespace sales2;
Tablespace dropped.
删除表空间之后再查看操作系统物理路径下没有表空间对应的数据文件了。