《Oracle编程自学与面试指南》04:表空间(Taplespace)

课程封面-Oracle Database-AT阿宝哥


1、表空间(Taplespace)

Oracle数据库是由若干个表空间构成的。任何数据库对象存储时都必须存储在某个表空间中。

表空间对应于若干个磁盘文件,即表空间由一个或者多个数据文件构成的。

表空间相当于操作系统的文件夹,也是数据库逻辑结构与物理文件之间的一个映射。

每个数据库中至少有一个表空间,表空间的大小等于所有属于它的数据文件大小的综合。

简而言之,表空间是对象的容器。

《Oracle编程自学与面试指南》04:表空间(Taplespace)_第1张图片


2、内置表空间

Oracle 11g在创建之初有以下几种比较特殊的表空间:

2.1、SYSTEM

SYSTEM是系统表空间,是每个Oracle数据库都具备的。其功能是在系统表空间中存放诸如表空间名称、表空间所包含文件、还包括包括数据字典、存储过程、触发器和系统回滚段等数据库管理所需的信息。系统表空间的名称是不可更改的。系统表空间必须在任何时候都是可用的,也是数据库运行的必要条件。因此,系统表空间是不能脱机的。

另外,为避免系统表空间产生存储碎片以及征用系统资源的问题,在开发数据库应用时,一般创建一个独立的表空间用来单独存储数据。

2.2、SYSAUX

SYSAUX是系统辅助表空间。是随着数据库的创建而创建的,它充当SYSTEM的辅助表空间,主要存储数据字典以外的其它对象。SYSAUX也是许多Oracle数据库的默认表空间,它减少了由数据库和DBA管理的表空间数量,降低了SYSTEM表空间的负荷。

2.3、TEMP

TEMP是临时表空间。相对于其它表空间而言,它主要用于存储Oracle数据库运行时产生的临时数据。数据库可以建立多个临时表空间。当数据库关闭后,临时表空间中的所有数据全部被清除。除临时表空间外,其它表空间都属于永久性表空间。

2.4、UNDOTBS

UNDOTBS是回滚表空间,用于保存Oracle数据库的撤销信息。

2.5、USERS

USERS是用户表空间,用于用久存储用户对象和数据。

2.6、EXAMPLE

EXAMPLE是样本表空间,用于存储样本方案的所有对象。


3、查看表空间

V$TABLESPACE:表空间视图。
V$DATAFILE:数据文件视图。
dba_objects:DBA对象

3.1、查询所有表空间

示例代码:


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

3.2、查询所有数据文件

示例代码:


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          



3.3、查询所有对象类型.


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

3.4、使用"左连接"查询所有的表空间及数据文件.


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

4、数据文件

V_$DATAFILE:系统视图;

  • 从“数据文件视图”中查询所有的数据文件信息列

select  * from  V$DATAFILE;

  • 查询控制文件

SELECT  *  FROM  v$controlfile;

  • 查询日志文件

select  *  from  v$logfile;

SELECT * FROM  v$log;

  • 查询临时文件

SELECT * FROM v$tempfile;


5、创建表空间

  • 创建表空间
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;


6、修改表空间

-------------------------------------------------------------------------------
--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;

-------------------------------------------------------------------------------

7、删除表空间

-------------------------------------------------------------------------------
  
--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;

你可能感兴趣的:(《Oracle)