码迷,mamicode.com
首页 > 其他好文 > 详细

管理表空间和数据文件

时间:2018-03-09 12:15:38      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:oracle   upd   一个数据库   manage   相互   off   xfs   href   永久   


前言:管理表空间和数据文件

  在 Oracle数据库中,表空间中的数据存在于磁盘的数据文件中,所以对表空间的管理操作与对数据文件的管理操作密切相关。通过使用表空间,可以有效的部署不同类型的数据,加强数据管理,从而提高数据库的运行性能。

通过阅读本章节内容,可以:

  • 理解表空间和数据文件的关系
  • 掌握如何创建表空间
  • 掌握如何维护表空间和数据文件
  • 了解如何管理撤销表空间
  • 掌握如何管理临时表空间




一:表空间与数据文件的关系


       在Oracle 数据库中,表空间与数据文件之间的关系非常密切,这二者 相互依存。也就是说,创建表空间时必须创建数据文件,增加数据文件时也必须指定表空间。

       Oracle磁盘空间管理中的最高逻辑层是表空间(tablespace),它的下一层是段(segment),并且一个段只能驻留在一个表空间中。段的下一层是盘区。一个或者多个盘区 (extent)可以组成一个段,并且每个盘区只能驻留在一个数据文件中。如果一个段跨越多个数据文件,它就只能由多个驻留在不同数据文件中的盘区构成。盘区的下一层就是数据块,它也是磁盘空间管理中逻辑划分的最底层,一组连续的数据块可以组成一个盘区。

技术分享图片




示例1:在sysetm 模式下:从 dba_data_files 数据字典中查询表空间及其包含的数据文件

  1 SYS@orcl> col tablespace_name for a10;
  2 SYS@orcl> col file_name for a50;
  3 SYS@orcl> col bytes for 999,999,999
  4 SYS@orcl> select tablespace_name ,file_name,bytes from dba_data_files order by tablespace_name;
  5 
  6 TABLESPACE FILE_NAME                                                 BYTES
  7 ---------- -------------------------------------------------- ------------
  8 EXAMPLE    /u01/app/oracle/oradata/orcl/example01.dbf          362,414,080
  9 SYSAUX     /u01/app/oracle/oradata/orcl/sysaux01.dbf           786,432,000
 10 SYSTEM     /u01/app/oracle/oradata/orcl/system01.dbf           765,460,480
 11 UNDOTBS1   /u01/app/oracle/oradata/orcl/undotbs01.dbf          256,901,120
 12 USERS      /u01/app/oracle/oradata/orcl/users01.dbf              5,242,880
 13 
 14 SYS@orcl>


     从查询所列的结果来看,一个数据库包括多个表空间,比如system 表空间、users表空间。而每一个表空间又包含一个或者多个数据文件,比如:

users 表包括一个数据文件 users01.dbf ;表空间可以看成是oracle 数据库的逻辑结构,而数据文件可以看成是 Oracle数据库的物理结构。            



二:oracle 11g 默认的表空间


   默认表空间是指在创建Oracle数据库时,系统自动创建的表空间,这些表空间通常用于存放Oracle系统内部数据和提供样列所需的逻辑空间。

oracle默认的表空间及其声明如表:

技术分享图片


      1: system 表空间

  Oracle 数据库的每个版本都使用system 表空间存放内部数据和数据字典。system表空间主要存放sys用户的各个对象和其他用户的少量对象。用户可以从DBA_SEGMENTS 数据字典中查询到某个表空间所存放的数据对象及其类型(如:索引、表、簇等)和拥有者。


1: 例如: 查询 users 表空间内存放的数据对象及其类型和拥有者。

  1 SYS@orcl> col owner for a10;
  2 SYS@orcl> col segment_name for a30;
  3 SYS@orcl> col segment_type for a20;
  4 SYS@orcl> select segment_type,segment_name,owner from dba_segments where tablespace_name =‘USERS‘;
  5 
  6 SEGMENT_TYPE         SEGMENT_NAME                   OWNER
  7 -------------------- ------------------------------ ----------
  8 TABLE                DDL_OPER_LOG                   SCOTT
  9 TABLE                DEPT                           SCOTT
 10 TABLE                DEPT_LOG                       SCOTT
 11 TABLE                EMP                            SCOTT
 12 TABLE                GOODS                          SCOTT
 13 INDEX                PK_DEPT                        SCOTT
 14 INDEX                PK_EMP                         SCOTT
 15 TABLE                SALGRADE                       SCOTT
 16 INDEX                SYS_C0011673                   SCOTT
 17 TABLE                JOBS_TEMP                      HR
 18 INDEX                SYS_C0011441                   HR
 19 
 20 SEGMENT_TYPE         SEGMENT_NAME                   OWNER
 21 -------------------- ------------------------------ ----------
 22 NESTED TABLE         ACTION_TABLE                   OE
 23 INDEX                ACTION_TABLE_MEMBERS           OE
 24 TABLE                CATEGORIES_TAB                 OE
 25 LOBSEGMENT           EXTRADATA886_L                 OE
 26 NESTED TABLE         LINEITEM_TABLE                 OE
 27 INDEX                LINEITEM_TABLE_MEMBERS         OE
 28 LOBSEGMENT           NAMESPACES887_L                OE
 29 NESTED TABLE         PRODUCT_REF_LIST_NESTEDTAB     OE
 30 TABLE                PURCHASEORDER                  OE
 31 NESTED TABLE         SUBCATEGORY_REF_LIST_NESTEDTAB OE
 32 INDEX                SYS_C0011250                   OE
 33 
 34 SEGMENT_TYPE         SEGMENT_NAME                   OWNER
 35 -------------------- ------------------------------ ----------
 36 INDEX                SYS_C0011251                   OE
 37 INDEX                SYS_C0011254                   OE
 38 INDEX                SYS_C0011255                   OE
 39 INDEX                SYS_C0011256                   OE
 40 INDEX                SYS_C0011257                   OE
 41 INDEX                SYS_C0011258                   OE
 42 INDEX                SYS_FK0000076744N00007$        OE
 43 INDEX                SYS_FK0000076744N00009$        OE
 44 LOBINDEX             SYS_IL0000076694C00004$$       OE
 45 LOBINDEX             SYS_IL0000076694C00005$$       OE
 46 LOBINDEX             SYS_IL0000076694C00008$$       OE
 47 
 48 SEGMENT_TYPE         SEGMENT_NAME                   OWNER
 49 -------------------- ------------------------------ ----------
 50 LOBINDEX             SYS_IL0000076694C00012$$       OE
 51 LOBINDEX             SYS_IL0000076694C00017$$       OE
 52 LOBINDEX             SYS_IL0000076694C00026$$       OE
 53 LOBINDEX             SYS_IL0000076694C00033$$       OE
 54 LOBINDEX             SYS_IL0000076695C00004$$       OE
 55 LOBINDEX             SYS_IL0000076699C00005$$       OE
 56 LOBINDEX             SYS_IL0000076699C00010$$       OE
 57 LOBSEGMENT           SYS_LOB0000076695C00004$$      OE
 58 LOBSEGMENT           SYS_LOB0000076699C00005$$      OE
 59 LOBSEGMENT           SYS_LOB0000076699C00010$$      OE
 60 LOBSEGMENT           SYS_XDBPD$881_L                OE
 61 
 62 SEGMENT_TYPE         SEGMENT_NAME                   OWNER
 63 -------------------- ------------------------------ ----------
 64 LOBSEGMENT           SYS_XDBPD$882_L                OE
 65 LOBSEGMENT           SYS_XDBPD$883_L                OE
 66 LOBSEGMENT           SYS_XDBPD$884_L                OE
 67 LOBSEGMENT           SYS_XDBPD$885_L                OE
 68 
 69 48 rows selected.
 70 
 71 SYS@orcl>


   从运行结果可以看出,users表空间存放了scott用户的表和索引,以及OE 用户的大对象索引、索引等数据对象。



  2: sysaux 表空间


        system 表空间主要用于存放Oracle系统内部的数据字典,而sysaux表空间充当system的辅助表空间,主要用于储存数据字典以外的其他数据对象,它在一定程度上降低 了 system表空间的负荷。

示例1:下面通过dba_segments 数据字典来查询sysaux 表空间的相关信息

  1 SYS@orcl>  select owner as "用户",count(segment_name) as "对象数量" from dba_segments where tablespace_name=‘SYSAUXGROUP BY OWNER;
  2 
  3 用户                             对象数量
  4 ------------------------------ ----------
  5 MDSYS                                 572
  6 CTXSYS                                 59
  7 OLAPSYS                               141
  8 SYSTEM                                153
  9 EXFSYS                                 58
 10 APEX_030200                           467
 11 DBSNMP                                 12
 12 ORDSYS                                  7
 13 SYSMAN                                746
 14 XDB                                  1372
 15 ORDDATA                               160
 16 
 17 ????                             ????????
 18 ------------------------------ ----------
 19 SYS                                  1169
 20 WMSYS                                  56
 21 
 22 13 rows selected.
 23 
 24 SYS@orcl>
 25 

技术分享图片


三:创建表空间

    为了简化表空间的管理并提供系统性能,Oracle建议将不同类型的数据对象存放到不同的表空间中。因此,在创建数据库后,数据库管理员还应该根据具体应用的情况,建立不同类型的表空间。例如:建立专门用于存放表数据的表空间、建立专门用于存放索引或簇数的表空间等,因此创建表空间的工作就显示十分重要,在创建表空间时必须考虑以下几点:

  • 是创建小文件表空间,还是大文件表空间(默认为:小文件表空间)
  • 是使用局部盘区管理方式,还是使用传统的目录盘区管理方式(默认为局部盘区管理)
  • 是手动管理段空间,还是自动管理段空间(默认为自动)
  • 是否用于临时段或撤销段的特殊表空间


1:创建表空间的语法

创建表空间的语法如下:

  1 CREATE[SMALLFILE/BIGFILE] TABLESPACE  tablespace_name
  2 DATAFILE ‘/path/filenameSIZE num[k/m] REUSE
  3 [,‘/path/filenameSIZE num[k/m] REUSE]
  4 [...]
  5 [AUTOEXTEN [ON/OFF] NEXT NUM[K/M] ]
  6 [MAXSIZE num[K/M] | UNLIMITED ]
  7 [MININUM EXTENT num[K/M] ]
  8 [DEFAULT   STORAGE storage ]
  9 [ONLINE | OFFLINE ]
 10 [LOGGING | NOLOGGING ]
 11 [PERMANENT | TEMPORARY ]
 12 [ EXTENT  MANAGEMENT DICTIONARY | LOCAL [ AUTOALLOCATE | UNIFORM SIZE num [ K/M ] ]  ]
 13 

语法中关键字

  • SMALLFILE | BIGFILE : 表示创建的是小文件表空间 还是 大文件表空间
  • REUSE:  表示 若该文件存在,则清除该文件再重新建立该文件,若该文件不存在,则创建该文件。
  • AUTOEXEND[ ON | OFF ]:  表示数据文件为自动扩展(ON) 或者 非自动扩展(OFF),如果是自动扩展,则需要设置 next 的值。
  • MAXSIZE:  表示当数据文件自动扩展时,允许数据文件扩展的最大长度字节数,如果指定 UNLIMITED 关键字,则不需要指定字节长度。
  • MINIMUN EXTENT: 指定最小的长度,由操作系统和数据库的块决定
  • ONLINE | OFFLINE: 创建表空间时可以指定为在线或者离线
  • PERMANENT | TEMPORARY :  指定创建的表空间是 永久表空间或临时表空间,默认为永久性表空间。
  • LOGGING | NOLOGGING : 指定该表空间内的表在加载数据时是否产生日志,默认为产生日志(LOGGING)。即使设置为NOLOGGING,但在进行 INSERT、UPDATE 和 DELETE 操作时,Oracle 仍会将操作信息记录到Redo Log Buffer 中。
  • EXTENT MANAGEMENT DICTIONARY | LOCAL:指定表空间的扩展方式是使用数据字典管理还是本地化管理,默认为本地化管理。Oracle不推荐使用数据字典表空间。
  • AUTOALLOCATE | UNIFORM SIZE : 如果采用本地化管理表空间,在表空间扩展时,指定每次盘区扩展的大小是由系统自动指定还是按照等同大小进行。若是按照等同大小进行,则默认每次扩展的大小为1MB.
  • DEFAULT STORAGE: 指定以后要创建的表、索引及簇的储存参数值,这些参数将影响以后表等的储存参数值。

语法中的参数

tablespace_name:该参数表示要创建的表空间的名称

‘/path/filename’:该参数表述数据文件的路径与名字






























———————————————————————————————————————————————————————————————————————————————————

管理表空间和数据文件

标签:oracle   upd   一个数据库   manage   相互   off   xfs   href   永久   

原文地址:https://www.cnblogs.com/ios9/p/8533082.html

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