10G structure

来源:互联网 发布:职人觉醒 知乎 编辑:程序博客网 时间:2024/05/17 07:36

o_instance_thumb   o_instance_thumb

完整的ORACLE数据库包括数据库DB及其专门来管理它的数据库管理系统DBMS两大部分,这两部分分别对应的是存储结构和软件结构。
一、数据库的三级模式、二级映像
数据库通常采用的三级模式结构:外模式、模式、内模式;二级映像:外模式/模式映像、模式/内模式映像。
(一)三级模式
(1)外模式
外模式也被称为用户模式,是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是用户所用的数据库结构。
特点:一个数据库可以有多个外模式,分别对应每个用户;外模式是保证数据库安全性的一个有力措施,每个用户只能看见和访问所对应的外模式中的数据,而看不见其他数据;可以通过授权等方式,是一个用户可以使用另一个用户的外模式;外模式是用外模式描述语言DDL来定义。
(2)模式
模式被称为逻辑模式,是所有应用程序的公共的数据结构。
特点:一个数据库只有一个模式,不同的应用程序可能只使用模式中的一部分;模式是逻辑的,它与具体的应用程序无关或不属于某个应用程序。它描述的是一个数据库的总体结构,是装配数据的一个框架;模式以某种数据模型为基础的,定义模型时不仅要定义数据的逻辑结构,还要定义这些数据项只见的联系,定义与数据项有关的安全性、完整性要求等;模式用模式描述语言DDL来定义。
(3)内模式
内模式也被称为存储模式,是对数据的物理结构和存储方式的描述,是数据在数据库内部的表示方式,是整个数据库底层结构的表示,是数据库在物理存储方面的描述。
特点:一个数据库只有一个内模式;一个数据库由多个文件组成;内模式对用户是透明的,即在用DML操纵数据库时不设计内模式;内模式不用于物理层,它只是一个描述;内模式由内模式描述语言DDL来定义。
在ORACLE数据库中,模式对应于整个数据库中的表、索引、序列等,外模式对应于某个用户的表、索引、序列、视图、同义词等,他们都被称为“方案对象”。内模式对应于存储结构,如逻辑存储结构、物理存储结构。在定义模式的时候往往可以指定它的内模式,如将表创建在哪个表空间、存储管理的参数是什么等。三级模式的定义结果都被放置在SYSTEM表空间中的各个对应的“数据字典”表中。

(二)二级映像
(1)外模式/模式映像
外模式/模式映像是指由模式生成外模式的规则,它定义了各个外模式和模式之间的对应关系。
特点:一个数据库可以有多个外模式/模式映像。对应于一个模式可以有多个外模式,所以对于每一个外模式都有一个外模式/模式映像;给数据库提供了逻辑独立性。逻辑独立性是指应用程序与数据的逻辑结构之间是相互独立的。即当模式发生改变时,只要数据库管理员对相应的外模式/模式映像做相应的修改,就可以使外模式保持不变,从而应用程序不需要改变。
(2)模式/内模式映像
模式/内模式映像是指模式在物理设备中存储结构,定义了模式和内模式之间的对应关系。
特点:一个数据库只有一个模式/内模式映像;给数据库提供了物理独立性。物理独立性是指应用程序与存储在磁盘上的数据库中的数据是相互独立的。即数据在磁盘上的数据库中如何存储完全有DBMS来管理,应用程序不需要了解,它只需要了解数据的逻辑结构就可以了。这样,当数据的存储格式和组织方法改变时,应用程序不需要改变。
数据独立性是由二级映像功能来保证的。数据独立性使数据与应用程序之间相互独立,互不依赖,不因一方的改变而需要改变另一方。
ORACLE数据库中的这些映像被放置在SYSTEM表空间中的各个对应的“数据字典”表中。

ORACLE数据库的存储结构分为逻辑存储结构和物理存储结构。逻辑存储结构与操作系统平台无关;物理存储结构与操作系统平台有关。
从物理上看,数据库是由控制文件、数据文件、重做日志文件、初始化参数文件等组成的;从逻辑上看,数据库是由表空间组成的。表空间是最大的逻辑存储单位,块是最小的逻辑单位,逻辑存储结构中的块对应于操作系统中的块。

一、逻辑存储结构
许多初始化参数都是针对逻辑存储结构来定义的。
逻辑存储结构包括表空间、段、区、块。逻辑存储结构之间的关系是:多个块组成区,多个区组成段、多个段组成表空间、多个表空间组成逻辑数据库。
一个区只能存在一个数据文件中,一个段中的各个区可以分别在多个数据文件中。组成区的块是连续的。
(一)表空间
表空间是最大的逻辑单位,一个数据库由多个表空间组成,一个表空间可以包含多个数据文件,一个数据文件只能属于一个表空间。
ORACLE自动创建的表空间
SYSTEM系统表空间
SYSAUX辅助系统表空间
EXAMPLE实例表空间
TEMP临时表空间
UNDOTBS1重做表空间
USERS用户表空间
(1)SYSTEM表空间
(2)SYSAUX表空间
(3)TEMP表空间
当SYSTEM表空间被创建为一个本地管理的表空间时,TEMP表空间就是必不可少的,否则他是可选的。
SYTEM和SYSAUX表空间值存放系统信息,不存放非系统信息。
(二)段
段用于存储表空间中某一个特定的、具有独立存储结构的的数据库对象的数据,它由一个或多个连续的区组成。
ORACLE中可用的段类型
TABLE表段
TABLE PARTITION表分区段
INDEX索引段
INDEX PARTITION索引分区段
CLUSTER簇段
ROLLBACK回退段
DETERRED ROLLBACK延迟回退段
UNDO撤销段
TEMPORARY临时段
CACHE高速缓存段
LOB二进制大对象段
LOBINDEX二进制大对象索引段

段的增大过程是通过增加区的个数而实现的(每次增加一个区)。每个区的大小是块的整数倍。
(1)表段
表段存储表的所有数据。当用户创建表时,就会在该用户的默认表空间中为该表分配一个与表名相同的表段,以便将来存储该表的所有数据。
(2)表分区段
表分区段用于存储分区表的所有数据。当用户创建分区表时,就会在该用户的默认表空间中为该表的每个分区分配一个表分区段。通过将一个达标的数据分散到不同的表分区段中,就能降低I/O次数,提高性能。
(3)索引段
索引段存储索引的所有数据。当用户用CREATE INDEX语句创建索引,或在定义约束而自动创建索引时,就会在该用户的默认表空间中为该索引分配一个与索引名相同的索引段。
(4)索引分区段
如果为分区表创建分区索引,则会为每个区分区索引分配一个索引分区段,其功能与表分区段相同。
(5)临时段
临时段存储排序所产生的临时数据。临时数据首先会被暂存到排序区(属于PGA区)中,当排序区不足以暂存这些临时数据时,则会在该用户的临时表空间中自动创建一个临时段,用于暂存这些临时数据,排序结束时,临时段会自动消除。
执行以下操作时会产生临时数据:CREATE INDEX,SELECT..ORDER BY,SELECT...GROUP BY,SELECT DISTINCT...,SELECT...UNION,SELECT...INTERSECT,SELECT...MINUS,ANALYZE命令。
在ORACLE中,每个用户都有一个用户分配临时段的临时表空间。临时表空间一般通用,所有的用户的默认临时表空间都是TEMP表空间。也可以创建另外的临时表空间,然后在创建用户时或创建用户之后,指定其临时表空间。
建议使用专用的临时表空间作为用户的临时表空间。
(6)回退段
回退段存储数据修改之前的位置和值。利用这些信息,可以回退未提交的事务,维护数据库的读一致性,并能从例程的崩溃中进行恢复。
回退段的原理与实现是一项十分复杂的技术,已经面临淘汰。自ORACLE 9I来,增加了UNDO(撤销或还原)表空间,并增加了自动撤销管理功能来代替回退段的功能,即用撤销表空间代替回退段,但功能相同。
建议使用自动撤销管理功能中的撤销段,不要使用手动撤销管理的回退功能。
(7)撤销段
撤销表空间用于分配撤销段。撤销段也用于存储数据修改之前的位置和值。
默认的撤销表空间由初始化参数UNDO_TABLESPACE指定的。撤销表空间是循环使用的,已提交的撤销记录可能被覆盖,但可以用初始化参数UNDO_RETENTION指定撤销记录在撤销段中的保留时间。
即使在ORACLE中设置初始化参数UNDO_MANAGEMENT为AUTO,即启动自动撤销管理功能,也会在SYSTEM表空间中保留一个SYSTEM回退段,以便存放和处理由ORACLE系统事务产生的撤销数据。在创建数据库后,运行SQL.BSQ脚本时会自动创建SYSTEM回退段,DBA不需要对它进行任何的维护和管理,也不能删除它。
(8)二进制大对象段
二进制大对象段用于存储LOB数据类型列中的数据,如:文档,图像,音频,视频等。创建表时,可以定义LOB数据类型的列,ORACLE会为此自动分配对应的二进制大对象段。对于LOB列来说,如果数据长度少于40000字节,则与其他列的数据会一起存放在表段中;否则数据就会被存储到二进制大对象段中。

(三)区
区是由物理上连续存放的块构成。由一个或多个区组成段。一个区只能属于一个数据文件。
当在数据库中创建带有实际存储结构的方案对象时,ORACLE将为该方案对象分配若干个区,以便组成一个对应的段,来为该方案对象提供初始的存储空间。当段中已分配的区都写满后,ORACLE就要在该方案对象所在的表空间中为该段分配下一个新的空白区,以便容纳更多的数据。

(四)块
块是最小的数据管理单位。即数据管理中输入输出的最小单位。相应的,操作系统执行输入输出操作的最小单位是操作系统块。
块的大小是操作系统块大小的整数倍。
块带笑傲是一个表空间的属性。SYSTEM和SYSAUX表空间具有相同的标准的块大小,这个大小是在创建数据库时由DB_BLOCK_SIZE初始化参数指定的。在创建数据库之后这个初始化参数值将不能再改变。
在ORACLE 9I前,同一个数据库中的所有表空间必须使用相同大小的块;从ORACLE 9I开始,允许表空间使用各自不同的块大小,这个大小是在创建该表空间时用BLOCK integer [K]子句指定的。如果不适用该子句,则可以使用DB_BLOCK_SIZE初始化参数指定的块大小。在使用非标准块之前,必须先为非标准的块分配相应的数据告诉缓存。

二、物理存储结构
数据库的物理存储文件有:控制文件、数据文件、重做日志文件、密码文件、参数文件和归档重做日志文件等。
逻辑存储结构只有创建、删除的操作;而物理存储结构除了创建、删除之外,还有一个最重要的将其移动到另外一个位置的操作。
(1)控制文件
控制文件是一个很小的二进制文件。在装载数据库时,ORACLE将读取控制文件中的信息,以便判断数据库的状态,获得数据库的物理结构信息及物理文件的使用权。因此,控制文件对于数据库的成功装在,以及其后的打开都是至关重要的。只有控制文件正常才能装载、打开数据库,否则不能。
在数据库运行的过程中,每当出现数据库检查点(checkpoint)或修改数据库结构之后,ORACLE就会修改控制文件的内容。DBA可以通过OEM工具修改控制文件中的部分内容,但是不应该认为的修改控制文件中的内容,否则会破坏控制文件。
应该定期对数据库的控制文件进行备份,并将备份保存在不同的硬盘上;另外,处于安全考虑,可以创建多个控制文件,互为镜像进行复用。

(2)数据文件
数据文件是实际存储插入到数据库表中的实际的操作系统文件。数据文件的大小与它们所存储的数据量的小小直接相关,会自动增大,但删除其中的数据,数据文件的大小不会减少,只能使其有更多的空闲区。
一个表空间在物理上对应于若干个数据文件,而一个数据文件只能属于一个表空间。
在创建表空间时,ORACLE会同时为该表空间创建第一个数据文件。处SYSTEM表空间之外,任何表空间都可以由联机状态切换到脱机状态。当表空间进入脱机状态时,组成该表空间的数据文件也就进入脱机状态了。也可以将表空间中的某一个数据文件单独的设置为脱机状态,以便进行数据库的备份或恢复。正在使用的联机数据文件是不能备份的。

(3)重做日志文件
当用户对数据库进行修改时,ORACLE实际上是在内容中进行修改,过一段时间后,再几种将内存中的修改结果成批的吸入上面的数据文件中。
如果在将内存中的修改结果写入到数据文件之前发生故障,导致计算机或数据库崩溃,那么,这些修改结果就会被遗失。ORACLE是用重做日志文件来随时保存这些修改结果的,即ORACLE随时将内存中的修改结果保存到重做日志文件中。“随时”表示在将数据修改结果写入数据文件之前,可能已经分好几次写入重做日志文件了。因此,即使发生故障导致数据库崩溃,ORACLE也可以利用重做日志文件中的信息来恢复丢失的数据。只要某项操作的重做信息没有丢失,就可以利用这些重做信息来重现该操作。
因为ORACLE是以循环方式来使用重做日志文件的,所以每个数据库至少需要2个以上重做日志文件。当第一个重做日志文件被写满之后,后台进程LGWR开始写入第二个重做日志文件。当第二个重做日志文件写满后,又开始写入第一个重做日志文件。
当循环使用的重做日志文件比较多、比较大时,可以记录的重做日志就比较多。还可以启动自动归档功能,将即将被覆盖的重做日志文件中的内容存储到另外的归档文件总,以便不丢失任何重做日志,得以恢复任何数据。

(4)其他文件
其他文件包括参数文件、口令文件、归档重做日志文件和后台进程跟踪文件等。
参数文件
参数文件也被称为初始化参数文件,用于存储SGA、可选的ORACLE特性和后台进程的配置参数。从ORACLE 9I开始,它有2中类型:文本参数文件PFILE和服务器参数文件SPFILE。这两种参数文件的作用都相同,可以使用其中之一来配置例程和数据库选项。文本参数文件可以使用文本编辑器进行编辑;服务器参数文件是二进制文件,不能直接用文本编辑器进行编辑。
当数据库启动时,并在创建例程或读取控制文件之前,会先读取参数文件,并按期中的参数进行例程的配置。默认使用的是SPFILE。

口令文件
口令文件是个二进制文件,用于验证特权用户。特权用户是指具有SYSOPER或SYSDBA权限的特殊数据库用户。这些用户可以启动例程、关闭例程、创建数据库、执行备份恢复等操作。创建ORACLE数据库,默认的特权用户是SYS。口令文件的默认位置是%ORACLE_HOME%database,命令格式为PWD.ora。

预警文件
预警文件按时间顺序记录了由服务器进程、后台进程写入的消息和错误。查看预警文件就可以查看到是否有ORACLE内部错误、块损坏错误,以及非默认的初始化参数,还可以监视特权用户的操作,监视数据库的物理结构的变化。预警文件的位置由初始化参数background_dump_dest确定。命名格式为_alert.log。

后台进程跟踪文件
后台进程跟踪文件用来记录后台进程的警告或错误消息。每个后台进程都有相应的跟踪文件。后台进程跟踪文件的位置由初始化参数background_dump_dest确定。命名格式为__.trc。

服务器进程跟踪文件
该文件用来记录服务器进行的相关信息,跟踪SQL语句,诊断SQL语句性能,做出相应的性能调整规划。当使用该类型跟踪文件来跟踪SQL语句时,必须先激活SQL跟踪。服务器进程跟踪文件的位置由初始化参数user_dump_dest来确定。命名格式为_ora_.trc。
激活SQL跟踪的办法是在初始化参数文件中,或是在启动会话时,将参数sql_trace设置成TRUE。

归档日志文件
非活动的重做日志文件的备份。通过使用归档日志文件,可以保留所有历史重做记录。只有在归档模式下才会生成归档日志文件。

监听程序日志文件、跟踪文件
记录监听程序的启动时间、正在监听的端口、正在运行在哪台计算机上、已经建立了哪些连接等信息。其默认位置是%ORACLE_HOME%/NETWORK/log,命名格式为listenerX.log,其中listenerX为程序的名称。

ORACLE数据库服务器主要是由两部分组成:物理数据库和数据库管理系统。物理数据库是保存数据的物理存储设备。数据库管理系统是用户与物理数据库之间的一个中间层,是个软件层,这个软件层具有一定的结构。

一、软件结构
ORACLE数据库的软件结构又被称为“例程结构”。在启动数据库时,ORACLE首先要在内存中获取、划分、保留各种用途的区域、运行各种用途的后台进程,即创建一个例程,然后再由该例程加载、打开数据库,最后由这个例程访问和控制数据库的各种物理结构,以便执行用户的SQL语句、调整数据库的性能。
当用户连接到数据库、使用数据库时,实际上是连接到该数据库的例程,通过例程来连接、使用数据库。所以,例程是用户与数据库只见的一个中间层。
例程是由操作系统的内存结构和一系列的进程结构所组成,可以启动和关闭。
一台计算机上可以创建多个ORACLE数据库,当同时要使用这些数据库时,就要创建多个例程。为了不使这些例程相混淆,每个例程都要用称为SID(System IDentify,系统标识符)的符号来区分,即创建这些数据库时填写的数据库SID。
软件结构由内存结构和进程结构组成。

二、内存结构
内存是用来保存指令代码和缓存数据的。ORACLE数据库的内存可以分为SGA(System Global Area,系统全局区)和PGA(Program Global Area,程序全局区)。在这两个区中又划分出更小的区。
(一)SGA(System global area)
SGA区是例程内存结构的主要组成部分。每个例程都只有一个SGA区。当多个用户同时连接到一个例程时,所有的用户进程、服务器进程都可以共同使用SGA区,这是不同用户进程与服务器进程进行通信的中心。数据库的各种操作都要在SGA区中进行,所以被称为系统全局区。

(1)数据告诉缓存

(2)重做日志高速缓存

(3)共享池

(4)大池

(5)JAVA池

(二)PGA(Program global area)

(1)排序区

(2)会话区

(3)游标状态区

(4)堆栈区

(三)进程结构

(1)用户进程

(2)ORACLE进程

服务器进程

后台进程

(3)后台进程

DBWn(DATABASE WRITER,数据库写进程)

LGWR(LOG WRITER,日志写进程)

CKPT(CHECKPOINT,检查点进程)

SMON(SYSTEM MONITOR,系统监视进程)

PMON(PROCESS MONITOR,进程监视进程)

ARCn(ARCHIVE,归档进程)

Dnnn(DISPATCHER,调度进程)

RECO(RECOVER,恢复进程)

LCKn(LOCK,锁进程)

原创粉丝点击