数据库的物理结构和逻辑结构


 

    首先,你需要明白的一点是:数据库的物理结构是由数据库的操作系统文件所决定,每一个Oracle数据库是由三种类型的文件组成:数据文件、日志文件和控制文件。数据库的文件为数据库信息提供真正的物理存储。     每一个Oracle数据库有一个或多个物理的数据文件(data file)。一个数据库的数据文件包含全部数据库数据。逻辑数据库结构(如表、索引等)的数据物理地存储在数据库的数据文件中。数据文件通常为*.dbf格式,例如:userCIMS.dbf。数据文件有下列特征:①、一个数据文件仅与一个数据库联系;②、一旦建立,数据文件只增不减;③、一个表空间(数据库存储的逻辑单位)由一个或多个数据文件组成。     其次,我们再来叙述一下Oracle的逻辑结构:Oracle的逻辑结构包括表空间(tablespace),段(segment),数据块(data block)以及模式对象(schema object)。     Oracle数据库在逻辑上是由多个表空间组成的,表空间在物理上包含一个或多个数据文件。而数据文件大小是块大小的整数倍;表空间中存储的对象叫段,比如数据段,索引段和回退段。段由区组成,区是磁盘分配的最小单位。段的增大是通过增加区的个数来实现的。每个区的大小是数据块大小的整数倍,区的大小可以不相同;数据块是数据库中的最小的I/O单位,同时也是内存数据缓冲区的单位,及数据文件存储空间单位。块的大小由参数DB_BLOCK_SIZE设置,其值应设置为操作系统块大小的整数倍。    ⑴、表空间(tablespace)    表空间是数据库中最大的逻辑单位,每一个表空间由一个或多个数据文件组成,一个数据文件只能与一个表空间相联系。每一个数据库都有一个SYSTEM表空间,该表空间是在数据库创建或数据库安装时自动创建的,用于存储系统的数据字典表,程序系统单元,过程函数,包和触发器等,也可用于存储用户数据表,索引对象。表空间具有在线(online)和离线(offline)属性,可以将除SYSTME以外的其他任何表空间置为离线。    ⑵、段(segment)    数据库的段可以分为四类:数据段、索引段、回退段和临时段。    ⑶、区    区是磁盘空间分配的最小单位。磁盘按区划分,每次至少分配一个区。区存储与段中,它由连续的数据块组成。    ⑷、数据块    数据块是数据库中最小的数据组织单位与管理单位,是数据文件磁盘存储空间单位,也是数据库I/O的最小单位,数据块大小由DB_BLOCK_SIZE参数决定,不同的Oracle版本DB_BLOCK_SIZE的默认值是不同的。    ⑸、模式对象    模式对象是一种应用,包括:表、聚簇、视图、索引序列生成器、同义词、哈希、程序单元、数据库链等。     最后,在来说一下Oracle的用户、表空间和数据文件的关系:    一个用户可以使用一个或多个表空间,一个表空间也可以供多个用户使用。用户和表空间没有隶属关系,表空间是一个用来管理数据存储的逻辑概念,表空间只是和数据文件发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。    

总结一下:解释数据库、表空间、数据文件、表、数据的最好办法就是想象一个装满东西的柜子。数据库其实就是柜子,柜中的抽屉是表空间,抽屉中的文件夹是数据文件,文件夹中的纸是表,写在纸上的信息就是数据。

 

 

oracle物理结构和逻辑结构物理结构查看oracle数据库的物理文件路径一定要用命令查看,除非该数据库是你亲自安装,并做过所有的安全配置,否则非常有可能你的前任对数据库进行了更改,而在一不小心酿成大错。
    查看控制文件DESC v$controlfile查看控制文件的状态和名称(显示路径)SELECT status,name FROM v$controlfile;
    查看数据文件DESC v$datafile比如查看数据文件的文件号和状态SELECT file#,status,name FROM v$datafile;
    看日志文件DESC v$logfile查看日志文件路径信息SELECT member FROM v$logfile;
    Oracle的文件系统:控制文件(.CTL),数据文件(.DBF),日志文件(.LOG)
    这三种文件系统一般在以下路径可以找到:(默认安装路径)/u01/app/oracle/oradata/oracleSID
    除此三种文件还有一种参数文件,参数文件不是数据库系统中的有效组成部分,在启动数据库时,参数文件不直接参与工作,只是控制文件是由参数文件寻找的。参数文件位置:/u01/app/oracle/product/10.2.0/db_1/dbs/spfileorac leSID.ora控制文件的内容会显示在参数文件中。参数文件的作用起到寻找控制文件的作用。
    Oracle中有两种日志文件,一种为联机日志文件(重做日志文件),一种为归档日志文件。REDO01.LOG和REDO02.LOG,REDO03.LOG是典型的联机日志文件,特点是顺序写文件,写满后写下一个,写满第三个循环写第一个,并且覆盖掉不做备份。归档日志文件,在热备份的时候要选择的一种归档方式。
    由控制文件控制数据文件和日志文件。数据库启动时启动对应实例后,首先启动控制文件,在由控制文件打开数据文件。现象是:数据库装载:Database Mount,然后打开数据库:Database Open。其实就是先打开控制文件,在打开数据文件。
    物理结构下,这些路径是可以随意迁移的,可以存放在任何存储下,包括裸设备。
    逻辑结构数据库的逻辑结构相对于物理结构要复杂很多。学逻辑结构,非一日之功,我仅学到相关的大概。以后有时间继续深入学习。数据库存储空间由一个或多个表空间构成。(如system、sysaux.)1、表空间(tablespace)组织数据库空间的逻辑结构,其对物理结构是数据文件,一个表空间物理上由一个或多个数据文件组成,逻辑上由一个或多个数据段组成。2、数据段(segment)逻辑对象所占用空间,如表段,索引段,回滚段等,段存在于表空间中,并对应一定的存储空间。数据段又划分为一个或多个区间。3、区(extent)区间是用于为数据一次性预留的一个逻辑上连续的一组disk空间(默认8块),每个区间占用一定数量的数据块。区不能跨数据文件。4、块(block)数据库最小的存储单位(默认8k),是所有逻辑结构的基本分配单元。以上时逻辑结构的基本结构
    1.表空间概述表空间功能·组织数据段空间,控制存储空间的分配·通过使单个表空间在线或离线,控制数据的可用性·通过表空间划分实现跨越设备分配数据存储,以提高性能·通过指定用户使用指定表空间实现对用户的限制·执行部分数据的后备和恢复操作表空间特点·数据中的最大逻辑单位·一个数据库逻辑上至少由一个系统表空间构成·一个表空间物理上至少由一个数据文件构成·一个表空间至少包括一个段(控制信息)·表空间的大小等于所有从属于它的数据文件大小的总和查询表空间使用状况SQL select*from dba_tablespaces;查询数据库中所有表空间信息SQL select*from dba_data_files;查询表空间所含数据文件信息,不含临时表空间SQL select*from dba_temp_files;专查临时表空间所含数据文件SQL select tablespace_name,sum(bytes)from dba_data_files group by tablespace_name;查询表空间大小SQL select tablespace_name,sum(bytes)from dba_free_space group by tablespace_name;查询表空间空闲空间大小
    创建表空间SQL create tablespace test datafile’/u01/a.dat’size 5m;更改表空间SQL alter tablespace test add datafile’/u01/b.dat’size 6m;查询表空间SQL select tablespace_name,sum(bytes)from dba_data_files group by tablespace_name;表空间更名SQL alter tablespace test rename to fff;表空间脱机SQL alter tablespace test offline;表空间联机SQL alter tablespace test online;设置表空间只读SQL alter tablespace test read only;设置表空间可读写SQL alter tablespace test read write;扩展表空间SQL alter tablespace test add datafile’/u01/c.dat’size 500M;增加数据文件个数以扩充表空间(数据文件大约5~20个)SQL alter database datafile’/u01/a.dat’resize 80M;扩充数据文件大小扩充表空间SQL alter database datafile’/u01/a.dat’autoextend on maxsize 100M;设置自动扩充参数以自动扩充表空间删除表空间SQL drop tablespace test including contents and datafiles;删除表空间和数据文件
    表空间分类表空间主要分为系统表空间(system、sysaux),数据表空间(user),回滚表空间(undotbs),临时表空间(temp)。1、系统表空间每个数据库都必须具备一个system表空间,该表空间是在数据库创建或数据库安装时自动创建的,名称不能更改,任何时候均必须保持online状态,用于存储系统的数据字典表,程序系统单元,过程函数,包和触发器等,也可用于存储用户数据表,索引对象。为避免系统表空间产生磁场碎片以及争用系统资源的问题,应单独创建至少一个独立的表空间用来单独抽出用户数据。sysaux表空间也随数据库的创建而创建,是system表空间的辅助表空间,主要存储存放支持oracle系统活动的多种工具如logminer等,sysaux降低了system表空间的负荷。2、数据和索引表空间由用户在数据建立完毕自行创建,是数据库空间的最主要组成部分,数据表空间应该建立多个,建立不同用户及性质的数据库对象时应指定其存放在指定的数据表空间中,索引表空间也应建立多个,并分类将不同对象的索引按大小及访问频度分别指定存放到指定的数据表空间中。通常情况下,数据和索引表空间应建立适当多个,太少则单个表空间过大,数据不安全且回复费时,太小则难管理。数据库创建时默认创建users表空间,包含一个数据文件user01.dbf,新建用户的未指定存储表空间时默认使用该表空间。3、回滚表空间undo数据又称回滚(rollback)数据,用户确保数据的一致性,当执行DML操作时,事务操作前的数据被称undo记录,undo表空间用于保存undo记录。undo表空间用户保存undo记录,是数据库空间的最关键的组成部分,其对数据库的运行影响很大。数据库创建时默认建立一个回滚段表空间undotbs1,包含一个数据文件undotbs01.dbs。SQL show parameter undo;
    4、临时表空间临时表空间(temp tablespace)主要用于存储oracle数据库运行期间所产生的历史数据,及用于进行排序。数据库关闭后,临时表空间中所有数据将全部被清除,故临时表空间外地其他所有表空间都属于永久性表空间数据库创建时默认建立一临时表空间temp。包含一数据文件temp01.dbf,对于大型操作频繁的环境,应建立多个临时表空间,并分别归属不同临时表空间,以避免多用户及多任务竞争该临时表空间查看系统默认临时表空间及对应数据文件SQL select tablespace_name from dba_tablespaces;SQL select*from dba_temp_files;

posted @ 2016-11-18 15:27  捉老鹰的小鸡鸡  阅读(6640)  评论(0编辑  收藏  举报