搜索
首页数据库mysql教程Oracle 10g 恢复操作概述

1. 实例恢复在实例重新启动时,系统自动恢复。判断依据:数据文件的scn与控制文件不一致。步骤:(1)使用online redo log,数据前

1. 实例恢复
     在实例重新启动时,系统自动恢复。
     判断依据:数据文件的scn与控制文件不一致。
     步骤:
     (1)使用online redo log,数据前滚到与控制文件一致的SCN处。
     (2)使用undo表空间,对未提交事务执行回滚操作。
     结果:数据库中数据保留到实例异常前最后一次提交的内容。
    
2. 用户错误恢复

   用户错误包括:用户数据错误修改,数据表误删等
   恢复技术:闪回查询(Flashback Query)
             Flashback Drop和表空间回收站(Tablespace's recycle bin)
             闪回表(Flashback Table)
             LogMiner

 

2.1 闪回查询
  
    前提:undo表空间足够容纳用户在一段时期内修改的数据
          undo表空间保留历史修改数据的时限(UNDO_RETETION初始变量)
         
    查询表employees在15分钟前的数据:

    SELECT employee_id, last_name, email FROM hr.employees
      AS OF TIMESTAMP(systimestamp - interval '15' minute)
      WHERE employee_id = 101;

 

    查询表employees在指定历史时间的数据:

    SELECT employee_id, last_name, email FROM hr.employees
      AS OF TIMESTAMP(
        to_timestamp('01-Sep-04 16:18:57.84', 'DD-Mon-RR HH24:MI:SS.FF'))
      WHERE employee_id = 101;

 

2.2 Flashback Drop和表空间回收站

 

    每个Oracle表空间中存在一个Recycle bin,用户存放删除的表和表相关内容(索引等)
    删除的表所占用的空间并不立即回收,但在视图DBA_FREE_SPACE中可看到。

 

    # 恢复已删除的数据表到删除前状态(包括表中数据):

    SQL> FLASHBACK TABLE order_items TO BEFORE DROP;

 

    # 恢复已删除的数据表并改名:   
    SQL> FLASHBACK TABLE order_items TO BEFORE DROP RENAME TO order_items_old;

 

    如果同一个表被删除恢复多次,如果需要恢复到以前的版本,则可以查询视图RECYCLEBIN
    或者使用命令SHOW RECYCLEBIN,并使用其中的表名称。

    使用限制:
        仅能用于非系统本地管理的表空间。
        位图联合索引、参照完整性约束、物化视图删除后无法保存在Recyclebin.
        使用Drop Index删除索引,删除的索引不会保存(只有删除表,,县官索引才保存)。


2.3 Flashback表

    允许将一个或多个表恢复到历史指定时间的状态。无需使用太耗时的操作。
    Flashback Table使用对相关事务的Undo操作恢复表,使用undo表空间。
    (Flashback Drop直接回收恢复表占用的空间)
    需要启用行迁移(row movement)功能。undo操作可能会改变记录的rowid.

 

    #启用Row Movement
    SQL> ALTER TABLE hr.employees ENABLE ROW MOVEMENT;

 

    #使用Flashback Table恢复表到指定时间
    SQL> FLASHBACK TABLE hr.employees [, ...]
         TO TIMESTAMP systimestamp - interval '15' minute;

 

2.4 LogMiner
  
    从Redo Log中提取所有的DDL和DML活动的语句。
    使用V$LOGMNR_CONTENTS视图查看(首先需要执行DBMS_LOGMNR.START_LOGMNR()过程)
    LogMiner工具本身不能用于恢复数据库
    仅从RedoLog中提取用于恢复数据库的SQL语句。

 

3. 控制文件恢复

    如果有控制文件发生错误,Oracle实例将停止运行。
    如果没有停止,则必须手动执行:SHUTDOWN ABORT
   
    将未损坏的控制文件复制一份到目标地址,并修改初始化参数中出问题的
    控制文件的路径到新的控制文件
    或者在初始化参数中把有问题的控制文件条目删除。
    控制文件错误时,修改初始化参数参数,需要在NOMOUNT状态下。

 

    SQL> SHUTDOWN IMMEDIATE;
    SQL> STARTUP NOMOUNT;
    SQL> SHOW PARAMETER CONTROL_FILES;
      或
    SQL> SELECT name, value FROM v$spparameters
         WHERE name = 'control_files';
    SQL> ALTER SYSTEM SET CONTROL_FILES='...','...','...' SCOPE=SPFILE;
    SQL> SHUTDOWN IMMEDIATE;
    SQL> STARTUP;
  

4. 重做日志恢复

   只要有一组中还有一个Redo Log文件还有可用,Oracle实例就不会崩溃。
   (即一个redo log组中所有redo log文件全部失效,Oracle示例就会崩溃)
   使用V$LOGFILE视图查询当前redo log文件的状态。
  
   如果一个redo log组中存在错误的redo log文件,那么按以下步骤恢复:
  
   # 确认哪个文件出现错误(在哪个组中)
   SQL> SELECT * FROM v$logfile ORDER BY group#;

 

   # 对该组redo log执行归档操作
   SQL> ALTER SYSTEM ARCHIVE LOG GROUP ;
  
   # 清空有问题的redo log组并重建
   SQL> ALTER DATABASE CLEAR LOGFILE GROUP ;
  
5. 系统关键数据文件恢复

    包括SYSTEM表空间和UNDO表空间。

 

5.1 NOARCHIVELOG 模式下

    只能依赖于是否对数据库有全备份,如果有,则只能恢复到全备份时。

 

5.2 ARCHIVELOG 模式下

 

    SQL> SHUTDOWN ABORT;    # 强制停止
    SQL> STARTUP MOUNT;     # 只能在Mount状态下恢复

 

    在EM的Perform Recovery中,选择恢复数据文件,以及对应的SYSTEM表空间数据文件。
    并可指定需要恢复到的目标路径。系统将会执行RMAN脚本进行恢复。

 

    SQL> ALTER DATABASE OPEN; # 恢复完毕后打开数据库

 

6. 非系统数据文件恢复

 

6.1 NOARCHIVELOG 模式下

    只能依赖于是否对数据库有全备份,如果有,则只能恢复到全备份时。

 

6.2 ARCHIVELOG 模式下

    只影响到丢失的数据文件相关的数据库对象。
    同样可在EM中,按步骤执行Perform Recovery进行恢复。

 

    # 查看数据文件
    SQL> SELECT t.name, d.name FROM v$tablespace t
         JOIN  v$datafile d USING (ts#)
         WHERE t.name = 'USERS';

 

    也可以执行RMAN命令恢复编号为4和7的数据文件:

 

    $ rman target /
    RMAN> run { sql 'alter database datafile 4 offline';
                sql 'alter database datafile 7 offline';
                restore datafile 4, 7;
                recover datafile 4, 7;
                sql 'alter database datafile 4 online';
                sql 'alter database datafile 7 online'; }

linux

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
与其他RDBM相比,MySQL如何处理并发?与其他RDBM相比,MySQL如何处理并发?Apr 29, 2025 am 12:44 AM

MySQLhandlesconcurrencyusingamixofrow-levelandtable-levellocking,primarilythroughInnoDB'srow-levellocking.ComparedtootherRDBMS,MySQL'sapproachisefficientformanyusecasesbutmayfacechallengeswithdeadlocksandlacksadvancedfeatureslikePostgreSQL'sSerializa

MySQL与其他关系数据库相比如何处理交易?MySQL与其他关系数据库相比如何处理交易?Apr 29, 2025 am 12:37 AM

mysqlHandLestActionSefectefectionalytheinnodbengine,supportingAcidPropertiessimilartopostgresqlesqlandoracle.1)mySqluessRepeTableReadAbleDasthEdefaultIsolationLelealevel,该canbeadjustEdToreDtoreDtoreadCommententCommententCommententCommententCommittedForHigh-TrafficsCenarios.2)

MySQL中有哪些数据类型?MySQL中有哪些数据类型?Apr 29, 2025 am 12:28 AM

MySQL的数据类型分为数值、日期和时间、字符串、二进制和空间类型。选择正确的类型可以优化数据库性能和数据存储。

在MySQL中编写有效的SQL查询的最佳实践是什么?在MySQL中编写有效的SQL查询的最佳实践是什么?Apr 29, 2025 am 12:24 AM

最佳实践包括:1)理解数据结构和MySQL处理方式,2)适当索引,3)避免SELECT*,4)使用合适的JOIN类型,5)谨慎使用子查询,6)使用EXPLAIN分析查询,7)考虑查询对服务器资源的影响,8)定期维护数据库。这些做法能使MySQL查询不仅快速,还具备可维护性、可扩展性和资源效率。

MySQL与PostgreSQL有何不同?MySQL与PostgreSQL有何不同?Apr 29, 2025 am 12:23 AM

MySQLisbetterforspeedandsimplicity,suitableforwebapplications;PostgreSQLexcelsincomplexdatascenarioswithrobustfeatures.MySQLisidealforquickprojectsandread-heavytasks,whilePostgreSQLispreferredforapplicationsrequiringstrictdataintegrityandadvancedSQLf

MySQL如何处理数据复制?MySQL如何处理数据复制?Apr 28, 2025 am 12:25 AM

MySQL通过异步、半同步和组复制三种模式处理数据复制。1)异步复制性能高但可能丢失数据。2)半同步复制提高数据安全性但增加延迟。3)组复制支持多主复制和故障转移,适用于高可用性需求。

您如何使用解释性语句分析查询性能?您如何使用解释性语句分析查询性能?Apr 28, 2025 am 12:24 AM

EXPLAIN语句可用于分析和提升SQL查询性能。1.执行EXPLAIN语句查看查询计划。2.分析输出结果,关注访问类型、索引使用情况和JOIN顺序。3.根据分析结果,创建或调整索引,优化JOIN操作,避免全表扫描,以提升查询效率。

您如何备份并还原MySQL数据库?您如何备份并还原MySQL数据库?Apr 28, 2025 am 12:23 AM

使用mysqldump进行逻辑备份和MySQLEnterpriseBackup进行热备份是备份MySQL数据库的有效方法。1.使用mysqldump备份数据库:mysqldump-uroot-pmydatabase>mydatabase_backup.sql。2.使用MySQLEnterpriseBackup进行热备份:mysqlbackup--user=root--password=password--backup-dir=/path/to/backupbackup。恢复时,使用相应的命

See all articles

热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

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器