Databasebuffercache用于存储数据文件中的数据块.数据库高速缓存的数据块是高速缓存与数据文件进行信息交换的基本单位.ORACLE8i以前,数据块大小只有一种,9i以后支持2K,4K,8KB,16KB及32KB五种.
用命令
SQL>SHOWPARAMETERDB可以显示当前数据库的BUFFERCACHE.数据库缓存和特点如下:<1>.根据最近最少使用LRU.<2>.由DB_BLOCK_SIZE来指定大小.<3>.ORACLE使用时是以块大小为单位进行数据存取的.还包含以下一些独立的子缓存:<1>.DB_CACHE_SIZE.<2>.DB_KEEP_CACHE_SIZE.<3>.DB_RECYCLE_CACHE_SIZE.注:可以用Altersystemsetdb_cache_advice=on;设置成根据系统的建议来指定大小.
REDOLOGFILE主要是用于重做日志.用命令
SQL>SHOWPARAMETERLOG_BUFFER.SQL>ALTERSYSTEMSETLOG_BUFFER_SIZE=60M.用来显示或修改重做日志缓冲区的一些信息.命令SQL>achiveloglist可以查看数据库当前的归档模式.
LARGEPOOL:与JAVAPOOL一样,都是作为系统可选的内存结构,由SGA来配置.JAVAPOOL:当安装或使用JAVA时才用到.ORACLE内存进程包括两个,一个是SGA,一个是PGA.(1).SGA在ORACLE实例启动时分配,是ORACLE实例的一个基本组件.(2).PGA是在当
服务器进程启动时分配的.
进程结构:<1>.USERPROCESS.用于用户与ORACLESERVER交互的进程.USERPROCESS必须与ORACLE建立连接后才可使用,不可与ORACLESERVER交互.<2>.SERVERPROCESS.SERVERPROCESS在用户与服务之间建立连接后,为执行用户命令的一个进程.<3>.BACKGROUNDPROCESS.后台进程:DATABASEWRITER(DBWn)用来把DATABUFFERCACHE中的脏数据写回到数据库中.(注:脏数据是被改变的数据.)在以下情况下它会写数据库:<1>.在发生CHECKPOINT同步.<2>.脏数据达到阀值.<3>.DATABASEBUFFERCACHE自由
空间太少了.<4>.TIMEOUT(3秒钟.)<5>.RACPINGREQUEST.<6>.TABLESPACEOFFLINE.<7>.TABLESPACEREADONLY.<8>.TABLEDROPORTABLETRUNCATE(表数据清空或表结构删除).<9>.TABLESPACEBEGINBACKUP.由SGA(包含DATABASEBUFFERCACHE,BACKGROUNDPROCESS)----->[DBWn]---->{datafiles,controlfiles,redologfile}---->由此过程改变数据库中的数据.
LOGWRITER(LGWR)日志写进程.在ORACLE环境中.<1>.当COMMIT的时候.<2>.当三分之一
空间满时.<3>.当日志有1MB需要重做时.<4>.每3秒<5>.BEFOREDBWnWRITES.(写数据前先写日志).
REDOLOGBUFFER----->LGWR--->DBWn|-------------------------------------->REDOLOGFILESSYSTEMMONITOR(SMON)系统监控进程主要任务:(1).启动过程(假定DATABASE重启时)如果需要RECOVERY,则此进程会负责打开数据库,及回滚没有提交的事务;以及rollsforwardchangesintheredologs..这些统称为:instancerecovery.(2).对每3秒就对系统自由空间的整理.(COALESCESFREESPACEEVER3SEC.)(3).清空临时段空间(DEALLOCATESTEMPORARYSEGMENTS).这个过程也是在系统启动过程中完成的.
PROCESSMONITOR(PMON)进程监控进程.主要用于回滚异常终止的或被用户强制终止的事务.<1>.rollingbackthetransaction.<2>.releasinglocks.释放锁.<3>.releasingotherresources.<4>.restartsdeaddispatchers.重启死掉的调度器.(在共享
服务器中用).PMON(:IncludeinSGA)----------------------->PGA
CHECKPOINT(CKPT)检查点进程用来在数据库里实现同步,实现之前会强制将脏数据从内在里写到物理文件里.<1>.会启动DBWn来写脏数据(SIGNALLINGDBWnatCKPT.)<2>.完后会更新DATAFILE的HEADER和控制文件的HEADER.而HEADER中有同步所需要的信息,即CHECKPOINT的信息.<3>.在ORACLE中,正常情况下,所有文件必须同期性地同步;靠CHECKPOINT来完成.CKPT(作为后台进程包含在实例中)------------------DATABASE(datafiles,controlfiles,redologfiles.)||______DBWn|________LGWR
ArchivePROCESS(ARCn):归档进程(可选进程),当设置归档模式后,可用来自动备份在线日志,(归档日志是重做日志的备份.)<1>.Automaticallyarchivesonlineredologswhenarchiverlogmodeisset.(设置归档模式后,将自动备份在线日志)
在处理SQL语句时,注意以下过程:<1>.用以下进程连接到实例.------------------用户进程(USERPROCESS).------------------服务器进程(SERVERPROCESS).<2>.ORACLE服务器进程组件的使用依赖于SQL语句的种类.[1].查询语句会返回行.[2].DML语句会记录这种改变.[3].COMMIT保证了事务的RECOVERY.<3>.并不是所有的SQL语句中所有的后台进程都会参与.
总结:ORACLESERVER.ORACLE服务器进程包含一些文件,进程和内存,在执行一条SQL语句时,并非所有这些都会用上,有些进程用于提高数据库的性能;一些用于当发生软件或硬件异常时恢复数据库;或应用于完成其他一些维护数据库的任务.ORACLE服务器包含ORACLE实例和ORACLE数据库.ORACLEINSTANCE:ORACLE实例是用于联系后台进程和内在之间的活动,对数据库进行数据存取前必须先启动实例,每当实例启动时,SGA就被分配给它并启动了一些后台进程.后台进程执行10秒操作并监控有些进程以提供更好的性能.和可靠性.ORACLEDATABASE:数据库包含了系统文件,也称数据库文件,其提供了用以存储数据库信息的实际物理存储区域,用数据文件保证了数据一致性.并在当实例发生失败时恢复数据库.