`

关于Oracle误操作--数据被Commit后的数据回退恢复(闪回)

 
阅读更多

 

转自:http://www.cnblogs.com/WhyShang/

 

今天操作Oracle数据库时,做一个Update数据时,不小心少写了个where,看这粗心大意的。

  于是乎,把所有的员工工号都给更新成一个同一个工号了。这是一个悲催的故事。

  因为工号是Check了好多次才存入数据库,工号是唯一性的啊~~

  不过,好在更新过后意识到这一点了。于是乎,先停止操作数据库。想想数据库Commit过后的数据可以回退不!在网上搜索了一下。发现Oracle有“闪回”的功能。具体“闪回”的概念,可以参见百度百科。

  如果多次commit数据后,那可不可以闪回呢?貌似不可以。闪回只能暂存最近一次的数据操作。这个就和内存一样。你不可以再内存中找到上一年的数据吧。 

  闪回执行步骤: 

  1.查询最近更新数据之前的数据(以便确定是不是Commit之前的数据)

   select * from account as of timestamp to_timestamp('2014-04-22 08:00:00', 'yyyy-mm-dd hh24:mi:ss');

  其中account为被误操作的表,'2014-04-22 08:00:00'表示上次更新数据前的时间,

  2.闪回操作前启用行移动功能(不启用不可以闪回

   alter table account enable row movement;

  其中account表示被误操作的表 

  3.执行闪回语句:

   flashback table account to timestamp TO_TIMESTAMP('20140422 15:10:00','YYYYMMDD HH24:MI:SS');

  这样被误操作的数据就可以“找”回来了。哈哈~

  于是乎,再想,Oracle有如此美妙的东西,那Sql Server有没有呢? 于是乎查阅了一下资料,感觉有些悲催了。Sql Server没有提供此类便捷的东西。貌似只能用Log恢复了。。。。

  正好刚才在看一篇文章,关于SQL的数据恢复。Mark一下:

 

分享到:
评论

相关推荐

    ORACLE误删除数据的恢复方法

    SCN提供了Oracle的内部时钟机制,可被看作逻辑时钟,这对于恢复操作是至关重要的 注释:Oracle 仅根据 SCN 执行恢复。 它定义了数据库在某个确切时刻提交的版本。在事物提交时,它被赋予一个唯一的标示事物的SCN ...

    oracle恢复工具-FY_Recover_Data

    因此用当前的System信息是不能恢复过来的,在AUL/MyDUL中可以当作没有System时的情况来处理,在下面的命令中, 我们用Truncate后的数据对象号就不能进行恢复, 而使用Truncate以前的就可以, 当然空间不能被重新利用了是...

    oracle恢复误删数据

    oracle中数据delete且commit 恢复误删数据

    1-2PC-The-one-two-phase-atomic-commit-protocol.pdf

    1-2PC the one-two phase atomic commit protocol; 1-2PC the one-two phase atomic commit protocol 1-2PC the one-two phase atomic commit protocol

    Android代码-maven-git-commit-id-plugin

    maven git commit id plugin git-commit-id-plugin is a plugin quite similar to ...I had to quickly develop an git version of such a plugin. For those who don't know the previous plugins, it basically ...

    commit-template-idea-plugin.jar

    commit-template-idea-plugin commit-template-idea-plugin commit-template-idea-plugin

    前端开源库-git-pre-commit

    前端开源库-git-pre-commitGit预提交,您可以使用任何构建工具(gulp、grunt等)运行预提交,它将忽略所有

    make-empty-github-commit:使用API​​在GitHub上进行新的空提交

    make-empty-github-commit 使用API​​在GitHub上进行新的空提交 安装 需要版本6或更高版本。 npm install --save make-empty-github-commit 利用 命令行界面 从命令行 $(npm bin)/empty-commit --repo <username>...

    cobar-server-1.2.7-seprate-commit

    改进版cobar 原本cobar的commit/rollback操作和普通sql操作公用同一个线程池执行 可能造成死锁问题

    validate-commit-message:GIT COMMIT-MSG挂钩,用于验证提交消息

    $ validate-commit-msg创建到./lib/validate-commit-msg.js的符号链接.git/hooks/commit-msg ,该链接在每次提交时执行。 钩子脚本根据在每次提交时验证提交消息。 安装 $ npm install validate-commit-message ...

    commit-msg

    拷贝commit-msg到每个需要使用gerrit提交代码的项目中 将commit-msg文件拷贝到 -> 项目文件夹\.git\hooks(文件夹不存在则新建), 这时将上次commit的代码reset后再次commit and push -> push to Gerrit即可。 详情...

    oracle恢复删除数据.txt

    oracle数据被误删,并且commit之后,对误删的表记录,只要没有truncate语句,就可以根据事务的提交时间进行选择恢复

    Oracle数据恢复之异机恢复

    今天在操作数据库的时候,发现数据操作错误,想要恢复,但是没有用事务,按理说,设置成不默认提交事务,此时所做的各种操作都没有反应到数据库中。这时,你可以rollback事务,撤销所有未提交的修改。不过,一旦...

    commit-msg-linter:git commit消息linter钩子

    欢迎来到git-commit-msg-linter :waving_hand: :eyes: 立即查看您的每条git commit消息 :rocket: 。 一个git“ commit-msg”挂钩,用于根据流行的来替换您的git commit消息。 作为一个挂钩,它将在每次提交时运行...

    git-add-then-commit:一个极简主义的CLI工具,用于自动执行常规提交消息的git-add-then-commit工作流程

    极简主义的CLI工具,可以自动执行git add X git commit -m 'Y(Z): W' -m'Y git commit -m 'Y(Z): W'工作流,帮助您快速轻松地编写。 安装 注意:> = 7的NPM版本可能需要npm install --legacy-peer-deps直到。 npm ...

    自动添加评论系统commit-comments.zip

    commit-comments 会根据你代码中评论的变化而自动创建一个提交评论的无序列表。使用关键字 @commit 写评论时,commit-comments 会你在点击提交时,自动添加你的评论信息。依赖:GNU sed 需要在 post-commit 中移除 @...

    java源码文件格式-google-java-format-git-pre-commit-hook:一个gitpre-commit钩子脚本,用

    java原始文件格式google-java-format-git-pre-commit-hook 一个git pre-commit钩子脚本,用于根据Google Java样式指南设置Java源文件的格式 将pre-commit脚本(具有该名称和可执行位设置)放在.git/hooks目录中。 该...

Global site tag (gtag.js) - Google Analytics