Chinaunix首页 | 论坛 | 博客
  • 博客访问: 53504
  • 博文数量: 17
  • 博客积分: 173
  • 博客等级: 民兵
  • 技术积分: 82
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-25 19:06
文章分类
文章存档

2015年(3)

2014年(2)

2013年(4)

2012年(8)

我的朋友

分类: Oracle

2013-04-04 00:02:02

一:重做日志文件
oracle的重做日志文件,会记录数据库的任何操作,包括DML和DDL语句,数据结构的更改等.
当数据被以外的修改删除,或者instance,disk失败,也可以用重做日志文件进行恢复.所以有必要把数据文件和重做日志文件放在两块不同的硬盘上以防止硬盘物理损坏.
二:归档模式
数据重做日志记录数据库的所有动作.oracle在默认安装的时候会有三个重做日志文件.
可以通过以下语句查询
 

SQL> select group#, members,bytes,status, archived from v$log;
    GROUP# MEMBERS BYTES STATUS ARC
---------- ---------- ---------- ---------------- ---
     1 1 104857600 INACTIVE NO
     2 1 104857600 INACTIVE NO
     3 1 104857600 CURRENT NO


当第一个日志文件达到一定数量时,就会停止写入,而转向第二个日志文件,第二个满转向第三个日志文件.第三个满就向第一个日志文件写入.而第一个日志文件有没有自动备份就涉及到归档或者不归档的问题.当数据库自动对原来的日志文件进行备份的话就叫归档模式,不需要对数据库进行自动备份就叫非归档模式.

上面 sql语句查询的结果表明:目前第一个和第二个重做日志文件都已满,目前写入的是第三个日志文件,采用的是非归档模式.

使用下面的语句也可以查询目前数据库使用的日志模式是否归档:

SQL> archive log list
数据库日志模式 非存档模式
自动存档 禁用
存档终点 D:\oracle\ora92\RDBMS
最早的概要日志序列 101
当前日志序列 103


非归档模式只能做冷备份,归档模式可以做热备份并且可以做增量备份和部分恢复.

在非归档模式下执行数据库备份时,基本上数据管理员通过重做日志文件不能够恢复全部的数据,所以必须备份所有的数据文件和控制文件,而且必须使用 shutdown  normal等命令关闭数据库.

而在归档模式下.当出现介质损坏(硬盘损坏或者以外删除数据文件)或者例程失败(服务器断电),数据库管理员可以通过归档日志来防止数据丢失,而非归档模式只能应对instance失败.在归档模式下,技术数据库处于open状态,仍然可以备份数据库,而不影响数据库的正常使用.不仅可以做完全恢复而且可以将数据库恢复到特定的点.

非归档模式和归档模式各有各的优点,选择时可以参考:1,数据库中数据变化的频繁程度;2,企业对数据丢失的态度;3,数据库是否需要7x24运行,因为非归档模式需要关闭数据库才能进行备份.

模式之间的切换

1:非归档模式切换到归档模式

SQL> connect system/manager as sysdba
已连接。
SQL> archive log list
数据库日志模式 非存档模式
自动存档 禁用
存档终点 D:\oracle\ora92\RDBMS
最早的概要日志序列 101
当前日志序列 103
SQL> SHUTDOWN
SQL> STARTUP MOUNT
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;

接下来再做一次完全备份,因为非归档日志模式下产生的备份日志对于归档模式已经不可用了.这一步非非常重要!


2:归档模式切换到非归档模式

SQL> ALTER DATABASE NOARCHIVELOG;

其他步骤一样

附上两条官方的建议:

一是如果采用了归档模式的话,应该将重做日志成员放到不同的硬盘上去,以便消除LGWR和ARCH后台进程对重做日志成员的争夺.也就说说,如果有许多组多路复用重做日志成员, 则可以将每个成员放置在不同的硬盘上,并将其归档重做日志也放在不同的硬盘上.

二是不应该将数据日志文件存放在非常活跃的数据或索性表空间的硬盘上。这会降低数据库正常读取的效率。


 

阅读(1453) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~