数据库
首页 > 数据库> > oracle 表空间Tablespaces

oracle 表空间Tablespaces

作者:互联网

一、表空间

1、oracle创建的一个数据库fp可以包含多个表空间,一个表空间里可以有多张表,每个表空间对应多个数据文件。



结合着上面的pl/sql工具远程访问的fp数据库看到的即 
oracle---->数据库fp--->实例fp2(sid)--->sh表空间---->a1表 a2表 B表空间----->b1表 b2表

引申一下,目前该oracle是单机版安装,有两个数据库,这里的模型就是
oracle---->数据库fp--->实例fp2(sid)--->sh表空间---->a1表
                                                 a2表
                                     B表空间------>b1表
                                                 b2表
oracle---->数据库prd--->实例prd(sid)--->pr1表空间---->p表
                                                   d表
                                      pr2表空间----->c表
                                                   r表

2、一个表空间包含多个数据文件

sql>select file_id,file_name,tablespace_name,AUTOEXTENSIBLE from dba_data_files;
FILE_ID  FILE_NAME                          TABLESPACE_NAME        AUT
 1  /u01/oracle/oradata/fp/system01.dbf     SYSTEM                 YES
 2  /u01/oracle/oradata/fp/sysaux01.dbf     SYSAUX                 NO
 3  /u01/oracle/oradata/fp/undotbs1.dbf     UNDOTBS1               YES
 4  /u01/oracle/oradata/fp/sh01.dbf         SH                     YES
5 /u01/app/oracle/oradata/test/user01.dbf USERS YES

3、一个表空间只能属于一个数据库。一个数据文件只能属于一个表空间。

     表空间就是存多个表的物理空间; 可以指定表空间的大小位置等。理解这个看下下面第7点的oracle创建语句就明白了

4、表空间的大小位置等设定。

创建表空间:CREATE TABLESPACE users  DATAFILE '/u01/app/oracle/oradata/test/user01.dbf' SIZE 100M

自动扩展大小:

  CREATE TABLESPACE users DATAFILE '/u01/app/oracle/oradata/test/user01.dbf' SIZE 100M
  AUTOEXTEND ON;
  ALTER DATABASE DEFAULT TABLESPACE users;
  col file_name for a45
  col tablespace_name for a10 

5、oracle表。

   从逻辑的角度来看,一个数据库(database)下面可以分多个表空间(tablespace);
   一个表空间下面又可以分多个段(segment);一个数据表要占一个段(segment),一个索引也要占一个段(segment )。
   一个段(segment)由多个 区间(extent)组成,那么一个区间又由一组连续的数据块(data block)组成。
   这连续的数据块是在逻辑上是连续的,有可能在物理磁盘上是分散。
   注:Segment(段) :段是指占用数据文件空间的通称,或数据库对象使用的空间的集合;段可以有表段、索引段、回滚段、临时段和高速缓存段等。

6、一个表空间由多个数据文件组成。

   那么从物理的角度上看,一个表空间由多个数据文件组成,数据文件是实实在在存在的磁盘上的文件。
    这些文件是由oracle数据库操作系统的block 组成的

7、我们来看下手工来创建一个oracle库语句

create database fp
 USER SYS IDENTIFIED BY oracle
 USER SYSTEM IDENTIFIED BY oracle 
 LOGFILE GROUP 1 ('/u01/oracle/oradata/fp/redo01.log') SIZE 100M,
         GROUP 2 ('/u01/oracle/oradata/fp/redo02.log') SIZE 100M,
         GROUP 3 ('/u01/oracle/oradata/fp/redo03.log') SIZE 100M 
 MAXLOGFILES 5
 MAXLOGMEMBERS 5 
 MAXLOGHISTORY 1 
 MAXDATAFILES 100 
 MAXINSTANCES 1
 CHARACTER SET AL32UTF8
 DATAFILE '/u01/oracle/oradata/fp/system01.dbf' SIZE 350M REUSE  //对应SYSTEM表空间
 AUTOEXTEND ON NEXT 10240K
 EXTENT MANAGEMENT LOCAL
 SYSAUX DATAFILE '/u01/oracle/oradata/fp/sysaux01.dbf' SIZE 325M REUSE
 DEFAULT TABLESPACE SH
 DATAFILE '/u01/oracle/oradata/fp/sh01.dbf'
 SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
 DEFAULT TEMPORARY TABLESPACE temp
 TEMPFILE '/u01/oracle/oradata/fp/temp01.dbf'
 SIZE 20M REUSE
 UNDO TABLESPACE undotbs1 
 DATAFILE '/u01/oracle/oradata/fp/undotbs1.dbf'
 SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

对应产生的文件
oracle@prod:/u01/oracle/oradata/fp$ll
drwxr-xr-x 2 oracle oinstall         10 Dec  2 10:23 archive
-rw-r----- 1 oracle oinstall    9519104 Dec  3 13:35 control01.ctl
-rw-r--r-- 1 oracle oinstall          0 Dec  2 19:29 control01.ctl.bak2
-rw-r----- 1 oracle oinstall    9977856 Dec  2 13:43 control01.ctl.prod
-rw-r----- 1 oracle oinstall   52436992 Dec  3 09:25 fp2.dbf
-rw-r----- 1 oracle oinstall   52436992 Dec  3 09:25 fp.dbf
-rw-r----- 1 oracle oinstall   52436992 Dec  1 20:37 fp_temp.dbf
-rw-r----- 1 oracle oinstall  104858112 Dec  3 13:33 redo01.log
-rw-r----- 1 oracle oinstall  104858112 Dec  3 13:32 redo02.log
-rw-r----- 1 oracle oinstall  104858112 Dec  3 13:32 redo03.log
-rw-r----- 1 oracle oinstall  524296192 Dec  3 13:32 sh01.dbf
-rw-r----- 1 oracle oinstall  340795392 Dec  3 13:32 sysaux01.dbf
-rw-r----- 1 oracle oinstall  367009792 Dec  3 13:32 system01.dbf
-rw-r----- 1 oracle oinstall   20979712 Dec  3 13:32 temp01.dbf
-rw-r----- 1 oracle oinstall  209723392 Dec  3 13:32 undotbs1.dbf
-rw-r----- 1 oracle oinstall 1073750016 Dec  3 09:25 users01.dbf
-rw-r----- 1 oracle oinstall 1073750016 Dec  3 09:25 users02.dbf

  1、SYSAUX表空间是在10g之后引入的一个新的表空间,主要用于减轻对SYSTEM表空间的压力而作为SYSTEM表空间的辅助表空间。

  原来存放于SYSTEM表空间的很多组件以及一些数据库元数据在10g中被移植到SYSAUX表空间,所以这个是必须的
  对应数据文件:/u01/oracle/oradata/fp/sysaux01.dbf

  2、system表空间是个特殊的表空间,数据字典(包含数据库本身以及存储的所有对象的基本信息)存放在SYSTEM表空间中
  对应数据文件:/u01/oracle/oradata/fp/system01.dbf

  3、Oracle临时表空间主要是存储数据库的排序操作、临时表、中间排序结果等临时对象
  对应数据文件: /u01/oracle/oradata/fp/temp01.dbf

8、我们对照着mysql来理解

1、Oracle有表空间,mysql没有表空间
2、Oracle提供的Sql Plus登录
3、MySQL在一个实例中可以创建多个数据库,但Oracle在一个实例中就只有一个数据库,但是一个oracle一个数据库对应多个实例,用实例sid来区分。
   请看我的一篇 https://www.cnblogs.com/aozhejin/p/15859979.html
4、mysql是先建实例,后建库,oracle是先建库,后建实例(看看下面的模型)
    mysql--->实例1---》a库---》a1表
                             a1表
                      b库--->b1表
                             b2表
    oracle---->数据库a--->a实例--->a表空间----》a1表
                                             a2表
                                  b表空间---->b1表
                                             b2表
                                   b实例--->c表空间----》c1表
                                                       c2表
                                           d表空间---->d1表
                                                      d2表

 

标签:fp,Tablespaces,dbf,空间,oradata,oracle,u01
来源: https://www.cnblogs.com/aozhejin/p/16024307.html