数据库可运行在两种不同方式下:NOARCHIVELOG方式(介质恢复无效)或ARCHIVELOG方式(介质恢复有效)。数据库的运行方式对数据库的备份和恢复策略具有重要的影响。归档日志对数据库备份和恢复有下列用处:数据库后备以及联机和归档日志文件,在操作系统和磁盘故障中可保证全部提交的事务可被恢复。
在数据库打开和正常系统使用下,如果归档日志是永久保存,联机后备可以进行和使用。
1.NOARCHIVELOG方式
数据库在NOARCHIVELOG方式下使用时,不能进行联机重做日志的归档。控制文件中的信息指出不需要对已经填满的成员进行归档,因此只要填满的成员变为不活动的,那么LGWR进程就可以重新使用这个日志组中的成员。NOARCHIVELOG方式只能保护数据库免受实例故障的影响,而不能免于介质故障。只有最近的存储于联机重做日志组的中的数据库的修改才可以用于实例或崩溃恢复。这些修改都足够用于进行崩溃恢复和实例恢复,因为Oracle不会覆盖联机重做日志文件,直到它的修 改被写到了数据文件中。然而它不可能通过使用归档重做日志进行介质恢复。
2.ARCHIVELOG方式
如果数据库在ARCHIVELOG方式下运行,可实施联机重做日志的归档。控制文件中的信息指出一个已经填满的日志组成员不能被LGWR进程重写,直到这个成员被归档。
ARCHIVELOG方式下允许从磁盘故障和实例故障下的完全恢复,因为所有对数据库的修改已经被永久的保存到归档重做日志中了。
数据库在ARCHIVELOG方式下运行,可以设置为自动归档(AutomaticArchiving)或手工归档(ManualArchiving),下面分别介绍这两种工作方式:
1.自动归档和归档后台进程
在Oracle系统中,可以给Oracle实例配置一个附加的后台进程,归档进程(ARCn),它在每个组的联机重做日志文件变为不活动重做日志后进行自动归档。自动归档使系统管理员不必手动的跟踪、归档已填满的日志组成员。因为自动归档的便利性,自动归档已经是数据库
系统工作在ARCHIVELOG方式下的最主要的选择了。在负荷比较重的情况下,比如大块数 据的取出,可以配置多个归档进程,配置多个归档进程一般是通过设置初始化参数LOG_ARCHIVE_MAX_PROCESSES。
如果需要在实例启动时就进行自动归档,那么需要设置初始化参数LOG_ARCHIVE_START,那么Oracle系统在实例启动时会根据 LOG_ARCHIVE_MAX_PROCESSES确定的值,启动相应的ARCn进程的数量。否则ARCn进程在实例启动时不会启动。
另外还可以通过交互式的方式在任何时候启动或停止自动归档,如果没有设置在实例启动的时候自动归档启动,而且随后想启动自动归档,那么Oracle会创建ARCn后台进程。ARCn在整个实例期间存在,即使自动归档备临时关闭和打开。ARCn进程的数量通过使用ALTER SYSTEM命令设置LOG_ARCHIVE_MAX_PROCESSES的值可以动态改变。归档进程通常按照重做日志组的顺序进行归档,从最小的日志序列号开始。当已经填满
的日志组变为不活动状态时归档进程自动归档。
2.手工归档
当数据库工作在ARCHIVELOG方式下时,无论是否设置了自动归档,都可以手动归档已填满的不活动联机重做日志文件,如果没有设置自动归档,那么必须手动归档已填满的日志组成员。
对于大多数数据库系统,自动归档都是最好的,因为它不需要观察日志组是否变为不活动状态以及是否可以进行归档。而且如果不能进行自动归档并且手动归档进行的不够快,数据库的运行可能会被临时挂起,因为写日志进程被迫要等待一个不活动的组变为重新可用。
手动归档进程用于:当自动归档因为出现某些问题(例如用于存储归档重做日志的脱机存储设备出现故障或已经填满时)而停止时,手动归档一个日志组。在一个非标准方式下归档一个日志组(例如归档一个组到一个脱机存储设备,下一个组到不同的存储设备等等)。如果最初归档的版本丢失或受到损坏时,重新归档一个日志组。
当一个日志组采用手动归档时,发出归档日志组命令的用户进程进行日志组的归档。即 使在与其相关的实例出现了归档后台进程,还是由用户进程归档联机重做日志文件组。
oracle数据库的归档方式
最新推荐文章于 2024-09-25 14:04:46 发布