• 教为学:Oracle 11g OCP之路(五):体系结构概要


    前言
    这是非常纠结的一节,该简单还是该详细。
    简单了等于啥也没说,详细了,实话就是很多地方,我也搞不懂。
    说得简单就几个物理文件,几个内存块,几个进程干什么的。
    说得难它涉及到整个Oracle的运行原理。
    这里面难度的拿捏,我尽力而为,而且上一篇还有一部分没来得及说,主要昨天时间紧,以后有时间补上。
    物理结构
    内存我们是看不到的,物理结构肯定在硬盘上,我们先上张图。
    1、控制文件(control file)
    控制文件除了我们上面目录上那个之外,还有一个,这个有什么特点?如果我们找出来,用编辑器打开,发现就是一样的。完全一模一样。
    一模一样的东西几个,有什么用?
    镜像是因为这个文件太重要,所以要多备份一个,甚至几个,以保障某一个损坏的情况下,数据库仍能正常运行。
    至于有什么作用,下一篇我们再说。
    2、数据文件(data file)
    数据文件是数据库存放数据的地方。这点毋庸置疑。
    文件全在我们上面的那个目录。
    文件的具体详情,也是以后再说。
    3、日志文件(log file)
    我能说这就是存放日志的文件吗?
    我能说详情以后再说吗?
    我觉得目前为止,我们确实可以这样说。
    你了解有这么三种文件就行了。
    对应在哪里,怎么查找。
    Instance
    先盗一幅图。
    1) SGA
    我要强调的是SGA是共享的,是共享的shared是它的属性。
    第一张图
    第二张图
    再上张图
    1、buffer cache
    里面存放着从磁盘读到内存的数据块。这些数据可以被所有会话访问到,是全局共享的。
    它又分为几种。
        1.default pool
        正常情况下,数据都存放在这块地方。同时也会根据过期算法把过期的脏数据写到磁盘里。(写到磁盘的什么文件里面?我们上面说了三种,哪一种?)
        2.keep pool
        将一些数据始终固定在内存中。
        3.recycle pool
        存放一些不常用的数据,避免在default pool中抢位置。
        4.2k、4k等等
        把非标准的数据块存放在这里。至于什么是标准数据块,我也只能以后再说。
    2、redo log buffer
    redo log buffer存放的是数据库产生的redo数据。什么叫redo数据,现在不说。
    redo log buffer以循环写的方式写到磁盘中,磁盘中的哪里?我们上面不也是有3种磁盘文件吗?redo01,redo02,redo03里面。
    3、shared pool
    用来放sql
    1.library cache:保存着sql和pl/sql包以及很多重要信息,比如执行计划之类,控制结构锁。这里主要涉及硬解析和软解析。
    2.data dictionary cache:数据字典的一些数据信息、结构信息。在sql被解析的时候需要频繁访问。
    3.Server Result Cache:保存了一些sql的结果集,默认不开启。需要强制启用。
    4.reserved pool:系统保留区。
    4、large pool
    主要供并行,备份,恢复的时候使用。
    5、streams pool
    使用流复制之类的时候用到的内存区。
    6、java pool
    java代码的运行区域。
    7、fixed pool
    保留通用的数据库和实例信息。
    PGA
    是进程专属的内存区域。
    组成部分就不详细解释了。
    后台进程
    关于后台进程,我们先上一张图。
    SMON:
    启动实例的恢复。
    清理和释放临时段上的数据。
    对于字典管理表空间,可以合并连续的extent。
    维护回滚段online,offline以及空间的回收。
    简单说恢复清理任务。
    PMON:
    进程异常终止,
    会话被杀掉,
    事务超过空闲时间,
    网络连接超时,
    回滚未提交数据,释放事务相关资源。
    DBWn:
    负责把buffer cache中的数据写入硬盘数据文件中。
    LGWR:
    负责把log buffer中的数据写入磁盘上online redo log file。
    ARCn:
    在归档模式下将online redo log file写入指定位置。
    CKPT:
    通知DBWn将内存数据写入硬盘文件。
    总结
    我觉得最开始我们没必要记住这些东西,没必要,有个大概的了解就足够了。
    三大块:
    内存:提高数据查询的速度,更好的提升数据的处理速度。
    后台进程:为了完成特定的任务的服务进程。
    数据文件:数据永久性保存。
    知道个大概就行了,最后送上我当初自己画的丑图。



    我坚信初学者更习资料是自己亲手记录。
    我坚信最好的加明白初学者学习的困难在哪里。
    我坚信最好的学学习方法是自己动手。
    我坚信最好的检验方式就是能把自己所学到的东西转手教给别人。
                                     -----作者: 高鹏
  • 相关阅读:
    Action直接访问Servlet API
    Struts2与Struts1的对比
    参入github上的开源项目的步骤
    TortoiseSVN中图标的含义
    eclipse 快捷键
    base(function strchr)
    1
    Java 关于路径
    java初阶
    关于C++中计时的方法
  • 原文地址:https://www.cnblogs.com/jiaoweixue/p/3133334.html
Copyright © 2020-2023  润新知