首頁 資料庫 mysql教程 oracle闪回表详解

oracle闪回表详解

Jun 07, 2016 pm 04:20 PM
oracle 詳解

--- 说明闪回数据库 --- 使用闪回表将表内容还原到过去的特定时间点 --- 从删除表中进行恢复 --- 使用闪回查询查看截止到任一时间点的数据库内容 --- 使用闪回版本查询查看某一行在一段时间内的各个版本 --- 使用闪回事务查询查看事务处理历史记录 或行 优点

   --- 说明闪回数据库

  --- 使用闪回表将表内容还原到过去的特定时间点

  --- 从删除表中进行恢复

  --- 使用闪回查询查看截止到任一时间点的数据库内容

  --- 使用闪回版本查询查看某一行在一段时间内的各个版本

  --- 使用闪回事务查询查看事务处理历史记录

oracle闪回表详解   三联

或行

  优点:

  闪回技术由于只能处理更改数据,所以从根本上改变了恢复技术。使用这个技术时,从错误中恢复花费的时间等于制造错误所花费的时间。当闪回技术使用时,它与介质恢复相比,在易用性、可用性和还原时间方面有明显的优势。

  闪回数据库使用闪回日志执行闪回。闪回删除使用回收站。其他所有功能都使用还原数据。


  闪回数据库 -----这个功能可撤销导致逻辑数据损坏的更改

  就是当出现逻辑错误时,能够将整个数据库回退到出错前的那个时间点上,

  闪回数据库的日志文件不是由传统的Log Writer (LGWR)进程写入,而是由一个称为RecoVery WRiter (RVWR)的新进程写入,闪回日志文件由RCWR进程在恢复区中自动创建和维护。

  [Z喎�"" target="_blank" class="keylink">vcmFjbGVAdHlnZXIgfl0kIHBzIC1lZg=="grep rvwr|grep -v grep

  oracle 8414 1 0 14:33 ? 00:00:00 ora_rvwr_ORCL

  可以使用闪回数据库的场景包括

  1. 用户截断了表(trucate)

  2. 系统管理员误删除了用户

  3. 用户错误的执行了某个批处理任务,或者该批处理任务的脚本编写错误,使得多个表的数据发生混乱,我们无法采用闪回表的方式进行恢复

  实现闪回数据库的基础是闪回日志,只要我们配置了闪回数据库,就会自动创建闪回日志。这时,只要数据库里的数据发生变化,oracle就会将数据被修改前的旧值保存在闪回日志里,当我们需要闪回数据库时,oracle就会读取闪回日志里的记录,并应用到数据库上,从而将数据库回退到历史的某个时间点上。

oracle闪回表详解

  闪回数据库:减少还原时间

  闪回数据库比使用还原文件和重做日志文件的传统时间点恢复的速度要更快。随着数据库规模的增加,通过还原所有数据文件来执行传统的时间点恢复所需的时间长度变得不太现实。使用闪回数据库时,因为不要需要还原数据文件,所以恢复数据库的时间与需要回退的更改数目(而不是数据库大小)成比例。

  闪回数据库是通过使用一类被称为闪回数据库日志的日志文件来实施的。oracle数据库会定期将数据块的“前像”记录在闪回数据库日志中。为了快速将数据文件更改回退到捕获闪回日志的时间(就在所需目标时间之前),可以重用块前像。然后,应用重做日志文件中的更改来填充间隔。在快速恢复区中会自动创建和管理闪回数据库日志。

  在不能使用闪回数据库功能的情况下,必须使用不完全恢复操作将数据库返回到特定时间。闪回数据库操作完成后,可在只读模式下打开数据库,验证是否使用了正确的目标时间或系统更改号(SCN)。如果没有,可以再次闪回数据库,或者通过执行恢复操作来前滚数据库。因此,要撤销闪回数据库操作,必须向前恢复数据库。

  注:闪回保留目标并不能绝对保证闪回可用。如果闪回恢复区中必须存在的文件需要占用空间,可能会自动删除闪回日志。

  闪回数据库操作完成后,必须使用以下一种方法打开数据库:

  · 在只读模式下验证是否使用了正确的目标时间或SCN

  · 使用RESETLOGS 参数才允许进行更新

  闪回数据库限制:(不能使用闪回数据库)

  · 已还原或重新创建了控制文件

  · 已删除了表空间

  · 已收缩了数据文件

  不能使用闪回数据库恢复自闪回目标时间以来已删除的数据文件。

  删除的数据文件会添加到控制文件中且标记为脱机,但是不会闪回。

  闪回数据库不能闪回自闪回目标时间以来已收缩的数据文件,这种数据文件必须先脱机,才能执行闪回操作。

  实验1:启用闪回数据库

  1. 设置闪回恢复区保留时间3天

  SYS@ORCL>show parameter flashback

  NAME TYPE VALUE

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

  db_flashback_retention_target integer 1440 //db_flashback_retention_target 用于定义一个时间上限 单位是分钟

  SYS@ORCL>alter system set db_flashback_retention_target=4320;

  SYS@ORCL>show parameter flashback

  NAME TYPE VALUE

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

  db_flashback_retention_target integer 4320

  2. 查看当前闪回状态,未开启闪回,开启闪回(mount状态开启闪回)

  SYS@ORCL>select flashback_on from v$database;

  FLASHBACK_ON

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

  NO

  SYS@ORCL>alter database flashback on;

  alter database flashback on

  *

  ERROR at line 1:

  ORA-38759: Database must be mounted by only one instance and not open.

  SYS@ORCL>shutdown immediate

  Database closed.

  Database dismounted.

  ORACLE instance shut down.

  SYS@ORCL>startup mount;

  ORACLE instance started.

  Total System Global Area 314572800 bytes

  Fixed Size 1219160 bytes

  Variable Size 121636264 bytes

  Database Buffers 188743680 bytes

  Redo Buffers 2973696 bytes

  Database mounted.

  3. 开启闪回,必须在归档模式下开启

  SYS@ORCL>archive log list;

  Database log mode Archive Mode

  Automatic archival Enabled

  Archive destination USE_DB_RECOVERY_FILE_DEST

  Oldest online log sequence 29

  Next log sequence to archive 31

  Current log sequence 31

  SYS@ORCL>alter database flashback on;

  Database altered.

  4. 打开数据库,,查看闪回状态

  SYS@ORCL>alter database open;

  Database altered.

  SYS@ORCL>select flashback_on from v$database;

  FLASHBACK_ON

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

  YES

  SYS@ORCL>

  实验2:闪回数据库用途 -----实验参考eygle 的循序渐进oracle

  SYS@ORCL>conn tyger/tyger

  Connected.

  TYGER@ORCL>select count(*) from tyger;

  COUNT(*)

  ----------

  1

  TYGER@ORCL>select count(*) from test;

  COUNT(*)

  ----------

  14

  TYGER@ORCL>alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss';

  Session altered.

  TYGER@ORCL>select sysdate from dual;

  SYSDATE

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

  2014-03-11 15:47:14

  TYGER@ORCL>truncate table tyger;

  Table truncated.

  TYGER@ORCL>select sysdate from dual;

  SYSDATE

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

  2014-03-11 15:47:38

  TYGER@ORCL>truncate table test;

  Table truncated.

  TYGER@ORCL>select sysdate from dual;

  SYSDATE

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

  2014-03-11 15:48:03

  闪回需要在Mount状态下进行,可以指定Timestamp/SCN/Sequence进行闪回。

  首先将数据库闪回到第一时间点,以Redo only的方式打开数据库:

  SYS@ORCL>startup mount;

  ORACLE instance started.

  Total System Global Area 314572800 bytes

  Fixed Size 1219160 bytes

  Variable Size 130024872 bytes

  Database Buffers 180355072 bytes

  Redo Buffers 2973696 bytes

  Database mounted.

  SYS@ORCL>flashback database to timestamp

  2 to_timestamp('2014-03-11 15:47:14','yyyy-mm-dd hh24:mi:ss');

  Flashback complete.

  SYS@ORCL>alter database open read only; //以read only原因:如果数据恢复的不够理想,可以关闭数据库继续进行恢复

  Database altered.

  SYS@ORCL>select count(*) from tyger.tyger;

  COUNT(*)

  ----------

  1

  SYS@ORCL>select count(*) from tyger.test;

  COUNT(*)

  ----------

  14

  数据恢复不理想,继续进行恢复 ---前提:以redo only打开数据库

  SYS@ORCL>startup mount;

  ORACLE instance started.

  Total System Global Area 314572800 bytes

  Fixed Size 1219160 bytes

  Variable Size 130024872 bytes

  Database Buffers 180355072 bytes

  Redo Buffers 2973696 bytes

  Database mounted.

  SYS@ORCL>flashback database to timestamp

  2 to_timestamp('2014-03-11 15:47:38','yyyy-mm-dd hh24:mi:ss');

  Flashback complete.

  SYS@ORCL>alter database open read only;

  Database altered.

  SYS@ORCL>select count(*) from tyger.tyger;

  COUNT(*)

  ----------

  0

  SYS@ORCL>select count(*) from tyger.test;

  COUNT(*)

  ----------

  14

  如果数据恢复确认完成,就可以以resetlogs打开数据库,恢复工作 ------重置日志,不能再flashback至resetlogs之前的时间点

  SYS@ORCL>alter database open resetlogs;

  Database altered.

  oracle闪回表详解:

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1270
29
C# 教程
1249
24
oracle打不開怎麼辦 oracle打不開怎麼辦 Apr 11, 2025 pm 10:06 PM

Oracle 打不開的解決辦法包括:1. 啟動數據庫服務;2. 啟動監聽器;3. 檢查端口衝突;4. 正確設置環境變量;5. 確保防火牆或防病毒軟件未阻止連接;6. 檢查服務器是否已關閉;7. 使用 RMAN 恢復損壞的文件;8. 檢查 TNS 服務名稱是否正確;9. 檢查網絡連接;10. 重新安裝 Oracle 軟件。

oracle游標關閉怎麼解決 oracle游標關閉怎麼解決 Apr 11, 2025 pm 10:18 PM

解決 Oracle 游標關閉問題的方法包括:使用 CLOSE 語句顯式關閉游標。在 FOR UPDATE 子句中聲明游標,使其在作用域結束後自動關閉。在 USING 子句中聲明游標,使其在關聯的 PL/SQL 變量關閉時自動關閉。使用異常處理確保在任何異常情況下關閉游標。使用連接池自動關閉游標。禁用自動提交,延遲游標關閉。

oracle怎麼循環創建游標 oracle怎麼循環創建游標 Apr 12, 2025 am 06:18 AM

Oracle 中,FOR LOOP 循環可動態創建游標, 步驟為:1. 定義游標類型;2. 創建循環;3. 動態創建游標;4. 執行游標;5. 關閉游標。示例:可循環創建游標,顯示前 10 名員工姓名和工資。

oracle視圖怎麼導出 oracle視圖怎麼導出 Apr 12, 2025 am 06:15 AM

可以通過 EXP 實用程序導出 Oracle 視圖:登錄 Oracle 數據庫。啟動 EXP 實用程序,指定視圖名稱和導出目錄。輸入導出參數,包括目標模式、文件格式和表空間。開始導出。使用 impdp 實用程序驗證導出。

oracle日誌寫滿怎麼辦 oracle日誌寫滿怎麼辦 Apr 12, 2025 am 06:09 AM

Oracle 日誌文件寫滿時,可採用以下解決方案:1)清理舊日誌文件;2)增加日誌文件大小;3)增加日誌文件組;4)設置自動日誌管理;5)重新初始化數據庫。在實施任何解決方案前,建議備份數據庫以防數據丟失。

HDFS配置CentOS需要哪些步驟 HDFS配置CentOS需要哪些步驟 Apr 14, 2025 pm 06:42 PM

在CentOS系統上搭建Hadoop分佈式文件系統(HDFS)需要多個步驟,本文提供一個簡要的配置指南。一、前期準備安裝JDK:在所有節點上安裝JavaDevelopmentKit(JDK),版本需與Hadoop兼容。可從Oracle官網下載安裝包。環境變量配置:編輯/etc/profile文件,設置Java和Hadoop的環境變量,使系統能夠找到JDK和Hadoop的安裝路徑。二、安全配置:SSH免密登錄生成SSH密鑰:在每個節點上使用ssh-keygen命令

甲骨文在商業世界中的作用 甲骨文在商業世界中的作用 Apr 23, 2025 am 12:01 AM

Oracle不僅是數據庫公司,還是雲計算和ERP系統的領導者。 1.Oracle提供從數據庫到雲服務和ERP系統的全面解決方案。 2.OracleCloud挑戰AWS和Azure,提供IaaS、PaaS和SaaS服務。 3.Oracle的ERP系統如E-BusinessSuite和FusionApplications幫助企業優化運營。

oracle數據庫怎麼停止 oracle數據庫怎麼停止 Apr 12, 2025 am 06:12 AM

要停止 Oracle 數據庫,請執行以下步驟:1. 連接到數據庫;2. 優雅關機數據庫(shutdown immediate);3. 完全關機數據庫(shutdown abort)。

See all articles