Oracle存储管理详解(一)

2014-11-24 15:51:35 · 作者: · 浏览: 1
Oracle存储管理详解

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

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


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’);