码迷,mamicode.com
首页 > 数据库 > 详细

oracle存储结构_表空间-笔记

时间:2015-01-15 19:58:14      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:


  

技术分享

 
    oracle数据库,所有数据从逻辑结构上看都是存放在表空间当中,当然表空间下还有段、区、块等逻辑结构。
一个ORACLE数据库能够有一个或多个表空间,而一个表空间则对应着一个或多个物理的数据库文件。

表空间的定义:存放数据的一个容器。表空间由一个数据文件或多个数据文件组成,一个数据文件只属于一个表
空间。
-----(这个容器会随着数据文件的增加而增大)


表空间的作用能帮助DBA用户完成以下工作:
    1.决定数据库实体的空间分配;
    2.设置数据库用户的空间份额;
    3.控制数据库部分数据的可用性;
    4.分布数据于不同的设备之间以改善性能;
    5.备份和恢复数据。



以oracle为准,oracle系统里有多少基本的表空间。
    select * from dba_tablespaces;

系统中默认创建的几个表空间:

    SYSTEM       系统表空间

    SYSAUX       系统辅助表空间

    USERS         用户表空间

    UNDOTBS1     回滚表空间

    EXAMPLE       

    TEMP             临时表空间

系统中必须的表空间有那几个?

答案: SYSTEM、SYSAUX、TEMP、UNDO, 像USERS、EXAMPLE等表空间是可有可无的。



表空间的分类:(按存储时间分)

1.永久表空间             存放永久性的数据,如表,索引等。
2.临时表空间             存放临时数据,保存PGA内存溢出时的数据排序,分组产生的临时数据
3.UNDO表空间          保存数据修改前的镜像。(修改数据之前,oracle会拷贝一份到UNDO表空间)


表空间的管理方式:
A.本地管理表空间(LMT)
B.数据字典管理表空间(DMT)

    A.本地管理表空间:一种比较先进的管理扩展(extent)的方式;当使用本地管理表空间时是使用6个块
(从第三个到第八个)来标识整个表空间里的每一个扩展(extent);

    B.字典管理表空间:这种方式是为了与之前版本兼容而提供的。11g里是不能创建字典管理表空间的
,被强制推荐,只能倒入老版本中的字典管理表空间。

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

表空间增删查改相关操作:

——创建表空间:
    1.创建包含一个初始大小为10M的数据文件,每次自增长1M,最大自增长为20M的表空间。
        SQL> create tablespace tbs
          2  datafile ‘/oracle/tbs01.dbf‘ size 10M autoextend on next 1M maxsize 20M;

    2.创建包含两个数据文件的表空间,第一个数据文件初始大小为20m,每次自增长为1M,自增长最大为30M;
               第二个数据文件初始大小为10M,每次自增长为5M,无限制大小;
        SQL> create tablespace ts
          2  datafile ‘/oracle/ts01.dbf‘ size 20M autoextend on next 1M maxsize 30M,
          3  ‘/oracle/ts02.dbf‘ size 10M autoextend on next 5M;


——扩展表空间;
        当表超过表空间大小时,要对表空间进行扩充。(增加表空间大小的方法有三种)
    (1)添加数据文件。
    (2)改变数据文件大小。
    (3)允许数据文件自动扩展。

     a.添加数据文件:
          语句:alter tablespace tablespace_name add datafiel ‘path_dbf‘ size 大小;
     --为ts表空间添加一个初始大小为3M不自增长的数据文件;    
        SQL> alter tablespace ts
          2  add datafile ‘/oracle/ts03.dbf‘ size 3M;
     思考——
            SQL> alter tablespace ts
            2  add datafile ‘/oracle/ts04.dbf‘ size 2M autoextend on next 2M maxsize 10M
            3  /


     b. 改变数据文件的大小
        alter database datafile ‘path_.dbf‘ resze 大小;
       -为ts表空间的数据文件增加8m;
              SQL> alter database datafile ‘/oracle/ts04.dbf‘ resize 8M;


      c.允许数据文件自动扩展
          alter database datafile ‘path_.dbf‘ autoextend on next size_大小 maxsize size_大小;
       -改变tbs表空间01号数据文件为自增长,每次自增长1M,最大限制为10M;
               SQL> alter database datafile ‘/oracle/tbs01.dbf‘ autoextend on next 1M maxsize 10M;


-------如何为新建表指定表空间;
     两个例子:
      SQL> create table c1(a int,b char)
      2  tablespace tbs
      3  /
    
                  
    SQL> create table c2
      2  tablespace ts
      3  as select * from dept;


----------把表迁移到另外一个表空间里;
               语句:alter table table_name move tablespace new_tablespace_name;
                    
                       SQL> alter table c2 move tablespace tbs;

             ----另------
                语句:alter table table_name move;
                    整理表空间碎片;

-------------删除表空间:
    删除ts表空间;
       SQL>drop tablespace tq;
    
    删除表空间,一并删除数据文件;
    语句:drop tabelpaces tablespace_name including contents and datafiles; 
    SQL> drop tablespace tq including contents and datafiles;


--------修改表空间名称
SQL> alter tablespace ts rename to ts1;



--------------查询表空间相关:
  
  稍微回顾一下:学习至今,学了几个oracle视图?
    1.user_constraint          约束相关视图
    2.recyclebin         回收站视图
    3.dba_tables                   表属性视图
    4.dba_tablespaces           表空间视图
      5.dba_data_files               数据文件视图


以几个常用查询为例:
----查询该表属于哪个表空间;
SQL>select table_name,tablespace_name from dba_tables where table_name=‘‘;

--包含数据库中所有表空间的描述信息
SQL> select * from dba_tablespaces;

--包含当前用户的表空间的描叙信息
SQL> select * from user_tablespaces;

--包含从控制文件中获取的表空间名称和编号信息
SQL> select * from v$tablespace;

 

查看数据文件

--包含数据文件以及所属的表空间的描述信息
SQL> select * from dba_data_files;

--包含临时数据文件以及所属的表空间的描述信息
SQL> select * from dba_temp_files;

--包含从控制文件中获取的数据文件的基本信息,包括它所属的表空间名称、编号等
SQL> select * from dba_temp_files;

--包含所有临时数据文件的基本信息
SQL> select * from v$datafile;

oracle存储结构_表空间-笔记

标签:

原文地址:http://www.cnblogs.com/yzhl/p/4226833.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!