ORACLE数据库学习之逻辑结构(一)

2014-11-24 12:41:51 · 作者: · 浏览: 0

逻辑结构

数据库逻辑结构包含表空间、段、范围(extent)、数据块和模式对象。

(一)表空间

一个数据库划分为一个或多个逻辑单位,该逻辑单位称为表空间类似于sybase下的设备。(TABLESPACE)。一个表空间可将相关的逻辑结构组合在一起。DBA可利用表空间作下列工作:

控制数据库数据的磁盘分配,克服操作系统文件的限制。2G

将确定的空间份额分配给数据库用户。

通过使单个表空间在线或离线,控制数据的可用性。

执行部分数据库后备或恢复操作。

为提高性能,跨越设备分配数据存储。

数据库、表空间和数据文件之间的关系如下图所示:
\

logic physical

Oracleblock

Os block

每个数据库可逻辑划分为一个或多个表空间

。每一个表空间是由一个或多个数据文件组成,该表空间物理地存储表空间中全部逻辑结构的数据。DBA可以建立新的表空间,可为表空间增加数据文件或可删除数据文件,设置或更改缺省的段存储位置。

每一个ORACLE数据库包含有一个名为SYSTEM的表空间,在数据库建立是自动建立。在该表空间中总包含有整个数据库的数据字典表。最小的数据库可只需要SYSTEM表空间。该表空间必须总是在线。表和存储的PL/SQL程序单元(过程、函数、包和触发器)的全部存储数据是存储在SYSTEM表空间中。如果这些PL/SQL对象是为数据库建的,DBA在SYSTEM表空间中需要规划这些对象所需要的空间。

表空间利用增加数据文件或扩展数据文件扩大表空间,表空间的大小为组成该表空间的数据文件大小的和。相关命令。

创建表空间:CREATE TABLESPACE app_data

DATAFILE DISK4/app01.dbf SIZE 100M,

DISK5/app02.dbf SIZE 100M

MINIMUM EXTENT 500K

DEFAULT STORAGE(INITIAL 500K NEXT 500K MAXEXTENTS500 PCTINCREASE 0);

临时表空间 用于排序操作,不能包含永久数据

CREATE TABLESPACE sort

DATAFILE DISK2/sort01.dbf SIZE 50M

MINIMUM EXTENT 1M

DEFAULT STORAGE (INITIAL 2M NEXT 2M MAXEXTENTS500 PCTINCREASE 0)

TEMPORARY;

回滚表空间

用于 保存回滚段不要包含其他永久性数据

CREATE TABLESPACE rbs

DATAFILE DISK2/sort01.dbf SIZE 50M

MINIMUM EXTENT 1M

DEFAULT STORAGE (INITIAL 2M NEXT 2M MAXEXTENTS500 PCTINCREASE 0) ;

向表空间中增加数据文件

ALTER TABLESPACE APP_data

ADD DATAFILE

DISK5/app03.dbf SIZE 200M;

允许数据文件自动扩展

ALTER TABLESPACE app_data

ADD DATAFILE

DISK6/app04.dbf SIZE 200M

AUTOEXTEND ON NEXT 10M

MAXSIZE 500M;

手工改变数据文件的大小

ALTER DATABASE DATAFILE DISK5/app02.dbf RESIZE200M;

改变存储参数

ALTER TABLESPACE app_data

MINIMUM EXTENT 2M;

ALTER TABLESPACE app_data

DEFAULT STORAGE

(INITIAL 2M NEXT 2M

MAXEXTENTS 999);

存储参数

下述参数影响段的空间分配:

INITIAL用字节指定表空间的第一个区间大小

NEXT下一个区间大小

MAXEXTENTS 可增长的最多区间数

MINEXTENTS 首次创建时分配的区间数

PCTINCREASE每次分配新的区间增加的百分比

DBA可以使ORACLE数据库中任何表空间(除SYSTEM表空间外)在线(ONLINE)或离线(OFFLINE)。表空间通常是在线,以致它所包含的数据对数据库用户是可用的。当表空间为离线时,其数据不可使用。在下列情况下,DBA可以使其离线。

使部分数据不可用,而剩余的部分允许正常存取

执行离线的表空间后备

为了修改或维护一应用,使它和它的一组表临时不可用。

包含有正在活动的回滚段的表空间不能被离线,仅当回滚段不正在使用时,该表空间才可离线。

在数据字典中记录表空间的状态,在线还是离线。如果在数据库关闭时一表空间为离线,那么在下次数据库装配和重新打开后,它仍然保持离线。

当出现某些错误时,一个表空间可自动地由在线改变为离线。通过使用多个表空间,将不同类型的数据分开,更方便DBA来管理数据库。

相关命令:

将表空间OFFLINE

ALTERTABLESPACE app_data OFFLINE;

移动数据文件

条件:表空间 APP_DATA必须OFFLINE

目标文件必须存在,数据库处在MOUNT状态

ALTERTABLESPACE app_data RENAME DATAFILE DISK4/app01.dbf TO DISK5/app01.dbf

只读表空间

表空间必须在ONLINE状态

表空间中不含活动的 事物.

表空间中不含活动的 回滚段

表空间中不在作在线备份

ALTERTABLESPACE app_data READ ONLY;

删除表空间

DROPTABLESPACE app_data

INCLUDINGCONTENTS;不删除物理文件

获取数据文件有关的信息

DBA_DATA_FILES
FILE_NAME

TABLESPACE_NAME

BYTES

AUTOEXTENSIBLE

MAXBYTES

INCREMENT_BY

获取表空间有关的信息

DBA_TABLESPACES

TABLESPACE_NAME

NEXT_EXTENT

MAX_EXTENTS

PCT_INCREASE

MIN_EXTLEN

STATUS

CONTENTS

小结:ORACLE数据库中一表空间是由一个或多个物理数据文件组成,一个数据文件只可与一个表空间想联系。当为一表空间建立一数据文件时,ORACLE建立该文件,分配指定的磁盘空间容量。在数据文件初时建立后,所分配的磁盘不包含任何数据。表空间可以在线或离线。在ORACLE中还允许单独数据文件在线或离线。一般原则:使用多个表空间;为表空间指定存储参数;给用户指定表空间限额

(二)段、范围和数据块

ORACLE通过段、范围和数据块逻辑数据结构可更细地控制磁盘空间的使用。

段(SEGMENT)包含表空间中一种指定类型的逻辑存储结构,是由一组范围组成。根据访问频率、内容对象和生命周期在ORACLE数据库中有几种类型的段:数据段、索引段、回滚段和临时段。

数据段:对于每一个非聚集的表有一数据段,表的所有数据存放在该段。每一聚集有一个数据段,聚集中每一个表的数据存储在该段中。

索引段:每一个索引有一索引段,存储索引数据。

回滚段:保存数据修改前的映象,这些信息用于生成读一致性数据库信息、在数据库恢复时使用、回滚未提交的事务。Rollback时用得着。一个事务只能使用一个回滚段