是Oracle实例的解释。 Oracle 进程 Oracle有两种类型的进程: 服务器进程和后台进程(server processes and background processes)。 服务器进程 Oracle 服务器进程是处理用户与实例连接的事务。任务是: l 分析和执行应用所发出的SQL语句。 l 从数据文件读必要的数据到SGA区的共享数据区。 l 返回必要信息给应用。 后台进程 Oracle系统使用一些附加的进程来处理系统的必须的工作。这些进程叫后台进程: l 数据库写 (DBW0 或DBWn) l 日志写 (LGWR) l 检测点 (CKPT) l 系统监视 (SMON) l 进程监视 (PMON) l 归档 (ARCn) l 恢复 (RECO) l 锁(LCK0) l 工作队列 (SNPn) l 队列监视 (QMNn) l 发布(Dispatcher) (Dnnn) l 服务器 (Snnn) Oracle 的内存结构(SGA) SGA 结构为: l 数据高速缓冲区 l 重做日志缓冲区 l 共享池 l 大的共享池(可选) l 数据字典缓冲区 l 其它数据缓冲区 §2.3 Oracle数据库文件 ORACLE 数据库是一个复杂的数据库操作系统,由一系列部件组成,主要有:1)初始化参数文件、2)数据文件、3)控制文件、4)日志文件等。 §2.3.1 初始化参数文件 初始化参数文件(initialization parameter file) INITsid.ORA,是 ORALE RDBMS 主要的配置点,它是配置参数和数值的集合。每一个参数值都控制或修改数据库和实例的某个方面。 早期的版本把参数都写在 initsid.ora 文件中,但在ORACLE8 之后,多数参数已不在该文件中出现,需修改这些参数时只能在SQL>下用 SET SESSION 或 SET SYSTEM 来进行。 查看系统参数可用。例如: SQL>select * from v$parameter; 来列出。 Oracle初始化参数文件是一个可以编辑的文本文件。它是在数据库实例启动时被访问,从而得到数据文件、日志文件、控制文件等的路径,此外,初始化参数文件还提供实例所用的参数等。 初始化参数文件 INITsid.ORA 参见 附录 。 §2.3.2 数据文件 用于存放所有数据库的数据文件,Oracle安装过程中自动建立多个必要的数据文件。这些数据文件用于存放Oracle系统的基本数据。在应用系统开发过程中,我们可根据需要另建立一些数据文件。 如果数据文件按它们存放的数据类型来分的话,可以分为: l 用户数据 存放应用系统的数据为用户数据。 l 系统数据 管理用户数据和数据库系统本身的数据,如数据字典,用户建立的表的名字,类型等都记录在系统数据中。 §2.3.3 控制文件 控制文件是由Oracle数据库实例在启动时被访问的内部二进制文件,它们所存放的路径由参数文件的control_files=参数来确定。 Oracle一般有两个或更多的控制文件,每个控制文件记录有相同的信息,在数据库运行中如果某个控制文件出错时,Oracle会自动使用另外一个控制文件。当所有的控制文件都损坏时系统将不能工作。 l Oracle数据库至少有一个控制文件; l 一般数据库系统安装完成后,自动创建两个以上控制文件; l 为了安全一般建议创建多个控制文件; l 控制文件可用下面命令查到: select name,value from v$parameter where name like 'control_files'; §2.3.4 重做日志文件 重做日志文件是Oracle系统中一个很重要的文件。特点是: l 重做日志是Oracle的日记帐,负责记录所有用户对象或系统变更的信息; l 安装完成后有多个重做日志文件,它们是几个分为一组,组内的重做日志文件大小要一样; l 为了使系统性能更好可以在创建多重做日志文件组; l 重做日志文件可以名下面命令查到: select * from v$logfile; §2.3.5 其它支持文件 除了上面的三类文件外,还有: l Sqlnet.ora文件; l Tnsnames.ora文件; l Listener.ora文件等。 §2.4 重做日志和重做日志工作模式 重做日志、日志文件及重做日工作模式是Oracle系统中很重要的概念,管理员要完全理解它们的原理和使用方法。下面只给简单的概念,有关的管理在另外章节给出。 §2.4.1 重做日志 Oracle所作的一切操作都记录在日志文件中,Oracle系统在工作当中并不是每作一条记录的修改就立即存盘(写入数据文件),而是只作修改记录,联机重做日志就保存所有这些改变的信息。当所有的修改最后写入数据文件时,所有的修改仍记录在联机重做日志中,这将有利于对这些事务记录进行恢复操作。但如果不是联机重做日志,则只能恢复部分近期的操作。 §2.4.2 重做日志工作模式 Oracle可以在两种模式之一来工作: 1)ARCHIVELOG模式(可恢复) Oracle 一般至少有两个日志文件。它们轮流交替地被写入所作的一切修改信息。当系统设置为可恢复模式,Oracle自动将每次即将被覆盖(冲掉)的日志信息先作备份,然后再其上记录所修改的信息。这样的方式,就可以利用备份与恢复工作进行某时期的数据恢复。 2)NOARCHIVELOG模式(有限的恢复) 缺省情况下为NOARCHIVELOG,Oracle不保留旧的重做日志信息(可以在原来基础覆盖写入)。因此一般情况下不可恢复的。 §2.5 数据块、区间和段 §2.5.1 数据块(data block) l Oracle的数据块也叫Oracle块; l Oracle系统在创建表空间时将数据文件格式化成若干个Oracle块; l 每个Oracle块是Oracle系统处理的最小单位; l 块的大小在安装系统时确定,可以选择“自定义安装”来设置大小; l 块的大小一旦确定下来就不能改动; l 块的大小可以从2k至64k不等; l 块的大小可以用下面命令查到: select name,value from v$parameter where name like 'db_block_size'; §2.5.2 区间(extent) l 分配给对象(如表)的任何连续块叫区间; l 区间也叫扩展,因为当它用完已经分配的区间后,再有新的记录插入就必须在分配新的区间(即扩展一些块); l 区间的大小由 next 决定; l 一旦区间分配给某个对象(表、索引及簇),则该区间就不能再分配给其它的对象; l 一个对象所用去多少区间可用下命令查到: select segment_name,tablespace_name,count(*) from dba_extents having count(*)>1 group by segment_name,tablespace_name; §2.5.3 段(segment) l 段是指占用数据文件空间的通称,或数据库对象使用的空间的集合; l 段可以有表段、索引段、回滚段、临时段和高速缓存段等; l 段使用同表空间中的若干Oracle块(可以位于不同数据文件中)。 例: CREATE TABLE abc ( empno number(4),ename varchar2(20),sal number(9,2)) TABLESPACE user_data storage(initial 500k next 256k pctincrease 0); 1) 段被分配=初始区间=500k; 2) 当开始的500k用完后就再分配256k; 此时段=500k+256k; 3) 如果所分配的区间又用完后,就再分配256k, … 段(segm |