关于Oracle的技术问答

简介: 今天和Oracle的一个资深前辈聊了下,聊了不少技术的问题,他也来了兴致,随机提了几个问题来问我,发现看似简单的问题还是有不少的干货,很多东西似懂非懂其实还是没有深入理解,限于篇幅,整理了一部分的问题,有些问题回答的对,但是感觉理解还是不够清晰深入。
今天和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

通过这些也发现自己对数据库有了一定的认识,但是还是需要不断的深化。可能自己碰到好多问题的时候都是囫囵吞枣,一问得细节一点就卡壳。人就是这样的过程中不断的提升自我,也从侧面反映出自己近期有点松懈,没有能够投入更加高效的精力来,努力努力,有则改进,无则加冕,生活本属不易,不能得过且过。:)
目录
打赏
0
0
0
0
43
分享
相关文章
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
136 0
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
|
10月前
|
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(二)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
93 0
"挑战极限!Oracle数据库精英试炼场:夺命连环5问,你能否一路披荆斩棘,登顶技术巅峰?"
【8月更文挑战第9天】Oracle,数据库领域的巨擘,以卓越的数据处理能力、稳定性和安全性成为企业级应用首选。今天我们带来“Oracle夺命连环25问”。首问:核心组件有哪些?答:实例(含内存结构和后台进程)、物理存储(数据文件、控制文件等)及逻辑存储(表空间、段等)。第二问:如何理解事务隔离级别?答:Oracle支持四种级别,默认READ COMMITTED,避免脏读,但可能遇到不可重复读和幻读。
73 0
技术好文共享:谁说阿里云不能跑Oracle,让驻云架构师告诉你怎么办!
技术好文共享:谁说阿里云不能跑Oracle,让驻云架构师告诉你怎么办!
66 0
PostgreSQL技术大讲堂 - 第27讲:Oracle-FDW部署
从零开始学PostgreSQL,PG技术大讲堂 - 第27讲:Oracle-FDW部署
239 2
|
10月前
|
JAVAEE框架数据库技术之11 oracle入门
JAVAEE框架数据库技术之11 oracle入门
187 0
JAVAEE框架数据库技术之11 oracle入门
|
10月前
|
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(一)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
83 0
Python 技术篇-操作oracle数据库执行SQL语句报错,提示ORA-00911: 无效字符解决方法
Python 技术篇-操作oracle数据库执行SQL语句报错,提示ORA-00911: 无效字符解决方法
601 0
Python 技术篇-操作oracle数据库执行SQL语句报错,提示ORA-00911: 无效字符解决方法

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等