Oracle数据库系统维护培训(初级).ppt
《Oracle数据库系统维护培训(初级).ppt》由会员分享,可在线阅读,更多相关《Oracle数据库系统维护培训(初级).ppt(151页珍藏版)》请在三一办公上搜索。
1、Oracle数据库系统维护培训(初级),管理数据库的可用性规划和建立数据库管理数据库的物理结构基于数据库设计管理存储空间安全管理网络管理备份恢复性能调整,数据库管理员的任务,体系结构图示,实例(INSTANCE),是存取和控制数据库的软件机制,它由系统全局区(System Global Area,简称SGA)和后台进程组成。,工作方式,PMON,SMON,DBWR,LGWR,内 存,数据文件,日志文件,实例和SID的关系是什么?,SID 就是Oracle 实例的标识,不同的SID 对应不同的内存缓冲(SGA)和不同的后台进程。,Oracle数据库和实例的关系是什么?,单节点数据库多节点数据库,
2、ORACLE 内存管理,ORACLE的内存结构(SGA),Redo logbuffer,Data buffercache,SGA,SGA是ORACLE系统为实例分配的一组共享缓冲存储区,用于存放数据库数据和控制信息,以实现对数据库数据的管理和操作。,Large pool,Java pool,共享池(share pool),大小由 SHARED_POOL_SIZE 定义库缓冲包含语句文本,编译后的代码以及执行计划等 字典缓冲包括表和列的定义和权限等,库缓冲(Library cache),库缓冲 保存最近用过的SQL语句和PLSQL使用过程中的下列信息:语句文本分析树,即编译后的语句执行计划,即优
3、化器定义的语句执行步骤库缓冲 又称为共享SQL区。由于 库缓冲 保存了这些信息,所以当一查询在执行计划被换出之前重新执行时,服务进程不必重新分析语句,因此 库缓冲 能改善应用的性能。.,数据字典缓冲(Data Dictionary Cache),数据字典缓冲 又叫做字典缓冲或行缓冲,是共享池的一部分。它保存最近使用过的数据字典信息如表和列的定义,用户名口令和权限。在分析阶段,服务进程 查找缓冲中的信息以解释语句中指定的对象名并验证访问权限。如有必要服务进程可请求从数据文件中装入这些信息,数据库数据缓冲区(Database Buffer Cache),在oracle 8i 中,使用参数DB_BL
4、OCK_SIZE 确定数据块的大小;使用参数DB_BLOCK_BUFFERS 确定数据块的数目;Data buffer 的大小由DB_BLOCK_SIZE*DB_BLOCK_BUFFERS 来决定;在oracle 9i 中,使用DB_CACHE_SIZE来决定,并且可以通过下面的命令动态的改变其大小:ALTER SYSTEM SET DB_CACHE_SIZE=120M;处理查询时,服务进程在数据库缓冲区 中寻找所需的数据块。如果在缓冲区中找不到所需数据块,服务进程从数据文件中将数据块读入缓冲区。以后对同样数据块的请求在内存中进行,不需物理读写。缓冲区用LRU(Least Recently U
5、sed)置换算法,在检查点发生时由DBWR写入数据文件,写 数 据 文 件,Oracle 根据最近最少被使用(L R U)列表将数据从缓冲区的数据写入数据文件中。Oracle服务器使用延迟、多个块写以减缓磁盘I/O的冲突:灰数据缓冲区的数量达到阈值;当进行扫描而无法找到任何空闲缓冲区时进程扫描了指定数量的块;出现超时每三秒;出现检查点(检查点是使数据库缓冲区高速缓存与数据文件同步的一种方法),日志缓冲区(Log Buffer),重做日志缓冲区用于在内存中存储未被刷新写入联机重做日志文件的重做信息。它是循环使用的缓冲区,这意味着从顶端到底端填充信息,然后又返回到缓冲区的起始点。当重做日志缓冲区填
6、满时,将它的内容写入联机重做日志文件。重做日志缓冲区的大小是由L O G _ B U F F E R初始化参数决定,以字节为单位,决定在内存中保留多少空间缓存重做日志项。所有服务进程(SERVER PROCESS)将重作记录写入重作日志 缓冲在事务提交时由 LGWR写入日志文件一次磁盘写可能包含不同事物的重作记 录,写 日 志 文 件,L G W R执行写入操作的条件是:发生提交(commit)到达其使用极限 重做日志缓冲区满度达到三分之一或3秒在DBW0 将数据库缓冲区高速缓存中修改的块写入数据文件以前 写满1M因此,太大的redo log buffer是没有意义的,因为真正用于生产的时候,
7、很少有3秒内没有提交事物的应用,而且,每到1M就会写redo log file,所以,大多数情况下,超过3M的redo log buffer几乎就浪费了。,Java池,Oracle8i引入的一项新特性(从8.1.5版本后开始出现的),用于支持数据库中java的运行,负责容纳与会话有关的Java代码,以及要由Java虚拟机(JVM)用到的一些数据。她的大小由初始化参数文件中的java_pool_size指定,大缓冲池(Large pool),这个内存结构最早是在Oracle 8.0引入的,它在以下情况使用:使用MTS配置时,因为要在SGA中分配UGA来保持用户的会话,就是用Large_pool来
8、保持这个会话内存在执行并行处理语句(如并行查询)的时候,要分配进程间消息缓冲区的内存,就是用这个内存结构来协调并行处理。使用RMAN做备份的时候,要使用Large_pool这个内存结构来做磁盘I/O缓存器。,程序全局区(PGA),PGA,服务进程,程序全局区(PGA)是一块内存区域,它包含一个服务进程或后台进程的数据和控制信息,PGA 又称为进程全局区(process global area)即一个进程独占的区域,不能共享也不可写。它包含排序区:用于在结果返回用户之前所需的排序会话信息:如此会话的用户特权等信息光标状态:指出当前会话所用的各个光标所处的状态堆栈空间:包含会话的变量进程私有空间,
9、其他进程不能访问PGA在进程创建时分配,进程终止时释放在MTS模式下,部分结构存储在SGA区中,ORACLE 9i 内存管理的新特性,允许动态改变SGA的大小9i还引入了自动优化(self tuning)这个特性,这可以使Oracle根据SQL语句的执行情况动态改变私有内存的大小。增加了一些新的参数,如:SGA_MAX_SIZE DB_CACHE_SIZEDB_KEEP_CACHE_SIZEDB_RECYCLE_POOL_SIZEPGA被逻辑的划分成两个部分:可调整部分:如cursors,bind variables等等地sql 工作区内存结构;不可调整部分:如sort areas,merge
10、 areas等等;有一些新的方法可以用来监视PGA的使用,如:SELECT SUM(PGA_USED_MEM),SUM(PGA_ALLOC_MEM),SUM(PGA_MAX_MEM)FROM V$PROCESS;,续 SGA NF,如果SGA小于128M,granule大小为4M;如果SGA大于128M,granule大小为16M。Buffer Cache的不同组件以granule为最小单位增长或收缩。最小的SGA配置是3个granule,一个用于固定SGA(包括redo buffers),一个用于buffer cache,一个用于shared pool.可以通过alter system命令动
11、态修改buffer cache内存:alter system set db_cache_size=96M;如:SQL alter system set shared_pool_size=25M;System altered,设置SGA_MAX_SIZE时的注意事项,在Windows平台上,Oracle只获得需要的内存(实际的SGA大小),随着物理SGA的变化(管理员发出alter system set shared_pool_size=new_size等),Oracle动态获得/释放内存。在Unix平台上,由于采用了共享内存的结构,Oracle是在启动时就获得那些共享内存段。如果你的SGA开的
12、比SGA_MAX_SIZE小的话,OS的虚拟内存管理会自动把不用的内存放在SWAP空间里面的。SGA_MAX_SIZE设置的太大或者太小都不合适,设置太大在某些平台(如sun)有可能造成操作系统的页交换,设置太小对性能等使用造成不便。,关于SGA的总结,设置之前首先要明确oracle是64bit or 32 bit。windows上存在32bit的限制,32bit 通常 SGA有 1.7G 的限制(某些OS的处理或者WINDOWS上有特定设定可以突破这种限制)。shared_pool_size 过大就可能增加管理负担和latch 等资源的开销,不利于提高系统的性能,如果设置太小,也会降低系统的
13、性能。一般的要根据实际情况的命中率(如statpack等工具分析)具体分析(一般系统有几十兆或者百兆左右就够了,类似ERP这种大应用系统可以设置到超过百兆),log_buffer 一般不超过3M(这个LGWR地工作方式,以及ORACLE对log bugger的使用方式有关)。large_pool_size:如果不设置MTS,通常在 RMAN、OPQ 会使用到,但是在10M50M 应该差不多了。java_pool_size:若不使用java,默认得就可以了(20m33m)。data buffer:在8i中,data buffer=(db_block_size*db_block_buffers);
14、在9i 中可以是 db_cache_size。并不是越大越好,需要根据命中率调整。sort_area_size 这个参数在非MTS下都是属于PGA,不属于SGA,是为每个session单独分配的。,ORACLE 进程管理,Oracle 服务器,服务器,应用/网络服务器,用户,连接数据库,用户,客户,服务器,Serverprocess,Userprocess,服务进程,在ORACLE SERVER所在的机器上运行 在专用服务配置中只对一个用户进程服务使用不同的 PGA处理由客户产生 的请求,并将结果返回客户查询的处理过程:分析SQL命令并生成执行方案。从数据缓冲存储区中读取数据。将执行结果返回给
15、用户。,28,后台进程,29,进程监视进程(PMON),清除异常终止的连接,并撤消异常中断的用户进程,并释放该进程已获得的系统资源或锁。回滚未提交的事务释放分配给终止进程的 SGA 资源重新启动失败的共享服务进程,分配进程和任务队列进程它有规律的被唤醒(metalink note 53711.996说是3秒),也可由其他进程调用(如OS进程)。,SMON:System Monitor,在CLUSTER中的接点失败时自动恢复实例回收不再使用的临时段空间合并连续的空闲空间其他任务.注意:S M O N仅在当创建表空间或表时的缺省存储参数p c t i n c r e a s e不是0 时,合并表空
16、间中的自由空间。如果想让S M O N自动地处理这个操作,至少将p c t i n c r e a s e设置为1。,LGWR:Log Writer,LGWR将重做日志缓冲区的重做日志条目写入到联机重做日志文件的进程。注意:直到Oracle在LGWR完成将重做信息从重做缓冲区刷新到联机重做日志文件之后,Oracle才认为一个事务已完成。在LGWR成功地将重做日志项写入联机重做文件时(并不是改变数据文件中的数据时),将一个成功码返回给服务器进程。,写日志文件,当提交事务处理时(Commit)当重做日志缓冲区的三分之一已满时当重做日志缓冲区中记录了超过1 MB 的更改时在DBWR将数据库缓冲区高速
17、缓存中修改的块写入数据文件以前发生LGWR超时(3秒),检查点进程(CKPT),辅助完成检查点。检查点是一个数据库事件,它更新控制文件和数据文件头。将恢复信息写入文件头。主要是检查点结构信息被记入控制文件与数据文件头。完成实例注册(7.3 only),检 查 点发生的时间,当数据库管理员手动请求时。即使用SQL 命令:ALTER SYSTEM CHECKPOINT,当达到初始化参数LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT 和FAST_START_IO_TARGET 设置时。每次日志切换时(Log Switch)。当已通过正常事务处理或者立即选
18、项关闭例程时(normal,transactional,or immediate)。,数据库写入进程(DBWR),将数据缓冲区中所有修改过的缓冲块数据写到数据文件中,并使用LRU算法来保持缓冲区中的数据块为最近经常使用的,以减少I/O次数,。该进程在启动实例时自动启动。1、用户进程检查DIRTY BUFFER的数量是否超过上 限,超过,该用户进程调用DBWR,写数据。2、用户进程搜寻空闲缓冲区,如没有找到,该用户进 程调用DBWR,写数据。3、DBWR周期性唤醒,一般3秒/次;4、日志写入进程或检查点进程需要有一些记录(主要是系统内部信息)写入到 数据文件,也会调用DBWR。,写数据文件,灰数
19、据缓冲区的数量达到阈值当进行扫描而无法找到任何空闲缓冲区时DBWR 后台进程发生超时(大约每3秒)。发生检查点,ARCH(自动归档进程),数据库可以工作在归档模式或者非归档模式下,一般来说,生产一定要工作在归档模式下,以便在发生故障是可以进行数据的完全恢复。将完成的日志文件写入归档目录维护对数据库的修改历史,确保不会由于磁盘的故障丢失数据归档的方式有两种,一种是DBA手工归档,一种是启动自动归档进程,在日志文件组出现切换时,系统自动完成将旧日志文件的内容拷贝到磁盘或者脱机存储介质上(如磁带机)。,ARCH的参数说明,LOG_ARCHIVE_START:确定了该进程的启动/不启动状态。LOG_A
20、RCHIVE_DEST_n:当数据库在归档模式下操作时,该参数确定了日志文件的归档目标。LOG_ARCHIVE_FORMAT:当数据库在归档模式下操作时,该参数确定了归档日志文件的缺省文件名格式。,ORA-00271 错误的解决,40,RECO,分布式数据库恢复恢复两阶段提交时由于连路问题处于准 备提交阶段的事务,41,LCKn,LMON,LMD0,GMS,LMON,LMD0-在MPP 或 CLUSTER环境下管理分布式锁(DLM)LCKn-在CLUSTER环境下保证实例之间的数据缓冲库缓冲区,字典缓冲的一致性。GMS-Group Membership Service 检测接点的活动性。,专用
21、服务器方式,为每个用户单独开设一个服务器进程。不设置参数:MTS_SERVICEMTS_DISPATCHERSMTS_SERVERSMTS_LISTERNET_ADDRESS,多线程服务器方式,通过调度器为每个用户进程分配服务器进程。设置参数:MTS_SERVICEMTS_DISPATCHERSMTS_SERVERSMTS_LISTERNET_ADDRESS,MTS相关的参数涵义,MTS_SERVICE:服务器名,缺省值为DB_NAME MTS_DISPATCHERS:调度器个数 MTS_SERVERS:可以启动的服务器进程的个数 MTS_LISTERNET_ADDRESS:SQL*NET监听
22、器地址 MTS_MAX_SERVERS:服务器进程的最大数,其他进程,调度进程(Dnnn)快照进程(SNPn)锁进程(LCKn),46,常见问题的处理,NT上如何找到运行的后台进程?SQL select*from v$bgprocess where paddr 00;PADDR NAME DESCRIPTION ERROR-7A1D06BC PMON process cleanup 07A1D0A7C DBW0 db writer process 0 07A1D24BC ARC0 Archival Process 0 07A1D287C ARC1 Archival Process 1 07A1
23、D0E3C LGWR Redo etc.07A1D11FC CKPT checkpoint 07A1D15BC SMON System Monitor Process 07A1D197C RECO distributed recovery 08 rows selectedSQL,47,常见问题的处理,由ARCH引起的数据库挂起?数据库缺省安装时,一般处于非归档模式,用户可根 据需要改为归档模式。在许多情况下用户只修改了数 据库的模式,没有启动ARCH进程,这种情况下,经过一段运行后,整个数据库挂起,查询v$session_wait视图,会发现 archive required 的事件。手工归档
24、或自动启动ARCH 即可解决。还有一种情况是数据库运行在归档状态,但是归档日志所需空间不足,这时数据库挂起,解决方法是解决归档空间不足问题,然后重新启动归档进程。,ORACLE 磁盘管理,ORACLE数据库中的数据逻辑存储在表空间中,物理存储在数据文件中。,Oracle 数据库的磁盘结构,50,所有相关文件类型,参数文件控制文件数据文件重作日志文件归档日志文件跟踪文件告警日志其他文件,51,参数文件,确定实例结构定位控制文件跟踪调试系统,控 制 文 件,控制文件是一个较小的二进制文件,用于描述数据库结构。1、所有数据文件、联机日志文件的名称、位置、状态 和状况都记录在控制文件中。2、在数据库装
25、载(mount)过程中,ORACLE 读取控制文件以定位数据文件和联机日志文件。3、一般建议至少三个控制文件备份,分别放在不同的磁盘控制器上。4、备份时应对控制文件进行拷贝。,控制文件的描述信息如下,数据库名数据文件位置重作日志位置表空间名当前日志文件顺序号检查点信息日志历史备分信息,影响控制文件大小的参数,控制文件的大小受下列参数影响:MAXLOGFILES MAXLOGMEMBERS MAXLOGHISTORY MAXDATAFILES MAXINSTANCESCONTROL_FILE_RECORD_KEEP_TIME(缺省是7天),获取控制文件的信息,V$CONTROLFILE-NAME
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 数据库 系统维护 培训 初级
链接地址:https://www.31ppt.com/p-2938175.html