用于存放所有数据库的数据文件,Oracle安装过程中自动建立多个必要的数据文件。这些数据文件用于存放Oracle系统的基本数据。在应用系统开发过程中,我们可根据需要另建立一些数据文件。
如果数据文件按它们存放的数据类型来分的话,可以分为:
用户数据
存放应用系统的数据为用户数据。
系统数据
管理用户数据和数据库系统本身的数据,如数据字典,用户建立的表的名字,类型等都记录在系统数据中。
C 控制文件
控制文件是由Oracle数据库实例在启动时被访问的内部二进制文件,它们所存放的路径由参数文件的control_files=参数来确定.Oracle一般有两个或更多的控制文件,每个控制文件记录有相同的信息,在数据库运行中如果某个控制文件出错时,Oracle会自动使用另外一个控制文件。当所有的控制文件都损坏时系统将不能工作。
Oracle数据库至少有一个控制文件;
一般数据库系统安装完成后,自动创建两个以上控制文件;
为了安全一般建议创建多个控制文件;
控制文件可用下面命令查到:
select name,value from v$parameter where name like 'control_files';
D 重做日志文件
重做日志文件是Oracle系统中一个很重要的文件。特点是:
重做日志是Oracle的日记帐,负责记录所有用户对象或系统变更的信息;
安装完成后有多个重做日志文件,它们是几个分为一组,组内的重做日志文件大小要一样;
为了使系统性能更好可以在创建多重做日志文件组;
重做日志文件可以名下面命令查到:
select * from v$logfile;
E 其它支持文件
除了上面的三类文件外,还有:
Sqlnet.ora文件;
Tnsnames.ora文件;
Listener.ora文件等。
4 重做日志和重做日志工作模式
重做日志、日志文件及重做日工作模式是Oracle系统中很重要的概念,管理员要完全理解它们的原理和使用方法。下面只给简单的概念,有关的管理在另外章节给出。
A 重做日志
Oracle所作的一切操作都记录在日志文件中,Oracle系统在工作当中并不是每作一条记录的修改就立即存盘(写入数据文件),而是只作修改记录,联机重做日志就保存所有这些改变的信息。当所有的修改最后写入数据文件时,所有的修改仍记录在联机重做日志中,这将有利于对这些事务记录进行恢复操作。但如果不是联机重做日志,则只能恢复部分近期的操作。
B 重做日志工作模式
Oracle可以在两种模式之一来工作:
1)ARCHIVELOG模式(可恢复)
Oracle 一般至少有两个日志文件。它们轮流交替地被写入所作的一切修改信息。当系统设置为可恢复模式,Oracle自动将每次即将被覆盖(冲掉)的日志信息先作备份,然后再其上记录所修改的信息。这样的方式,就可以利用备份与恢复工作进行某时期的数据恢复。
2)NOARCHIVELOG模式(有限的恢复)
缺省情况下为NOARCHIVELOG,Oracle不保留旧的重做日志信息(可以在原来基础覆盖写入)。因此一般情况下不可恢复的。
5 数据块、区间和段
A 数据块(data block)
Oracle的数据块也叫Oracle块;
Oracle系统在创建表空间时将数据文件格式化成若干个Oracle块;
每个Oracle块是Oracle系统处理的最小单位;
块的大小在安装系统时确定,可以选择“自定义安装”来设置大小;
块的大小一旦确定下来就不能改动;
块的大小可以从2k至64k不等;
块的大小可以用下面命令查到:
select name,value from v$parameter where name like 'db_block_size';
B 区间(extent)
分配给对象(如表)的任何连续块叫区间;
区间也叫扩展,因为当它用完已经分配的区间后,再有新的记录插入就必须在分配新的区间(即扩展一些块);
区间的大小由 next 决定;
一旦区间分配给某个对象(表、索引及簇),则该区间就不能再分配给其它的对象;
一个对象所用去多少区间可用下命令查到:
select segment_name,tablespace_name,count(*) from dba_extents
having count(*)>1 group by segment_name,tablespace_name;
C 段(segment)
段是指占用数据文件空间的通称,或数据库对象使用的空间的集合;
段可以有表段、索引段、回滚段、临时段和高速缓存段等;
段使用同表空间中的若干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, …
6 Oracle数据库进程
一般情况,当数据库启动完成后(Instance 启动成功)就至少有六个后台进程在活动,这些进程根据数据库的需要而分工不同。他们分别是:
1)数据库写入器(DBWR)
数据库写入器(Database Writer)的任务是将修改后的(在内存)数据块写回数据库文件中。在某些操作系统中,Oracle可以有两个BDWR进程。
2)校验点(CKPT)
是一个可选进程。在系统运行中当出现查找数据请求时,系统从数据库中找出这些数据并存入内存区,这样用户就可以对这些内存区数据进行修改等。当需要对被修改的数据写回数据文件时就产生重做日志的交替写(Switch),这时就出现校验点。系统要把内存中灰数据(修改过)块中的信息写回磁盘的数据文件中,此外系统还将重做日志通知控制文件。DBA可以改变参数文件中CHECKPOINT_PROCESS TRUE来使能( 使有效或无效)该进程。
3)日志写入器(LGWR)
用于将SGA区中的日志信息写入日志文件的进程。一般是用户所作的修改值先记入日志文件。等到一定时才真正将修改结果写回数据文件。
4)系统监控器(SMON)
系统监控器(System monitor)是在数据库系统启动时执行恢复工作的强制性进程。比如在并行服务器模式下(两台服务器共用一磁盘组),SMON可以恢复另一台处于失败的数据库。使系统切换到另一台正常的服务器上。
5)进程监控器(PMON)
进程监控器(Process Monitor)用于终止那些失败的用户,释放该用户所占用的资源等。
6)归档器(ARCH)
可选进程,当数据库系统处于归档(ARCHIVELOG)模式时使用。
7)锁(LCKn)
可选进程,当在并行服务器模式可出现多个锁定进程以利于数据库通信。
恢复器(RDCO)
分布式数据库(不同地点有不同机器和不同的Oracle系统)模式下使用的可选进程,用于数据不一致时作的恢复工作。在RECO解决恢复前,所作的修改数据的标志均标为“可疑”。
9)调度(Dnnn)
可选进程,在多线程下使用,即对每个在用(D000,...,Dnnn)的通信协议至少创建一个调度进程,每个调度进程负责从所联接的用户进程到可用服务器进程的路由请求。把响应返回给合适的用户进程。
10)快照进程(SNPn)
快照进程处理数据库快照的自动刷新,并通过 DBMS_JOB 包运行预定的数据库过程. INITsid.ORA 参数 JOB_QUEUE_PROCESS 设置快照进程数, 参数 JOB_QUEUE_INTERVAL 决定快照进程在被唤醒以处理挂起的作业或事务之前休眠的秒数。
11)并行查询进程(Pnnn)
可根据数据库的活动并行查询选项的设置,ORACLE服务器起动或停止查询进程.这些进程涉及并行索引的创建,表的创建及查询。 启动的数量与参数 PARALLEL_MIN_SERVERS指定的数量相同,不能超出该参数指定的值。
7 Oracle内存结构