oracle介绍.ppt_第1页
oracle介绍.ppt_第2页
oracle介绍.ppt_第3页
oracle介绍.ppt_第4页
oracle介绍.ppt_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、内容概要,1. oracle的核心组件 2. 内部主要的运行流程 3. 常用的Debug工具(时间、影响),Oracle结构图,Instance,SGA,Redo LogBuffer,Shared Pool,Data DictionaryCache,Library Cache,DBWR,SMON,PMON,CKPT,LGWR,Others,Userprocess,Serverprocess,PGA,Control files,Data files,Database,DatabaseBuffer Cache,Redo Log files,Java Pool,Large Pool,Paramete

2、r file,Archived Log files,OS,Net,DISK,RAM,Shared Pool,存些什么: 最近经常使用的SQL语句 最近经常使用的数据定义 结构: 库告诉缓存 数据字典高速缓存,Library Cache, Stores information about the most recently used SQL and PL/SQL statements Enables the sharing of commonly used statements Is managed by a least recently used (LRU) algorithm Consist

3、s of two structures: Shared SQL area Shared PL/SQL area Size determined by the Shared Pool sizing,Data Dictionary Cache,A collection of the most recently used definitions in the database Includes information about database files, tables,indexes, columns, users, privileges, and other database objects

4、 Caching data dictionary information into memory improves response time on queries and DML,Sql语句的执行过程,SQL语句有哪些? 查询语句处理 DML语句处理(insert, update, delete) DDL 语句处理(create . , drop . , alter . , ) SQl语句执行过程: parse-execute-fetch 具体些: Sqlasciihashsoft parseexecute hard parse. 再具体些: soft parse 可以直接使用其对应的执行计

5、划对数据进行存取 hard parse先会查找shared pool的空间是否足够,如果不够,利用LRU算法将最近最不常使用的sql换出内存中,在进行相应的转换。,硬解析执行语法分析(很占资源),1.翻译SQL语句,验证它是合法的语句,即书写正确 2.数据字典的查找,以验证是否符合表和列的定义 3.在所要求的对象上获取语法分析锁,使得在语句的语法分析过程中不改变这些对象的定义 4.验证为存取所涉及的模式对象所需的权限是否满足 5.决定此语句最佳的执行计划 6.将它装入共享SQL区 变量绑定可以消除以上这些过程!,Database Buffer Cache, Stores copies of d

6、ata blocks that have been retrieved from the data files Enables great performance gains when you obtain and update data Managed through an LRU algorithm,两个链表,LRU LRU-MRU Dirty List 数据文件中所对应的块与在写链表里面对应的块的内容是不一致的,Redo Log Buffer, Records all changes made to the database data blocks Primary purpose is

7、recovery Changes recorded within are called redo entries Redo entries contain information to reconstruct or redo changes,交互的过程,Server Process用途,为用户应用程序创建的服务进程(或用户/服务进程合并后的服务进程部分)可以完成以下工作: 解析、运行应用程序提交的 SQL 语句 如果数据在 SGA 中不存在,则将所需的数据块从磁盘上的数据文件读入 SGA 的数据缓存区(shared database buffer) 以应用程序能理解的形式返回 SQL 语句的执

8、行结果,常见后台进程、作用、触发条件,DBWn LGWn CKPT ARCn SMON PMON,常见后台进程都做什么,数据写入进程(database writer process,DBWn) DBWn的功能是将数据缓冲区的内容写入数据文件。DBWn 进程负责将数据缓存区(database buffer cache)内修改过的缓冲区(即 dirty buffer)写入磁盘。,DBWn的触发时机,当满足以下条件时,DBWn 进程会将脏缓冲区写入磁盘: 如果服务进程(Server process)扫描了一定数量的缓冲区后仍不能找到可用缓冲区,她将通知 DBWn 进程进行写入。DBWn 在执行其他操

9、作的同时,能够异步地将脏缓冲区写入磁盘。 DBWn 进程周期性地将脏缓冲区写入磁盘,从而使检查点(checkpoint)前移。检查点是进行实例恢复(instance recovery)时应用重做日志的起始点的位置。此位置是由数据缓冲区内时间最早的脏缓冲区决定的。,LGWR 进程,LGWR 进程每次将重做日志缓冲区中的一组连续的缓冲区写入磁盘。 本质:先写Redo保证可恢复然后返回,修改过的数据迟些被DBWn写入数据文件,保证可靠性的同时提供高效性 LGWR 进程何时写: 当用户进程(user process)提交一个事务时的提交记录(commit record) 每 3 秒写入一次 当重做日志

10、缓冲区的使用容量超过总容量的 1/3 当 DBWn 进程向磁盘写入脏缓冲区时(且相关的重做日志还没有写入磁盘),日志切换,归档图,检查点进程(CKPT),当一个检查点(checkpoint)事件发生时,Oracle 需要更新所有数据文件的文件头来记录检查点事件的详细信息。这个工作是由 CKPT 进程完成的。但是将数据块写入数据文件的不是 CKPT 进程,而是 DBWn 进程。,检查点进程触发时机,检查点何时触发 1 At every log switch 2 When an instance has been shut down with the normal, transactional,

11、or immediate option 3 When forced by setting the FAST_START_MTTR_TARGET initialization parameter 4 When manually requested by the database administrator 5 When the ALTER TABLESPACE OFFLINE NORMAL|READ ONLY|BEGIN BACKUPcommand causes checkpointing on specific data files,归档进程(ARCn),归档进程(archiver proce

12、ss,ARCn)在发生日志切换(log switch)时将重做日志文件复制到指定的存储设备中。只有当数据库运行在 ARCHIVELOG 模式下,且自动归档功能被开启时,系统才会启动 ARCn 进程。,系统监控进程(SMON),1.实例启动时如有需要,系统监控进程(system monitor process,SMON)将负责进行恢复(recovery)工作。 2.SMON 还负责清除系统中不再使用的临时段(temporary segment)。 3.SMON 将定期地检查系统中是否存在问题. 系统内的其他进程需要服务时也能够调用 SMON 进程。,进程监控进程(PMON),当一个用户进程(us

13、er process)失败后,进程监控进程(process monitor,PMON)将对其进行恢复。PMON 进程将清除相关的数据缓存区(database buffer cache)并释放被此用户进程使用的资源。例如,PMON 进程将重置活动事务表(active transaction table),释放锁,并从活动进程列表(list of active process)中删除出错进程的 ID。,常见的一些概念,控制文件的作用、内容 检查点的引入 undo和redo的区别 变量绑定的用途 commit有什么影响,控制文件的内容及作用,控制文件的内容 数据库名 表空间信息 所有数据文件的名字和

14、位置 所有redo日志文件的名字和位置 当前的日志序列号 检查点信息 关于redo日志和归档的当前状态信息,控制文件的内容及作用,控制文件的作用 包含维护和验证数据库完整性的必要信息、例如,控制文件用于识别数据文件和重做日志文件,一个数据库至少需要一个控制文件 控制文件把Oracle引导到数据库文件的其它部分。启动一个实例时,Oracle 从参数文件中读取控制文件的名字和位置。最终打开数据库时,Oracle 从控制文件中读取数据文件的列表并打开其中的每个文件,检查点的含义,检查点是一个数据库事件,存在的意义在于减少崩溃恢复的时间,由CKPT后台进程触发,检查点发生时,CKPT会负责通知DBWR

15、将dirty buffer写出到数据文件,CKPT另外一个职责是负责更新数据文件和控制文件中的检查点信息。,undo和redo的区别,区别很明显作用不一样 Undo用于提供rollback的可能,提供读一致性 Redo用于重演事务,为的是恢复 Undo是受Redo保护的,Undo(回滚),UPDATE emp SET sal=4000 WHERE empno=7788; 检查empno=7788记录在Buffer Cache中是否存在,如果不存在则读入Buffer Cache中 在回滚表空间的相应回滚段事务表上分配事务槽,这个操作需要记录Redo信息 在回滚段读入或者在Buffer Cache

16、中创建sal=3000的前镜像,这需要产生Redo信息并记入Redo Log Buffer中 修改Sal=4000,这是update的数据变更,记入Redo Log Buffer中 当用户提交时,会在Redo Log Buffer中记录提交信息,并在回滚段标记该事务为非激活状态(Inactive),Commit之前数据库做了什么?,COMMIT是一个非常快的操作,当我们发布commit命令时,真正困难的动作已经完成,在数据库中已经执行了数据更改,所以已经完成了99%的任务,例如:下列操作已经产生: 1.在SGA(Buffer Cache)中已经生成了undo块; 2.在SGA(Buffer C

17、ache)中已经生成了产生改变的数据块和索引块;3.在REDO LOG BUFFER生成了前面两项的redo信息;4.依赖于前三项产生的数据量大小以及操作需要的时间,buffer中的数据可能已经有一部分输出到了磁盘;5.所有需要的锁已经获得;,Commit之后数据库做了什么?,当执行COMMIT命令时,只执行如下操作: 1.为事务生成SCN:SCN是ORACLE数据库的一种计时信息,用以保证事务的顺序性,同时还用于失败恢复和保证数据库的读一致性和检查点,无论何时何人提交,SCN自动加1 2.将事务相关的未写入redo log file中的redo信息从redo log buffer写入到red

18、o log file,这才是真实的COMMIT,这步操作完成,说明我们已经完成COMMIT,事务从V$TRANSACTION中移除; 3.V$LOCK中记录的SESSION关于该事务的锁会释放,其他需要这些锁的事务被唤醒; 4.执行块清理,清理块头保存的事务信息;,变量绑定(一次解析多次使用),硬解析 一个硬解析需要经解析,制定执行路径,优化访问计划等许 多的步骤.硬解释不仅仅耗费大量的cpu,更重要的是会占 据重要的闩(latch)资源,严重的影响系统的规模的扩大 (即限制了系统的并发行), 而且引起的问题不能通过 增加内存条和cpu的数量来解决。 软解析 当一个sql语句提交后,oracl

19、e会首先检查一下共享缓冲池 (shared pool)里有没有与之完全相同的语句,如果有的 话只须执行软分析即可 ,也就是使用上次硬解析的结果直接执行。,Oracle 性能因素,如何发现问题,操作系统 IO 内存 CPU 数据库 statspack报告 统计信息 等待事件 应用级 Sql语句统计,使用的工具,操作系统 top / sar / vmstat / iostat 数据库 动态性能视图 utlbstat.sql / utlestat.sql statspack AWR/ADDM 等待事件 OEM的tuning包和diagnostics包 自动性能优化指导 应用级 autotrace S

20、ql trace 辅助性的相关文件 告警日志文件 后台进程跟踪文件 用户进程跟踪文件 第三方的一些工具,Unix系统性能监控,CPU Top Sar RAM vmstat IO iostat,top,sar,原理 from /proc/ 使用: 1. rpm sysstat-7.0.2-1.el5.i386.rpm 2.crontab -e 0,10,20,30,40,50 * * * * /usr/lib/sa/sa1 3.sar f /var/log/sa/sa* 选项 4.能干什么?报告 io,cpu,ram,network interrupte,filesystem(file,inod

21、e),Sar(-bBcdqrRuvwWy),Statspack内容,1、负载间档(Loadprofile) 2、实例效率点击率(Instanceefficiencyhitratios) 3、首要的5个等待事件(Top5waitevents) 4、等待事件(Waitevents) 5、闩锁等待 6、首要的SQL(Topsql) 7、实例活动(Instanceactivity) 8、文件I/O(FileI/O) 9、内存分配(Memoryallocation) 10、缓冲区等待(Bufferwaits ),Linux世界进入Oracle世界的入口,V$process 看哪个linux进程当前在执行

22、什么SQL SQLselect /*+ ORDERED */ sql_text from v$sqltext a where( a.hash_value,a.address) in ( select decode(sql_hash_value,0,prev_hash_value,sql_hash_value), decode(sql_hash_value,0,prev_sql_addr,sql_address) from v$session b where b.paddr = (select addr from v$process c where c.spid = ,开发测试时常用的测试手段,

23、sql_trace 全局在 pfile/spfile 中使用 sql_trace=true导致所有进程的活动都被跟踪,后台进程和用户SESSION ,导致严重的性能问题。慎重使用 当前SESSION alter session set sql_trace=true ;alter session set sql_trace=flase ;,autotrace,SET AUTOTRACE OFF - 不生成AUTOTRACE 报告,这是缺省模式 SET AUTOTRACE ON EXPLAIN - AUTOTRACE只显示优化器执行路径报告 SET AUTOTRACE ON STATISTICS

24、- 只显示执行统计信息 SET AUTOTRACE ON - 包含执行计划和统计信息 SET AUTOTRACE TRACEONLY - 同set autotrace on,但是不显示查询输出,一个死锁的例子,A session SQL update a set a1=3 where a1=2; 1 1 row updated SQL update b set b1=4 where b1=2; 3 卡住,执行完4 抛错 update b set b1=4 where b1=2 ORA-00060: deadlock detected while waiting for resource SQL rollback; 5 Rollback complete B session S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论