当前位置: 首页 > news >正文

关于Oracle的技术问答 (r4笔记第85天)

今天和Oracle的一个资深前辈聊了下,聊了不少技术的问题,他也来了兴致,随机提了几个问题来问我,发现看似简单的问题还是有不少的干货,很多东西似懂非懂其实还是没有深入理解,限于篇幅,整理了一部分的问题,有些问题回答的对,但是感觉理解还是不够清晰深入。log buffer log buffer的作用 logbuffer的作用主要有两部分,生成重做记录,另一部分就是把重做记录写入重做日志文件。 commit操作的时候,是否会刷新log buffer? 其实每一个commit就会触发一次改动向量,完成了一次事务的更新。PGA pga的作用 pga的全称是program global area,它是一个内存区域,该区域中包含了于某个特定服务器进程 相关的数据和控制信息。对于每个session来说,其执行的sql语句锁传入的绑定变量会存储在pga中,需要执行比较复杂的sql语句时,排序和hash join连接这类的session所占用的内存空间也来自于PGA. 进程之间是否会共享PGA? pga所占用的内存区域只能被其所属的进程访问,而不能被其它进程访问,所以pga中也不需要latch这样的内存结构来保护其中的信息。buffer cache buffer cache中的算法 buffer cache中用到的算法有hash算法和LRU算法。 当前台进程发出一个select或者dml语句的时候,oracle会根据执行计划找到符合条件的数据块,然后会根据请求数据块的地址以及数据块的类型作为参数,运用hash算法找到数据块所处的hash bucket,即确定数据块是在那个hash chain上。 LRU算法即最近最少使用的buffer header链表,LRU链表串联起来的buffer header都执行可用数据块,buffer按照被使用的先后顺序挂在LRUlianbiao shang ,先使用的buffer挂在LRU链表的后面,后被使用的buffer则挂在LRU链表的前面。 buffer cache中数据块的状态 脏数据块,空闲数据块,干净数据块,钉住的数据块。对于空闲数据块和干净数据块,都统称为可用数据块。因为其中的内容可以被新的数据内容覆盖。 shared pool 数据字典的信息存储在哪里? 数据字典的信息存储在shared pool中的dictionary cache中。dictionary cache中存放了执行sql语句的过程中,所参照的数据字典的信息,包含sql语句所涉及的表名,表列,权限信息等,dictionary cache中的信息都是以数据行的形式存放的。所以也可以叫做row cache.CKPT 进程CKPT在哪里找到对应的信息。 CKPT即检查点为止(checkpoint position),检查点的位置记录在控制文件中,在检查点队列上串起来的都是脏数据块所对应的buffer header,每次dbwr写脏数据块的时候,也是从检查点队列上扫描脏数据块,然后将脏数据块写入数据文件的。数据恢复 数据恢复时的前滚与回滚的过程 如果数据库实例非正常关闭,则检查点end scn号为空,在数据恢复的时候,会从控制文件中取得检查点的位置,然后smon会到联机日志文件中找到对应的检查点位置,应用所有的重做条目,从而在buffer cache里又恢复了实例奔溃前那个时间点的状态,这个过叫做前滚。 如果前滚完毕之后,smon进程会立即打开数据库,但是这个时候数据库中还含有哪些处于中间状态的,没有提交也没有回滚的数据库,也就是脏数据块,因为没有被提交,所以需要被回滚,打开数据库以后,smon会在后台做回滚的操作。 rman rman配置修改备份文件路径的方法 可以通过em,grid control中的图形界面来修改rman中的备份文件的路径,或者使用config命令方式来设定。调优自己sql调优常用的几个包是? dbms_sqltune,dbms_sql_advisor通过这些也发现自己对数据库有了一定的认识,但是还是需要不断的深化。可能自己碰到好多问题的时候都是囫囵吞枣,一问得细节一点就卡壳。人就是这样的过程中不断的提升自我,也从侧面反映出自己近期有点松懈,没有能够投入更加高效的精力来,努力努力,有则改进,无则加冕,生活本属不易,不能得过且过。:)

相关文章:

  • 【非原创】完全用Linux工作(下)(r4笔记第86天)
  • 【非原创】完全用Linux工作(上)(r4笔记第86天)
  • 一条delete语句的调优(r4笔记第86天)
  • 【非本人原创】突然35岁:捡点我的职业生涯(下)(r4笔记第87天)
  • 【非本人原创】突然35岁:捡点我的职业生涯(上)(r4笔记第87天)
  • delete相关的pl/sql调优(r4笔记第87天)
  • 【非原创】这一生至少当一次傻瓜(r4笔记第88天)
  • 海量数据迁移之数据加载流程(r4笔记第88天)
  • 设计模式之工厂方法(r4笔记第89天)
  • database replay基础学习(r4笔记第90天)
  • 结合EM快速解决复杂的配置问题(r4笔记第91天)
  • 世界级Oracle专家Jonathan Lewis:我很为DBA们的未来担(r4笔记第92天)
  • 基于dba_hist_sqlstat查看sql语句的性能历史(r4笔记第92天)
  • 美国版的愚公-24年造山(r4笔记第93天)
  • awk中的变量(r4笔记第93天)
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • CSS实用技巧干货
  • java2019面试题北京
  • JAVA之继承和多态
  • React Transition Group -- Transition 组件
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 利用jquery编写加法运算验证码
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 如何利用MongoDB打造TOP榜小程序
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 转载:[译] 内容加速黑科技趣谈
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 说说我为什么看好Spring Cloud Alibaba
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #Z2294. 打印树的直径
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (day6) 319. 灯泡开关
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (一)SpringBoot3---尚硅谷总结
  • (转)IOS中获取各种文件的目录路径的方法
  • .htaccess配置重写url引擎
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .net操作Excel出错解决
  • .NET项目中存在多个web.config文件时的加载顺序
  • /*在DataTable中更新、删除数据*/
  • @Query中countQuery的介绍
  • [ C++ ] STL---string类的使用指南
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
  • [COGS 622] [NOIP2011] 玛雅游戏 模拟
  • [CSS] - 修正IE6不支持position:fixed的bug
  • [docker]docker网络-直接路由模式
  • [github配置] 远程访问仓库以及问题解决
  • [LeetCode 127] - 单词梯(Word Ladder)
  • [LeetCode]—Implement strStr() 寻找子串匹配第一个位置 (KMP)
  • [node] Node.js的文件系统