Oracle笔记整理

对于启动数据库而言,在10G上先是启动监听(lsnrctl start),再是启动数据库(sqlplus / as sysdba startup;),接着启动EM(emctl startdbconsole);  在11G上安装GRID后默认是动态注册数据库实例的。

数据库具体的启动过程这里必须说道SGA和PGA 一个是系统全局区,一个是程序全局区。数据库启动的时候会在内存中划出一部分给oracle,然后启动一些进程,那么就将划分的内存区以及进程称作实例。这个也是最今本的概念了。

SGA:主要分成六部分,(shared pool,Database buffer cache,large pool,java pool,redo log buffer, Streams Pool,还有一些其他的结构)

以下是从网络寻找的资源:

SharedPool :主要由三部分组成,库缓存区,数据字典缓存区,用户全局区。

库缓存区:用来存放一些sql语句,pl/sql的过程包,还有一些系统控制的各种内存结构如锁(lock)机制,库缓存机制执行计划等。这里还涉及到软硬解析,硬解析:指的是在library cachae 中没有缓存。软解析:找到了缓存在library cache。还有一种是软软解析:主要是由于设置了session_cursor_cache Cursor被直接Cache在当前Session的PGA中的,在解析的时候只需要对其语法分析、权限对象分析之后就可以转到PGA中查找了,如果发现完全相同的Cursor,就可以直接去取结果了,也就就是实现了 Soft Soft Parse.;

数据字典缓存区:用来存放一些表的结构以及列定义等,权限等。

用户全局区:主要用来作为用户会话信息以及游标信息。

Buffercache :主要用来缓存一些sql语句要处理的数据,首先oracle会在buffer cache中查找是否存在自己要找的东西,如果没有的话则会去硬盘读出要找的数据,当达到一定条件时(发生checkpoint 时,当free buffer不够时,),最后通过dbwn进程将脏的缓冲区写入到磁盘保证数据的一致性。

Redo logbuffer : 数据库只要发生DMl 或者DDl 或者管理员对数据库做的一些结构性变化时,都会将这些变化记录到redo LOG buffer中的,

当达到一定的条件(redo log buffer 超过三分之一或者1M,距离上一次redo log 写入经过了三秒,用户进行commit命令,dbwn在写入数据之前会先触发lgwn ),数据库会将redo log buffer 中的数据通过LGwn 进程将其写入到 redo log 中。当数据库文件遭遇意外删除,或者数据库实例崩溃后,oracle 则会通过redo log  进行恢复。

Larger  pool :并行处理时,会用到。在进行rman的一些操作用于磁盘Io 缓冲区。共享服务器模式的时候会将  UGA分配到larger pool。

Java pool:用到编译java 语言的时候。

Streamspool :供给oracle流分配的内存,流是用来复制数据库的。

启动完了之后学习了些关于计算机机制的东西:在linux上进行分析磁盘I/O性能的步骤一般分为三步

1:vmstat  1 10  查看b (资源等待队列长度)的值判断系统I/O

2:sar –b  1 10   tps: 每秒向磁盘设备请求数据的次数,包括读、写请求,为rtps与wtps的和。出于效率考虑,每一次IO下发后并不是立即处理请求,而是将请求合并(merge),这里tps指请求合并后的请求计数。rtps: 每秒向磁盘设备的读请求次数。wtps: 每秒向磁盘设备的写请求次数。bread: 每秒从磁盘读的bytes数量。bwrtn: 每秒向磁盘写的bytes数量

3:iostat 1 10  查看那个盘到底出现了io 性能阻塞。

这里在谈一谈RAID  :对于RAID1就是指的镜像盘,那么我们通常选用Raid10 需要四块盘。

SQL语句的执行过程:

客户端输入sql语句,通过网络到达数据库实例,server process 接收到sql语句分配pga,sql解析之后进行执行计划,然后才能执行。

那现在我们来谈谈关于shared pool的内存组成结构:shared pool 物理层面上由许多内存块组成,每个内存块叫做chunk,如果该chunk被存放sql语句,或者执行计划那就被叫做librarycache,如果该chunk存放表的结构那就被叫做directory cache。

这些chunk 被分为四类:

free :这种类型的chunk的不包含有效对象,可以不受限制的分配。

Recr : recreatable,这类chunk里面包含的对象在任何时候都可以被临时移走,并且在需要的时候重新创建。(共享的sql,便是这类型的)

Freeabl:这类chunk包含的对象都曾被session使用过,并且随后被完全或者部分的释放。这种chunk不可被临时从内存移走,因为他们是在处理过程中间产生的,如果移走的话就无法被重建。

Perm:这类包含永久的对象,大型的permanent类型的chunk也可能含有可用空间,这部分可用空间可以在需要的时候被释放回shared pool。

Shared pool 中可用的chunk(free)被串起来成为可用的链表(free list)或者可以叫做bucket。那么在这个bucket上串着的chunk他的大小是不一样的,由小到大的排列顺序,同时每个bucket都有一个size字段,记录该bucket上所能连接的可用chunk大小尺寸。当某个进程需要shared pool 里的chunk,则会到符合空间大小的bucket上扫描,找到一个合适尺寸的chunk。扫描一直找到bucket的最末端,如果找到的chunk必须要的大,那么就会把该chunk拆成两个chunk,不用的那个就称为free的chunk 被挂在当前的bucket上。如果该bucket上找不到需要尺寸的chunk,那么就从下一非空bucket上获得一个最小的chunk。如果剩下的bucket也找不到,那么就扫描已经使用的recreatable类的chunk,从该链表上释放一部分chunk。在这里值得一提的是关于oracle——4031错误,事实上当我们查看v$sgastat可用的shared pool 还是足够的,那是由于发生4031错误的时候已经释放了不少recreatable 的chunk,因此会产生不少可用的内存,但是这些可用的chunk中,没有一个chunk能够以连续的物理内存提供所需的内存空间。

那么写几条常用的sql吧在这里:select count(*)  from x$ksmsp ;计算chunk总数。清空shared pool 释放出更多的 free chunk : alter system flush shared pool;

先整理到这吧。

转载于:https://blog.51cto.com/jesnridy/1337412

Oracle笔记整理相关推荐

  1. oracle笔记整理2

    --创建员工信息表 create table employee ( empno number(4) not null,--员工编号 ename varchar2(10), --员工姓名 job var ...

  2. 尚学堂Oracle笔记整理

    1.解锁scott用户:   alter user scott account unlock; I.在其他用户切换到sysdba用户   conn sys/root as sysdba II.授权   ...

  3. Oracle中各个命中率的总结及调优笔记整理

    Oracle中各个命中率的总结及调优笔记整理 关于Oracle中各个命中率的计算以及相关的调优 1)Library Cache的命中率: .计算公式:Library Cache Hit Ratio = ...

  4. Oracle 数据库整理表碎片

    Oracle 数据库整理表碎片 转载:http://kyle.xlau.org/posts/table-fragmentation.html 表碎片的来源 当针对一个表的删除操作很多时,表会产生大量碎 ...

  5. 运维开发笔记整理-前后端分离

    运维开发笔记整理-前后端分离 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.为什么要进行前后端分离 1>.pc, app, pad多端适应 2>.SPA开发式的流 ...

  6. 《繁凡的深度学习笔记》前言、目录大纲 一文让你完全弄懂深度学习所有基础(DL笔记整理系列)

    <繁凡的深度学习笔记>前言.目录大纲 (DL笔记整理系列) 一文弄懂深度学习所有基础 ! 3043331995@qq.com https://fanfansann.blog.csdn.ne ...

  7. 一文让你完全弄懂逻辑回归和分类问题实战《繁凡的深度学习笔记》第 3 章 分类问题与信息论基础(上)(DL笔记整理系列)

    好吧,只好拆分为上下两篇发布了>_< 终于肝出来了,今天就是除夕夜了,祝大家新快乐!^q^ <繁凡的深度学习笔记>第 3 章 分类问题与信息论基础 (上)(逻辑回归.Softm ...

  8. 一文让你完全弄懂回归问题、激活函数、梯度下降和神经元模型实战《繁凡的深度学习笔记》第 2 章 回归问题与神经元模型(DL笔记整理系列)

    <繁凡的深度学习笔记>第 2 章 回归问题与神经元模型(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net/ http ...

  9. 【mysql学习笔记整理】

    /*mysql学习笔记整理*/ /*常用的数据库操作对象*/ #库的操作 #创建 #数据库的创建 USE mysql; CREATE DATABASE db_x; #删除 #删除数据库 DROP DA ...

  10. Deep Learning(深度学习)学习笔记整理系列之(五)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

最新文章

  1. 中国电子学会青少年编程能力等级测试图形化一级编程题:小鸡与鸭妈拥抱
  2. what's the 回撤
  3. Exp6 信息收集与漏洞扫描 20164314
  4. 关于REST API设计的一些小经验
  5. 【市场调研与分析】Intel发力移动安全领域——By Me at 20140613
  6. 第一阶段SCRUM冲刺 08
  7. 帮你少写一大半参数校验代码的小技巧
  8. c语言交通灯程序闪烁,用C语言编写的交通灯程序
  9. PostCSS深入学习: PostCSS和Sass、Stylus或LESS一起使用
  10. oracle 9i、10g、11g、12c官方文档
  11. PLSQL 11破解码
  12. 乖离率背离公式_通达信指标公式源码操盘K线主图指标
  13. 你知道大量群发邮件用什么邮箱好吗?
  14. C#微信开放平台开发——1、序言
  15. [转载]Shell十三问(入门与提高)
  16. 使用python编程语言编写程序:输入a、b、c三个数,判断a、b、c能否构成三角形,如果能够构成三角形,判断该三角形是等腰三角形还是等边三角形,还是直角三角形,还是一般三角形。并计算周长和面积。
  17. 辐照度贴图的生成算法分析
  18. 新版骗分导论(最少骗到省级三等奖)
  19. 国际标准码 计算机,蒙古文国际标准编码到形码转换方法、装置及计算机终端与流程...
  20. JSP中的include指令和include动作的区别

热门文章

  1. html canvas drawrect 变形,canvas图形变换
  2. OFFICE技术讲座:连续内容分断的规则
  3. MAC编译的JDK执行出错: [libjvm.dylib+0x482a49] PerfDataManager::destroy()+0xab
  4. 管理新语:如果经验有用,大家都去养老院招人了
  5. 麒麟MIPS:用光盘安装提示Out Of Memory,用U盘安装成功
  6. LINUX下载编译ccrtp(未成功)
  7. jogbuild-common.xml:17: Cannot find /home/tsit/tio-software/jogamp/gluegen/make/gluegen-cpptasks.xml
  8. 用shell把所有文件名修改为小写
  9. LINUX下载编译libogg
  10. warning C4996 sprintf This function or variable may be unsafe