Database buffer cache 用于存储
数据文件中的
数据块.
数据库高速缓存的
数据块是高速缓存与
数据文件进行信息交换的基本单位.
ORACLE8i以前,
数据块大小只有一种,9i以后支持2K,4K,8KB,16KB及32KB五种.
用命令SQL>SHOW PARAMETER DB可以显示当前
数据库的BUFFER CACHE.
数据库缓存和特点如下: <1>.根据最近最少使用LRU. <2>. 由DB_BLOCK_SIZE来指定大小. <3>.
ORACLE使用时是以块大小为单位进行
数据存取的. 还包含以下一些独立的子缓存: <1>.DB_CACHE_SIZE. <2>.DB_KEEP_CACHE_SIZE. <3>.DB_RECYCLE_CACHE_SIZE.注:可以用Alter system set db_cache_advice=on;设置成根据系统的建议来指定大小.
REDO LOG FILE主要是用于重做日志.用命令SQL>SHOW PARAMETER LOG_BUFFER. SQL>ALTER SYSTEM SET LOG_BUFFER_SIZE=60M.用来显示或修改重做日志缓冲区的一些信息.命令SQL>achive log list 可以查看
数据库当前的归档模式.
LARGE POOL: 与JAVA POOL一样,都是作为系统可选的内存结构,由SGA来配置.JAVA POOL: 当安装或使用JAVA时才用到.
ORACLE内存进程包括两个,一个是SGA,一个是PGA. (1).SGA在
ORACLE实例启动时分配,是
ORACLE实例的一个基本组件. (2).PGA是在当
服务器进程启动时分配的.
进程结构: <1>.USER PROCESS.用于用户与
ORACLE SERVER交互的进程.USER PROCESS必须与
ORACLE建立连接后才可使用,不可与
ORACLE SERVER交互. <2>.SERVER PROCESS.SERVER PROCESS在用户与服务之间建立连接后,为执行用户命令的一个进程. <3>.BACKGROUND PROCESS. 后台进程:DATABASE WRITER (DBWn)用来把DATA BUFFER CACHE中的脏
数据写回到
数据库中. (注:脏
数据是被改变的
数据.) 在以下情况下它会写
数据库: <1>.在发生CHECKPOINT同步. <2>.脏
数据达到阀值. <3>.DATABASE BUFFER CACHE 自由空间太少了. <4>.TIMEOUT (3秒钟.) <5>.RAC PING REQUEST. <6>.TABLESPACE OFFLINE. <7>.TABLESPACE READONLY. <8>.TABLE DROP OR TABLE TRUNCATE (表
数据清空或表结构删除). <9>.TABLESPACE BEGIN BACKUP. 由SGA (包含DATABASE BUFFER CACHE,BACKGROUND PROCESS)-----> [ DBWn ]----> {data files, control files, redo log file} ---->由此过程改变
数据库中的
数据.
LOG WRITER (LGWR) 日志写进程. 在
ORACLE环境中. <1>.当COMMIT的时候. <2>.当三分之一空间满时. <3>.当日志有1MB需要重做时. <4>.每3秒 <5>.BEFORE DBWn WRITES.(写
数据前先写日志).
REDO LOG BUFFER----->LGWR--->DBWn |--------------------------------------> REDO LOG FILES SYSTEM MONITOR (SMON)系统监控进程 主要任务: (1).启动过程(假定DATABASE重启时)如果需要RECOVERY,则此进程会负责打开
数据库,及回滚没有 提交的事务;以及rolls forward changes in the redo logs..这些统称为:instance recovery. (2).对每3秒就对系统自由空间的整理.(COALESCES FREE SPACE EVER 3 SEC.) (3).清空临时段空间(DEALLOCATES TEMPORARY SEGMENTS). 这个过程也是在系统启动过程中完成的.
PROCESS MONITOR (PMON) 进程监控进程. 主要用于回滚异常终止的或被用户强制终止的事务. <1>.rolling back the transaction. <2>.releasing locks.释放锁. <3>.releasing other resources. <4>.restarts dead dispatchers.重启死掉的调度器.(在共享
服务器中用). PMON (:Include in SGA)----------------------->PGA
CHECKPOINT (CKPT) 检查点进程 用来在
数据库里实现同步,实现之前会强制将脏
数据从内在里写到物理文件里. <1>.会启动DBWn来写脏
数据(SIGNALLING DBWn at CKPT.) <2>.完后会更新DATAFILE的HEADER和控制文件的HEADER.而HEADER中有同步所需要的信息,即 CHECKPOINT的信息. <3>.在
ORACLE中,正常情况下,所有文件必须同期性地同步;靠CHECKPOINT来完成. CKPT(作为后台进程包含在实例中)------------------DATABASE (data files,control files,redo log files.) | |______DBWn |________LGWR
Archive PROCESS (ARCn) :归档进程(可选进程),当设置归档模式后,可用来自动备份在线日志,(归档日志是重做日志的备份.)<1>.Automatically archives online redo logs when archiverlog mode is set. (设置归档模式后,将自动备份在线日志)
在处理SQL语句时,注意以下过程: <1>.用以下进程连接到实例. ------------------用户进程(USER PROCESS). ------------------
服务器进程(SERVER PROCESS). <2>.
ORACLE服务器进程组件的使用依赖于SQL语句的种类. [1].查询语句会返回行. [2].DML语句会记录这种改变. [3].COMMIT保证了事务的RECOVERY. <3>.并不是所有的SQL语句中所有的后台进程都会参与.
总结:
ORACLE SERVER.
ORACLE服务器进程包含一些文件,进程和内存,在执行一条SQL语句时,并非所有这些都会用上,有些进程用于提高
数据库的性能;一些用于当发生软件或硬件异常时恢复
数据库;或应用于完成其他一些维护
数据库的任务.
ORACLE服务器包含
ORACLE实例和
ORACLE数据库.
ORACLE INSTANCE:
ORACLE实例是用于联系后台进程和内在之间的活动,对
数据库进行
数据存取前必须先启动实例,每当实例启动时,SGA就被分配给它并启动了一些后台进程.后台进程执行10秒操作并监控有些进程以提供更好的性能.和可靠性.
ORACLE DATABASE:
数据库包含了系统文件,也称
数据库文件,其提供了用以存储
数据库信息的实际物理存储区域,用
数据文件保证了
数据一致性.并在当实例发生失败时恢复
数据库.