老相Oracle DBA学习笔记

所需积分/C币:28 2018-07-09 15:23:57 5.59MB PDF

老相Oracle DBA学习笔记,很详细的,值得下载学习参考,很不错的,看看人家大牛
资源由www.eimhe.com美河学习在线收集提供 物理io:找数据的时候,在 buffer cache中找不到,就到磁盘上面去 读,这种读叫物理读、磁盘读。 命中率:在 buffer cache中有命中率的概念,是L/(L+P),如果命中率 比较大的话,表示逻辑读比较大,物埋读比较小。 命中率低肯定有问题,但是命中率高不一定没有问题。 可以通过 vmstat110和 ostat110查看 先在要修改某个表的数据,现在服务器进程像以前一样,首先会把 表读到内存里面去,服务器进程在内存中对这个表进行修改, oracle 数据库对dbf数据的修改都会产生日志,日志是有服务器进程产生的, 产生的日志会写到 redo log buffer中。 修改完后,内存中的数据跟dbf中的数据不一样的,这时就由DBWr 进程负责把内存修改的数据写回到dbf中,而 redo log buffer的日志写 到lg文件中是由LGWR负责的。而dbW和gW都叫后台进程 所以服务器进程是负责读出数据,在内存中修改,产生日志,写到og buffer里面去,不负责把修改后的数据写回磁盘和把log buffer里面的 日志写到|og文件中。 资源由www.eimhe.com美河学习在线收集提供 客户端输入SQL语句 SQL语句通过网络到达数据库实例 server process接收到SQL语句 1、sq|-》执行计划,然后才能执行 2、解析:消耗很多资源:CPU、IO SQL语句和执行计划缓存在 share poo|中。 检查点进程(CKPT):是周期性运行的,把当前数据库的状态信息, 写到控制文件和数据文件的头部中 系统监视器(SMON):对数据库实例进行维护的,如对共亨池里面 的碎片进程整合,对实例内部进行清理和维护的。主内 进程监视器(PMON):主外的,对服务器进程进行维护的。 归档的工作模式 资源由www.eimhe.com美河学习在线收集提供 share pool share pool 有问题了,可以查看meta|ink 主要是缓存SQL语句和SQL语句的执行计划, SQL语句的执行分3个阶段: 1、解析- parse: share pool的作用 2、执行-exeC 3、获取数据- fetch share pool是一个内存池,里面又分了很多的小块,主要留意 1、free部分,空闲部分 2、 library cache-库缓存,主要缓作SQL语句及其执行计划 3、字典缓存- ow cache/ data dictionary cache: oracle自身的信息 资源由www.eimhe.com美河学习在线收集提供 例:创建一个表 sQL> create table tl as select x from dba objects. 查看数据字典信息 SQL> desc dba tables SQL> select table name, OWNER from dba tables where table name lik TABLE NAME OWNER SYS 所以dba_ tables就是字典信息表。存放的信息就是系统自身的信息 有那些字典可以查看 oracle的官方文档 查看这3块空间的大小 SQL> select from vSsgastat a where a NAME =library cache POOI NAMIE BYTES shared pool library cache 896:256 SQL> select s* from vSsgastat a where a, pool = shared pool and a NAME = free met POOL NAME BYTES shared pool free memory 50998768 SQL> select from vSsgastat a where a NAME=row cache POC NAME BYTES shared pool row cache 7480368 资源由www.eimhe.com美河学习在线收集提供 oracle接受到条sq语句时,服务器进程会先拿SQL语句到 share pol的 j library cache甲面找这条SqL语句以前有没有被解析过,如果 有的话就不用解析了,如果是没有的, oracle就会进程硬解析。 解析:硬解析和软解析 硬解析-一条SQL语句在 library cache甲面没有缓存就要进行硬解析, 含 1、服务器会判断SQL语句语法有没有错误,判断SQL语句所涉及的对 象是否存在,执行这条语句的用户对这个表是否有杖限。 2、生成具体的执行计划,一条SQL语句有N种执行方案,从中挑出最 优的执行计划,这个最消耗资源的一步。 软解析-一条SQL语句在 library cache里面有缓存就要进行软解析,包 含 1、SQL语句的语法 2、判断SQL语句所对应对象的权限 软解析没有生成执行计划这一步,软解析只是做一些常规判断,并不 从N种执行方案中,挑出最优的一个出来。 当一条SQL语句进来了,服务器进程拿到了这条SQL语句到 library cache找,如果这条SQL语句在 Elibrary cache没有,就发生硬解析,如 资源由www.eimhe.com美河学习在线收集提供 果有的话,就发生软解析。 不管是软解析还是硬解析,都用到了数据库本身很多的自身的信息, 如权限信息、对象信息(这些都是字典信息),对SQL语句进行解析 的时候,不管是哪种解析,都要频繁的访问数据字典信息,所以 oracle 就把数据字典信息,放到 share pool甲面了 软硬解析的具体情况 select name, value from vssysstat where name like parse% SQL> select name, value from vSsysstat where name like parse% NAME parse time cpu parse time elapsed parse count (total) parse count (hard) parse count (failures) SQL> 记录着解析的总次数和硬解析的次数,解析失败的次数。 资源由www.eimhe.com美河学习在线收集提供 share pool内存块组成结构 share pool的内存块组成 主要由3部分组成:free、 library cache、 row cache 资源由www.eimhe.com美河学习在线收集提供 但是比较常出问题的就是free和 library cache 我们只能总体设定 share pool的大小,不能设置里面各个 cache ( lbrary cache和 row cache)的具体大小, oracle会自动调整的。 fe空间的内存组成,如下 有很多个小的内存块,使用链 chain把他们链起来,这些内存块都挂 在链上,上面有3个链,这3个链有什么不一样呢?其实每个链上挂的 内存块大小是不一样的,从上往下挂的内存块是越来越大的。 如果这时解析了一个SqL语句,根据解析的SQL语句和执行计划需要 占用的空间,从链上找出一个可以放下SQL语句和执行计划的最小的 内存块,如果现在占用的空问是10K,在链上查找的时候,发现没有 10K的,只有11K的,就是就会把11K的内存块分成2部分,一个是10K 和1K的,那么10K的内行块就分配给SQL语句,并且把这个内存块放 到 library cache中,那么剩下1K的内存块就放在1K的链上。

...展开详情
img
  • 至尊王者

    成功上传501个资源即可获取

关注 私信 TA的资源

上传资源赚积分,得勋章
    最新推荐