搜档网
当前位置:搜档网 › Oracle物理结构概述

Oracle物理结构概述

Oracle物理结构概述
Oracle物理结构概述

Oracle物理结构概述

IT猫扑技术2010-01-10 13:54来源:https://www.sodocs.net/doc/248155152.html,作者:编辑整理点击:194次数据文件

每一个Oracle数据库都有一个或多个物理的数据文件,数据库信息(结构,数据)都保存在这些数据文件中,并且这些文件也只Oracle才能够解释与管理这些存储.Oracle数据文件具有以下一些特性:

1.一个数据文件仅仅关联一个数据库,数据文件与数据库之间对应关系是一对一关系,当然反过数据库与数据文件是一对多关系.

2.数据文件可以自动扩展,当数据存储需要更多存储空间时候,就是存储数据的数据随存储数据量增大,数据文件也可以自动增长,以满足数据存储需要.

3.一个或多个数据文件组成一个逻辑单元,称之为表空间.数据文件与表空间之间对应关系也是一对一关系,当然反过表空间与数据文件对应关系是一对多的关系.

存储在数据文件中的是可以读,当然这些数据是保存在Oracle数据库实例中特定的内存区域中,如果一个用户要读取数据库中一个表,这个用户是不能直接读取物理磁盘上的数据

文件的,首先Oracle接受这个请求后,从造当位置(物理磁盘)上读取相应的数据到内存中,这个时候用户才可以看见数据.Oracle软件是解释Oracle存储与管理数据的.如果这个时候我们修改数据,这些数据是不会立即写到磁盘中的.要到特定时候才会写磁盘.频繁立即写会引I/ O性能下降.

Oracle会在特定时候完成这数据写工作.

控制文件

每一个Oracle数据库都有一个控制文件.这个控制文件是Oracle能够正常工作一个前提.控制文件一般有三个功能:一记录着物理磁盘上信息.二记录Oracle数据库本身逻辑结构.三:起到一个全局监管作用.它一般包括以下几个部分:

1.数据库名称

2.数据文件与日志文件在磁盘上信息.

3.数据库创建时间

如果控制文件损失那么Oracle数据库就不能下常启动,理论上只能启动到MOUNT状态.因为控制文件如此重要,Oracle允许同时可以镜像多个控制文件.

当数据库启动时候,控制文件中记录数据文件与日志文件必须要被Oracle进程所读取.数据库结构变化也随时记录在控制文件中.控制文件对Oracle恢复也启着非常大作用.

重做日志文件

每个Oracle数据库都包含至少两组到多组重做日志文件,重做日志文件主要是记录数据变化一过程.是记录一个延续变化过程.其实控制也记录Oracle变化过程,但是两都还是有很大区别的,控制记录着数据库体系结构的变化.一个架构的变化,重做日志文件当然也记录这些变化,但它记录更细数据库中数据变化.这些信息主要是用于数据库恢复操作.

归档日志文件

因为Oracle数据库只要发生操作重做日志文件,就会记录这些信息.但是当记录一定的时候,如果把这些信息给永久保存下来,那么保存下来的”日志”就称之会归档日志.当然如果数据库要运行归档模式下,如果数据不运行归档模式下,那么重做日志就循环写.

参数文件

因为Oracle数据有两部分组成,数据库与实例.数据库一个体系结构是由控制文件进行记录的,但实例体体系结构呢?这些当然是由参数文件来记录着,当然参数文件还记录Oracle 软件本身操作的一些特性,比如上面说到是否归档当.参数据文件记录大部信息都抽像的,但是数据库实例子启动,这时并不访问数据库,因为必须要控制文件指示着物理体系结构.对于对于参数文件向物理结构过渡,有一个非常重要的参数就是控制文件.这个参数记录着控制文件在磁盘上位置.而控制文件又记录数据文件与日志文件和数据本身一些信息.从这里我们可以看出数据库启动是分三个阶段进行的.

1.第一步读取参数文件启动实例.这时并没有打开数据库,到这种状态也就是我们常说的NOMOUNT状态.

2.第二步根据参数文件记录读取控制文件.这时候只是读取控制文件,还没有对控制文件进行解释.一般恢复操作都是在这步完成.MOUNT

3.第三步根据控制文件中的信息,读取数据文件与控制文件.当然这时候在核对磁盘上记录的信息和控制文件本身信息.如果不通过,会告之有问题,数据库要进行恢复.(当然这步是必须的,我们想如果不管对不对都正常启动,那么感觉数据就会变得非常乱,用户自己数据损失了或是丢失都不知道,这样很可怕,这点可以看出解释控制文件也就是检查数据库完整性),如果比对成功这时候数据库就可以OPEN了.

告警日志

对于数据,操作记录实例子与数据库信息都有对应记录信息了,但是如果我们操作上出现问题或是数据库本身出现问题,这些问题又有谁来记录呢?记录这些信息一般要告警日志,

如果没有告警日志会有什么问题,就是运行着数据库发行了什么问题我们都不知道.我们可

以做一个比方.控制文件只在数据库启动之初审核一下.如果通过我就让你启动,但数据库运行过程出现的问题,我不管,但这些有谁来管呢?当然就是告警日志了.它应该时刻伴随数据库,记录一些影响数据健康问题.

备份文件

数据库仅仅有归档日志还是很安全,有的时候还需要备份,备份文件就是归档日志后备

部分,但是它是十分强大,它是Oracle管理工具生成文件,当然要也可以冷备.管理工具管理着数据库安全与备份,它的体现就是拥有备份文件.只有Oracle特定工具才能解释的格式.用于在灾难情况(比如没有了归档)下进行恢复.

Oracle存储结构

Oracle 存储结构分析 一逻辑结构的层次与种类 1,表(table): 2,分区表(table partition):一个有很大数据量的表;我们可以把表分区,每个分区可以放在不同的段上。以实现对表的优化 3,簇(cluster):将多个表集合在一起,这些表拥有相同的列;这些相同列放在同一个物理的段里面。 4,索引(index): 5,index-organized table(对应sqlserver的群集索引): 这些表中的数据以索引的大小按升序或者降序排列 6,index partition(索引的分区): 关于索引的数据分别存于不同的物理段里面 7,undo segment: 有序循环的方式存储(存放old value;读一致性;rollback ;recovery) 8,temporary: 临时段用来排序 9,LOB segment: 存放大的数据,oracle里面将这些数据并不放在表内部,而 是有专门一个段来存储 10,nested table(嵌套表):一个表中的某个字段的值是另外一个整表! 11,bootstrap segment:初始化我们的实例用的。这个段不需要维护和管理! 二oracle存储参数的设定及继承问题 【记忆】默认为 Oracle default ===》 Tablespace (创建表空间时定义的参数) ====》 Segment(优先级最高)

【理解】初始参数 oracle block 的5倍;意思是说你创建一个表,即使里面没存数据,它已经占用了8k×5=40kB的空间(这里假设oracle block size 为8kB) 三创建表时可以单独为表指定存储参数 SQL> conn hr/123456@kk 已连接。 SQL> create table hello(id int) 2 tablespace bkeep 3 storage(initial 100k 4 next 100k); 【点子】我们来创建一个表空间test11,不带任何存储参数,然后打开oem看看它的存储参数(这些参数就是从oracle default哪里继承过来的!) 四extent的分配和重新分配 -当创建段时就分配空间 -当扩展段时给它分配空间 -强制分配空间给段(段可以跨数据文件,但不可以跨表空间;但是强制的段是不能跨数据文件获取空间的) 创建表时,最初始的空间一定会分配给它!

ORACLE 体系结构详解

ORACLE 体系结构 (Architecture of ORACLE) 第一部分:ORACLE8i体系结构 第一章. 概要 在本章里你可以了解以下内容 1、理解ORACLE 实例的组成 2、理解ORACLE 数据库的组成 3、理解ORACLE内存结构的组成 4、理解后台进程的作用与分工 5、理解数据库的物理文件与对应的逻辑结构 6、理解ORACLE的整体构架 第二章. 理解ORACLE实例 2.1 ORACLE SERVER ORACLE是一个可移植的数据库——它在相关的每一个平台上都可以使用,即所谓的跨平台特性。在不同的操作系统上也略有差别,如在UNIX/LINUX上,ORACLE是多个进程实现的,每一个主要函数都是一个进程;而在Windows上,则是一个单一进程,但是在该进程中包含多个线程。但是从整体构架上来看,ORACLE在不同的平台上是一样的,如内存结构、后台进程、数据的存储。 一个运行着的ORACLE数据库就可以看成是一个ORACLE SERVER,该SERVER由数据库(Database)和实例(Instance)组成,在一般的情况下一个ORACLE SERVER包含一个实例和一个与之对应的数据库,但是在特殊情况下,如8i的OPS,9i的RAC,一个SERVER中一个数据库可以对应多个实例。 一系列物理文件(数据文件,控制文件,联机日志等)的集合或与之对应的逻辑结构(表空间,段等)被称为数据库,简单的说,就是一系列与磁盘有关系的物理文件的组成。ORACLE内存结构和后台进程被成为数据库的实例,一个实例最多只能安装(Mount)和打开(Open)在一个数据库上,负责数据库的相应操作并与用户交互。 实例与数据库的关系如下图所示:

实验2 Oracle数据库物理存储结构管理

实验2 Oracle数据库物理存储结构管理 1.向BOOKSALES数据库的USERS表空间添加一个大小为10MB的数据文件users0 2.dbf。 2.向BOOKSALES数据库的TEMP表空间添加一个大小为10MB的临时数据文件temp02.dbf。 3. 向BOOKSALES数据库的USERS表空间中添加一个可以自动扩展的数据文件user03.dbf ,大小5M,每次扩展1M,最大容量为100M。 4.取消BOOKSALES数据库数据文件user03.dbf的自动扩展。 5.将BOOKSALES数据库数据文件users02.dbf更名为users002.dbf。

6.查询BOOKSALES数据库当前所有的数据文件的详细信息。 7.为BOOKSALES数据库添加一个多路复用的控制文件control03.ctl。 (过程忘了截图)复制过程没有问题,在文件夹中也能显示出CONTROL03.CTL文件可是在重新startup的时候数据库没有重新运行,出现了错误 查询也有CONTROL03.CTL文件

后来删除了CONTROL03.CTL文件(即10的图)还是启动不了数据库,只在新的例程里,后来重载了oracle。 8.以二进制文件的形式备份BOOKSALES数据库的控制文件。 第一次忘了截图 9.将BOOKSALES数据库的控制文件以文本方式备份到跟踪文件中,并查看备份的内容。

10.删除BOOKSALES数据库的控制文件control03.ctl。 11.查询BOOKSALES数据库当前所有控制文件信息 12.向BOOKSALES数据库添加一个重做日志文件组(组号为4),包含一个成员文件undo04a.log,大小为4M。 13.向BOOKSALES数据库的重做日志组4中添加一个成员文件,名称为undo04b.log。 14.将BOOKSALES数据库的重做日志组4中所有成员文件移植到一个新的目录下。

Oracle体系结构详解

Oracle体系结构就是围绕这张图展开的,要想深入了解oracle,就必须把这张图搞明白。如图: 一、基本组成: Oracle server: 一般情况下是一个instance和一个database组成 1个instance只能对应一个数据库。 特殊:1个数据库可以有多个instance(rac) 一台服务器上同时可装多套版本的数据库软件,每个数据库软件可建多个数据库,但是每个数据库只对应一个instance,也可以理解成每个数据库只有一个SID 。 利用DBCA建出的每个库都是相对独立的,在同一服务器上如果创建多库必须将环境变量的参数文件做区分,并且在对实例切换时需如下操作: connect 用户名/密码@实例的服务名

Oracle Instance: 是由内存(SGA)和后台进程(backupground Process)组成 通过instance来访问database 一个实例只能打开一个数据库 Oracle database: 数据文件(Data files): 数据文件永远存储数据库的数据,包括数据字典、用户数据(表、索引、簇)、undo数据等 重做日志(Redo log): “先记后写” 重做日志用于记录数据库的变化,当进行例程恢复或介质恢复时需要使用重做日志 执行DDL或DML操作时,事物变化会被写到重做日志缓冲区,而在特定的时刻LGWR会将重做日志缓冲区中的内容写入重做日志。 控制文件(Control file) 控制文件用于记录和维护数据库的物理结构,并且每个Oracle数据库至少要包含一个控制文件。 归档日志(Archive log): 是非活动(Inactive)重做日志的备份。 口令文件(Password file): 用于验证特权用户(具有SYSDBA、SYSOPER权限的特殊数据库用户) 参数文件(Parameter file): 用于定义启动实例所需要的初始化参数,包括文本参数文件(pfile)和服务器参数文件(spfile)(二进制文件放入裸设备,引入spfile) User and Server process : 在执行sql语句时产生的进程,每一个连接,oracle server创建一个session,产生一个server process,在client发起一个connection时就产生了一个user process。

oracle体系结构(详解)

在学习oracle中,体系结构是重中之重,掌握的越深入越好。在实际工作遇到疑难问题,其实都可以归结到体系结构中来解释,所以我们根据下面的示图了解一下oracle体系结构。 1.Summarize 根据示图,便于我们记忆,示图分三部分组成,左侧User Process、Server Process、PGA可以看做成Clinet端,上面的实例(Instance)和下面的数据库(Database)及参数文件(parameter file)、密码文件(password file)和归档日志文件(archived logfiles)组成Oracle Server,所以整个示图可以理解成一个C/S架构。Oracle Server由两个实体组成:实例(instance)与数据库(database)。这两个实体是独立的,不过连接在一起。在数据库创建过程中,实例首先被创建,然后才创建数据库。在典型的单实例环境中,实例与数据库的关系是一对一的,一个实例连接一个数据库,实例与数据库也可以是多对一的关系,即不同计算机上的多个实例打开共享磁盘系统上的一个公用数据库。这种多对一关系被称为实际应用群集(Real Application Clusters,RAC)RAC极大提高了数据库的性能、容错与可伸缩性(可能耗费更多的存储空间)并且是oracle网格(grid)概念的必备部分。 2.Client端 在Client端的作用是如何从客户端创建服务器进程与数据库进行交互的过程。 2.1 User process 用户运行一个应用程序时与Oracle数据库进程交互(例如:sql/plus)时,oracle创建一个用户进程来运行用户的应用程序。 2.2 Server process

oracle体系结构

Oracle体系结构:物理结构,逻辑结构,内存结构,数据库实例和进程,数据字典 物理结构:数据文件,日志文件,控制文件,配置文件 数据文件用来存储数据库中的全部数据,如数据库表中的数据和索引数据。通常为后缀名为.dbf格式的文件。 日志文件(又称重做日志文件),用于记录数据库所做的全部变更(如增加、删除、修改),以便在系统发生故障时,用它对数据库进行恢复。名字通常为Log*.dbf格式 控制文件每个Oracle数据库都有相应的控制文件,用于打开、存取数据库。它们是较小的二进制文件,其中记录了数据库的物理结构。名字通常为Ctr*.ctl格式 配置文件是一个ASCII文本文件,记录Oracle数据库运行时的一些重要参数。名字通 常为initsid*.ora格式,如:initCIMS.ora,SID相当于它所控制的数据库的标识符。每个Oracle 数据库和实例都有它自己惟一的init.ora文件。 逻辑结构:表空间,段,区,数据库块,模式对象 Oracle中除了用户创建的存放数据对象的数据表空间外,还有以下类型的表空间: (1)System表空间 (2)回滚表空间(RollBack TableSpace) (3)临时表空间(Temp TableSpace) 段:数据段,索引段,临时段,回退段 区是由很多连续的数据块组成的数据库存储空间。缺省情况下,数据库会使用表空间中存储的存储参数来管理他们的区。

Oracle数据库的模式对象包括表、视图、序列、同义词、索引、触发器、存储过程等。内存结构:系统全局区,程序全局区,排序区,软件代码区 系统全局区(SGA,System Global Area.)是内存结构的主要组成部分,是Oracle为一个实例分配的一组共享内存缓冲区,保存着Oracle系统与所有数据库用户的共享信息,包括数据维护、SQL语句分析,重做日志管理等。是实例的主要部分。 数据块缓冲区中存放着Oracle系统最近从数据文件中读取的数据块。数据块缓冲区又称用户数据高速缓冲区,为所有与该实例相链接的用户进程所共享。 在Oracle9i中,数据库缓存的大小可以直接由初始化参数DB_ACHESIZE指定,该参数可以直接以K字节或M字节为单位来设置数据库缓存的大小。 字典缓冲区用于保存数据字典中的行。数据字典缓冲区也通过最近最少使用(LRU)算法来管理。大小由数据库内部管理。字典缓存区是SQL共享池的一部分,共享池的大小(以字节为单位)由数据库文件init.ora中的SHARED_POOL_SIZE参数来设置 对数据库进行修改的任何事务(Transaction)在记录到重做日志之前都必须首先放到重做日志缓冲区(Redo Log Buffer.)中。重做日志缓冲区是专为此开辟的一块内存区域,重做日志缓存中的内容将被LGWR后台进程随时写入重做日志文件 共享SQL池(Shared SQL Pool)相当于程序高速缓冲区,所有的用户程序都存放在共享SQL 池中。SQL共享池包括库高速缓存、数据字典高速缓存和服务器控制结构 Java池为Java命令提供语法分析。 缓冲池把大数据集与其他的应用程序分开,以减少它们争夺数据块缓冲区内相同的资源。可以在SGA中创建多个缓冲池 数据库是指物理上的数据库文件或逻辑上的数据库结构。 基于之上管理和控制物理数据库的软件系统,称为数据库管理系统(DBMS)。 数据库实例和进程 数据库实例是指软件系统中用来访问数据库文件集的存储结构以及后台进程的集合,它是存取和控制数据库的软件机制

Oracle数据库的物理存储结构之数据库控制文件详解

Oracle数据库中,数据库控制文件维护着数据库的全局物理结构,用以支持数据库成功的启动和运行。创建数据库时,同时就提供了与之对应的数据库控制文件。在数据库使用过程中,Oracle不断的更新数据库控制文件,所以只要数据库是打开的,数据库控制文件就必须处于可写状态。如果,犹豫某些原因控制文件不能被访问,那么数据库也就不能正常的工作了。 每一个控制文件只能与一个Oracle数据库相关联。数据库控制文件包含了数据库实例的启动和正常操作时,访问数据库所需的关于数据库的信息。数据库控制文件的内容只有Oralce 可以修改,数据库管理员和用户都不能对其进行编辑。 控制文件包含了以下信息: ?数据库名称 ?数据库创建的时间戳 ?相关的数据文件、重演日志文件的名称和位置 ?表空间信息 ?数据文件脱机范围 ?日志历史 ?归档日志信息 ?备份组和备份块信息 ?备份数据文件和重演日志信息 ?数据文件拷贝信息 ?当前日志序列数 ?检查点(checkpoint)信息 数据库名称和时间戳源自数据库创建之时,数据库名称或是来自DB_NAME初始化从参数,或者来自Cteate Database语句使用的名称。 每当数据文件或重演日志文件被添加内容、重新命名或者直接从数据库删除时,控制文件都要进行更新以反应物理结构的变化。记录下这些变化后,Oracle就可以:在数据库启动的时候,能够确定并打开数据文件和重演日子文件。 在必须要恢复数据库的时候,能够确定哪些文件是必须的、哪些文件是可用的。 PS:如果数据库的物理结构发生了改变(使用了Alert Database语句),用户应该立刻备份控制文件。 控制文件还记录了关于检查点的信息。每3秒,检查点进程(CKPT)就会在控制文件里记录重演日志文件的检查点位置信息。这些信息用于数据库的恢复过程,告诉数据库在这一点之前的已经记录下的重演条目不必进行恢复,因为它们已经被写入数据文件了。 由于控制文件对数据库的至关重要,所以联机存储着多个副本。这些文件一般存储在各个不同的磁盘上,以便将因磁盘试下哦引起的潜在危险降至最低程度。Oracle支持对同一个数据库并发的打开、书写多个相同的控制文件。通过为一个数据库在不同的磁盘上保存多个控制文件,可以幼小的降低对于控制文件可能发生的单点失败。例如,包含一个控制文件的磁盘崩溃了,如果Oracle试图访问这个被破坏的文件,当前实例就会失败,但是如果在不同的磁盘上保存了当前控制文件的复件,就可以重启一个实例而无需进行数据库恢复。

oracle体系结构总结

oracle体系结构总结 传统上Oracle体系结构由内存结构、进程结构、存储结构组成。其中,内存结构由SGA、PGA组成;进程结构由用户进程和Oracle进程组成;存储结构由逻辑存储、物理存储组成。 通过数据库的启动过程和一条sql的执行过程可以将oracle的内存结构、进程结构、存储结构串起来。 一、内存结构 (1)SGA(System Global Area):一个包含实例数据和控制信息的共享内存区域 (2)PGA(Program Global Area):一个包含服务器进程和后台进程的数据和控制信息的共享内存区域 1.1系统全局区SGA 系统全局区,是DB Server 中实例的必要组成部分,由很多小内存区共同构成,各个小内存区存放不同的信息,系统全局区用于暂存可以被所有进程(包括server process 以及background process)共享的信息,对系统的运行性能有好处,SGA 在实例启动的时候自动分配,实例关闭时自动释放。 SGA 暂存系统的大量共享数据,对系统有相当的性能影响,所以需要为SGA 选择适当的管理方式,根据所使用的数据库版本不同,SGA 的管理有三种方式:1)8i:SGA 的大小由所有内存组件大小之和决定,不能直接定义SGA 大小,对内存组件的大小可后台进行修改,但只能通过直接修改参数文件的内存参数大小,而且修改完数据库必须重起后才能生效,所以这种内存管理方法叫做SGA 的静态管理。 2)9i:SGA 的大小由初始化参数SGA_MAX_SIZ E 确定,各个内存组件大小之和不能超过这个参数。可以直接通过命令进行修改内存组件大小而不用重启,这种叫做SGA 的动态管理

Oracle 逻辑存储结构

Oracle 逻辑存储结构 逻辑存储结构是Oracle 数据库存储结构的核心内容,对Oracle 数据库的所有操作都会涉及到其逻辑存储结构。数据库的逻辑结构是从逻辑的角度分析数据库的构成,即创建数据库后形成的逻辑概念之间的关系。在逻辑上,Oracle 将保存的数据划分为一个个小单元来进行存储和维护,高一级的存储单元由一个或多个低一级的存储单元组成。Oracle 的逻辑存储单元从小到大依次为:数据块(DA TA BLOCKS )、盘区(EXTENT )、段(SEGMENTS )和表空间(TABLE SPACES ),图2-2显示了各逻辑单位之间的关系。 数据库 ...表空间 表空间段 段盘区 数据块盘区数据块 段段数据库...表空间表空间段段盘区数据块盘区数据块段 段 图2-2 数据库的逻辑存储组成 由图2-2可知,Oracle 数据库由多个表空间组成,而表空间又由许多段组成,段由多个盘区组成,盘区又由多个数据块组成。 1 数据块 数据块是Oracle 用来管理存储空间的最小单元,也是执行数据库输入输出操作时的最小单位。相对应地,操作系统执行输入输出操作的最小单位为一个操作系统块的大小。在操作系统中,执行I/O 操作是以操作系统块为单位,而在Oracle 中,执行的I/O 操作以Oracle 数据块为单位。 Oracle 块的大小是操作系统块大小的整数倍。以Windows NT 操作系统为例,NTFS 格式的磁盘分区一般为4KB 大小,因此Oracle 块的大小为8KB 等。数据块的标准大小由初始化参数DB_BLOCK_SIZE 确定,具有标准大小的块被称为标准块。Oracle 支持在同一个数据库中使用多种大小的块,与标准块大小不同的块称为非标准块。 可以通过查询V$PARAMETER 数据字典,可以获得参数DB_BLACK_SIZE 的值,该参数值同时也是数据块的尺寸大小。例如: SQL> select name,value 2 from v$parameter where name ='db_block_size'; NAME V ALUE --------------------------- -------------------------- db_block_size 8192 在数据块中可以存储各种类型的数据,如表数据、索引数据、簇数据等。无论数据块中存放何种类型的数据,块都具有相同的结构,图2-3列出一个Oracle 块的基本结构。

Oracle体系结构简要介绍

Oracle体系结构简要介绍 1.o racle数据库软件介绍 oracle数据库包括:oracle数据库和oracle实例两个东西。Oracle实例指的是:oracle 启动后占用的内存和后台进程的总称;oracle数据库是实例和数据文件的总称。数据库关闭后数据库实例就不存在了,数据库文件一直存在。 Oracle是由oracle软件和oracle数据库组成,oracle数据库主要指的是三类文件,分别是控制文件(*.ctl)、日志文件(*.log)、数据文件(*.dbf)。 2.o racle中内存结构介绍 oracle数据库启动起来后有两大内存结构,一是SGA(系统全局区),二是PGA,其中SGA 是用来共享的,PGA是用来给进程使用的。

2.1SGA介绍 Sga是就是oracle系统的全局区,在linux和nuix中用ipcs -m命令来查看占用的共享内存。Sga包括:共享池(shared pool)、stream池(stream pool)、大型池(large pool)、java 池、数据库缓冲区高速缓存(buffer cache)、重做日志缓冲区(log buffer)。 其中主要的缓冲区包括:共享池(shared_pool)、数据库高速缓存区(db_cache)、重做日志缓冲区(log_buffer),最容易出问题的也是这三个。 在plsql中可以通过show parameters sga 或者show sga 来查看sga的参数配置。 2.1.1共享池(shard pool) 共享池(shard pool)主要用来缓存SQL语句以及所对应的SQL执行计划。参数是shared_pool_size。 SQL语句的执行计划存放在shard pool中,下次去执行的时候先到shard pool中去找,这样大大减少资源的消耗。 SQL语句的解析以及执行计划的缓存、shard pool的访问,都是有server process 来做的。 2.1.2数据库缓冲区高速缓存(buffer cache) 数据库缓冲区高速缓存(buffer cache)主要用来缓存DBF的数据,这些数据通过SQL语句的执行计划得来的。参数是db_cache_size 。 数据库缓存区高速缓存对应的是数据库写进程(DBWN),数据库写进程(DBWN)对应的是数据文件和控制文件。 2.1.3重做日志缓冲区(log buffer) 重做日志缓冲区(log buffer)主要用来存放日志的。参数是log_buffer。 重做日志缓冲区对应的是日志写进程(LGWR),日志写进程(LGWR)对应的数据文件是重做日志文件,也就是日志文件。 2.1.4stream 池(stream pool) stream 池(stream pool)是由oracle的stream来使用的。参数是streams_pool_size。 2.1.5大型池(large pool) 大型池(large pool)用于为某些大型的进程提供大量的内存分配,如数据备份等。 参数是:lorge_pool_size

Oracle体系结构概述

Oracle 体系结构概述 完整的Oracle 数据库系统通常由两个部分组成:实例(INSTANCE )和数据库(DATABASE )。数据库是由一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等);实例则是由一组Oracle 后台进程/线程以及在服务器分配的共享内存区。 实例和数据库有时可以互换使用,不过二者的概念完全不同。实例和数据库之间的关系是:数据库可以由多个实例装载和打开,而实例可以在任何时间点装载和打开一个数据库。准确地讲,一个实例在其生存期中最多只能装载和打开一个数据库。如果要想再打开其他数据库,必须先丢弃这个实例,并创建一个新的实例。 数据库的主要功能是保存数据,实际上可以将数据库看作是存储数据的容器。数据库的存储结构也就是数据库存储数据的方式,Oracle 数据库的存储结构分为逻辑存储结构和物理存储结构,这两部分是相互独立但又密切相关的。逻辑存储结构主要用于描述在Oracle 内部的组织和管理数据的方式,而物理存储结构则用于描述在Oracle 外部,即操作系统中组织和管理数据的方式。 Oracle 对逻辑存储结构和物理存储结构的管理是分别进行的,两者之间不直接影响。因此Oracle 的逻辑存储结构能够适用于不同的操作系统平台和硬件平台,而不需要考虑物理实现方式。 在启动Oracle 数据库服务器时,实际上是在服务器的内存中创建一个Oracle 实例(即在服务器内存中分配共享内存并创建相关的后台进程),然后由这个实例来访问和控制磁盘中的数据文件。图2-1以最简单的形式展示了Oracle 实例和数据库。Oracle 有一个很大的内存块,称为系统全局区(SGA )。 文件 文件文件文件 文件数据库 SGA 后台进程后台进程后台进程后台进程后台进程后台进程后台进程 实例 图2-1 Oracle 实例和数据库 当用户连接数据库时,实际上是连接到实例中,由实例负责与数据库通信息,然后再将处理结构返回给用户。 Oracle 数据库服务器的后台进程的数量与其工作模式有密切关系。Oracle 服务器处理请求有两种最常见的方式,分别是专用服务器连接和共享服务器连接。在专用服务器连接下,Oracle 数据库会为每个用户请求分配一个专用服务器进程为其提供服务,当用户请求结束后,对应的服务器进程也相应地被终止。如果同时存在大量的用户请求,则需要同等数量的服务器进程提供服务。 而在共享服务器连接下,Oracle 数据库始终保持一定数量的服务器进程,用户的请求首

Oracle体系结构简介

Oracle体系结构简介 一、数据库(Database) 数据库是一个数据的集合,不仅是指物理上的数据,也指物理、存储及进程对象的一个组合。Oracle是关系型数据库治理系统(RDBMS)。 二、实例(Instance) 数据库实例(也称为服务器Server)就是用来访问一个数据库文件集的一个存储结构及后台进程的集合。它使一个单独的数据库可以被多个实例访问(也就是ORACLE并行服务器-- OPS)。实例和数据库的关系如下 决定实例的组成及大小的参数存储在init.ora文件中。 三、内部结构 表、列、数据类型(T able、Column、Datatype)Oracle中是以表的形式存储数据的,它包含若干个列;列是表的属性的描述;列由数据类型和长度组成;Oracle中定义的数据类型主要有CHAR、VARCHAR2、NUMBER、DATE、LONG、LOB、BFILE等,具体的数据类型情况将在本栏目的相关文档中具体介绍。 约束条件(Constraint)表中以及表间可以存在一些数据上的逻辑关系、限制,也就是约束。Oracle中的约束主要有主键(PK)、外键(FK)、检查(CHECK)、唯一性(UNIQUE)等几种;拥有约束的表中每条数据均必须符合约束条件。 抽象数据类型(Abstract Datatype)可以利用CREATE TYPE命令创建自定义的抽象数据类型。 分区(Partition)可以利用分区将大表分隔成若干个小的存储单元,逻辑上仍然是一个完整的独立单一实体,以减小访问时数据的查找量,提高访问、存储效率 用户(User)用户不是一个物理结构,但是它与数据库的对象拥有非常重要的关系--用户拥有数据库对象,以及对象的使用权。 模式(Schema)用户帐号拥有的对象集合称为模式。 索引(Index)数据库中每行记录的物理位置并不重要,Oracle为每条记录用一个ROWID来标识,ROWID记录了记录的准确位置。索引是供用户快速查找到记录的数据库结构。ORACLE8中有簇索引、表索引、位图索引三种索引形式。 簇(Cluster)经常被频繁引用的表可以在物理位置上被存储在一起,簇就是用来治理这种集中存储的。集中存储可以减少I/O次数,以达到性能的改善和提高。

(34) Oracle存储结构管理(3)

6.4 管理数据库存储结构(3) 1.重做日志文件的概念 (1)重做日志文件,保存了用户对数据库所作的更新操作(DDL 、DML ),包含的主要信 息是记录事务的开始和结束、事务中每项操作的对象和类型、更新操作前后的数据值等。 (2)重做日志文件是由重做记录构成的,每个重做记录由一组修改相量组成。 (3)用户对数据库所做的修改都是在数据库的数据高速缓冲区中进行的,同时将产生的重 做记录写入重做日志缓冲区。在一定条件下由DBWR 进程将数据高速缓冲区中修改后的结果成批写回数据文件中,而重做日志缓冲区中的重做记录由LGWR 进程周期性的写入重做日志文件。 (4)利用重做日志文件恢复数据库是通过事务的重做(REDO )或回退(UNDO )实现的。 2.重做日志文件的工作过程 (1)每个数据库至少需要两个重做日志文件,采用循环写的方式进行工作。当一个重做日 志文件写满后,进程LGWR 就会移到下一个日志组,称为日志切换,同时信息会写到控制文件中。 (2)重做日志文件工作流程 日志切换 日志切换 重做日志文件1 日志切换 重做日志文件2 重做日志文件3 1,4,7,… 2,5,8,… 3,6,9,… LGWR 重做日 志缓冲区 (3)为了保证LGWR 进程的正常进行,通常采用重做日志文件组(GROUP),每个组中包 含若干完全相同的重做日志文件成员(MEMBER),这些成员文件相互镜像。 MENBER1_1 MENBER1_2 MENBER2_1 MENBER2_2 MENBER3_1 MENBER3_2 GROUP1 GROUP2 GROUP3 DISK 1 DISK 2 3.重做日志文件的管理 (1)添加重做日志文件组 (2)添加重做日志文件组成员文件 (3)改变重做日志文件组成员文件的名称和位置 (4)删除重做日志文件组成员 (5)删除重做日志文件组 (6)重做日志文件切换 (7)清空重做日志文件组 (8)查看重做日志文件信息

oracle物理结构

oracle物理结构 在一个服务器中,每一个运行的数据库都有一个数据库实例(instancename) 相联系。数据库启动时,系统首先在服务器内存中分配系统全局区(SGA),即构成了oracle的内存结构。然后启动若干个常驻内存的操作系统进程,即组成了oracle的进程结构。除此之外,还有数据库的物理与逻辑结构。数据库体系统结构图可以参考第一篇。在接下来的篇幅中将分五篇来详细说明oracle数据库的体系结构。 ?oracle物理结构 ?oracle逻辑结构 ?oracle内存结构 ?oracle进程结构 ?oracle连接配置结构 本篇说明物理结构。 物理结构,即oracle数据库使用的操作系统文件结构。对于数据库物理结构文件,不同的oracle版本,不同的操作系统平台上有不同的存储目录结构。 ?winnt | d:/oracle/product/10.1.0/oradata/DB_NAME/*.*(oracle 10g);d:/orant/database/*.*(oracle7,oracle8) ?Unix | /home/app/oracle/product/10.1.0/oradata/DB_NAME/*.*(10g);/home/app/oradata/db_name/*. *(8i,9i) 数据库的物理结构文件按其作用可以分为三类: ?数据文件 ?日志文件 ?控制文件 物理存储结构是指从物理角度分析数据库的构成,即Oracle数据库创建后所使用的操作系统文件。从物理存储结构上分析:每一个Oracle数据库是主要由三种类型的文件组成:数据文件、日志文件和控制文件,另外还包括一些参数文件。其中:数据文件的扩展名为.DBF;日志文件的扩展名为.LOG;控制文件的扩展名为.CTL。 一、数据文件 数据文件(Data File)用于存储数据库数据的文件,如表中的记录,索引,数据字典信息等都存储于数据文件中。在存取数据时,Oracle数据库系统首先从数据文件中读取数据,并存储在内存中的数据缓冲区中。当用户查询数据时,如果所要查询的数据不在数据缓冲区中,则这时Oracle数据库进行启动相应的进程从数据文件中读取数据,并保存到数据缓冲区中。当用用户修改数据时,用户对数据的修改保存在数据缓冲区中,再由oracle后台进程DBWR决定如何将其写入到数据文件中。这样的存取方式减少了磁盘的I/O操作,提高了系统的响应性能。 一个Oracle数据库往往有多个数据文件。这里需要注意的是:当向Oracle数据库中某个表添加数据时,输入到表中的数据可能包含在一个数据文件中,也可能包含在多个数据文件中。换句说话,当在Oracle数据库为中创建一个表时,Oracle数据库系统不会为此在磁盘在上创建一个数据文件。

ORACLE数据库块的详细存储结构

ORACLE数据库块的详细存储结构 数据库----存储数据的容器 数据库的主要功能是保存数据。 数据库的存储结构---数据库存储数据的方式 oracle数据库的存储结构: 逻辑存储结构:oracle内部的组织和管理数据的方式 物理存储结构:oracle外部(操作系统)组织和管理数据的方式 oracle对逻辑存储结构和物理存储结构的管理是分别进行的。 (一)逻辑存储结构: oracle在逻辑上将保存的数据划分为一个个小单元来进行存储和维护,更高一级的逻辑存储结构都是由这些基本的小单元组成的。 逻辑结构类型:从小到大块-->区-->段-->表空间 (1). 块:Oracle用来管理存储空间的最基本单元,也是最小的逻辑存储结构。Oracle数据库在进行输入输出时,都是以块为单位进行逻辑读写操作的。 块---->操作系统快的整数倍(1、2、4等) Oracle块的大小在数据库创建的时候决定的,以后不能修改。 区:比块高一级的逻辑存储结构由连续的快组成 oracle在进行存储空间的分配和回收是以区为基本单位的 段:多个区组成这些区可以是连续的,也可以是不连续的。当用户在数据库中创建各种具有实际存储结构的对象时(保存有数据的对象),比如表、索引等,Oracle将为这些对象创建“段”。一般一个对象只拥有一个段 表空间:最高级的逻辑存储结构每个数据库都是由一个或多个表空间组成,在创建数据库时会自动创建一个默认的SYSTEM表空间。 通过使用表空间---Oracle将所有相关的逻辑结构和对象组合在一起。 逻辑结构关系: 块--->一张张白纸区--->白纸组成的本子段--->多个本子放到一个文件袋中 表空间--->文件柜(存放多个文件袋) (2)☆. 块的管理:块的可用存储空间进行管理 块结构: 块的头部信息区 快头部:包含块的一般属性信息如块的物理地址、块所属的段的类型 表目录:如果快中存储的数据是表数据则在表目录中保存这个表的相关信息行目录:行记录的相关信息如ROWID 块的存储区: 空闲空间行空间

Oracle体系结构图以及分析

Oracle体系结构 Oracle服务器 –提供一个开放的、全面的、完整的信息管理平台 –Oracle实例和Oracle数据库组成 Oracle实例 ?访问Oracle数据库的一种方法 ?只能是打开一个仅仅只有一个数据库 ?由内存和后台进程组成 Oracle 实例由SGA 内存结构和用于管理数据库的后台进程组成。实例是通过使用对每个操作系统特定的方法来进行标识的。实例一次只能打开和使用一个数据库。

系统全局区 SGA 是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息。它是在Oracle 服务器所驻留的计算机的虚拟内存中得以分配。SGA 由几种内存结构组成: ? 共享池用于存储最近执行的SQL 语句和最近使用的数据字典数据。这些SQL 语句可以是用户进程提交的,也可以是从数据字典读取的(在存储过程的情况中)。 ? 数据库缓冲区高速缓存用于存储最近使用的数据。这些数据从数据文件读取,或者写入数据文件。 ? 重做日志缓冲区用于跟踪服务器和后台进程对数据库所做的更改。 在SGA 中还有两种可选的内存结构: ? Java 池:用于存储Java 代码 ? 大型共享池:用于存储并不与SQL 语句处理直接相关的大型内存结构。例如在备份和复原操作过程中复制的数据块。 后台进程 实例中的后台进程执行用于处理并行用户请求所需的通用功能,而不会损害系统的完整性和性能。它们把为每个用户运行的多个Oracle 程序所处理的功能统一起来。后台进程执行I/O 并监控其它Oracle 进程以增加并行性,从而使性能和可靠性更加优越。 根据配置情况,Oracle 实例可以包括多个后台进程,但是每个实例都包括下面五个必需的后台进程: ? 数据库写入程序(DBW0) 负责将更改的数据从数据库缓冲区高速缓存写入数据文件。? 日志写入程序(LGWR) 将重做日志缓冲区中注册的更改写入重做日志文件。 ? 系统监控程序(SMON) 检查数据库的一致性,如有必要还会在数据库打开时启动数据库的恢复。 ? 过程监视器(PMON) 负责在一个Oracle 进程失败时清理资源 ? 检查点进程(CKPT) 负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。 连接到Oracle Server 1.建立一个用户连接 2.创建一个会话 用于连接例程的进程 用户在给Oracle 提交SQL 语句之前,必须同实例连接起来。 ? 用户启动SQL*Plus 之类的工具,或者运行使用Oracle Forms 之类的工具开发的应用程序。这个应用程序或者工具就在用户进程中执行。 ? 在最基本的配置中,当用户登录到Oracle 服务器时,运行Oracle 服务器的计算机上就会创建一个进程。这个进程称为服务器进程。服务器进程代表在客户机上运行的用户进程与Oracle 实例通信。服务器进程代表用户执行SQL 语句。 连接 连接是用户进程和Oracle 服务器之间的通信路径。数据库用户可以用下面三种方式之一连接到Oracle 服务器: ? 用户登录到运行Oracle 实例的操作系统上,然后启动访问该系统中的数据库的应用程序或工具。通信路径是使用主机操作系统上的交互进程通信机制建立的。 ? 用户在本地计算机上启动应用程序或工具,然后通过网络连接到运行Oracle实例的计算

Oracle 数据库逻辑存储结构管理

一、实验目的: (1)掌握Oracle 数据库表空间的管理。 (2)掌握数据库表空间不同状态时对数据操作的影响。 (3)分别创建永久性表空间、临时性表空间、撤销表空间。 (4)完成表空间的管理操作,包括修改表空间大小、修改表空间的可用性、修改表空间的读写、表空间的备份、表空间信息查询、删除表空间。 二、实验环境: WINDOWS 7、ORACLE 11g 二、实验内容: (1)为BOOKSALES 数据库创建一个名为BOOKTBS1 的永久性表空间,区采用自动扩展方式,段采用自动管理方式。 SQL> create tablespace booktbs1 datafile 2 'D:\app\Administrator\oradata\orcl\hrtbs1_1.dbf' size 50m; Tablespace created (2)为BOOKSALES 数据库创建一个名为BOOKTBS2 的永久性表空间,区采用定制分配,每次分配大小为1M,段采用手动管理方式。 SQL> create tablespace booktbs2 datafile 2 'D:\app\Administrator\oradata\orcl\booktbs2.dbf' size 50m 3 extent management local uniform size 1m 4 segment space management manual; Tablespace created (3)为BOOKSALES 数据库创建一个临时表空间TEMP02。 SQL> create temporary tablespace temp02 tempfile 2 'D:\app\Administrator\oradata\orcl\temp02.dbf' size 20m; Tablespace created (4)将BOOKSALES 数据库临时表空间TEMP 和TEMP02 都放入临时表空间组TEMPGROUP 中。 SQL> alter tablespace temp02 tablespace group tempgroup; Tablespace altered SQL> alter tablespace temp tablespace group tempgroup; Tablespace altered (5)为BOOKSALES 数据库创建一个名为UNDO02 的撤销表空间,并设置为当前数据库的在线撤销表空间。SQL> create undo tablespace undo02 datafile 2 'D:\app\Administrator\oradata\orcl\undo02.dbf' size 20m; Tablespace created (6)为BOOKSALES 数据库的表空间BOOKTBS1 添加一个大小为50M 的数据文件,以改变该表空间的大小。 SQL> alter tablespace booktbs1 add datafile 2 'D:\app\Administrator\oradata\orcl\bookdata01.dbf' size 50m; Tablespace altered (7)将BOOKSALES 数据库的表空间BOOKTBS2 的数据文件修改为可以自动扩展,每次扩展5M,最大容量为100M。 SQL> alter database datafile 2 'D:\app\Administrator\oradata\orcl\booktbs2.dbf' 3 autoextend on next 5m maxsize 100m; Database altered (8)创建一个名为test 的表,存储于BOOKTBS1 表空间中,向表中插入一条记录。 SQL> create table test(id number primary key,name char(20)) tablespace booktbs1; Table created

ORACLE数据库习题

1、ORACLE数据库物理结构包括以下三种文件,以下不属于的就是( ) A.系统文件 B.日志文件 C.数据文件 D.控制文件 2、下列哪个命令就是用于ORACLE中数据导出的 ( ) A.exp B.imp C.input D.output 3、()就是用于控制数据访问的语言。 A.DML B.DDL C.DCL D.DLL 4、NULL表示什么() A.0 B.空格 C.值 D.没有值 5、下面四个语句中哪一个就是正确的?() A.SELECT * , ENAME FROM EMP; B. DELETE * FROM EMP; C. SELECT DISTINCT EMPNO ,HIREDATE FROM EMP; D.SELECT ENAME|SAL AS “name” FROM EMP ; 6、假定有一张表用户表users,其中一身份证字段ID_card。为了维护数据的完整性,在设计数据库时,最好对ID_card字段添加约束,请问应该添加什么约束() A. primary key B.check C.default D.not null 7、下面哪一个like命令会返回名字象HOTKA的行?() A.where ename like ‘_HOT%' B. where ename like ‘H_T%' C. where ename like ‘%TKA_' D. where ename like ‘%TOK%' 8、()操作符只返回由第一个查询选定但就是没有被第二个查询选定的行。 A、UNION B、UNION ALL C、INTERSECT D、MINUS 9.EMPLOYEES表的结构如下:

相关主题