淘先锋技术网

首页 1 2 3 4 5 6 7

Oracle数据库系统是业内最为出众的数据库系统之一,而它自家提供的日志机制,在保证可靠性的前提下,往往要更为强大跟灵活。onlinelog是oracle的一种重要日志机制,它为oracle提供了在线的、滚动的事务日志,用以记录所有对数据库进行的事务操作。

Onlinelog按照日志类型可分为redo log、archive log、standby log、随机读日志(RDBMS)、普通读日志(RDBMS),它们在不同的使用场景下具有各自独特的地位。

Redo log是onlinelog中最常用的日志类型,在oracle数据库中,所有的事务都会按顺序在redo log中记录下来。Redo log的作用在于,当系统崩溃、故障出现、机器宕机或者其他类似的灾难性事件发生时,它可以帮助系统重建事务。具体而言,当从内存中恢复出现故障时,oracle会重新执行所有对数据库的修改操作,忽略那些已经提交的事务。当访问大量数据时,这种机制可以很好地解决多用户并发访问的问题,提高系统的性能。

SQL>ALTER DATABASE ADD LOGFILE MEMBER 'd:\oracle\redo2.log' TO GROUP 2;

该语句操作的作用是在(当前数据库)增加日志组2的成员:‘D:\ORACLE\REDO2.LOG’。这个语句是添加新的在线日志成员,Oracle的onlinelog看起来像是一个有限的日志集合,但你可以按需对其进行扩展。如上述操作是将在原有的日志组2下添加一个新的成员文件名为:‘D:\ORACLE\REDO2.LOG’。通过此操作可以扩展日志文件大小,保证存储足够的操作日志,保护系统安全。

Archive log是一种特殊的Redo log,使得记录的Redo log可以转储到磁盘上的一个归档目录中。通过设置ARCn进程作为后台线程将Redo log转储到归档目录下的v$log_history视图中。而该目录如果是FRA,则当AUTO_DELETE复制为true时,Oracle自动删除旧的档案日志,以保证存储空间的使用效率。

SQL>ALTER SYSTEM ARCHIVE LOG CURRENT;

该操作可以将当前Redo log归档。Redo log归档到归档日志之后需要尽量远离原始日志,以免归档日志也同时不可用。日志归档不能被打开/操作,但可以被查看。这个操作会移除Redo log,移动至参数所指的归档目录中,在该归档目录下可以用show xxx的方式查看。归档日志的目录可以通过初始化参数log_archive_dest(日志归档目的地)来设置,Oracle系统提供默认参数库设置。一般而言,设置为独立的路径;或者符合某种版本单独的路径。

Standby log是为了提高Redo log的可靠性而开发的一种日志类型,它保证原始日志组件失效时,不会导致数据无法找回的问题。Standby log在Oracle中充当物理备份,即备份数据库的数据和日志文件。如果原始日志发生故障,那么Standby log可以代替原始日志保障系统正常运行。

SQL>ALTER DATABASE ADD STANDBY LOGFILE MEMBER '/u03/log/stdby_log02a.rdo' TO GROUP 3;

该语句的作用是在数据库中添加设备为‘/u03/log/stdby_log02a.rdo’的标准日志文件,同时将其加入到标准日志组3中。如果原始日志组件失效,我可以通过备份日志恢复数据,保证数据不受影响。

随机读日志(RDBMS)是Oracle的另一种onlinelog,它用于支持随机的读取。也就是说,当我们需要按id对于oracle进行数据查找时,它可以直接在该文件中直接读取数据,提高查询效率。可以通过下述代码创建一个新的不同类型的onlinelog文件:

SQL>ALTER SYSTEM SET db_file_multiblock_read_count = 16;

相比于随机读日志,普通读日志(RDBMS)主要是负责读取比较小的文件。该日志相对于随机读日志而言的主要好处是具有特殊的预取机制,预取机制使得普通读取日志在磁盘访问上使用随机读写。

总之,Oracle的onlinelog使得我们有了非常多样化的选择,从随机读日志到普通读取日志,再到重要的Redo log、Archive log以及Standby log。这些选择都有着自己独特的用途,以及在不同业务环境下,各有各的优缺点。而Onlinelog的存在不仅在于可靠性、性能以及一致性,更加在于它为我们提供了前所未有的灵活性和可变性,使得Oracle数据库在业内依然居于领导地位。