存储管理

        从逻辑上讲,数据存储在段(通常是表)中;从物理上讲,数据存储在数据文件(datafile)中。表空间(tablespace)实体是二者的桥梁,一个表空间可能包含多个段,并由多个数据文件组成。段和数据文件没有直接关系。数据文件可以作为文件系统中的文件存在,从10 g版本开始,也可以作为自动存储管理(Automatic Storage  Management,ASM)设备上的文件存在。


一、Oracle数据存储模型


        将逻辑存储与物理存储分开是关系数据库范例的必要部分。关系数据库范例表明:编程人员只处理逻辑结构,而让数据库去管理到物理结构的映射。这意味着,可以重新组织物理存储,也可以将整个数据库移动到完全不同的硬件和操作系统上,而应用程序意识不到任何更改。

  如下图展示Oracle存储模型,逻辑结构在左,物理结构在右。

                                                        


1、Oracle数据库逻辑结构

 (1)DATABASE:一个数据库可划分为多个称为表空间的逻辑存储单元。


 (2)TABLESPACE:只能属一个数据库,包括一个或多个文件。


 (3)SEGMENT:存在于表空间中,包含一个或多个区。

     包括:表段、表分区段、索引段、索引分区段、临时段、撤销段、BLOB、CLOB

      高水位

    PCTFREE和PCTUSED

      行迁移和行链接

      INITRANS和MAXTRANS


 (4)EXTENT:由相邻的数据块的组成,这意味着每个区只能存在于一个数据文件中。


 (5)BLOCK:是数据库中最小的I/O单元,db_block_size

  


2、Oracle数据库物理结构      

 (1)、OS文件

      A、仅属于一个表空间

      B、是构成表空间的基础文件


 (2)、OS块

      A、tune2fs -l /dev/sda1

      B、扇区:512字节 操作系统一次IO的大小

 

3、表空间、表、区、块及文件号的关系由视图dba_extents展显出来

gyj@OCM> create tablespace tp1 datafile'/u01/app/oracle/oradata/ocm/tp1.dbf' size 100M,'/u01/app/oracle/oradata/ocm/tp2.dbf' size 100M EXTENT MANAGEMENT LOCAL UNIFORMSIZE  1M;

gyj@OCM> alter user gyj defaulttablespace tp1;

gyj@OCM> conn gyj/gyj

gyj@OCM> create table t10 (id int,namevarchar2(100));

gyj@OCM> begin

 2   for i in 1 .. 200000 loop

 3   insert into t10values(i,'gyj'||i);

 4   commit;

 5   end loop;

 6   end;

 7   /

gyj@OCM> col tablespace_name for a10

gyj@OCM> col segment_name for a10

gyj@OCM> selecttablespace_name,segment_name,extent_id,file_id,block_id,bytes,blocks fromdba_extents where segment_name='T10' order by extent_id;

 

TABLESPACE SEGMENT_NA  EXTENT_ID   FILE_ID   BLOCK_ID      BYTES    BLOCKS

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

TP1       T10                 0          6        128   1048576        128

TP1       T10                 1          7        128   1048576        128

TP1       T10                 2          6        256   1048576        128

TP1       T10                 3          7        256   1048576        128

TP1       T10                 4          6       384    1048576        128

 

二、表空间类型

1、普通表空间:系统表空间与非系统表空间


2、临时表空间


3、回滚表空间

 

三、创建空间

 CREATE TABLESPACE TP25 DATAFILE'/u01/app/oracle/oradata/ocp/tp2501.dbf' SIZE 50M,

 '/u01/app/oracle/oradata/ocp/tp2502.dbf' size50M

 AUTOEXTEND ON next 10M MAXSIZE 2G,

 '/u01/app/oracle/oradata/ocp/tp2503.dbf' size50M

--EXTENT MANAGEMENT DICTIONARY

 AUTOEXTEND ON next 10M MAXSIZE 2G

 EXTENT MANAGEMENT LOCAL UNIFORM SIZE  2M

 SEGMENT SPACE MANAGEMENT AUTO;

 

CREATE TABLESPACE TP21 DATAFILE'/u01/app/oracle/oradata/ocp/tp2501.dbf' SIZE 50M

EXTENT MANAGEMENT DICTIONARY;

 

create tablespace tp22 datafile'/u01/app/oracle/oradata/ocp/tp22_1.dbf' size10M,'/u01/app/oracle/oradata/ocp/tp22_2.dbf' size 10M EXTENT MANAGEMENT LOCAL;

 

四、删除表空间

1.删除没有对象的表空间

 drop tablespace tp1;


2、删除有对象的表空间,但不删除物理文件

 drop tablespace tp1 including contents;


3、删除有对象的表空间和删除物理文件

 drop tablespace tp20 including contents and datafiles cascadeconstraints;

 

五、管理表空间中的空间

1、区管理方式(8i的默认空间管理是DMT,9I的默认空间管理是LMT)

  (1)数据字典管理

   SYS.UET$    ――具有描述已用的区的行

      SYS.FET$    ――具有描述可用区的行


  (2)本地管理

       a.统一

   b.自动

    alter system dump datafile 5 block 2;

        alter system dump datafile 5 block 3;


     (3)本地管理表空间的优势

       a.不需要执行递归空间管理操作

       b.不记录数据字典表中的的空闲空间,可以减少争用

       c.可自动跟踪相邻的空闲空间无需合并空闲空间

       d.系统自动确定本地管理区的大小

       e.对区位图进行更改不会生成还原信息,国为这些更改并不更新数据字典中的表(表空间限额信息等特殊情况除外)

 

  (4)可以使用下面的PL/SQL程序,将任何字典管理的表空间转换成为本地管理:

     Executedbms_space_admin.tablespace_migrage_to_local(‘tablespacename’);

 

2、段管理方式

    (1)SSM:自动管理方式(BMB段:BitmapManagedSegments),使用位图管理段中的数据块空闲空间,大并发量。


   (2)MSSM:手工管理方式(FreeList),使用空闲列表来管理段中的数据块空闲空间,串行操作容易引起段头的争用。

     --dump段头信息


 (3)OMF(OracleManaged Files)管理

   ①设置参数

    DB_CREATE_FILE_DEST

    DB_CREATE_ONLINE_LOG_DEST_n

    DB_RECOVERY_FILE_DEST

   ②创建表空间

   ALTERSYSTEM SET DB_CREATE_FILE_DEST = '/u01/oradata';

    CREATETABLESPACE tbs_1;

 

六、临时表空间

1、数据库默认的临时表空间

sys@OCM> select * fromdatabase_properties where property_name='DEFAULT_TEMP_TABLESPACE';

sys@OCM> alter databasedefault temporary tablespace temp1;

 

2、创建临时表空间或临时表空间组

(1)创建临时表空间

 CREATE TEMPORARY TABLESPACE temp1 TEMPFILE'/u01/app/oracle/oradata/ocp/temp1.dbf' SIZE 10m;

 

(2)创建临时表空间组

 CREATE TEMPORARY TABLESPACE temp1 TEMPFILE'/u01/app/oracle/oradata/ocp/temp1.dbf' SIZE 10M TABLESPACE GROUP group1;

   CREATE TEMPORARY TABLESPACE temp2 TEMPFILE'/u01/app/oracle/oradata/ocp/temp2.dbf' SIZE 10M TABLESPACE GROUP group1;

 

3、收缩临时表空间和临时文件

(1)方法一收缩临时表空间

  gyj@OCM>  alter tablespace TEMP shrink space keep 10M;

 

 Tablespace altered.

 

(2)方法三收缩临时表空间的某个文件

 sys@OCM>alter tablespace temp shrink tempfile'/u01/app/oracle/oradata/ocm/temp01.dbf' keep 10M;

 

Tablespace altered.

 

(3)方法三重新定义临时文件的大小

   gyj@OCM> alter database tempfile'/u01/app/oracle/oradata/ocm/temp01.dbf' resize 100M;

 

Database altered. 

 

3、删除临时表空间

(1)查临时表空间

sys@OCM> selecttablespace_name,file_name,bytes/1024/1024 file_size,autoextensible fromdba_temp_files;

 

TABLESPACE_NAME                FILE_NAME                                          FILE_SIZE AUT

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

TEMP                     /u01/app/oracle/oradata/ocm/temp01.dbf             10.9921875 YES

 

(2)彻底删除临时表空间 

sys@OCM> drop tablespace temp includingcontents and datafiles cascade constraints;

 

(3)删除临时表空间某个文件

sys@OCM>alter database tempfile'/u01/app/oracle/oradata/orcl/temp02.dbf' drop;-

 

七、监控表空间

gyj@OCM> set line 200 pagesize 9999

gyj@OCM> select b.tablespace_name,round(sum(b.bytes)/1024/1024,0) sum_MB,round(sum(nvl(a.bytes,0))/1024/1024,0)

 2    free_MB,round((sum(b.bytes)-sum(nvl(a.bytes,0)))/sum(b.bytes),4)*100use_precent

 3   from (selecttablespace_name,file_id,sum(bytes) bytes from dba_free_space group bytablespace_name,file_id ) a,dba_data_files b

 4  where a.file_id(+)=b.file_idand a.tablespace_name(+)=b.tablespace_name

 5  group by b.tablespace_name;

order by use_precent;

 

TABLESPACE     SUM_MB   FREE_MB  USE_PRECENT

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

TP1               200        193         3.5

UNDOTBS1         145         18       87.84

SYSAUX            520         29       94.45

USERS               5          1       81.25

SYSTEM            680          4       99.39

EXAMPLE           100         21       78.75

 

八、扩大数据库的方式

 1、创建新表空间


 2、在表空间添加文件

 sys@OCM> alter tablespace tp1 add datafile'/u01/app/oracle/oradata/ocm/tp3.dbf' size 10M;

 

 Tablespace altered

 

  3、增加文件大小

  sys@OCM> alter database datafile'/u01/app/oracle/oradata/ocm/tp3.dbf' resize 20M;

 

  Database altered.

 

   4、动态扩展数据文件

  (1)查数据文件的自动扩展

  sys@OCM> col file_name for a50;

  sys@OCM> select file_name,autoextensiblefrom dba_data_files;

 

  FILE_NAME                                          AUT

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

  /u01/app/oracle/oradata/ocm/users01.dbf            YES

  /u01/app/oracle/oradata/ocm/undotbs01.dbf          YES

  /u01/app/oracle/oradata/ocm/sysaux01.dbf           YES

  /u01/app/oracle/oradata/ocm/system01.dbf           YES

  /u01/app/oracle/oradata/ocm/example01.dbf          YES

  /u01/app/oracle/oradata/ocm/tp1.dbf                NO

  /u01/app/oracle/oradata/ocm/tp2.dbf                NO

  /u01/app/oracle/oradata/ocm/tp3.dbf                NO

 

  (2)把tp3.dbf文件改成自动扩展

   sys@OCM> alter database datafile'/u01/app/oracle/oradata/ocm/tp3.dbf'autoextend on next 2M maxsize 2048M;

 

   Database altered.

 

  (3)再次确认tp3.dbf文件是否自动扩展

   sys@OCM> select file_name,autoextensiblefrom dba_data_files;

 

   FILE_NAME                                          AUT

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

   /u01/app/oracle/oradata/ocm/users01.dbf            YES

   /u01/app/oracle/oradata/ocm/undotbs01.dbf          YES

   /u01/app/oracle/oradata/ocm/sysaux01.dbf           YES

   /u01/app/oracle/oradata/ocm/system01.dbf           YES

   /u01/app/oracle/oradata/ocm/example01.dbf          YES

   /u01/app/oracle/oradata/ocm/tp1.dbf                NO

   /u01/app/oracle/oradata/ocm/tp2.dbf                NO

   /u01/app/oracle/oradata/ocm/tp3.dbf                YES

 



**********本博客所有内容均为原创,如有转载请注明作者和出处!!!**********
Name:    guoyJoe

QQ:        252803295

Email:    oracledba_cn@hotmail.com

Blog:      http://blog.csdn.net/guoyJoe

ITPUB:   http://www.itpub.net/space-uid-28460966.html

OCM:     http://education.oracle.com/education/otn/YGuo.HTM
 _____________________________________________________________
加群验证问题:哪些SGA结构是必需的,哪些是可选的?否则拒绝申请!!!

答案在:http://blog.csdn.net/guoyjoe/article/details/8624392

Oracle@Paradise  总群:127149411

Oracle@Paradise No.1群:177089463(已满)

Oracle@Paradise No.2群:121341761

Oracle@Paradise No.3群:140856036


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值