您的位置:首页 > 数据库 > Oracle

16_Oracle_Admin_什么是表空间以及如何创建表空间

2014-09-26 22:31 369 查看
一、什么是表空间(Tablespace)和数据文件(Data File




Data File是具体的物理文件,Linux系统上通过ls命令,Windows系统上使用dir命令可以查看得到,体积相应比较大;一个或多个Data File只属于一个Tablespace;用户的物理对象都存储在Data File里。
Tbalespace则是一个逻辑概念,一组(一个或多个)datafile组成一个tablespace;而一个或多个tablespace在同一时间只属于一个数据库;Tablespace能进一步划分为其他的逻辑单元,如segement、extent和block。



逻辑关系:
Database ―(一对多)―>Tablespace ―(一对多)―> Segment―(一对多)―>
Extent ―(一对多)―>连续的Oracle data block
物理关系:
Data file ―(一对多)―>操作系统的block
逻辑<―>物理关系:
Tablespace ―(一对多)―>Data file
Oracle data block ―(幂的整数倍,一对多)―>操作系统的block

注:操作系统的block是个物理概念,比如一个block是4k,它在内存中也占4页;而Oracledata block是个逻辑概念,它是OSblock的幂的整数倍,可以是4k,8k或16k等等。





Segment包括table,index等等,它有一个或多个extent组成,它可以跨越多个datafile;而extent是由多个连续的block组成,它不可以跨多个datafile;block是数据库进行I/O传输的最小单元。





二、表空间的类型




Tablespace可以从用途的角度,划分为两种:
A. SYSTEM Tablespace:
1.数据字典存储在SYSTEMTablespace中;2.SYSTEM undo segment 存储在SYSTEMTablespace中。B. NON-SYSTEM Tablespace:是用户真正用来存储数据库的表空间。

更为科学的划分,是将tablespace划分为三种:
A.Permanent 永久表空间――即包括了SYSTEMTablespace,也包含了用户用来存储数据 的NON-SYSTEMTablespaceB.Undo 表空间C.Temporary 临时表空间 Undo 和 Temporary表空间都是用来管理数据库的,存储的是临时文件。

三、创建表空间


CREATE TABLESPACE这个命令可以用来创建Tablespace,具体的用法可以查看联机文档SQL LanguageReference。




从10g以后,引入了BIGFILE这一类型,用来满足一些超大数据存储的需求,一个tablespace的体积最大可以支持128TB,但它需要操作系统的支持。
不同的Tablespace可以指定不同的block size,可以和database的block size 不一致。Tablespace中的数据发生了改变,通常会记录在online redo logfile中,指定logging_clause (开启或关闭),能够决定是否记录,从而提高性能。

/*======创建表空间的过程演示=====*/
=====查询当前的表空间====
SQL> select * from v$tablespace;
-- v$tablespace记录了该数据库中有哪些表

TS# NAME                           INC BIG FLA ENC
---------- ------------------------------ --- --- --- ---
0 SYSTEM                         YES NO  YES
1 SYSAUX                         YES NO  YES
2UNDOTBS1                       YESNO  YES
4 USERS                          YES NO  YES
3 TEMP                           NO  NO  YES
6EXAMPLE                        YESNO  YES

6 rows selected.

=====查询每个表空间中都有哪些文件=====
SQL> desc dba_data_files;

Name                                     Null?    Type
------------------------------------------------- ----------------------------
FILE_NAME                                         VARCHAR2(513)
FILE_ID                                            NUMBER
TABLESPACE_NAME                                   VARCHAR2(30)
BYTES                                             NUMBER
BLOCKS                                            NUMBER
STATUS                                             VARCHAR2(9)
RELATIVE_FNO                                       NUMBER
AUTOEXTENSIBLE                                    VARCHAR2(3)
MAXBYTES                                          NUMBER
MAXBLOCKS                                          NUMBER
INCREMENT_BY                                       NUMBER
USER_BYTES                                         NUMBER
USER_BLOCKS                                        NUMBER
ONLINE_STATUS                                     VARCHAR2(7)

SQL> col file_name format a40;
SQL> select file_name, tablespace_name from dba_data_files;

FILE_NAME                                TABLESPACE_NAME
----------------------------------------------------------------------
/oracle/oradata/orcl/users01.dbf         USERS
/oracle/oradata/orcl/undotbs01.dbf       UNDOTBS1
/oracle/oradata/orcl/sysaux01.dbf        SYSAUX
/oracle/oradata/orcl/system01.dbf        SYSTEM
/oracle/oradata/orcl/example01.dbf       EXAMPLE
-- 可以看出,一个数据文件只属于一个表空间


========增加一个表空间==========

SQL> create tablespace mickey datafile
2 '/oracle/oradata/orcl/mickey01.dbf' size 20M;
-- 增加了一个名为mickey的表空间
Tablespace created.
====查看磁盘变化=======
[oracle@localhost ~]$ cd /oracle/oradata/orcl
[oracle@localhost orcl]$ ll
total 1641120
-rw-r-----. 1 oracle oinstall   9748480 Sep 10 10:12 control01.ctl
-rw-r-----. 1 oracle oinstall   9748480 Sep 10 10:12 control03.ctl
-rw-r-----. 1 oracle oinstall  20979712 Sep 10 10:11 mickey01.dbf
# 可以看到多了一个文件mickey01.dbf
-rw-r-----. 1 oracle oinstall   5251072 Sep 10 05:42 users01.dbf

=====查看数据库表空间信息=======
SQL> select * from v$tablespace;
TS# NAME                           INC BIG FLA ENC
---------- ------------------------------ --- --- --- ---
0 SYSTEM                         YES NO  YES
1 SYSAUX                         YES NO  YES
2UNDOTBS1                        YES NO  YES
4 USERS                          YES NO  YES
3 TEMP                           NO  NO  YES
6EXAMPLE                         YES NO  YES
7 MICKEY                         YES NO  YES
-- 新增了一个表空间MICKEY

7 rows selected.

SQL> select file_name, tablespace_name from dba_data_files;

FILE_NAME                                TABLESPACE_NAME
----------------------------------------------------------------------
/oracle/oradata/orcl/users01.dbf         USERS
/oracle/oradata/orcl/undotbs01.dbf       UNDOTBS1
/oracle/oradata/orcl/sysaux01.dbf        SYSAUX
/oracle/oradata/orcl/system01.dbf        SYSTEM
/oracle/oradata/orcl/example01.dbf       EXAMPLE
/oracle/oradata/orcl/mickey01.dbf        MICKEY
-- 新表空间及其对应的数据文件

6 rows selected.


本文出自 “重剑无锋 大巧不工” 博客,请务必保留此出处http://wuyelan.blog.51cto.com/6118147/1558671
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: