Oracle丢失归档日志文件的数据库恢复方法

合集下载

Oracle数据库恢复案例

Oracle数据库恢复案例

Oracle数据库恢复案例当我们在使用Oracle数据库时,突然断电,造成很多问题,致使旧数据丢失,影响了数据的正确性,破坏了数据库。

此时,用户急切需求恢复数据。

本文以此为例,讲述数据库数据恢复。

一、案例描述:数据库因突然断电,数据库启库报system01.dbf需要更多的恢复来保持一致性,数据库无法打开;数据库没有备份,归档日志也不连续。

客户提供了数据库的在线文件,急需恢复zxfg用户下的数据。

二、恢复流程:1 数据库的故障检测2 尝试挂起数据库并修复数据库3解析数据文件4验证数据5导出数据与交付数据(导入)三、恢复数据1数据库的故障检测利用DBV 命令检测数据文件的完整性结果如下:分析结果发现SYSAUX01.DBF文件数据块(Data)检测失败40页,索引页(Index)检测失败29页,说明SYSAUX01.DBF存在坏块。

结论:通过dbv对数据文件的完整性检验,SYSAUX01.DBF存在坏块,其他检测的文件完整。

2 用客户的数据库本地挂起数据库,尝试修复数据库。

2.1创建新的OS :windows server 2008 x86,安装oracle 11.2.0.1.0 for 32-bit版本数据库,挂起数据库起库报ORA-01110错误,System01.dbf需要更多一致性恢复。

使用recover database 命令,利用在线日志做介质恢复。

数据库的控制文件已被修改,需要使用控制文件恢复数据库恢复数据库需要2016_01_19的11号归档日志。

由于归档日志丢失,使用cancel 参数进行不完全恢复。

再次执行alter database open 命令,数据库打开。

2.2 查询实例状态,数据库报ora_00600错误;进行其他查询,其中一些查询可以进行,一些查询报错,而且报错都是ora_00600错误。

2.4查看警告日志追踪文件查看内部错误代码;警告日志部分内容如下:ORA-00600: internal error code, arguments: [13013], [5001], [267], [8456009], [5], [8456009], [17], [], [], [], [], []Non-fatal internal error happenned while SMON was doing logging scn->time mapping. 进行各种尝试,查阅大量资料。

ORACLE备份和恢复方案

ORACLE备份和恢复方案

ORACLE数据库备份与恢复方案备份方案设计前提:数据库设置为归档模式,不使用恢复目录数据库1、一个月一次在线全库备份2、每天归档日志备份3、每周一次exp导出4、每天一次exp增量导出5、保留最近两次全备和归档日志的备份6、至少保留最近一个月exp文件7、既备份到磁盘也备份到磁带Win2000下oracle8i/9i的备份方案的实现说明:数据库实例:ora9i,备份目录为e:\backup每个月一次全备1、备份命令文件:fullbackup.batrman cmdfile=fullbackup.rcvcopy C:\oracle\oradata\ora9i\CONTROL01.CTL e:\backup\CONTROL01.CTL /y 2、RMAN参数文件:fullbackup.rcvconnect target system/manager@ora9i;run{allocate channel c1 type disk;backup full tag 'dbfull' format 'e:\backup\dbfull%u_%s_%p' database;sql 'alter system archive log current';backup archivelog all delete input format 'e:\backup\arch%u_%s_%p';release channel c1;}3、任务计划增加一个每月1号1点开始执行的任务计划fullbackup每天一次归档日志的备份1、备份命令文件:archbackup.batrman cmdfile=archbackup.rcv2、RMAN参数文件:archbackup.rcvconnect target system/manager@ora9i;run{allocate channel c1 type disk;sql 'alter system archive log current';backup archivelog all delete input format 'e:\backup\arch%u_%s_%p';release channel c1;}3、任务计划增加一个每天2点开始执行的任务计划archbackupUNIX下oracle8i/9i的备份方案的实现基本相同,但计划任务得用crontab来实现恢复方案设计Win2000下oracle8i/9i的恢复方案的实现一、故障描述:磁盘损坏,数据库彻底瘫痪处理方法:1、更换磁盘,重新安装ORACLE(如果数据库安装的磁盘也损坏的话),重新创建实例ora9i,让数据库处于shutdown状态。

几种oracle数据库恢复的练习示例

几种oracle数据库恢复的练习示例
6:startup;
7:提示文件不存在。
8ห้องสมุดไป่ตู้还原热备的文件,令该文件脱机。
Alter database datafile ‘88888888’ offline;
9:打开数据库。
10:恢复该文件。
Recover databfile ‘88888888’;
11:alter database datafile online.
而联机日志则可以保证数据库恢复到发生事故时的状态,算是完全恢复。
如果没归档的联机日志丢失(状态为ACTIVE或者CURRENT),则只能使用归档日志恢复到最后一个归档日志的地方,是不完全恢复。
End;
/
5:切换几次日志,使所有日志都已经归档。
Alter system switch log file;
6:正常关闭数据库。Shutdown immediate;
7:恢复:
把当前数据库所有文件移动到一个临时文件夹里,模拟数据库损坏。
8:COPY最初复制的数据库的所有文件,但控制文件和日志文件要使用目前数据库的。
9:启动数据库 startup
mount 后会提示SYSTEM表空间需要恢复。并给出恢复使用的归档日志文档。
确定归档日志位置正确后,输入auto.
ORACLE将一个一个的应用归档文档。直至提示完全恢复成功。
10:打开数据库 alter database open;
11:查看user1用户及t1表中是否有刚才插入的10000条记录。
ORA-00279: ?? 84851370 (? 09/24/2003 11:16:01 ??) ???? 1 ????
ORA-00289: ??: D:\ORACLE\ORADATA\SAMPLE\ARCHIVE\TESTT001S01324.ARC

Oracle数据库RMAN恢复之数据文件的恢复详解

Oracle数据库RMAN恢复之数据文件的恢复详解

除了system表空间的数据文件(mount)之外,其它数据文件可以在open(mount也可以)状态下恢复。

open状态下恢复数据文件可以减少数据库停用的时间,所以应该在open状态下恢复这些数据文件。

示例一:数据文件被误删除数据库关闭状态下删除非系统表空间数据文件。

启动数据库到mount状态。

脱机丢失的数据文件,alter database datafile n offline。

打开数据库,alter database open。

转储数据文件,restore datafile n。

使用recover datafile n 应用归档日志。

联机数据文件,alter database datafile n online。

--数据库关闭状态下删除非系统表空间数据文件。

1.[oracle@localhost ~]$ rm $ORACLE_BASE/product/10.2.0/oradatabak/example01.dbf;2.SQL> select file#,error from v$recover_file;3.FILE# ERROR4.---------- -----------------------------------------------------------------5. 5 FILE NOT FOUND6.SQL> select file#,name from v$datafile where file#=5;7.FILE# NAME8.---------- --------------------------------------------------------------------------------9. 5 /oracle/10g/oracle/product/10.2.0/oradatabak/example01.dbf10.--恢复数据文件11.RMAN> run {12.startup force mount;13.sql 'alter database datafile 5 offline';14.sql 'alter database open';15.restore datafile 5;16.recover datafile 5;17.sql 'alter database datafile 5 online';18.8> }示例二:数据文件所在磁盘出现损坏数据库关闭状态下删除非系统表空间数据文件。

Oracle归档及恢复步骤

Oracle归档及恢复步骤

配置备份和恢复操作:
archivelog模式下运行数据库
配置快速恢复区
指定保留策略:恢复时间段、冗余
db_recovery_file_dest_size:磁盘空间
db_recovery_file_dest:文件路径
快速恢复空间管理:
保留策略设置适合的最小值
rman备份
rman的report obsolete检查已备份的数据,然后delete obsolete删除
WHERE A>97 AND VERSIONS_STARTSCN IS NOT NULL ORDER BY VERSIONS_STARTSCN DESC;
SELECT CURRENT_SCN FROM v$DATABASE;
将SCN转换成时间戳:SCN_TO_TIMESTAMP(scn_number)
backup device type disk tag 'BACKUP20121018_002' as compressed backupset archivelog all not backed up;
恢复数据库到当前的时间点:
run {
restore database;
recover database;
rman执行出现如下错误
RMAN>delete obsolete;
ORA-19554: error allocating device, device type: SBT_TAPE, device name:
RMAN>show all;
RMAN>show default device type;
backup device type disk tag '%TAG' tablespace 'USERS' include current controlfile;

解决Oracle数据库日志文件丢失恢复方案

解决Oracle数据库日志文件丢失恢复方案

解决Oracle数据库日志文件丢失恢复方案由于inactive日志文件组表示已经完成了检查点(dirty数据已经被写入数据文件)。

数据库本身不会发生数据库丢失,如果在这个时候相应的redo丢失/损坏,可以通过clear重建日志文件组恢复。

一.丢失inactive日志文件组的恢复:由于inactive日志文件组表示已经完成了检查点(dirty数据已经被写入数据文件)。

数据库本身不会发生数据库丢失,如果在这个时候相应的redo丢失/损坏,可以通过clear重建日志文件组恢复。

通过命令:alter database clear logfile group n如果数据库模式是archived的,则需要强制清除alter database clear unarchived logfile group n二.丢失active或current日志文件组的恢复:丢失情况分两种:一个是正常关闭数据库(如shutdown immediate)另一个是异常关闭数据库(如shutdown abort)1.在损失当前日志时,数据库是正常关闭状态。

由于shutdown immediate会执行全面的checkpoint,所以当前日志在实例恢复时可以不需要redo在Oracle 8i中我们完全可以通过alter database clear logfile group n来进行恢复.但是在Oracle 9i中,则可能无法对current的redo日志进行clear,需要通过recover database until cancel恢复后(必须要做的) 用resetlogs选项打开。

比如:alter database clear logfile group nrecover database until cancel;alter database open resetlogs;2.在损失当前日志时,数据库是异常关闭的:这种情况下,由于没有在执行全面检查点时,数据库就已经关闭了,那么Oracle在进行实例恢复的时候必须要求当前的日志,否则Oracle数据库将无法open.这样的情况下,我们通常需要从备份中恢复数据文件,通过应用归档日志进行向前推演。

Oracle数据库备份恢复实战

Oracle数据库备份恢复实战

Oracle数据库备份恢复实战在管理和运维Oracle数据库时,数据库备份和恢复是一项至关重要的任务。

无论是因为误操作、硬件故障还是数据丢失,数据库备份和恢复能够帮助我们从灾难中恢复并保护我们的数据。

本文将介绍一些Oracle数据库备份恢复的实战方法,帮助读者了解如何有效地进行数据库备份和恢复。

1. 数据库备份方法1.1 物理备份物理备份是指对数据库的实际物理文件进行备份,备份的内容包括数据文件、控制文件和归档日志文件。

物理备份通常使用RMAN (Recovery Manager)工具来完成。

以下是进行物理备份的一般步骤:1) 配置RMAN环境并连接到目标数据库;2) 创建备份集并指定备份文件的存储位置;3) 开始备份任务,RMAN将自动备份数据文件、控制文件和归档日志文件;4) 备份完成后,可以使用RMAN验证备份文件的完整性。

1.2 逻辑备份逻辑备份是指对数据库中的逻辑结构(如表、视图等)进行备份,备份的内容是SQL语句或者导出文件。

逻辑备份通常使用expdp(数据泵)或者exp(传统导出)工具来完成。

以下是进行逻辑备份的一般步骤:1) 配置expdp或exp环境并连接到目标数据库;2) 创建备份目录并指定备份文件的存储位置;3) 开始备份任务,expdp或exp将自动生成备份文件;4) 备份完成后,可以使用impdp或imp工具验证备份文件的完整性。

2. 数据库恢复方法2.1 物理恢复物理恢复是指将备份的物理文件还原到数据库中,并应用归档日志文件来恢复丢失的数据。

以下是进行物理恢复的一般步骤:1) 将备份文件复制到目标数据库的恢复目录;2) 启动目标数据库并将其切换到恢复模式;3) 使用RMAN工具恢复数据文件、控制文件和归档日志文件;4) 应用归档日志文件以恢复丢失的数据;5) 完成恢复后,将数据库切换回正常运行模式。

2.2 逻辑恢复逻辑恢复是指使用逻辑备份文件来还原数据库中的逻辑结构和数据。

恢复归档日志文件的常用方法

恢复归档日志文件的常用方法
这样,恢复出来的SEQUENCE序号为35~40的归档文件就将被存储到F:\oracle\backup\arclog目录下。
同一个RUN块中允许同时出现多个SET ARCHIVELOG命令,也就是说可以通过在不同位置设置不同的归档路径的方式,将归档恢复到不同的目录,例如:
1. RMAN> RUN{
5. 5> RESTORE ARCHIVELOG SEQUENCE BETWEEN 21 AND 30;
6. 6> SET ARCHIVELOG DESTINATION TO 'F:\ORACLE\BACKUP\ARCLOG3';
7. 7> RESTORE ARCHIVELOG SEQUENCE BETWEEN 31 AND 40;
2. 2> SET ARCHIVELOG DESTINATION TO 'F:\ORACLE\BACKUP\ARCLOG1';
3. 3> RESTORE ARCHIVELOG SEQUENCE BETWEEN 15 AND 20;
4. 4> SET ARCHIVELOG DESTINATION TO 'F:\ORACLE\BACKUP\ARCLOG2';
8. 8> }
恢复归档文件非常灵活,可以全部恢复归档文件,也可以精确指定恢复哪些备份的归档文件,
RMAN>Restore archivelog all;
2. 恢复归档序号为20到30之间的归档文件:
RMAN> RESTORE ARCHIVELOG SEQUENCE BETWEEN 20 AND 30;
恢复归档日志文件的常用方法

oracle归档模式备份恢复

oracle归档模式备份恢复

oracle归档模式备份恢复Oracle归档模式1Oracle归档模式设置1.1以系统管理员身份登录sqlplus /nologSQL>connect sys/oracle as sysdba;Connected.1.2检查当前数据库是否为归档模式SQL> archive log list;Database log mode No Archive ModeAutomatic archival DisabledArchive destination USE_DB_RECOVERY_FILE_DESTOldest online log sequence 8Current log sequence 101.3设置归档模式1.全数据库脱机备份(重要),详见全数据库的脱机备份(冷备份)步骤。

2.启动数据库至mount状态SQL> startup mount;3.设置数据库为归档模式SQL> alter database archivelog;Database altered.4.检查数据库归档模式是否开启SQL> archive log listDatabase log mode Archive ModeAutomatic archival EnabledArchive destination USE_DB_RECOVERY_FILE_DESTOldest online log sequence 8Next log sequence to archive 10Current log sequence 105.启动数据库SQL>alter database open;2Oracle归档模式管理2.1启用自动归档修改初始化参数LOG_ARCHIVE_START = TRUE,此值在下次启动数据库时生效。

或SQL>alter system archive log start;下述命令设置实例的当前归档进程数为4:SQL>alter system set log_archive_max_processes=4;2.2停止自动归档修改初始化参数LOG_ARCHIVE_START = FALSE,此值在下次启动数据库时生效。

解决Oracle数据库联机日志文件丢失的方法

解决Oracle数据库联机日志文件丢失的方法

解决Oracle数据库联机日志文件丢失的方法试验一:用命令清空日志组方法1、查看原来表中数据SQL>; conn test/testConnected.SQL>; select * from test;TEL----------1232、插入新数据SQL>; insert into test values(4);1 row created.SQL>; commit;Commit complete.SQL>;3、正常关闭数据库4、利用os command删除所有redo文件5、启动数据库SQL>; startupORACLE instance started.Total System Global Area 353862792 bytesFixed Size 730248 bytesVariable Size 285212672 bytesDatabase Buffers 67108864 bytesRedo Buffers 811008 bytesDatabase mounted.ORA-00313: open failed for members of log group 1 of thread 1 ORA-00312: online log 1 thread 1:'/T3/ORACLE/oradata/ORA9/redo01.log'6、查看当前日志状态SQL>; select * from v$log;GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS---------- ---------- ---------- ---------- ---------- -------------------FIRST_CHANGE# FIRST_TIME------------- ----------1 12 104857600 1 YES INACTIVE487837 01-9月 -052 1 4 104857600 1NO CURRENT487955 01-9月 -053 1 3 104857600 1 YES INACTIVE487839 01-9月 -05看来redo01.log不是当前日志,对于这类非当前日志可以直接clear,系统会重新自动生成一个redo文件7、SQL>; alter database clear logfile group 1;Database altered.7、继续启动dbSQL>; alter database open;alter database open*ERROR at line 1:ORA-00313: open failed for members of log group 2 of thread 1 ORA-00312: online log 2 thread 1:'/T3/ORACLE/oradata/ORA9/redo02.log'8、看来redo也得恢复,但是redo02是当前redo,直接clear是不行的SQL>; alter database clear logfile group 2;alter database clear logfile group 2*ERROR at line 1:ORA-00350: log 2 of thread 1 needs to be archivedORA-00312: online log 2 thread 1:'/T3/ORACLE/oradata/ORA9/redo02.log'尝试clear unarchived logfile group ,报错:SQL>; alter database clear unarchived logfile group 2;alter database clear unarchived logfile group 2*ERROR at line 1:ORA-00313: open failed for members of log group 2 of thread 1 ORA-00312: online log 2 thread 1:'/T3/ORACLE/oradata/ORA9/redo02.log'ORA-27037: unable to obtain file statusSVR4 Error: 2: No such file or directoryAdditional information: 3看来他是因为找不到这个文件,从有效的备份中cp一个过来看看SQL>; host cp /T3/ORACLE/oradatabak/redo02*/T3/ORACLE/oradata/ORA9SQL>; alter database clear unarchived logfile group 2;Database altered.搞定……….9、按照oracle的某些做法也是可以的SQL>; alter database clear unarchived logfile group 1 unrecoverable datafile;Database altered.10、但是对于非当前日志就都可以,下面看看redo03SQL>; alter database clear logfile group 3;Database altered.结论:如果数据库是正常shutdown,非当前日志都可以直接clear来重新生成,而且不丢失数据,因为正常关闭db,数据已经写入dbf文件了。

日志文件全部丢失的处理方法

日志文件全部丢失的处理方法

日志文件全部丢失的处理方式症状:企业无法启动数据库,手动用批处理文件启动出现:误区:以为需要重新为系统建立日志文件数据库打开后会自动建立联机归档日志文件教训:应该在做任何处理前首先备份数据文件和参数文件,以便能够恢复到最初的情况,还有自己的应用日后建立的数据文件还是放到oracle的系统路径下,否则备份的时候可能容易忘记。

图一:数据库可以装载,查询v$log和logfile内容如下:察看数据文件的目录发现所有联机日志文件丢失经查询group 1对应文件为redo03.log是当前的日志文件现场处理方式:一、启动oracle到mount状态sqlplus /nologstartup mount二、清除日志alter database clear unarchived logfile group 2;数据库已更改alter database clear unarchived logfile group 3;数据库已更改alter database clear unarchived logfile group 1;出错,当前日志不允许清除三、想重新建立联机日志文件未成结果显示出错ora-01184,系统中已经存在要增加的日志文件alter database add logfile group 2 ('c:\oracle\oradata\ora8i\redo02.log') size 1m reuse;alter database add logfile member 'c:\oracle\oradata\ora8i\redo022.log' size 1m reuse to group 2;四、在本地测试完毕后,决定使用隐含参数进行处理:(中间有用户按此过程操作的,在之前备份了一下数据文件和参数文件的目录,但是由于出错,远程又无法看到,所以在下午让其将备份的文件拷回来,我来重新进行操作。

用Oracle归档日志进行数据库恢复的方法

用Oracle归档日志进行数据库恢复的方法

select first_change# from v$log_history where sequence#=387;
其中387为最后一个有效的日志文件号加1,该例是查找386.
知道了SCN后,使用下述步骤完成恢复
1.使用命令“svrmgrl”调用行方式服务器管理;
联机重演日志没有丢失应使用完成恢复,如联机重演日志损坏,而又没有备份,就只能进行不完全恢复。
一、完全恢复:
1.使用命令“svrmgrl”调用行方式服务器管理;
2.输入命令“connect internal”,然后输入命令“startup mount’;
3.输入命令“recover database;”
现在开始实施恢复。
1.使用命令“svrmgrl”调用行方式服务器管理;
2.输入命令“connect internal”,然后输入命令“startup mount’;
3.输入命令“recover database until time '2002/06/23 14:42:04';”,Oracle提示需要的第一个归档重演日志文件名,输入“auto”,Oracle恢复归档重演日志直到序号为387的日志,停止恢复操作。
3).基于时间的恢复(time-based recovery)
为使用基于时间的恢复,必须知道记录在V$log_history归档重演日志序号387(丢失重演日志)的时间,通过执行查询语句“select time from v$log_history where sequence#=387;”得到。本例得到的时间是:2002-06-23 14:42:04
1.参照以下内容编辑init.ora文件:
log_archive_start = true

Oracle数据库数据丢失恢复的几种方法总结

Oracle数据库数据丢失恢复的几种方法总结

Oracle数据库数据丢失恢复的⼏种⽅法总结根据oracle数据库的特点和提供的⼯具,主要⽅法有以下⼏种⽅法:1. 利⽤逻辑备份使⽤import⼯具丢失数据的表2. 利⽤物理备份来通过还原数据⽂件并进⾏不完全恢复3. 利⽤dbms_logmnr包从redo log⽂件中恢复4. 利⽤flashback特性恢复数据前提为了⽅便使⽤⽅法的介绍,上述恢复⽅法都将基于以下场景进⾏:系统管理员在前⼀天晚上11点⽤export对数据库做了全库逻辑备份,然后对所有数据⽂件进⾏了热备份。

第⼆天上午10点,系统管理员在修改表TFUNDASSET的数据时,由于修改语句的条件写错了,导致⼀批记录(⼏千条)的ztm字段被修改成了错误的值,⽽且已经提交。

这个表是资产表,相对⽽⾔数据变化不频繁。

⼀、利⽤逻辑备份使⽤import⼯具恢复丢失的数据export/import是oracle提供的⽤于对数据库进⾏逻辑备份的⼯具。

该⼯具适⽤于备份那些数据量不⼤、业务量不多的数据库系统。

因为如果在前⼀天晚上11点⽤export做了逻辑备份,那么当今天上午10点数据库意外崩溃时,从备份起到数据库崩溃的这段时间⾥的数据修改操作(包括DDL和DML)都会丢失。

如果丢失数据内的表上的数据是相对⽐较稳定,也就是说该表上基本没有DML操作,例如标准代码表、分区表⾥的历史数据,那么采⽤import来导⼊该表可以⽐较完整的恢复数据。

如果该表是经常变化的业务表,那么这些丢失的数据只能根据业务情况从纸质记录恢复,或者其他途径恢复。

▲⽰例如下:这个表是⼀个资产表。

相对来说,今天系统运⾏中修改的数据较少,丢失的数据量可以承受或者可以从别的途径恢复。

那就可以⽤import来恢复。

⽅法⼀:1、把这个表的数据备份到另⼀个表:2、删除该表的记录:3、执⾏下⾯的命令:这个命令中在关键字tables中指定需要导⼊的表名字,ignore=y表⽰忽略表已经存在的错误。

4、导⼊结束后,检查表中的记录,并⽤适当的⽅法恢复当天的修改。

oracle备份、恢复

oracle备份、恢复

Oracle备份、恢复1. 引言备份和恢复是Oracle数据库管理中至关重要的一部分。

通过定期备份Oracle数据库,可以保证数据在发生故障或灾难时的安全性和可恢复性。

本文将介绍Oracle数据库的备份和恢复方法,以及一些常见的备份和恢复策略。

2. 备份方法Oracle数据库提供了多种备份方法,包括物理备份和逻辑备份。

2.1 物理备份物理备份是将数据库的物理文件(数据文件、控制文件和日志文件)备份到外部存储介质中。

物理备份可以使用Oracle提供的工具如RMAN(Recovery Manager),也可以使用操作系统级别的工具如tar或cp命令进行备份。

2.2 逻辑备份逻辑备份是通过导出数据库中的数据、表和对象定义来备份数据库。

逻辑备份可以使用Oracle提供的工具如expdp(数据泵导出)和exp (传统导出),也可以使用第三方工具如DataPump Export和TOAD进行备份。

3. 备份策略在制定备份策略时,需要考虑以下几个因素:3.1 定期备份备份应该定期进行,频率根据业务需求和数据库的变更频率而定。

通常,每天进行一次完整备份,并结合增量备份来减少备份时间和存储空间的占用。

3.2 备份保留时间备份需要保留一定的时间,以防止数据恢复时出现问题。

通常,完整备份可以保留一周,而增量备份可以保留一到两天。

3.3 备份验证备份完成后,需要进行备份验证以确保备份文件的完整性和可用性。

可以使用RMAN的VALIDATE命令来验证备份文件。

3.4 离线备份除了定期备份,还应该定期进行离线备份,将备份文件存储在不同的位置,以防止发生物理灾难。

4. 恢复方法当数据库发生故障或数据丢失时,需要使用备份文件进行恢复。

以下是一些常见的Oracle数据库恢复方法:4.1 物理恢复物理恢复是通过使用RMAN来还原备份文件和应用归档日志来恢复数据库。

物理恢复可以是完全恢复或部分恢复,具体取决于数据库的损坏程度和备份策略。

oracle数据丢失恢复数据方法

oracle数据丢失恢复数据方法

oracle数据丢失恢复数据方法在使用Oracle数据库过程中,数据丢失是一种常见的问题。

当数据库中的数据丢失时,我们需要及时采取措施来进行数据恢复,以避免数据的长期丢失。

本文将介绍一些常用的Oracle数据丢失恢复方法,帮助我们有效地处理这个问题。

1. 数据库备份与恢复数据库备份是一种常见的防范措施,它可以帮助我们在数据丢失后快速恢复数据库。

在Oracle中,我们可以使用RMAN(Recovery Manager)工具来实现数据库备份和恢复。

RMAN可以备份整个数据库或者特定的表空间、数据文件等,同时也支持增量备份,大大减少了备份所需的时间和空间。

当数据库发生数据丢失时,我们可以使用RMAN来恢复备份的数据库文件,确保数据的完整性。

2. 闪回技术Oracle提供了闪回技术,可以帮助我们恢复数据库到某个历史时间点的状态。

通过闪回技术,我们可以将数据库中的数据、表结构等回滚到特定的时间点,从而实现数据的恢复。

闪回技术相比于传统的数据恢复方法,具有更高的效率和更少的风险。

我们可以使用闪回查询(FLASHBACK QUERY)来查看历史数据,使用闪回表(FLASHBACK TABLE)来恢复特定表的状态,使用闪回数据库(FLASHBACK DATABASE)来恢复整个数据库。

3. 日志文件恢复Oracle数据库在运行过程中会生成大量的日志文件,这些日志文件记录了数据库的操作、变更等信息。

当数据库发生数据丢失时,我们可以通过日志文件的恢复来还原数据。

在Oracle数据库中,我们可以使用归档日志文件(Archive Log)或在线重做日志文件(Online Redo Log)来进行数据恢复。

归档日志文件可以将数据库中的所有变更操作记录下来,当数据丢失时,我们可以将归档日志文件应用到数据库中,恢复数据的完整性。

同时,我们也可以使用在线重做日志文件来进行数据恢复,将重做日志文件中的操作应用到数据库中。

4. 数据库导入导出数据库导入导出是一种常见的数据恢复方法。

如何使用归档日志进行完全恢复

如何使用归档日志进行完全恢复

如何使用归档日志进行完全恢复系统环境:1、操作系统:Windows 2000 Server,机器内存128M2、数据库:Oracle 8i R2 (8.1.6) for NT 企业版3、安装路径:C:\ORACLE模拟现象:先将数据库设置为归档模式(见“如何启动ARCHIVELOG模式(将数据库设置为归档模式).doc”)SQL*Plus--创建实验表空间create tablespace test datafile'c:\test.ora' size 5MAUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITEDdefault storage (initial 128K next 1M pctincrease 0)/--创建实验用户drop user test cascade;create user test identified by test default tablespace test;grant connect,resource to test;conn test/testcreate table a(a number);insert into a values(1);insert into a select * from a; --反复插入,达到10万条commit;拷贝test.ora为test1.ora文件insert into a select * from a; --20万条commit;关闭数据库shutdown删除test.ora文件,把test1.ora拷贝为test.ora。

重新启动数据库这时,可以mount上,但无法打开,因为现在使用的数据文件是旧的只有10万条记录,与控制文件中记载的log number不一样startup mount需要recover database,使数据库记录重新恢复到当前的20万条C:\>svrmgrlsvrmgrl>connect internalsvrmgrl>shutdownsvrmgrl>startup mountsvrmgrl>set autorecovery onsvrmgrl>recover database;svrmgrl>alter database open;conn test/testselect count(*) from a; --数据又恢复到20万条conn system/manager--删除实验表空间alter tablespace test offline;drop tablespace test INCLUDING CONTENTS;。

总结了10种_Oracle_文件损坏及恢复的过程

总结了10种_Oracle_文件损坏及恢复的过程

总结了10种_Oracle_文件损坏及恢复的过程Oracle数据库是一个关系数据库管理系统(RDBMS),用于存储和管理大量结构化数据。

然而,由于各种原因,Oracle数据库文件可能会损坏,这可能导致数据库无法正常工作。

为了解决这个问题,需要进行文件的恢复过程。

下面总结了10种Oracle文件损坏及恢复的常见过程:1.数据文件丢失:如果数据文件丢失,可以从最近的备份还原数据文件,并进行恢复。

2. 数据文件坏块:在Oracle数据库中,可以使用DBVERIFY工具来检查数据文件的坏块。

如果坏块小部分,可以使用RMAN进行恢复。

如果坏块较多,可能需要考虑重新创建数据文件。

3.日志文件丢失:如果日志文件丢失,可以使用备份中的归档日志文件进行恢复。

如果没有备份,可以使用增量备份或物理备份进行恢复。

4.日志文件坏块:使用DBVERIFY工具可以检查日志文件的坏块。

如果发现坏块,可以尝试使用RMAN进行恢复,或者由管理员手动修复坏块。

5.控制文件丢失:如果控制文件丢失,可以从备份中还原控制文件,并使用RECOVER命令进行数据库恢复。

6.控制文件坏块:使用DBVERIFY工具检查控制文件的坏块。

如果找到坏块,可以使用备份恢复控制文件,或者手动修复坏块。

7.数据库文件或表空间重命名:如果数据库文件或表空间被重命名,可以使用ALTERDATABASERENAME命令更改文件或表空间的名称。

8. 恶意软件或数据损坏:如果Oracle数据库中的数据被恶意软件感染或损坏,必须进行杀毒和修复操作。

首先,应使用杀毒软件对系统进行全面扫描,以确保杀死所有恶意软件。

然后,可以使用RMAN进行数据恢复。

9.操作错误:有时,由于误操作或错误的命令,数据库文件可能会被损坏。

在这种情况下,可以从备份中还原损坏的文件,并执行相关的恢复操作。

10. 数据库崩溃:如果Oracle数据库发生崩溃,可能需要使用RMAN 进行恢复。

首先,必须使用备份进行数据库重建,然后使用RMAN进行恢复。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle丢失归档日志文件的数据库恢复方法
丢失归档日志文件的数据库恢复方法,从一个不能正常打开的数据库(由于一个/多个数据库文件与其他文件不一致)中提取数据。

场景:一个磁盘损坏了并且丢失了一个数据库文件。

从一周前的热备转储数据文件,不幸的是丢失了几个归档日志文件。

但是有问题的数据文件包含了最重要的表,如何能够挽救数据呢?
每个DBA都知道这是有问题的,一定会丢失数据,因为某些事务丢失了,问题是会丢失多少数据?Oracle 使用硬线路位置并且由于存在完整性约束问题,因此不允许正常打开数据。

但是如果使用非常规的方法让Oracle删除其硬线路属性,那么应该能够提取尽可能多的数据。

而通常这会比损失全部数据要好很多。

详细过程通常如果仅仅丢失了堆表的索引,或者某些能够很容易重建的数据,那么最好的方法应该是删除表空间并重建这些对象然后重新输入。

但是如果丢失的数据文件包含了重要数据并且很难恢复,而且只有前一次的备份却又丢失了某些归档日志,那么用户可能希望能够尽可能多的从有问题的表空间恢复数据并且删除和重建表空间。

主要的步骤如下:
1. 对当前拥有的数据进行一个冷备;
2. 转储丢失的数据库文件备份并应用可以应用的日志;
3. 设置未文档化的初始化参数,其允许你在当前状态打开数据库;
4. 执行exp并提取全部可以从有问题的表空间提取的数据;
5. 从先前的冷备转储数据库;
6. 使毁坏的数据文件offline;
7. 执行exp并提取第4步没有提取的额外数据;
8. 在一次从冷备转储;
9. 删除有问题的表空间;
10. 重建有问题的表空间;
11. 使用第四步和第七步提取的数据重建数据;
使用案例描述:ORDTAB表空间的一个数据文件ordtab03.dbf毁坏,其包含很多ORDERS表的分区,数据文件热备于July 4,2004,July 4—至今的某些归档日志丢失。

第一步:备份数据库第一步的任务是冷备当前拥有的任何数据文件,在线重做日志,和控制文件。

如果丢失了一个/多个数据文件但是数据库仍然是open的,那么对每个剩余的数据文件进行热备并确保备份期间/之后的归档被安全保存。

创建备份后,在关闭数据库之前,备份一下控制文件:ALTER DATABASE BACKUP CONTROLFILE TO TRACE RESETLOGS;然后打开备份的控制文件,删除第一个#之上的所有行,并删除“RECOVER DATABASE…”到文件结尾的全部。

第二步:转储丢失的数据库文件备份并应用日志;这一步应该转储备份,并应用日志到直到无法在前向滚动,此时如果尝试正常打开数据库,将会得到ORA-01589:must use RESETLOGS or NORESETLOGS option for database open错误。

如果尝试执行ALTER DATABASE OPEN RESETLOGS,将会得到ORA-01195错误:ORA-01195:online backup of file %s needs more recovery to be consistent.这里是Oracle使用其硬线路的位置。

由于转储的数据文件不能恢复到与其他文件一致的位置,所以可能存在中断的数据并且Oracle不允许正常打开数据库。

第三步:设置未文档化的实例参数并打开数据库在初始化参数文件中首先需要将job_queue_processes 设置为0,然后设置_allow_resetlogs_corruption=TRUE,更改该参数后,切换到保存新控制文件的目录,第一步创建的位置。

然后以SYSDBA连接并运行新的控制文件创建脚本。

此时数据库可以打开了。

SQL> SELECT COUNT(*) FROM OE.orders;
第四步:执行导出并提取数据在这一步可以很容易的看到那些表导出了全部的数据。

第五步:转储备份的数据库这一步,以及下面两步可选。

这三步结合在一起允许提取更多的数据,这一步从备份的数据库转储可以高效的撤销任何由于使用_allow_resetlogs_corruption参数造成的毁坏。

因此,这一步不会恢复任何丢失的数据文件。

第六步:使毁坏的数据文件offline ALTER DATABASE DATAFILE ’/u07/oradata/PRD/ordtab03.dbf’ OFFLINE;这一步得到数据库的完全一致性状态。

第七步:执行导出并提取额外的数据这一步可能能够提取从第四步不能提取的额外数据,如索引中的数据。

第八步:转储数据库这是最后一次转储数据库,这一步正式回滚数据库到使用隐含参数前那一刻,然后将数据库返回到正常状态,如果从第五步转储以来没有更新任何数据,可以跳过这一步。

第九步:删除有问题的表空间首先需要查看是否有完整性约束限制,使用以下查询:
SELECT CR.constraint_name
FROM dba_constraints CR, dba_constraints CP, dba_tables TP, dba_tables TR
WHERE CR.r_owner = CP.owner
AND CR.r_constraint_name = CP.constraint_name
AND CR.constraint_type = ’R’
AND CP.constraint_type IN (’P’, ’U’)
AND CP.table_name = TP.table_name
AND CP.owner = TP.owner
AND CR.table_name = TR.table_name
AND CR.owner = TR.owner
AND TR.tablespace_name <> ’ORDTAB’
AND TP.tablespace_name = ’ORDTAB’;
如果有约束,可能需要创建重建脚本。

如果使用export dump重建数据,约束可以从导出文件转储。

DROP TABLESPACE ordtab INCLUDING CONTENTS CASCADE CONSTRAINTS;
第十步:重建表空间
第十一步:重建数据执行导入。

相关文档
最新文档