Oracle Architecture Components (Oracle结构组件)

1.由哪些组件组成
2.建立连接时需要哪些组件

ORACLE由两部分:实例和数据库
实例由以下组成: SGA,Shared  pool,Database buffer cache,Redo log buffer cache.
数据库由物理文件组成,其中必须有的文件是:数据文件,控制文件,重做日志
另外还有:参数文件,口令文件,归档日志文件(这三个不是必须的)

    用户建立连接后,启动一个服务器进程,用来将来代替用户进程完成SQLCOMMAND,再通过ORACLE实例实现对数据库的相关文件进行改变(数据进行读取或修改).用户进程不可以直接操作数据库,而必须通过建立连接后,再通过服务器进程来完成.
ORACLE SERVER 由两个部分组成,
1.INSTANCE:又由内存结构和后台进程
2.DATABASE:又由数据文件,日志文件和控制文件组成<这三个文件是必需的>.CONTROL FILE是用来连接实例和DATABASE的
SQL>SHUTDOWN IMMEDIATE
SQL>STARTUP NOMOUNT
SQL>ALTER DATABASE MOUNT
以上三个过程就是通过CONTROL FILE来连接实例和数据库.
SQL>ALTER DATABASE OPEN
在OPEN的过程对DATABASE的数据文件和重做日志文件进行一次性的验证,验证它们的状态.ORACLE INSTANCE:存取数据库的一个手段
 一个DATABASE与INSTANCE之间是1:N的关系,一个INSTANCE只能操作一个DATABASE,由内存结构(共享池,
 BUFFER CACHE,REDO LOG BUFFER CACHE)及相应的进程结构组成(PMON<程序监控进程>,SMON<系统监控进程>,CKPT<检查点进 程>)SQL>SHOW SGA ---显示DATABASE内存结构信息
SQL>SET WRAP OFF
SQL>SET LINESIZE 200
以上这两个是设置行宽
SQL>SELECT * FROM V$BGPROCESS;
将看到在这个系统中所有可能使用到的进程,其中PADDR并不每个进程都分配到有效的地址,即并不是每个进程都是必须的.
SQL>SELECT * FROM V$BGPROCESS WHERE PADDR<>'00'
将显示所有必需的进程.ESTABLISHING A CONNECTION AND CREATING A SESSION
连接到ORACLE实例包括建立一个用户连接及创建会话.SQL>SELECT * FROM V$CONTROLFILES; --显示现系统下由几个控制文件组成
SQL>SELECT * FROM V$DATAFILE;     --显示由几个数据文件组成
SQL>SELECT * FROM V$LOGFILE;      --显示由几个日志文件组成ORACLE MEMORY STRUCTURE (内存结构)
由两部分组成:
 1.SGA
   SGA是动态的,其最大值由SGA_MAX_SIZE指定,SGA的内存由SGA COMPONENTS来动态调整.
 2.PGA 是不共享的,即其包含的信息是不一样的,有两个可享的内存可以由SGA配置
    <1> LARGE POOL
    <2> JAVA POOLSQL>SHOW PARAMETER SHARED
SQL>SHOW PARAMETER DB_CACHE
SQL>SHOW PARAMETER LOG
以上三个命令是用于查看相关内存信息
SQL>ALTER SYSTEM SET DB_CACHE_SIZE=20M;
所有内存大小总和不能大于SGA_MAX_SIZE的值,当提示信息出现?号或乱码时,是由于系统的语言问题.
可以通过ALTER SESSION SET NLS_LANGUAGE='AMERICAN'或ALTER SESSION SET NLS_LANGUAGE="SIMPLE CHINESE"SHARED POOL (共享池)
含:<1>LIBRARY CACHE 库缓存
   <2>DATA DICTIONARY CACHE 数据字典缓存,有的地方又称行CACHE,由SHARED_POOL_SIZE指定大小.
SQL>ALTER SYSTEM SET SHARED_POOL_SIZE=64M;LIBRARY CACHE 主要为提高代码的共享,存储的是最近使用的SQL和PL/SQL代码.
<1>.用最近最少使用(LRU)算法
<2>.包括两个结构 1:共享SQL代码 2:共享PL/SQL代码
<3>.不可直接定义,而由SHARED POOL SIZE决定.DATA DICTONARY CACHE.
如:SQL>SELECT * FROM AUTHORS;
执 行此命令的过程是:首先确认是否存在AUTHORS,,然后确认字段存不存在,再检查语法,最后验证权限,而这些信息就属于DATA DICTIONARY CACHE的内容.其包含的信息有:DATABASE FILES,表,索引,字段,用户,权限和其他数据库对象.
 <1>.主要用来改变系统的感应时间和性能.
 <2>.通过改变SHARED POOL大小来设置,DATA DICTIONARY CACHE不能单独设置大小.

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)-----> ----> {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 LOGFILES                                                      
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> 
总结:             
ORACLE SERVER. ORACLE服务器进程包含一些文件,进程和内存,在执行一条SQL语句时,并非所有这些都会用上,有些进程用于提高数据库的性能;一些用于当发生软件或 硬件异常时恢复数据库;或应用于完成其他一些维护数据库的任务.ORACLE服务器包含ORACLE实例和ORACLE数据 库.             
ORACLE INSTANCE: ORACLE实例是用于联系后台进程和内在之间的活动,对数据库进行数据存取前必须先启动实例,每当实例启动时,SGA就被分配给它并启动了一些后台进 程.后台进程执行10秒操作并监控有些进程以提供更好的性能.和可靠性.             
ORACLE DATABASE: 数据库包含了系统文件,也称数据库文件,其提供了用以存储数据库信息的实际物理存储区域,用数据文件保证了数据一致性.并在当实例发生失败时恢复数据库.
posted on 2008-06-24 09:07  Alex.Zhang  阅读(727)  评论(1编辑  收藏  举报