Oracle 表空间介绍

一、表空间概念:

        表空间(tablespace)是数据库的逻辑划分, 每个数据库至少有一个表空间,叫做系统表空间(system 表空间). 一个表空间只能属于一个数据库。

  每个表空间由同一个磁盘上的一个或多个文件组成, 这些文件称为数据文件。

        oracle数据库中的数据逻辑的存储在表空间并物理的存储在数据文件中。

       

 

二、表空间特性:

         a.控制数据库数据磁盘分配。

         b.限制用户在表空间中可以使用的磁盘空间大小。

         c.表空间具有 online(联机), offline(脱机), readonly, readwrite属性。

             修改表空间的属性:

   SQL> alter tablespace 表空间名称 属性;

          查询表空间状态: SQL> select tablespace_name, status from dba_tablespaces;

   注意: system, undo, temp表空间不能设为offline属性.

   d.完成部分数据库的备份与恢复

   e.表空间通过数据文件来扩大, 表空间的大小等于构成该表空间的所以数据文件的大小只和.

   查询表空间与数据文件对应关系:

   SQL> select tablespace_name, bytes, file_name from dba_data_files;

 

三、表空间分类:

        a、按数据文件的类型分:

                大文件表空间(bigfile tablespace)此为10g新增功能

                小文件表空间(smallfile tablespace)此为创建时默认值

        大文件表空间的优点有:

               1、在一个表空间里只有一个大的数据文件,以后不需要再去管理数据文件;
               2、一个大的数据文件相当于1024个小的数据文件,这样一来,在一个块大小为32K时,整个
数据库可以达到(4g*32K)128TB,不过在实际环境中还是要受到操作系统的影响;
               3、使用一个大的数据文件可以代替多个小数据文件,这样对数据文件的管理就少多了;
               4、当打开数据库,发生检查点,执行DBWR进程时使用大文件表空间会增强性能。

       大文件表空间的的需要注意有:

              1、要使用在ORACLE的ASM(自动存储管理)的存储空间或者分散(striping)存储的LVM中,或者RAID阵列上;
              2、不要把大文件表空间建立在不能分散(striping)存储的系统上;
              3、不要把大文件表空间建立在没有空间(剩余空间少)的磁盘组上;
              4、建立大文件表空间时不推荐建立在不能扩展的存储空间里;
              5、大文件表空间只支持本地管理表空间(LMT)和本地段空间管理(ASSM);
              6、在临时表空间与回滚段表空间,只能用手动段空间管理;
              7、自动扩展数据文件必须是起用的,而且最大文件大小必须是不限制;
              8、系统表空间和系统辅助(SYSAUX)表空间不能使用大文件表空间;
              9、每个表空间只能包含一个数据文件。如果试图添加新的文件,则会报告 ora-32771 错误;

     b、按管理方式分:

              本地管理表空间(LMT)

              数据字典管理表空间(DMT)

              注:从ORACLE9.2起,如果SYSTEM表空间为本地管理的,ORACLE系统就不再允许创建数据字典管理的表空间。但是用户可以使用可移动表空间(transportable tablespace)功能向此数据库中加入一个数据字典管理的表空间,此表空间只能置为只读状态。

     c、按使用类型分:

              永久段表空间:一般存储数据的表空间。

              临时段表空间:一般用来排序和创建索引时使用。

              回滚段表空间:用来存放修改中数据的原数据,回滚段表空间是用来保证数据读一致性的。

     d、在永久表空间中按存储内容方式分:

              系统表空间(SYSTEM TABLESPACE):从10g开始系统表空间默认为本地管理表空间。

              系统辅助表空间(SYSAUX TABLESPACE)

              非系统表空间

 

四、表空间操作:

         (1)查询用户缺省表空间: SQL> select username, default_tablespace from dba_users;

         (2)查询表与存储该表的表空间: SQL> select table_name, tablespace_name from user_tables;

         (3)修改用户缺省表空间: SQL> alter user username default tablespace tablespace_name;

         (4)将数据从一个表空间移动到另一个表空间: SQL> alter table table_name move tablespace tablespace_name;

 

        //创建临时表空间
        create temporary tablespace test_temp
        tempfile 'E:\oracle\product\10.2.0\oradata\testserver\test_temp01.dbf'
        size 32m
        autoextend on
        next 32m maxsize 2048m
        extent management local;

        //创建数据表空间
        create tablespace test_data
        logging
        datafile 'E:\oracle\product\10.2.0\oradata\testserver\test_data01.dbf'
        size 32m
        autoextend on
        next 32m maxsize 2048m
        extent management local;

        //创建用户并指定表空间
        create user username identified by password
        default tablespace test_data
        temporary tablespace test_temp;

        //给用户授予权限
        grant connect,resource to username;

        //以后以该用户登录,创建的任何数据库对象都属于test_temp 和test_data表空间,这就不用在每创建一个对象给其指定表空间了。

 

        //修改表空间的状态
        (1)使表空间脱机
        alter tablespace 表空间名 offline;
        (2)使表空间联接
        alter tablespace 表空间名 online;
        (3)只读表空间
        alter tablespace 表空间名 read only
        (4)可读可写表空间 
        alter tablespace 表空间名 read write 

         //查询某表空间下的所有表名
         select * from all_tables where tablespace_name='表空间名'
         //查询某个表在那个表空间中
         select tablespace_name,table_name from user_tables where
         table_name='EMP';
         //删除表空间
         DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;

         //扩展表空间
         1.增加数据文件
          ALTER TABLESPACE game
          ADD DATAFILE '/oracle/oradata/db/GAME02.dbf' SIZE 1000M;
         2.手动增加数据文件尺寸 
          ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf'
          RESIZE 4000M; 
         3.设定数据文件自动扩展
          ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf
          AUTOEXTEND ON NEXT 100M  MAXSIZE 10000M;

 

注:整理自网络

 

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值