oracle数据库在删掉全部oracle 重做日志文件后如何进行恢复

oracle的重做日志文件不见了,要怎么找回?_百度知道
oracle的重做日志文件不见了,要怎么找回?
我有更好的答案
系统崩溃后的实例恢复q 通过备份恢复数据文件之后恢复介质q 备用(standby)数据库处理q 输入到流中,这是一个重做日志挖掘过程,用于实现信息共享(这也是一种奇特的复制)重做日志文件的主要目的是,万一实例或介质失败,重做日志文件就能派上用场,或者可以作为一种维护备用数据库(standby database)的方法来完成故障恢复。如果数据库所在主机掉电,导致实例失败,Oracle会使用在线重做日志将系统恢复到掉电前的那个时刻。如果包含数据文件的磁盘驱动器出现了永久性故障,Oracle会使用归档重做日志以及在线重做日志,将磁盘驱动器的备份恢复到适当的时间点。另外,如果你“无意地”删除了一个表,或者删掉了一些重要的信息,而且提交了操作,则可以恢复一个备份,并让Oracle使用这些在线和归档重做日志文件将其恢复到意外发生前的那个时刻。
没有备份的话!是不是永久删除的?要不用一下恢复软件!easyroveroy
有备份没,像RMAN备份或者物理备份,说清楚怎么丢失的
好像有一招叫回闪的,网上查查!
从其他人那里考过来就行了
其他2条回答
为您推荐:
其他类似问题
日志文件的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!如何用日志文件恢复数据库?
[问题点数:50分,结帖人nannanok]
如何用日志文件恢复数据库?
[问题点数:50分,结帖人nannanok]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|Posts - 831,
Articles - 0,
Comments - 1570
22:53 by 潇湘隐者, ... 阅读,
联机重做日志文件概念
联机日志文件又叫重做日志文件,记录了对数据库修改的信息,包括用户对数据修改和数据库管理员对数据库结构的修改。它主要用于在发生故障的时候和数据库备份文件配合恢复数据库,一般发生故障有2个情况:一个是介质损坏另外一个是用户误操作。每个数据库至少有两个日志文件组,每组至少包含1个或者多个日志成员,这里要多个日志成员的原因是防止日志文件组内某个日志文件损坏后及时提供备份,所以同一组的日志成员一般内容信息相同,但是存放位置不同。
在Oracle数据库中,执行数据修改操作后,并不是马上写入数据文件,而是首先生成重做信息,并写入SGA中的一块叫LOG_BUFFER的固定区域,LOG_BUFFER的空间并不是无限大,事实上它非常小,一般设置在3~5MB左右。LOG_BUFFER有一定的触发条件,当满足触发条件后,会有相应进程将LOG_BUFFER中的内容写入一个特定类型的文件,就是传说中的联机重做日志文件。
联机重做日志文件是循环使用的(见下图)。当第一个日志文件达到一定数量时,就会停止写入,而转向第二个日志文件,第二个满转向第三个日志文件.第三个满就向第一个日志文件写入.而第一个日志文件有没有自动备份就涉及到归档或者不归档的问题.当数据库自动对原来的日志文件进行备份的话就叫归档模式,不需要对数据库进行自动备份就叫非归档模式.
那么什么情况触发LGWR进程写日志文件呢?以下情况将触发LGWR进程写操作:
1).当commit事务发生
2).当redo log buffer存储达到1/3
3).当重做日志缓冲区有超过一个兆字节的更改记录
4).在DBWN将buffer cache修改过的数据块的信息写入到数据文件之前
触发CHECK POINT事件的情况:
1).每次日志切换时。
2).实例通过normal,transactional,immediate选项关闭时
3).通过设置初始化参数FAST_START_MTTR_TARGET强制发生
4) .数据库管理员手工设置ALTER SYSTEM CHECKPOINT、 ALTER TABLESPACE, DATAFILE OFFLINE时。
5).使用alter tablespace[OFFLINE NORMAL|READ ONLY|BEGIN BACKUP] 语句导致指定数据文件发生检查点
非归档模式只能做冷备份,归档模式可以做热备份并且可以做增量备份和部分恢复.
在非归档模式下执行数据库备份时,基本上数据管理员通过重做日志文件不能够恢复全部的数据,所以必须备份所有的数据文件和控制文件,而且必须使用 shutdown normal等命令关闭数据库.
而在归档模式下.当出现介质损坏(硬盘损坏或者误删数据文件)或者例程失败(服务器断电),数据库管理员可以通过归档日志来防止数据丢失,而非归档模式只能应对instance失败.在归档模式下,数据库处于open状态,仍然可以备份数据库,而不影响数据库的正常使用.不仅可以做完全恢复而且可以将数据库恢复到特定的点.
非归档模式和归档模式各有各的优点,选择时可以参考:1,数据库中数据变化的频繁程度;2,企业对数据丢失的态度;3,数据库是否需要7x24运行,因为非归档模式需要关闭数据库才能进行备份.
查看归档模式
ORACLE数据库拥有2种归档模式,ARCHIVELOG和NOARCHIVELOG。可以通过下面方式查看数据库的归档模式
(1): SELECT NAME, LOG_MODE FROM V$DATABASE
SQL& archive log list
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 106
下一个存档日志序列 108
当前日志序列 108
SQL& archive log list
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 2861
Current log sequence 2866
日志模式切换
非归档模式切换归档模式
1、关闭服务:
SQL& SHUTDOWN IMMEDIATE;
2、不加载数据文件(只加载控制文件和日志文件)启动服务:
SQL& STARTUP MOUNT;
3、查看日志归档模式:
SQL& ARCHIVE LOG LIST
数据库日志模式 非存档模式
自动存档 禁用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 163
当前日志序列 165
4、配置数据库启用日志归档模式
SQL& ALTER DATABASE ARCHIVELOG;
数据库已更改。
5、加载并打开数据文件:
SQL& ALTER DATABASE OPEN;
数据库已更改。
6、再次查看日志归档模式
SQL& ARCHIVE LOG LIST
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 163
下一个存档日志序列 165
当前日志序列 165
SQL& ARCHIVE LOG START
已处理的语句
7:修改参数LOG_ARCHIVE_START
SQL& ALTER SYSTEM SET LOG_ARCHIVE_START=TRUE SCOPE=SPFILE;
系统已更改。
归档模式切换到非归档模式
1、关闭服务
SQL& SHUTDOWN IMMEDIATE;
2、启动服务(不加载数据文件)
SQL& STARTUP MOUNT;
3、设置数据库为非归档模式
SQL& ALTER DATABASE NOARCHIVELOG;
数据库已更改。
4、加载并打开数据文件
SQL& ALTER DATABASE OPEN;
数据库已更改。
日志切换和检查点切换
SQL&ALTER SYSTEM SWITCH LOGFILE;
日志切换就是停止写当前日志组,转而写另外一个新的日志组、系统可以自动切换,也可以手工切换。当发生SWITCH LOGIFLE时,系统会在后台完成CHECKPOINT的操作。CHECKPOINT是一个事件,它用于减少instant recovery的时间.当CHECKPOINT发生时,它会触发DBWR进程,把database buffer中变化了的数据写入数据文件,同时chkp进程更新control file和datafile header,以使它们保持一致。检查点其实是一个后台进程,用来保证所有修改过的数据库缓冲区的东西都写入数据库文件。它由参数LOG_CHECKPOINT_TIMEOUT和LOG_CHECKPOINT_INTERVAL来决定。检查点完成后,系统将更新数据库头和控制文件,也保证数据库的同步。这里主要体现在一个系统改变号上SCN(也叫检查点号)。它分别出现在v$log表的FIRST_CHANGE#列和V$DATAFILE的CHECKPOINT_CHANGE#列还有V$DATABASE的CHECKPOINT_CHANGE#上。 只要说明三个值相同,那么数据库就没有不同步的现象。否则就要进行介质恢复。这里可以通过日志切换改变新的检验点号。当然引起SCN改变的情况还有很多。
SQL&ALTER SYSTEM CHECKPOINT;
强制设置检查点间隔
ALTER SYSTEM SET FAST_START_MTTR_TARGET = n
联机日志文件的规划
联机日志文件的规划原则如下:
1:分散放开,多路复用。一般会将同一组的不同日志成员文件放到不同的磁盘或不同的裸设备上。以提高安全性。
2:把重做日志放在速度最快的硬盘上(即:日志所在的磁盘应当具有较高的I/O),一般会将日志文件放在裸设备上。
3:把重做日志文件设为合理大小:例如,增大日志文件大小可以加快一些大型的INSERT、UPDATE、DELETE操作,也能降低日志文件切换频率。减少一些日志等待事件。一般根据具体业务情况有所不同。一般日志组大小应满足自动切换间隔至少15-20分钟左右业务需求
4:ORACLE推荐,同一个重做日值组下的所有重做日志文件大小、成员个数一致.
联机重做日志状态
日志文件组的状态一般有INACTIVE、ACTIVE、CURRENT、UNUSED、CLEARING、CLEARING_CURRNT等六种状态:
SQL& SELECT STATUS FROM V$LOG;
UNUSED : 表示该联机重做日志文件组对应的文件还从未被写入过数据,通常刚刚创建的联机重做日志文件组会显示成这一状态。当日志切换到这一组时,就会改变状态。
CURRENT : 表示当前正在使用的日志文件组。该联机重做日志组是活动的。当前Oracle数据库正在使用的联机重做日志文件组。
ACTIVE : 表示该组是活动的但不是当前组,实例恢复时需要这组日志。如果处于这一状态,表示虽然当前并未使用,不过该文件中内容尚未归档,或者文件中的数据没有全部写入数据文件,一旦需要实例恢复,必须借助该文件中保存的内容。
INACTIVE: 表示实例恢复已不再需要这组联机重做日志组了。表示对应的联机重做日志文件中的内容已被妥善处理,该组联机重做日志当前处于空闲状态。
CLEARING:表示该组重做日志文件正被重建(重建后该状态会变成UNUSED)。
CLEARING_CURRENT:表示该组重做日志重建时出现错误。
日志文件的状态有STALE,INVALID 、DELETED、空白 四种状态。可以通过下面语句查看
SELECT STATUS FROM V$LOGFILE
INVALID : 表示该文件是不可以被访问的。
STALE : 表示该文件中的内容是不完全的。
空白 : 表示该文件正在使用。
DELETED : 表示该文件已不再有用了。
ARCHIVED列值为YES表示已经归档,NO表示未归档。 SEQUENCE列值表示日志序列号,每进行一次日志切换就+1。
创建新的日志组
ALTER DATABASE ADD LOGFILE GROUP 1('/oradata/redo01_1.log', '/oradata/redo01_2.log') SIZE 8G REUSE;
一开始增加的日志文件,日志序列为0,状态为UNUSED,因为没有使用过,进行切换后,就可以正常使用了。
删除旧的日志组
ALTER DATABASE DROP LOGFILE GROUP 1;
注意事项:
1)执行删除日志组命令后,其实只是在数据字典中删掉了对于日志信息。你查看对应的日志文件,你会发现日志文件还在,只有手动删除日志文件,才能真正的删除日志文件。
2)不能删除仅有的2个文件组;
例如,数据库只有两组重做日志文件,删除其中一组ALTER DATABASE DROP LOGFILE GROUP 2;
ORA-01567: 删除日志 2 时将为实例 orcl (线程 1) 保留两个以下的日志文件
ORA-00312: 联机日志 2 线程 1: 'E:\APP\KERRY\ORADATA\ORCL\REDO02.LOG'
3)不能删除正在活动的文件组(即CURRENT、ACTIVE状态的日志文件);
Windows平台:
Linux平台:
SQL& alter database drop logfile group 10;
ERROR at line 1:
ORA-01623: log 10 is current log for instance WFCSDB03 (thread 1) - cannot drop
ORA-00312: online log 10 thread 1: '/oradata/raw/redo04_1.raw'
ORA-00312: online log 10 thread 1: '/oradata/raw/redo04_2.raw'
SQL& alter s
System altered.
SQL& select * from v$log;
MEMBERS ARC STATUS
FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
265 1.0733E+10
7 rows selected.
SQL& alter database drop logfile group 10;
alter database drop logfile group 10
ERROR at line 1:
ORA-01624: log 10 needed for crash recovery of instance WFCSDB03 (thread 1)
ORA-00312: online log 10 thread 1: '/oradata/raw/redo04_1.raw'
ORA-00312: online log 10 thread 1: '/oradata/raw/redo04_2.raw'
4)不能删除当前组的成员,当日志组只有一个成员时,不能删除日志组成员。
5)不能删除还没有归档的文件组。
增加日志组文件
ALTER DATABASE ADD LOGFILE MEMBER 'E:\APP\KERRY\ORADATA\ORCL\REDO011.LOG' TO GROUP 1
删除日志组文件
不能删除日志组中唯一的日志文件,可以使用删除组的方法直接删除组;不能删除没有归档或者还在活动的日志;
ALTER DATABASE DROP LOGFILE MEMBER 'E:\APP\KERRY\ORADATA\ORCL\REDO011.LOG'
重命名日志组文件
ALTER DATABASE RENAME FILE 'E:\APP\KERRY\ORADATA\ORCL\REDO02.LOG' TO 'D:\REDO02.LOG';
一不能移动正在使用的日志文件,否则执行脚本会报如下错误:
二确保执行命令前把目标文件已经移动到新目录下了,否则会报如下错误:
ORA-01511:重命名日志/数据文件时出错
ORA-01512:重命名日志文件E:\APP\KERRY\ORADATA\ORCL\REDO02.LOG出错,未找到新文件D:\REDO02.LOG
ORA-27041: 无法打开文件。
清空日志文件数据
清空是说删除日志文件的内容。主要用于数据库无法进行有效恢复的时候。比如标识为current的日志文件组所有文件都坏了等。只有非active 和非current状态的组才能被清空
ALTER DATABASE CLEAR LOGFILE 'XXX\XXX\XX.LOG';
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP NUMBER;
查询日志组相关信息
下面是重做日志相关的数据字典
SELECT * FROM V$LOG;
SELECT * FROM V$LOGFILE;
SELECT * FROM V$ARCHIVED_LOG;
SELECT * FROM V$RECOVER_FILE
SELECT * FROM V$LOG_HISTORY;
SELECT * FROM V$LOGHIST;
--查看闪回日志使用状况
SELECT * FROM V$FLASH_RECOVERY_AREA_USAGE;
--查看日志组切换时间间隔
SELECT N.RECID
N.FIRST_TIME
AS FIRST_TIME
M.FIRST_TIME
AS END_TIME
ROUND((M.FIRST_TIME - N.FIRST_TIME) * 24 * 60, 2)AS MINUTES
FROM V$LOG_HISTORY M, V$LOG_HISTORY N
WHERE M.RECID = N.RECID + 1
ORDER BY M.RECIDoracle的归档模式 ORACLE数据库归档日志常用命令
转载 &更新时间:日 18:04:24 & 作者:
Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里
--连接恢复管理器 C:\Documents and Settings\mengzhaoliang&rman target/ --归档日志列表 RMAN& --删除物理文件不存在的归档日志 RMAN& delete ex --删除7天前的归档日志 RMAN& DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7'; oracle的归档模式 一。查看oracle数据库是否为归档模式: 1.select name,log_mode from v$ NAME LOG_MODE ------------------ ------------------------ QUERY NOARCHIVELOG 2.使用ARCHIVE LOG LIST 命令 Database log mode No Archive Mode Automatic archival Disabled Archive destination /data/oracle/product/10.2.0/db_1//dbs/arch Oldest online log sequence 739 Current log sequence 741 二。什么是Oracle归档模式? Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里。一般数据库至少要有2个联机重做日志组。当一个联机重做日志组被写满的时候,就会发生日志切换,这时联机重做日志组2成为当前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,就这样反复进行。 如果数据库处于非归档模式,联机日志在切换时就会丢弃. 而在归档模式下,当发生日志切换的时候,被切换的日志会进行归档。比如,当前在使用联机重做日志1,当1写满的时候,发生日志切换,开始写联机重做日志 2,这时联机重做日志1的内容会被拷贝到另外一个指定的目录下。这个目录叫做归档目录,拷贝的文件叫归档重做日志。 数据库使用归档方式运行时才可以进行灾难性恢复。 1.归档日志模式和非归档日志模式的区别 非归档模式只能做冷备份,并且恢复时只能做完全备份.最近一次完全备份到系统出错期间的数据不能恢复. 归档模式可以做热备份,并且可以做增量备份,可以做部分恢复. 用ARCHIVE LOG LIST 可以查看期模式状态时归档模式还是非归档模式. 三。配置数据库的归档模式 改变非归档模式到归档模式: 1)SQL&SHUTDOWN NORMAL/IMMEDIATE; 2)SQL&START MOUNT; 3)SQL&ALTER DATABASE ARCHIVELOG; 4)SQL&ALTER DATABASE OPEN; 5)SQL&做一次完全备份,因为非归档日志模式下产生的备份日志对于归档模式已经不可用了.这一步非非常重要! 改变归档模式到非归档模式: 1)SQL&SHUTDOWN NORMAL/IMMEDIATE; 2)SQL&START MOUNT; 3)SQL&ALTER DATABASE NOARCHIVELOG; 4)SQL&ALTER DATABASE OPEN; 3.启用自动归档: LOG_ARCHIVE_START=TRUE 归档模式下,日志文件组不允许被覆盖(重写),当日志文件写满之后,如果没有进行手动归档,那么系统将挂起,知道归档完成为止. 这时只能读而不能写. 运行过程中关闭和重启归档日志进程 SQL&ARCHIVE LOG STOP SQL&ARCHIVE LOG START 4.手动归档: LOG_ARCHIVE_START=FALSE 归档当前日志文件 SQL&ALTER SYSTEM ARCHIVE LOG CURRENT; 归档序号为052的日志文件 SQL&ALTER SYSTEM ARCHIVE LOG SEQUENCE 052; 归档所有日志文件 SQL&ALTER SYSTEM ARCHIVE LOG ALL; 改变归档日志目标 SQL&ALTER SYSTEM ARCHIVE LOG CURRENT TO '&PATH
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 oracle 重做日志文件 的文章

 

随机推荐