当前位置:  数据库>oracle

Oracle redo文件记录的内容

    来源: 互联网  发布时间:2017-05-15

    本文导语: redo的内容 Oracle通过redo来实同快速提交,一方面是因为redo log file可以连续,顺序地快速写出,另外一个方面 也和redo记录的精简内容有关.   为了了解redo的内容,先需要了解两个概念:改变向量和重做记录 改变向量(change vector) 改变向...

redo的内容

Oracle通过redo来实同快速提交,一方面是因为redo log file可以连续,顺序地快速写出,另外一个方面

也和redo记录的精简内容有关.

 


为了了解redo的内容,先需要了解两个概念:改变向量和重做记录

改变向量(change vector)

改变向量表示对数据库内某一个数据块所做的一次变更.改变向量(change vector)中包含了变更的数据

块的版本号,事务操作代码,变更从属数据块的地址(DBA)以及更新后的数据.例如,一个update事务包含

一系列的改变向量,对于数据块的修改是一个向量,对于回滚段的修改又是一处向量.

 


重做记录(redo record)

重做记录通常由一组改变向量组成,是一个改变向量的集合,代表一个数据库的变更(insert,update,delete

等操作),构成数据库变更的最小恢复单位.例如,一个update的重做记录包括相应的回滚段的改变向量和相应

的数据块的改变向量等.

 


假定发出了一个更新语句;

update scott.emp  set sal=4000 where empno=7788;

看一下这个语句是怎么执行的

1.检查empno=7788记录在buffer cache中是否存在,如果不存在则读取到buffer cache中.

2.在回滚表空间的相应回滚段事务表上分配事务槽,这个操作需要记录redo信息.

3.从回滚段读入或者在buffer cache中创建sal=3000的前镜像,这需要产生redo信息并记入redo log buffer

4.修改sal=4000,这是update的数据变更,需要记入redo log buffer

5.当用户提交时,会在redo log buffer记录提交信息,并在回滚段标记该事务为非激活(Inactive)

 


下面通过珍上具体的试验来再现这个过程.

1.先通过switch logfile切换日志,使用sys用户进行日志切换,使得接下来的更新可以使用新的日志.

SQL> alter system switch logfile;

 


System altered.

 


SQL> select * from v$log;

 


    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS

---------- ---------- ---------- ---------- ---------- --- ----------------

FIRST_CHANGE# FIRST_TIME

------------- ------------

        1          1        14  52428800          1 NO  ACTIVE

      801067 03-JAN-14

 


        2          1        15  52428800          1 NO  CURRENT

      813289 04-JAN-13

 


        3          1        13  52428800          1 NO  INACTIVE

      764715 30-DEC-13

 


2.更新并提交事务

SQL> select * from scott.emp a where a.empno=7788;

 


    EMPNO ENAME      JOB              MGR HIREDATE            SAL      COMM

---------- ---------- --------- ---------- ------------ ---------- ----------

    DEPTNO

----------

      7788 SCOTT      ANALYST        7566 19-APR-87          3000

        20

 

 

 

SQL> update scott.emp  set sal=4000 where empno=7788;

 


1 row updated.

 


SQL> commit;

 


Commit complete.

 

 

 

3.使用sys用户在另外的session转储日志文件:

SQL> alter system dump logfile '/u01/app/oracle/product/10.2.0/oradata/jingyong/redo02.log';

 


System altered.

 


SQL> select

  2  d.value||'/'||lower(rtrim(i.instance,

  3  chr(0)))||'_ora_'||p.spid||'.trc' trace_file_name

  4  from ( select p.spid

  5  from sys.v$mystat m,

  6  sys.v$session s,sys.v$process p

  7  where m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr) p,

  8  ( select t.instance from sys.v$thread  t,sys.v$parameter v

  9  where v.name = 'thread' and

 10  (v.value = 0 or t.thread# = to_number(v.value))) i,

 11  ( select value from sys.v$parameter

 12  where name = 'user_dump_dest') d

 13  /

 


TRACE_FILE_NAME

--------------------------------------------------------------------------------

/u01/app/oracle/admin/jingyong/udump/jingyong_ora_3969.trc


    
 
 

您可能感兴趣的文章:

  • Linux平台下Oracle 密码文件重建
  • Oracle数据库访问参数文件的顺序
  • Oracle 对数据文件大小的限制
  • Oracle移动数据文件到新分区步骤分析
  • 在jsp文件中怎么设置oracle的路径:很简单的,只是因为我不会;
  • Oracle的spfile参数文件
  • linux下通过对文件读取方式查询oracle的版本信息
  • 求高手指点shell导入.dat文件到ORACLE数据库
  • jsp文件连接oracle失败
  • linux 安装 oracle 运行./runinstall 提示没有这个文件
  • oracle删除文件后数据库启动不了的处理方法
  • 请教:为什么删除不掉?我用超级用户删除某一文件夹rm -R oracle失败。
  • Oracle控制文件多元化处理
  • Oracle数据库逻辑备份的SH文件
  • 利用多个转储文件导出大量Oracle数据
  • 50分的题:如何给oracle减肥?在linux多目录的环境下查找体积最大的单个文件??
  • 用oracle pl/sql 从A unix机器,去读取B unix机器上的一个文件,怎么实现?
  • 读取oracle数据库表写文件慢
  • 如何向oracle中写入一个大文件?谢谢!
  • jsp文件上传smartupload到oracle数据库中没有longblob的数据类型如何处理的?
  • 从jsp想oracle插入记录的顺序问题
  • 紧急求救:为什么oracle只能选择一定数据的记录
  • Web服务器/前端 iis7站长之家
  • ejb的bmp向oracle表插入图片记录的问题!
  • 请问怎么用jsp语句删除oracle中的一条记录?
  • 给200分:oracle的jdbc有BUG??为何在servlet中记录数不能超过120条?
  • 关于JDBC访问Oracle返回数据集的记录限制的问题
  • Oracle 如何快速查找和删除重复记录
  • Oracle 当前用户下所有表的记录总数
  • Oracle中用Rowid查找和删除重复记录
  • 如何确定Oracle数据库表重复的记录
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在Oracle的SQLPLUS下显示CLOB中的内容
  • 请问保存文章内容的字段应用什么类型的(oracle),急!!!
  • Oracle中对超长内容的处理
  • Oracle的回滚段存储内容分析
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,