《ORACLE体系架构和环境变量》由会员分享,可在线阅读,更多相关《ORACLE体系架构和环境变量(8页珍藏版)》请在金锄头文库上搜索。
1、ORACLE 体系架构用户进程服务器进程基本组件概览归档 口志文件勢数文件口令文件数据文件控制丈件数据库重做日志 文件OPACLJ例程共享池SGA库高速緩存数据库缓冲区1尊好琴 高遼緩存缓冲区数据字典L高孫镇静F1山旳池1大型共享迪1(PMON)(SMON)(DBWR)(LGWR)(CKPT)Oracle服务器:Oracle服务器中包含多种文件结构、进程结构和内存结构;但 是,处理SQL语句时,并非所有这些结构都会用到。某些结构用于提高数据库 的性能,确保该数据库在遇到软件或硬件错误时可以恢复,或者执行维护该数据 库所需的其它任务。Oracle服务器包括一个0racle例程和一个0racle数
2、据库。Oracle 例程: Oracle 例程是后台进程和内存结构的组合。只有启动例程后,才 能访问数据库中的数据。每次启动例程时,会分配系统全局区(SGA)并启动 Oracle 后台进程。后台进程代表调用进程执行各种功能。它们把为每个用户运 行的多个0racle程序所处理的功能统一起来。后台进程执行输入/输出(I/O),并 监视其它0racle进程来提高并行性,从而使性能和可靠性更加优越。是一种访问Oracle数据库的方式 始终打开一个,并且只打开一个数据库 由内存结构和后台进程结构组成Oracle 数据库: Oracle 数据库包含操作系统文件(也称为数据库文件),这些 文件为数据库信息提
3、供了实际的物理存储。数据库文件用于确保数据一致性并能 在例程失败时得以恢复。数据库的一般用途是存储和检索相关信息。 Oracle 数据库具有逻辑结构和物理 结构。数据库的物理结构是数据库中操作系统文件的集合。Oracle数据库包含 以下三类文件: 数据文件,包含数据库中的实际数据 重做日志文件,包含数据库的更改记录,可以在出现故障时恢复数据 控制文件,包含维护和验证数据库完整性所需的信息物理结构物理结构包括以下三种文件类型:-控制文件控制文件:存储了数据库的结构信息,还有 checkpoint 信息,同时 rman 的备份 信息也是存储在控制文件中,对于 rman 没有使用 catalog 的
4、话,控制文件是很 重要的,控制文件中的内容分为可重用和不可重用,如数据文件和日志文件的信 息就属于不 可重用的 部 分, rman 的 信息就属 于可 重用的 部分和 control_file_record_keep_time 这个参数有关(控制文件必须保留 rman 信息 的最短时间), 建议将控制文件保存在多个不同的磁盘,这几个文件互为镜象, 如果所有控制文件都损坏可以重建,重建控制文件读取数据头的信息。数据文件:数据库中所有的数据都存储在这类文件中,我将它分为四类,system 文件(10g中是system,sysaux,9i中的system),撤消文件(undo, 个数据库 虽然可以建
5、立多个undo tablespace ,但是一个时刻只能使用其中的一个),临 时文件(主要用来排序),用户数据文件(除去以上三类) 日志文件: 日志记录了数据库中的重做信息,用户的操作都会被记录在日志文件 中,实例恢复利用 status 为 active 和 current 的日志。当数据库异常关机(abort),或者因为某种原因而异常当机,那么下次启动的时候 就要做实例恢复,实例恢复的第一个过程是roll forward (前滚),即将数据库 恢复到当机前的那个时刻。接着就open数据库,数据库打开后做roll back。内存结构Oracle的内存结构由两个内存区组成,分别是:系统全局区(S
6、GA):在例程启动时分配,是Oracle 例程的基本组件程序全局区(PGA):在服务器进程启动时分配OPACLG系统全局区-SGA包括以下几种内存结构:-共享池-数据库缓冲区高速缓存-重做日志缓冲区一其它结构(例如锁定和栓锁管理以及统计数据)-在SGA中还可配置其它两种内存结构;-大型共辜池一 Java 池OPACLGShared poolShared pool : 存 储 最 近 使 用 的 sql 语 句 和 数 据 定 义 , 大 小 设 置 shared_pool_size ,可以通过 alter system 在线改。Shared pool 的主要组成部分库高速缓存区(library
7、 cache),大小受限于shared_pool_size,为了共享相 同的sql语句,避免不要的硬分析library cache使用LRU算法。(相关视图 v$librarycache)1共享 sql 区: 存储 sql 语句的执行计划和分析树,下次运行相同的语句时, 可以直接执行语句,从而避免再次分析 。(语句是否共享和 cursor_sharing 的 设置有关)2共享 plsql 区: 共享最近执行的 plsql 语句,包括分析和编译的程序单元(存 储过程,函数,包和触发器数据字典缓存区(dat dictionary cache ),依赖于shared_pool_size,存储数 据字
8、典信息提高响应时间。 (相关视图 v$rowcache)Buffer cache从数据文件中读取的数据先缓存到data buffer中,如果下一次要读取相同数据 的时候可以直接从data buffer中提取,减少物理读,遵循LRU算法。Buffer cache 大小的设置:1db_cache_size : 默认 cache 的大小,不能设置为 0,从数据文件中读取的 数据默认放这个池。2db_keep_cache_size : 保留池的大小,如果一个表很小而有经常查询,可以 将这个表 keep 到保留池3db_recycle_cache_size: 回收池的大小,如果一个大对象基本不会被重用,
9、 可以放到这个池这三个池相互独立。Log_buffer : 用户对数据库所有修改先存在到 log_buffer 中,然后由 lgwr 进程将 log buffer 中的数据写入日志文件。保证数据的一致性。由 log_buffer 参数控制大小,可 以在线改。Large pool (可选池)共享服务器下,uga优先从large pool分配rman备份也会使用large pool,前提是当backup_slave_io二n (这个参数我在 10g中没找到,不知道被什么参数替代),backup_tape_io_slaves二true,并且 large pool能够分配足够的内存,否则将会在aler
10、t.log中记录一条错误信息, 而且不使用io_slaves做备份和恢复。参数large_pool_size,可以通过alter system 在线改。Java pool (可选)如果安装并且使用java,就要设置java_pool,大小由java_pool_size确定。后台进程维护并加强物理结构与内存结构之间的关系-必备的后台进程:一 DBWnPMONCKPT一 LGWRSMON-可选的后台进程:一 ARCnLMDnRECO- CJQ0LMONSnnn一 DnnnPnnn一 LCKnQMNnORACLE后台进程 :出现检查点 灰数据缓冲区达到阀值 没有空闲缓冲区 出现超时 执行了 rac
11、ping 请求 表空间处于 offline 或 read only 状态 对表执行 Drop 或 truncate 操作 Alter tablespace tablespace_name begin backup;(1)dbwn (必须) :负责将数据库缓存区中的数据写如数据文件。触发条件12345678commit1/3 full1 m3 seconds dbwn writes(2)lgwr (必须) :负责将重做日志缓冲区中的内容写到重做日志文件 ,触发 条件:1.2.3.4.5.(3)smon(必须):例程失败后执行例程恢复 作用:1. 实例恢复。(1)前滚 (2)打开数据库 (3)回滚
12、未提交事务2. 合并空闲空间 (这个好象是数据字典管理里面才有的吧?)3. 释放临时表空间(4)pmon (必须):清楚完成的和失败的进程。作用:清理失败的进程 。(1)回滚事务(2)释放锁 (3)释放资源 (4) 重启死亡的调度器。(5)ckpt (必须) : 更新所有数据文件的头以保存检查点的详细信息。作 用:1 触发 dbwn2 修改数据头的检查点信息3 修改控制文件的检查点信息 分类:1. 完全检查点(alter sys tem checkpoi nt 和正常 shut down)2. 增量检查点。检查点的事件:将内存中的数据块写入磁盘(6)arch (非必须但是非常重要) 作用:Ar
13、ch 进程在归档模式下才存在,当日志切换(包括手工)发生的时候,arch服务将当前的在线日志归档,并切换到下一个日志组,非归档模式下 不存在这个进程。ORACLE 环境变量环境变量主要是.profile和sqlplus中的设置 .profile中是0RACLE_H0ME数据库安装的主目录,ORACLE_BASE 数据库安装的根目录,ORACLE_SID数据库的名字。这些在ORACLE安装的时候必须指定,否则安装不成 功。sqlplus 中是set pagesize 0 / 去掉头顶的空行set linesize 250 /设置行字符数set trims on /去掉空字符set echo off / 关掉回显 set heading off /关掉标题行 set termout off /关掉终端显示set feedback off/关掉行数显示