Oracle数据库是由若干个表空间构成的。任何数据库对象存储时都必须存储在某个表空间中。
表空间对应于若干个磁盘文件,即表空间由一个或者多个数据文件构成的。
表空间相当于操作系统的文件夹,也是数据库逻辑结构与物理文件之间的一个映射。
每个数据库中至少有一个表空间,表空间的大小等于所有属于它的数据文件大小的综合。
简而言之,表空间是对象的容器。
Oracle 11g在创建之初有以下几种比较特殊的表空间:
SYSTEM是系统表空间,是每个Oracle数据库都具备的。其功能是在系统表空间中存放诸如表空间名称、表空间所包含文件、还包括包括数据字典、存储过程、触发器和系统回滚段等数据库管理所需的信息。系统表空间的名称是不可更改的。系统表空间必须在任何时候都是可用的,也是数据库运行的必要条件。因此,系统表空间是不能脱机的。
另外,为避免系统表空间产生存储碎片以及征用系统资源的问题,在开发数据库应用时,一般创建一个独立的表空间用来单独存储数据。
SYSAUX是系统辅助表空间。是随着数据库的创建而创建的,它充当SYSTEM的辅助表空间,主要存储数据字典以外的其它对象。SYSAUX也是许多Oracle数据库的默认表空间,它减少了由数据库和DBA管理的表空间数量,降低了SYSTEM表空间的负荷。
TEMP是临时表空间。相对于其它表空间而言,它主要用于存储Oracle数据库运行时产生的临时数据。数据库可以建立多个临时表空间。当数据库关闭后,临时表空间中的所有数据全部被清除。除临时表空间外,其它表空间都属于永久性表空间。
UNDOTBS是回滚表空间,用于保存Oracle数据库的撤销信息。
USERS是用户表空间,用于用久存储用户对象和数据。
EXAMPLE是样本表空间,用于存储样本方案的所有对象。
V$TABLESPACE:表空间视图。
V$DATAFILE:数据文件视图。
dba_objects:DBA对象
示例代码:
SELECT * FROM v$tablespace;
结果集:
TS# | NAME | INCLUDED_IN_DATABASE_BACKUP | BIGFILE | FLASHBACK_ON | ENCRYPT_IN_BACKUP |
---|---|---|---|---|---|
0 | SYSTEM | YES | NO | YES | null |
2 | UNDOTBS1 | YES | NO | YES | null |
1 | SYSAUX | YES | NO | YES | null |
4 | USERS | YES | NO | YES | null |
3 | TEMP | NO | NO | YES | null |
示例代码:
SELECT * FROM v$datafile;
结果集:
FILE# CREATION_CHANGE# CREATION_ TS# RFILE# STATUS ENABLED CHECKPOINT_CHANGE# CHECKPOIN UNRECOVERABLE_CHANGE# UNRECOVER LAST_CHANGE# LAST_TIME OFFLINE_CHANGE# ONLINE_CHANGE# ONLINE_TI BYTES BLOCKS CREATE_BYTES BLOCK_SIZE NAME PLUGGED_IN BLOCK1_OFFSET AUX_NAME FIRST_NONLOGGED_SCN FIRST_NON FOREIGN_DBID FOREIGN_CREATION_CHANGE# FOREIGN_C PLU PLUGIN_CHANGE# PLUGIN_RESETLOGS_CHANGE# PLUGIN_RE
---------- ---------------- --------- ---------- ---------- ------- ---------- ------------------ --------- --------------------- --------- ------------ --------- --------------- -------------- --------- ---------- ---------- ------------ ---------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------- ------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------- --------- ------------ ------------------------ --------- --- -------------- ------------------------ ---------
1 8 29-5月 -14 0 1 SYSTEM READ WRITE 374428 27-7月 -20 0 370964 370965 27-7月 -20 377487360 46080 0 8192 D:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSTEM.DBF 0 8192 NONE 0 0 0 NO 0 0
2 1823 29-5月 -14 1 2 ONLINE READ WRITE 374428 27-7月 -20 0 370964 370965 27-7月 -20 692060160 84480 0 8192 D:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSAUX.DBF 0 8192 NONE 0 0 0 NO 0 0
3 2861 29-5月 -14 2 3 ONLINE READ WRITE 374428 27-7月 -20 0 370964 370965 27-7月 -20 398458880 48640 0 8192 D:\ORACLEXE\APP\ORACLE\ORADATA\XE\UNDOTBS1.DBF 0 8192 NONE 0 0 0 NO 0 0
4 15521 29-5月 -14 4 4 ONLINE READ WRITE 374428 27-7月 -20 0 370964 370965 27-7月 -20 104857600 12800 0 8192 D:\ORACLEXE\APP\ORACLE\ORADATA\XE\USERS.DBF 0 8192 NONE 0 0 0 NO 0 0
SELECT object_type FROM dba_objects GROUP BY object_type ORDER BY object_type;
结果集:
序号 | 对象类型 | 说明 |
---|---|---|
1 | CLUSTER | – |
2 | CONSUMER GROUP | – |
3 | CONTEXT | – |
4 | DATABASE LINK | – |
5 | DESTINATION | – |
6 | DIRECTORY | – |
7 | EDITION | – |
8 | EVALUATION CONTEXT | – |
9 | FUNCTION | – |
10 | INDEX | – |
11 | INDEX PARTITION | – |
12 | INDEXTYPE | – |
13 | JOB | – |
14 | JOB CLASS | – |
15 | LIBRARY | – |
16 | LOB | – |
17 | LOB PARTITION | – |
18 | OPERATOR | – |
19 | PACKAGE | 包 |
20 | PACKAGE BODY | – |
21 | PROCEDURE | – |
22 | PROGRAM | – |
23 | QUEUE | – |
24 | RESOURCE PLAN | – |
25 | RULE | – |
26 | RULE SET | – |
27 | SCHEDULE | – |
28 | SCHEDULER GROUP | – |
29 | SEQUENCE | 序列 |
30 | SYNONYM | 同义词 |
31 | TABLE | 表 |
32 | TABLE PARTITION | – |
33 | TABLE SUBPARTITION | – |
34 | TRIGGER | 触发器 |
35 | TYPE | 类型 |
36 | TYPE BODY | – |
37 | UNDEFINED | – |
38 | VIEW | 视图 |
39 | WINDOW | – |
40 | XML SCHEMA | – |
SELECT ts.ts# ,
ts.NAME ,
df.name AS "filename"
FROM v$tablespace ts
LEFT JOIN V$datafile df
ON ts.ts# = df.ts#;
结果集:
TS# | NAME | filename |
---|---|---|
0 | SYSTEM | D:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSTEM.DBF |
1 | SYSAUX | D:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSAUX.DBF |
2 | UNDOTBS1 | D:\ORACLEXE\APP\ORACLE\ORADATA\XE\UNDOTBS1.DBF |
4 | USERS | D:\ORACLEXE\APP\ORACLE\ORADATA\XE\USERS.DBF |
3 | TEMP |
V_$DATAFILE:系统视图;
select * from V$DATAFILE;
SELECT * FROM v$controlfile;
select * from v$logfile;
SELECT * FROM v$log;
SELECT * FROM v$tempfile;
create tablespace Wechat DATAFILE 'D:\ORACLEXE\APP\ORACLE\ORADATA\XE\Wechat.dbf'
size 100m;--"请求超出了允许的最大数据库大小 11 GB"
SELECT * FROM v$tablespace;
SELECT * FROM v$datafile;
SELECT ts.ts# ,
ts.NAME ,
df.name AS "filename"
FROM v$tablespace ts
LEFT JOIN v$datafile df
ON ts.ts# = df.ts#;
DROP TABLESPACE Wechat;
-------------------------------------------------------------------------------
--Step1:创建表空间
CREATE TABLESPACE wechat DATAFILE 'D:\ORACLEXE\APP\ORACLE\ORADATA\XE\Wechat01.dbf'
SIZE 10m,
'D:\ORACLEXE\APP\ORACLE\ORADATA\XE\Wechat02.dbf'
SIZE 10m,
'D:\ORACLEXE\APP\ORACLE\ORADATA\XE\Wechat03.dbf'
size 10m;
--Step2:添加数据文件
ALTER TABLESPACE wechat ADD DATAFILE 'D:\ORACLEXE\APP\ORACLE\ORADATA\XE\Wechat04.dbf'
SIZE 10M REUSE;
--Step3:查询表空间
SELECT * FROM v$tablespace;
SELECT * FROM v$datafile;
SELECT ts.ts# ,
ts.NAME ,
df.name AS "filename"
FROM v$tablespace ts
LEFT JOIN v$datafile df
ON ts.ts# = df.ts#;
--Step4:删除表空间
DROP TABLESPACE wechat INCLUDING contents and datafiles;
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
--Step1:创建表空间
CREATE TABLESPACE wechat DATAFILE 'D:\ORACLEXE\APP\ORACLE\ORADATA\XE\Wechat.dbf'
SIZE 10m;
--Step2:创建表空间中的对象.
CREATE TABLE platuser1
(
ID VARCHAR2(2)
)TABLESPACE wechat;
--Step3:删除表空间.
DROP TABLESPACE wechat INCLUDING CONTENTS AND DATAFILES;
--Step4:确认文件已删除.
--打开Windows资源管理器,定位到上述数据文件的创建位置,确认该文件已删除.
-------------------------------------------------------------------------------
如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS
语法:
DROP TABLESPACE tablespace_name including contents
AND datafiles CASCADE CONSTRAINTS;