Oracle体系结构

发布 2021-05-02 13:30:28 阅读 8797

oracle体系结构由内存结构、进程结构、存储结构组成。其中,内存结构由sga、pga组成;进程结构由用户进程和oracle进程组成;存储结构由逻辑存储、物理存储组成。

如上图,数据库处理过程可以简单的描述为:

1,用户在其机器上运行基于oracle的应用程序(如:sql*plus、pl/sql developer等),即启动用户进程。

2,客户机、服务器之间建立连接(connect)。

3,服务器为用户建立会话(session),并为该会话建立一个pga(program global area,程序全局区)以存储与该会话相关的信息。在同一个连接中,不同的用户有不同的会话。

4,启动服务进程,由该服务进程负责执行该会话的各项任务。

5,用户进程发送sql语句(select、update、commit…。)

6,服务器进程解析、编译、执行sql语句,然后将结果写入数据库并返回结果给用户进程。

7,用户进程接收返回的sql执行结果。

8,在应用程序中显示sql执行结果。

总体结构分为三个部分,如下图。

其中:内存结构:包括sga和pga。使用内存最多的是sga,同时也是影响数据库性能的最大参数。

进程结构:包括前台进程、后台进程。前台进程是指服务进程和用户进程。

前台进程是根据实际需要而运行的,并在需要结束后立刻结束。后台进程是指在oracle数据库启动后,自动启动的几个操作系统进程。

存储结构:包括控制文件、数据结构、日志文件等操作系统文件。

oracle数据库的存储结构分为逻辑存储结构和物理存储结构,这两种存储结构既相互独立又相互联系。

逻辑存储结构主要描述oracle数据库的内部存储结构,即从技术概念上描述在oracle数据库种如何组织、管理数据。因此,逻辑存储结构是和操作系统平台无关的,是由oracle数据库创建和管理的。

物理存储结构主要描述oracle数据库的外部存储结构,即在操作系统种如何组织、管理数据。因此,物理存储结构是和操作系统平台有关的。

注意:必须对这两种存储结构有清晰的理解,并且要清楚在一个具体数据库应用系统中,这两种存储结构的具体对应关系,否则就不能进行正常的管理操作、数据库备份与恢复、性能优化等。

两种存储结构之间的关系,如下图:

从物理上看,数据库由控制文件、数据文件、重做日志文件等操作系统文件组成;

从逻辑上来看,数据库是由系统表空间、用户表空间等组成。

表空间是最大的逻辑单位,块是最小的逻辑单位。

逻辑存储结构中的块最后对应到操作系统中的块。

oracle的逻辑存储结构是由一个或多个表空间组成。

一个表空间(tablespace)由一组段组成。

一个段(segment)由一组区组成。

一个区(extent)由一批数据库块组成。

一个数据库块(block)对应一个或多个物理块。

逻辑结构示意图如下:

1)数据库块(database block)

块是数据库使用的i/o最小单元,又称逻辑块或oracle块。

一个数据库块对应一个或多个物理块,块的大小由参数db_block_size确定。

块的大小是操作系统块大小的整数倍。以win2k为例,操作系统块(os block)的大小为4kb,所以oracle block的大小可以是4kb,8kb,16kb等等。如果块的大小为4kb,某表每行的数据是100 bytes。

,如果某查询语句只返回1行数据,那么,在将数据读入到数据高速缓存时,读取的数据量时4kb而不是100 bytes。

数据块的结构包括块头和存储区两个部分。

第一部分:块头。

标题:包括通用的块信息,如块地址/段类型等,最佳大小为85-100bytes。

表目录:存储聚集中表的信息,这些信息用于聚集段。

行目录:包括这块中的有效行信息,允许使用每行开头的2bytes。

第二部分:存储区。

空闲区:这块中能插入或修改的一组空间。

行数据区:存储表或索引的数据。

控制块的几个参数:它们是互相消涨的。

pctfree(自由百分比) 20%左右用于行的update操作,在遇到pctfree后,这块被填满且不能进行insert操作。

pctused(占用百分比) 40%左右用于行的insert的操作,当块的百分比小于pctused时,可通过行delete或update来减少列存储。

inittrans 在单一块中最初活动的交易事务数。

maxtrans 在单一块中最大交易事务数。

2)区(extent)

区是数据库存储空间分配的逻辑单位,一个区由一组数据库块组成,区是由段分配的,分配的第一个区称初始区,以后分配的区称增量区。

决定extent的参数:

initial 最初分配的空间数(缺省为10k,5个数据块)

next 下一步分配的空间数。

maxextents 最大分配的extent数。

minextents 最小分配的extnet数,所有重做日志回滚段的存储结构,必须成对地分配extent

pctincrease 增长率,指数级增长,optimal 尽量设小,或为0(缺省为空,仅用于回滚段)

freelist

3)段(segment)

段是表空间中一个指定类型的逻辑存储结构,它由一个或多个区组成,段将占用并增长存储空间。

数据(表)段(data segment)存储表中的所有数据。

索引段(index segment):存储表上最佳查询的所有索引数据。

临时段(temporary segment)存储表排序操作期间建立的临时表的数据。

回滚段(rollback segment)存储修改之前的位置和值。

4)表空间(tablespace)

表空间是最大的逻辑单位,对应一个或多个数据文件,表空间的大小是它所对应的数据文件大小的总和。

数据库、表空间、数据文件、数据库对象之间的关系,如下图:

表空间(tablespace)是数据库的逻辑划分, 每个数据库至少有一个表空间,叫做系统表空间(system 表空间)。 一个表空间只能属于一个数据库。

每个表空间由同一个磁盘上的一个或多个文件组成, 这些文件称为数据文件。 表空间的特性:

控制数据库数据磁盘分配。

限制用户在表空间中可以使用的磁盘空间大小。

表空间具有 online, offline, readonly, readwrite属性。

--修改表空间的属性:

sql> alter tablespace 表空间名称属性;

--查询表空间状态:

sql> select tablespace_name, status from dba_tablespaces;

注意: system, undo, temp表空间不能设为offline属性。

完成部分数据库的备份与恢复。

表空间通过数据文件来扩大, 表空间的大小等于构成该表空间的所以数据文件的大小只和。

--查询表空间与数据文件对应关系:

sql> select tablespace_name, bytes, file_name from dba_data_files;

基于表空间的几个操作:

--查询用户缺省表空间:

sql> select username, default_tablespace from dba_users;

--查询表与存储该表的表空间:

sql> select table_name, tablespace_name from user_tables;

--修改用户缺省表空间:

sql> alter user username default tablespace tablespace_name;

--将数据从一个表空间移动到另一个表空间:

sql> alter table table_name move tablespace tablespace_name;

oracle 10g自动创建的表空间有:

example(实例表空间)

sysaux(辅助系统表空间)用于减少系统负荷,提高系统的作业效率。

system(系统表空间)存放关于表空间的名称、控制文件、数据文件等管理信息,是最重要的表空间。它属于sys、system两个schema(方案),仅被这两个或其他具有足够权限的用户使用。但是均不可删除或者重命名system表空间。

temp(临时表空间) 临时表空间存放临时表和临时数据,用于排序。

undotbs(重做表空间)

users(用户的表空间) 用户表空间,永久存放用户对象和私有信息,也被成为数据表空间。

一般地:系统用户使用system表空间,非系统用户使用users表空间。

由控制文件来管理数据文件和日志文件。参数文件来寻找控制文件。

1)控制文件(control file)

控制文件是一个较小的二进制文件,用于描述数据库结构。

描述信息如下:

数据库建立的日期。

数据库名。数据库中所有数据文件和日志文件的文件名及路径。

恢复数据库时所需的同步信息。

要点注意:在打开和存取数据库时都要访问该文件。

镜像控制文件。

记录控制文件名及路径的参数为:control_files

可以用sql语句查看系统视图,如desc v$controlfile。

查看控制文件的名称和状态:select status,name from v$controlfile;

显示如下:e:\oracle\product\10.2.0\oradata\orcl\

e:\oracle\product\10.2.0\oradata\orcl\

e:\oracle\product\10.2.0\oradata\orcl\

2)数据文件(data file)

Oracle体系结构

课后测试。单选题。1.哪个不是数据库的物理组件 a表空间 b物理文件 c控制文件 d日志文件 正确答案 a 2.最小的数据库逻辑结构是什么?a操作系统块 b数据库块 c表空间 d表 e区 正确答案 b 3.在数据库启动的mount阶段,可以进行什么操作 a查询用户scott下的表 b建立表空间 c创...

Oracle体系结构

簇 cluster 经常被频繁引用的表可以在物理位置上被存储在一起,簇就是用来管理这种集中存储的。集中存储可以减少i o次数,以达到性能的改善和提高。散列簇 hash cluster 簇的另一种形式,这种簇中的数据要通过散列函数计算得出物理位置,它可以极大程度的提高等值查询的效率。视图 view 可...

oracle体系结构

meta data 描述 说明 数据的数据。ctl 文件描述了 记录了 dbf 文件和log文件的位置,大小,一致性,checkpoint等信息。参数文件 oracle instance启动时,实例的参数由参数文件决定。d oracle product 10.2.0 db 1 dbs 密码文件 d ...