题目部分
在Oracle中,归档和非归档模式之间的不同点是什么?它们各自的优缺点是什么?
♣
答案部分
在Oracle数据库中,数据库可以设置为归档模式和非归档模式。归档模式保存所有的事务日志,包括在线Redo日志和归档日志,而非归档模式没有归档日志,只有在线Redo日志。归档模式是指可以备份所有的数据库事务并恢复到任意一个时间点。非归档模式则相反,不能恢复到任意一个时间点,但是非归档模式可以带来数据库性能上的少许提高,因为非归档模式没有归档日志。DBA必须做出的一个重要决策是将数据库配置为在ARCHIVELOG模式下运行还是将其配置为在NOARCHIVELOG模式下运行。。
NOARCHIVELOG模式具有以下的特点:
1)当CHECKPOINT完成后,LGWR进程可以覆盖重做日志的内容。
2)如果数据库备份后重做日志内容被覆盖,此时出现数据文件介质故障,那么只能恢复到之前的备份点。
3)当数据库处于OPEN状态时,不能进行备份,也即是不能进行非一致性备份。只能将数据库置于MOUNT状态后才能进行备份。
4)当执行数据库备份时,必须备份数据库的所有数据文件和控制文件。
归档和非归档模式有以下几点区别:
l 在NOARCHIVELOG模式下,每次进行日志切换时都会覆盖联机重做日志文件。在ARCHIVELOG模式下,必须先归档不活动的已填满联机重做日志文件组,然后才能再次使用这些联机重做日志文件。
l ARCHIVELOG模式对大多数备份策略而言是必不可少的,并且这种模式很容易进行配置。如果归档日志文件目标位置填满或者无法写入,那么数据库将会夯住。从归档日志文件目标位置删除归档文件,数据库将继续正常运行。
l 在大多数情况下,数据库处于NOARCHIVELOG模式(默认模式)时,只能恢复到最后一次备份时的状态。在该备份之后执行的所有事务处理都会丢失。在ARCHIVELOG模式下,可一直恢复到最后一次提交时的状态。大多数生产数据库都在ARCHIVELOG模式下运行。
l 利用RMAN备份数据库,若是归档模式则可以在OPEN状态下备份,若是非归档模式则不能在OPEN状态下备份。
如果要切换数据库的归档模式,那么必须要干净地关闭数据库然后启动到MOUNT状态,再进行切换归档模式,步骤如下所示:
sqlplus / as sysdba
shutdown immediate
startup mount
alter database archivelog; -- alter database noarchivelog;
alter database open;
archive log list
& 说明:
有关归档和非归档的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2137829/
本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗