Oracle数据库中的归档模式和非归档模式是两种日志管理模式,它们之间的主要区别体现在对重做日志的处理方式、数据恢复能力、数据库备份与恢复策略、性能影响以及管理复杂度等多个方面。
一、对重做日志的处理方式
归档模式:在归档模式下,当重做日志文件(Redo Log)被填满后,Oracle不会直接覆盖旧的日志,而是将它们保存到归档日志文件中。这意味着所有的事务日志都会被保留,包括在线Redo日志和归档日志。
非归档模式:在非归档模式下,Oracle不会保存旧的重做日志文件。当重做日志文件被填满后,Oracle会直接覆盖旧的日志。因此,非归档模式下只有在线Redo日志,没有归档日志。
二、数据恢复能力
归档模式:由于所有的数据库改动都记录在日志文件中(包括在线Redo日志和归档日志),如果发生数据丢失或损坏,可以利用物理备份和归档日志完全恢复数据库,甚至可以恢复到特定的时间点(Point-In-Time Recovery,PITR)。
非归档模式:由于只有在线Redo日志且会被覆盖,非归档模式只能恢复到最近的完全备份点,无法恢复到任意一个时间点。此外,非归档模式主要适用于保护例程失败(如服务器突然断电),而不能保护介质损坏(如硬盘损坏或意外删除数据文件)。
三、数据库备份与恢复策略
归档模式:支持联机热备(在数据库运行状态下进行备份),备份时用户对数据库的使用不受影响。同时,归档日志文件也是数据库备份的一部分,通过备份归档日志文件可以完全还原数据库至备份时的状态。
非归档模式:只能进行脱机备份(必须关闭数据库后才能进行备份),备份过程中数据库不能使用。此外,非归档模式在备份时需要备份整个数据库,不能进行增量备份。
四、性能影响
归档模式:由于需要写归档日志,可能会增加一些I/O操作,从而在一定程度上影响数据库性能。但随着Oracle版本的升级和硬件性能的提升,这种影响已经变得越来越小。
非归档模式:由于不需要写归档日志,可能会减少一些I/O操作,从而在理论上提高数据库性能。但这种性能提升通常是非常有限的。
五、管理复杂度
归档模式:需要更多的磁盘空间来保存归档日志文件,同时DBA也需要承担更多的管理工作,包括维护归档空间、备份归档日志等。
非归档模式:管理相对简单,不需要额外的磁盘空间来保存归档日志文件,也不需要进行归档日志的备份和管理。
综上所述,Oracle数据库的归档模式和非归档模式各有优缺点。在选择使用哪种模式时,需要根据具体的需求和环境进行权衡。如果企业对数据安全要求比较高或者数据库需要全天候运行,那么归档模式可能更适合;如果企业对数据安全要求相对较低或者希望在一定程度上提高数据库性能并简化管理复杂度,那么非归档模式可能是一个不错的选择。
六、如果开启和关闭归档模式
打开归档模式
首先使用sqlplus工具以管理员身份进入oracle管理端
sqlplus sys/密码 as sysdba archive log list; //查询当时状态是否归档(存档)模式
也可以用select name, log_mode from v$database;来查询,log_mode的值为 NOARCHIVELOG 表示数据库处于非归档模式,log_mode的值为 ARCHIVELOG 表示数据库处于归档模式
如果是处理非归档模式,要先关闭数据库。
shutdown immediate;
启动数据库到mount状态。
startup mount;
更改数据库的归档模式。
alter database archivelog; alter database open;
归档模式的数据库更改为非归档模式
如果数据库处于打开状态则需要先关闭数据库,如果数据库处于打开状态则需要先关闭数据库。
alter system archive log current; shutdown immediate;
启动数据库到mount状态
startup mount;
查看的数据库的归档信息
archive log list;
或者
select name, log_mode from v$database;
更改归档模式为非归档模式
alter database noarchivelog;
再次查看归档信息以确保Oracle的状态是非归档状态。
打开数据库
alter database open;
以上就是ORACLE归档模式的开启与关闭。