Sql DBwn何时将数据库缓冲区缓存中的缓冲区更新到数据库磁盘?

Sql DBwn何时将数据库缓冲区缓存中的缓冲区更新到数据库磁盘?,sql,oracle,Sql,Oracle,我正在学习一些关于Oracle数据库体系结构的基本知识,这里有两个示例 执行数据操作语言(DML)语句所涉及的步骤 执行COMMIT命令所涉及的步骤 步骤如下: 服务器进程接收该语句并检查库缓存中是否存在包含类似SQL语句的任何共享SQL区域。 如果找到共享SQL区域,服务器进程将检查用户的 请求的数据和现有共享SQL的访问权限 区域用于处理语句。如果没有,则创建一个新的共享SQL区域 为语句分配,以便可以对其进行分析和 已处理 如果数据和撤消段块不在缓冲区缓存中,服务器进程会将它们从数据文件

我正在学习一些关于Oracle数据库体系结构的基本知识,这里有两个示例

  • 执行数据操作语言(DML)语句所涉及的步骤
  • 执行COMMIT命令所涉及的步骤
  • 步骤如下:

  • 服务器进程接收该语句并检查库缓存中是否存在包含类似SQL语句的任何共享SQL区域。 如果找到共享SQL区域,服务器进程将检查用户的 请求的数据和现有共享SQL的访问权限 区域用于处理语句。如果没有,则创建一个新的共享SQL区域 为语句分配,以便可以对其进行分析和 已处理
  • 如果数据和撤消段块不在缓冲区缓存中,服务器进程会将它们从数据文件读取到缓存中 缓冲区缓存。服务器进程锁定要删除的行 修改
  • 服务器进程记录要对数据缓冲区进行的更改以及撤消更改。这些更改将写入 在删除内存中的数据和撤消缓冲区之前恢复日志缓冲区 被改进的。这称为预写日志记录
  • 撤消段缓冲区包含修改前的数据值。撤消缓冲区用于存储的前映像 数据,以便在必要时回滚DML语句。这个 数据缓冲区记录数据的新值
  • 用户从DML操作中获得反馈(例如操作影响了多少行)
  • 步骤如下:

  • 服务器进程将提交记录以及系统更改号(SCN)放在重做日志缓冲区中。SCN是单调的 递增,并且在数据库中是唯一的
  • LGWR后台进程对所有重做日志缓冲区条目执行连续写入,直到并包括提交记录 重做日志文件
  • 如果修改的块仍在SGA中,并且没有其他会话修改它们,则数据库将删除与锁相关的事务 来自区块的信息
  • 服务器进程向用户进程提供有关事务完成情况的反馈
  • 第一个问题:服务器进程或后台进程是否最终将重做日志文件移动或迁移到数据文件?如果是,如何进行此过程

    感谢Nicholas Krasnov&JSapkota的评论。不存在这种“迁移”过程,因为它们有不同的用途。数据文件是数据库的数据,重做日志文件用于恢复数据库。DBWn负责将数据写入数据文件,LGWR负责将重做日志缓冲区写入磁盘上的活动重做日志文件


    我的第二个问题:DBwn(数据库写入程序进程)何时将缓存中的缓冲区修改为数据库磁盘?在提交之前或之后更新数据库磁盘。

    DBwn不会写入数据库文件,因为发出了
    COMMIT
    语句<代码>提交只意味着这是事务的结束。表或行上的锁被释放,SCN递增,
    LGWR
    将SCN和更改写入联机重做日志文件

    数据库缓冲区缓存有两个列表

    1) Write list
    2) least-recently-used (LRU) list
    
    最近最少使用(LRU)列表具有脏缓冲区。脏缓冲区是指已修改的缓冲区。提交将间接地使缓冲区变脏。它将在缓冲区中,因为它最近被访问过

    DBwn
    既不在提交之前也不在提交之后写入数据文件。它有自己的场景,如检查点发生、脏缓冲区达到阈值或没有可用缓冲区等


    我希望,我回答了你的问题。谢谢。

    DBwn将不会写入数据库文件,因为发出了
    commit
    语句<代码>提交只意味着这是事务的结束。表或行上的锁被释放,SCN递增,
    LGWR
    将SCN和更改写入联机重做日志文件

    数据库缓冲区缓存有两个列表

    1) Write list
    2) least-recently-used (LRU) list
    
    最近最少使用(LRU)列表具有脏缓冲区。脏缓冲区是指已修改的缓冲区。提交将间接地使缓冲区变脏。它将在缓冲区中,因为它最近被访问过

    DBwn
    既不在提交之前也不在提交之后写入数据文件。它有自己的场景,如检查点发生、脏缓冲区达到阈值或没有可用缓冲区等


    我希望,我回答了你的问题。谢谢。

    不,他们没有,LGWR(日志编写器后台进程)将重做日志(仅更改向量)从重做日志缓冲区写入红色日志文件。DBWR(数据库写入程序进程)将脏缓冲区(缓冲区缓存上的修改块、实际数据)写入数据文件。
    将重做日志文件移动或迁移到数据文件?
    数据文件和重做日志文件使用两种完全不同的文件类型。一个永远不会“迁移”到另一个。它们是为不同的目的服务的。LGWR(日志编写器后台进程)将重做日志(仅更改向量)从重做日志缓冲区写入红色日志文件。DBWR(数据库写入程序进程)将脏缓冲区(缓冲区缓存上的修改块、实际数据)写入数据文件。
    将重做日志文件移动或迁移到数据文件?
    数据文件和重做日志文件使用两种完全不同的文件类型。一个永远不会“迁移”到另一个。根据你的回答,我在这个网站上找到了更详细的信息:很高兴帮助你。如果你对答案感到满意,那么接受它作为答案。谢谢。谢谢,根据你的回答,我在这个网站上找到了更详细的信息:很高兴帮助你。如果你对答案感到满意,那么接受它作为答案。非常感谢。