`

oracle 重启动 网络收藏

    博客分类:
  • java
阅读更多
update test set x=1 where y=1; 
delete from test where y=1; 
它是分为两步:
1. 根据where条件找出表中满足更新条件的数据行;
2. 更新步骤1中所找出的数据行的x值。

假如test表很大,update要执行好几分钟,而且在步骤1期间有人将某一行的y值改为2并提交了,那么在步骤2中,这个y=2的行是否还会被更新x列呢?
这种情况下,Oracle会选择“重启动”更新。

其实,Oracle在执行DML语句时,会用到两种不同的方式去读取数据块:
1. 一致读:在“找到”需要修改的数据行时,会采用consistent read
2. 当前读:在“获取”数据块来实际更新数据行时,会采用current read
Oracle就是通过这样来判断是否需要重启动的。

具体到上面的例子中,首先Oracle会利用一致读找到所有y=1的数据行,因此就算读取期间有别的会话修改了某一行的y值(如从y=1变为y=2),Oracle也会利用undo数据将该行的y列恢复到读取的那个时刻的值(即y=1),所以这一行还是会被读取。然后,当要实际更新这一行的时候,Oracle会利用当前读去获取数据块的最新版本,由于被提交过了,所以读到的y值是2,与之前一致读中的y=1不符。所以Oracle就知道了需要“重启动”这个update操作。

Oracle重启动的流程:
1. 回滚之前的修改操作
2. 进入select for update模式,锁定需要修改的行
3. 对锁定的行进行修改操作
(这个流程是指在Oracle默认的READ COMMITED隔离级别下,如果是SERIALIZABLE模式,则会出现ORA-08177错误)
分享到:
评论

相关推荐

    oracle手动启动进程

    oracle手动启动,希望可以减少开机速度慢的问题

    Centos 7.4 配置 oracle 自启动

    ### Centos 7.4 配置 Oracle 自启动详解 #### 一、概述 在Centos 7.4系统上配置Oracle数据库自启动是一项重要的管理任务。通过这项配置,可以在服务器重启后自动启动Oracle实例和服务,确保应用程序和服务的连续...

    linux oracle重新启动

    ### Linux环境下Oracle数据库重启知识点详解 #### 一、概述 在Linux环境中,Oracle数据库的管理是常见的运维操作之一。为了确保系统的稳定运行,有时需要重启Oracle数据库及其监听器。本文将详细介绍在Linux环境下...

    Oracle服务启动的步骤

    Oracle服务的启动过程是数据库管理员日常运维中的重要环节,它涉及到服务器环境的配置、权限管理以及数据库服务的正确运行。以下是对标题和描述中提到的Oracle服务启动步骤的详细解释: 1. **用telnet以root...

    Oracle 自动启动脚本

    自动启动脚本的创建和使用对于系统管理员来说至关重要,它确保了Oracle数据库服务在系统启动时能自动运行,保证业务的连续性和稳定性。本文将详细讲解Oracle自动启动脚本的原理、创建方法以及如何进行操作。 一、...

    Linux下oracle启动和监听

    Linux 下 Oracle 启动和监听 Oracle 数据库是重量级的,其管理非常复杂,将其在 Linux 平台上的启动和关闭步骤整理如下: 一、安装和配置 Oracle 在 Linux 平台上安装 Oracle 之后,需要创建 Oracle 系统用户,并...

    oracle自启动文档

    oracle自启动脚本,可自行启动、重启、关闭,方便oracle管理,有需要的可自行下载,亲测实用。

    Windows 下 oracle 服务自动启动设置

    Windows 下 oracle 服务自动启动设置 概述 在 Windows 操作系统中,设置 Oracle 服务自动启动可以确保数据库服务在需要时自动开启,而不需要每次手动启动实例。这篇文章将详细介绍如何设置 Oracle 服务自动启动,...

    oracle手动启动服务

    oracle手动启动服务,点击启动

    linux下oracle启动及关闭

    监听器(Listener)是Oracle数据库中负责监听网络连接请求的组件。在Linux下,你可以通过以下命令来启动或停止监听器: ```bash lsnrctl start lsnrctl stop ``` 启动监听器后,它将开始监听特定的端口,等待...

    oracle 启动过程详解

    Oracle 启动过程详解 Oracle 启动过程是 Oracle 数据库的核心组件之一,对于初识 Oracle 的人来说,了解 Oracle 启动过程非常重要。本文将详细解释 Oracle 启动过程的三个步骤:启动数据库到 Nomount 状态、启动...

    oracle 服务启动和关闭

    批处理文件`oracle启动服务.bat`和`oracle关闭服务.bat`通常包含上述命令,它们可以方便地自动化这些操作。例如,启动脚本可能包含以下内容: ```bat @echo off net start OracleServiceSID echo Oracle 服务已启动...

    Oracle服务启动失败问题解决

    Oracle 服务启动失败问题解决 Oracle 服务启动失败是指 OracleDBConsole[SID] 服务无法启动的问题,这是一个常见的问题,因为 OracleDBConsole[SID] 服务很脆弱,很容易启动不了。解决这个问题需要删除资料档案库,...

    Oracle启动管理命令

    1. **Oracle启动过程** Oracle数据库的启动通常分为三个阶段:装载(Mount)、打开(Open)和恢复(Restore)。在Windows环境中,可以通过SQL*Plus或者使用操作系统级别的脚本来进行操作。 - **SQL*Plus启动**:...

    windows oracle 自动启动

    每天使用oracle都要去windows服务启动oracle比较麻烦,做了一个自动启动oracle的exe文件

    解决oracle假启动bat命令文件

    解决oracle假启动bat命令文件,在系统中做成任务计划,在系统启动的时候自动执行命令即可

    Oracle服务快速启动

    在Windows 7环境下,快速启动Oracle服务是确保数据库系统正常运行的关键步骤。以下是一份详细的关于“Oracle服务快速启动”的教程,适用于Windows 7操作系统。 1. **Oracle服务概述** Oracle服务是数据库在Windows...

    oracle监听无法启动

    ### Oracle监听无法启动问题解析与解决方案 在Oracle数据库管理中,遇到监听器(Listener)无法启动的情况是非常常见的问题之一。监听器是Oracle网络组件的重要部分,主要负责接收客户端的连接请求,并将其转发到...

    设置oracle10g自动启动

    在Redhat Linux环境中设置Oracle 10g数据库自动启动是一项重要的系统管理任务,这确保了在服务器重启后,Oracle数据库能够自动恢复并提供服务。Oracle 10g是一款广泛使用的数据库管理系统,尤其在企业级应用中,其...

Global site tag (gtag.js) - Google Analytics