1、表空间,Oracle中的数据逻辑上存储于表空间(tablespace)中,而物理上则存储于属于表空间的数据文件(datafile)中.Oracle数据库的每个表空间由一个或多个被称为数据文件(datafile)的物理文件构成,这些文件由Oracle所在的操作系统管理. 数据库的数据实际存储在构成各个表空间的数据文件中。例如,一个最简单的Oracle数据库至少包含一个表空间及一个数据文件。再例如,一个数据库可能含有三个表空间,每个表空间由两个数据文件构成(即总共有六个数据文件),表空间概述,数据库是由一个或多个被称为表空间(tablespace)的逻辑存储单位构成。表空间内的逻辑存储单位为段(s
2、egment),段又可以继续划分为数据扩展(extent)。而数据扩展是由一组连续的数据块(data block)构成。,表空间类型,大文件表空间 由一个单一的大文件构成 ,使Oracle可以发挥64位系统的能力 只有本地管理的(locally managed),且段空间自动管理(automatic segment-space management)的表空间(tablespace)才能使用大文件表空间(bigfile tablespace )但是有两个例外:本地管理的撤销表空间(undo tablespace)和临时表空间(temporary tablespace),即使其段(segment)
3、为手工管理(manually managed),也可以使用大文件表空间。 在超大型数据库中使用大文件表空间减少了数据文件的数量,因此也简化了对数据文件的管理工作。由于数据文件的减少,SGA中关于数据文件的信息,以及控制文件(control file)的容量也得以减小 。,使用大文件表空间时需要考虑的因素 : 大文件表空间(bigfile tablespace)应该和自动存储管理(Automatic Storage Management)或其他逻辑卷管理工具(logical volume manager)配合使用,这些工具应该能够支持动态扩展逻辑卷,也能支持striping(数据跨磁盘分布)或R
4、AID。 应该避免在不支持striping的系统上使用大文件表空间,因为这将不利于并行执行(parallel execution)及 RMAN 的并行备份(backup parallelization)。 当表空间正在使用的磁盘组(disk group)可能没有足够的空间,且扩展表空间的唯一办法是向另一个磁盘组加入数据文件时,应避免使用大文件表空间。 如果使用大文件表空间替代传统的表空间,数据库开启(open),checkpoints,以及 DBWR 进程的性能会得到提高。但是增大数据文件(datafile)容量可能会增加备份与恢复的时间,小文件表空间 数据库默认创建的是小文件表空间(smal
5、lfile tablespace),即Oracle中传统的表空间类型。数据库中 SYSTEM 和 SYSAUX 表空间在创建时总是使用传统类型 。,SYSTEM 表空间 每个Oracle数据库都包含一个名为 SYSTEM 的表空间(tablespace),她在数据库创建时由Oracle自动创建. SYSAUX 表空间 SYSAUX 表空间(tablespace)是 SYSTEM 表空间的一个辅助性表空间.在正常的数据库操作中,不允许移除(drop)或重命名(rename)SYSAUX 表空间(tablespace).SYSAUX 表空间也不支持可移动表空间(transportable tabl
6、espace)功能 . UNDO撤销表空间 撤销表空间(undo tablespace)是一个特殊的表空间(tablespace),只用于存储撤销信息(undo information)。用户不能在其中创建段(segment)(例如表或索引)。一个数据库中可以没有撤销表空间,也可以包含多个。在自动撤销管理模式(automatic undo management mode)下,每个Oracle实例(instance)有(且仅有)一个撤销表空间。Oracle在撤销表空间内自动地创建和维护撤销段(undo segment),对撤销数据(undo data)进行管理 TEMP临时表空间 支持排序操作,
7、数据文件概述,Oracle数据库中每个表空间(tablespace)都是由一个或多个物理数据文件(datafile)构成的。一个数据文件只能由一个数据库的一个表空间使用。 Oracle为表空间(tablespace)创建数据文件时(datafile),分配的磁盘空间总和为用户指定的存储容量加管理开销所需的文件头空间。当数据文件被创建后,Oracle所在的操作系统负责清除文件的数据及授权信息,并将她分配给Oracle使用。如果文件很大,这个过程将会消耗较长时间。Oracle数据库中的第一个表空间总是 SYSTEM 表空间,因此Oracle在创建数据库时总是将第一个数据文件分配给 SYSTEM 表
8、空间。,数据文件的内容,当一个数据文件(datafile)首次被创建时,为其分配的磁盘空间被格式化为Oracle格式,此时其中尚不包含任何用户数据。Oracle将使用这些空间存储属于( 与此数据文件对应的)表空间的段(segment),这些空间专为Oracle使用。随着表空间内的数据增长,Oracle使用数据文件中的可用空间为段分配新的数据扩展(extent)。 属于一个表空间(tablespace)的各个方案对象(schema object)的数据物理上存储于构成此表空间的一个或多个数据文件(datafile)中。需要注意的是,并不是一种类型的方案对象需要存储在特定类型的数据文件中,相反,一
9、个数据文件可以存储表空间内各种类型的方案对象。Oracle为表空间内的方案对象分配空间时可以使用一个或多个数据文件。也就是说,方案对象是可以跨数据文件的。除非使用表分布(striping)技术(数据可以被分布存储在多个磁盘上),数据库管理员和用户都不能控制方案对象使用哪个数据文件。,临时数据文件,本地管理的(locally managed)临时表空间(temporary tablespace)使用临时的数据文件(datafile)(临时文件)与普通数据文件类似,但有以下区别: 临时文件总是被设置为 NOLOGGING 模式。 用户不能将临时文件设为之读 用户不能使用 ALTER DATABAS
10、E 语句创建临时文件 介质恢复(media recovery)不能识别临时文件当用户创建临时文件或改变其容量时,Oracle并不保证按照用户指定的文件容量为其分配磁盘空间。在某些文件系统(file systems)中(例如UNIX)磁盘块(disk block)并不会在文件创建或改变容量时分配,而是在其被使用之前 才分配。,控制文件的内容,控制文件(control file)中包含了其所属数据库的信息,实例(instance)在启动,及正常工作期间都需要存取这些信息。控制文件的内容只能由Oracle修改,数据库管理员或用户都不应编辑控制文件 控制文件(control file)中主要包含以下内
11、容: 数据库名(database name) 数据库创建时的时间戳(timestamp) 属于此数据库的数据文件(datafile)及重做日志文件(redo log file)的名称与存储位置 表空间(tablespace)信息 脱机(offline)的数据文件 日志历史信息 归档日志(archived log)信息 备份集(backup set)与备份块(backup piece)信息 数据文件与重做日志的备份信息 数据文件复制信息 当前的日志序列号(log sequence number) 检查点(checkpoint)信息,进程简介,Oracle进程分为两大类 执行应用程序或 Oracl
12、e 工具代码的用户进程(user process) 执行 Oracle 数据库服务器代码的 Oracle 进程(Oracle process)。其中包括服务进程(server process)和后台进程(background process),数据写入进程(DBWn),DBWn 的功能是将数据缓冲区的内容写入数据文件。 DBWn 进程负责将数据缓存区(database buffer cache)内修改过的缓冲区(即 dirty buffer)写入磁盘。 对于大多数数据库系统来说,使用一个数据写入进程(DBW0)就足够了。当系统中数据修改操作较频繁时,DBA 可以配置额外的数据写入进程(DBW1
13、 到 DBW9 及 DBWa 到 DBWj)来提高数据写入的性能。在单处理器系统(uniprocessor system)中,额外的数据写入进程并不能提高系统性能。 初始化参数 DB_WRITER_PROCESSES 用于设定系统中 DBWn 进程的数量,日志写入进程,日志写入进程(log writer process,LGWR)负责对重做日志进行管理将重做日志缓冲区(redo log buffer)内的数据写入磁盘上的重做日志文件中。LGWR 进程将上次写入之后进入缓冲区的所有重做条目(redo entry)写入磁盘中。 重做日志缓冲区是一个循环使用的缓冲区(circular buffer)
14、。当 LGWR 进程将重做条目从重做日志缓冲区写入重做日志文件后,服务进程(server process)就可以用新产生的重做条目覆盖重做日志缓冲区内已写入磁盘的条目。即便重做日志数量巨大,LGWR 进程通常也能保证迅速地向磁盘写入重做条目,确保缓冲区内有足够的可用空间用于写入新条目。 LGWR 进程每次将重做日志缓冲区中的一组连续的缓冲区写入磁盘。LGWR 进程写入的内容 当用户进程(user process)提交一个事务时的提交记录(commit record) 重做日志缓冲区1.每 3 秒写入一次2.当重做日志缓冲区的使用容量超过总容量的 3.当 DBWn 进程向磁盘写入脏缓冲区时(且相
15、关的重做日志还没有写入磁盘),检查点进程(CKPT),当一个检查点(checkpoint)事件发生时,Oracle 需要更新所有数据文件的文件头来记录检查点事件的详细信息。这个工作是由 CKPT 进程完成的 完全检查点将会写出所有的脏块,完全检查点发生时,将不能有新的脏块产生,直到完全检查点完成,以非shutdown abort关闭数据库时就会发生完全检查点,还有就是手动命令:alter system checkpoint; 增量检查点,进程监控进程 PMON,进程监控进程 PMON 当一个用户进程失败后,它将对其进行恢复,将清除相关的数据缓存区并释放被此用户进程使用的资源 PMON 进程会周
16、期性地对调度器(dispatcher)和服务进程(server process)进行检查,重新启动停止运行的进程(不包括 Oracle 有意停止的进程)。PMON 进程还负责将实例和调度器进程的信息注册到网络监听器(network listener)。,系统监控进程(SMON),系统监控进程(SMON) 实例启动时如有需要,系统监控进程(system monitor process,SMON)将负责进行恢复(recovery)工作。此外,SMON 还负责清除系统中不再使用的临时段(temporary segment),以及为数据字典管理的表空间(dictionary managed table
17、space)合并相邻的可用数据扩展(extent)。在实例恢复过程中,如果由于文件读取错误或所需文件处于脱机状态而导致某些异常终止的事务未被恢复,SMON 将在表空间或文件恢复联机状态后再次恢复这些事务。SMON 将定期地检查系统中是否存在问题。系统内的其他进程需要服务时也能够调用 SMON 进程。,Rac环境介绍,什么是群集,1.若干个节点充当一台服务器 Kfhost1,kfhost3 当做一台机器提供数据库服务 2. 群集软件隐藏了结构 3.所有节点都可以对磁盘进行读写操作 4.节点主机操作系统要相同 Kfhost1,kfhost3 是HP-UNIX11.31,Oracle Real Application Clusters,1.访问同一个数据库的多个实例 Kfhost1上实例kfdb1,kfhost2上实例kfdb2 但他们都指向同一个数据库kfdb 2.每个节点一个实例 3软件控制的数据访问,为何使用rac,高可用性:在节点和实例发生故障时保持正常运行。 保证了一个节点失败的情况下数据库可以正常使用 可伸缩性: 根据需要添加节点,删除节点 如果现有节点随着业务量增加,可新添加服务器加入集群,公用网络,节点 1,共享存储,重做日志所有实例,数据库和控制文件,OCR 和 voting 磁盘,操作系统,CRS,集群互联,数据库实例 1,ASM 实例 1,