理论教育 Oracle数据库管理:重做日志归档优化

Oracle数据库管理:重做日志归档优化

时间:2023-10-30 理论教育 版权反馈
【摘要】:归档重做日志管理涉及设置Oracle数据库的归档日志位置、归档日志文件的命名方法、设置归档进程数量等。在归档过程中,如果现已启动的归档进程满足不了重做日志文件归档的要求,Oracle会自动启动额外的归档进程。数据库运行在归档模式具有以下优点:①无论出现实例故障还是介质失败,利用数据库备份,以及联机和归档重做日志文件能够确保恢复所有已提交的事务。非归档模式下,只要重做日志文件完好,在实例出现故障时能够实现实例恢复。

Oracle数据库管理:重做日志归档优化

归档重做日志管理涉及设置Oracle数据库的归档日志位置、归档日志文件的命名方法、设置归档进程数量等。

(1)设置归档位置

在管理归档日志时,需要指定日志文件的归档位置。Oracle可以将重做日志归档到一个或多个位置,归档位置既可以是本地文件系统、Oracle数据库的快速恢复区,也可以是OracleASM磁盘组或者是远程Oracle数据库(备用数据库)。

Oracle重做日志的归档位置由初始化参数指定,DBA可以在创建数据库时设置相应的初始化参数,规划好归档位置,也可以在数据库运行期间使用ALTER SYSTEM语句动态修改初始化参数值,改变日志的归档位置。但这样修改初始化参数后,只有在下一次日志切换时才改变归档位置。

与指定归档位置相关的初始化参数包括以下两组。

①LOG_ARCHIVE_DEST、LOG_ARCHIVE_DUPLEX_DEST:这两个参数指定的归档位置只能是本地文件系统。当需要指定的归档位置不多于两个时可使用LOG_ARCHIVE_DEST参数指定主归档位置,再选用LOG_ARCHIVE_DUPLEX_DEST参数指定另一个辅助位置,但后者是可选项。例如:

②LOG_ARCHIVE_DEST_n:n的取值是1~31的整数。其中n取1~10的整数时,用于指定本地或远程归档位置,n取11~31的整数时,只能用于指定远程归档位置。使用LOG_ARCHIVE_DEST_n参数时,需要使用LOCATION或SERVICE关键字指定归档位置,它们的设置方法见表5.5。

表5.5 用LOCATION和SERVICE指定归档位置

需要注意的是,在设置归档位置时可以选择使用以上两组初始化参数中的任一组,但不能混合使用它们,否则将导致错误。例如,下面语句使用第2组参数成功设置归档位置:

但此后,如果再执行下面语句,混合使用第1组参数设置归档位置就会产生错误:

(2)设置归档日志文件命名格式

设置归档日志文件命名格式的目的是保证ARCn在归档时能给每个文件以唯一的文件名。归档日志文件的命名格式也是通过初始化参数设置,该参数是log_archive_format。与设置日志文件归档位置参数不同的是,log_archive_format参数具有默认值:ARC%S_%R.%T,这样可以保证各个归档日志文件名称的唯一性。

在log_arcmve_format参数默认值中,%S表示在归档日志文件名包含日志序列号,%R表示包含重置日志编号(RESETLOGS),%T是包含线程编号。其中的S、R、T大写表示这3部分的数据长度是固定的,如果各部分对应的数据长度达不到指定长度的要求,则在其前面填充0;如果使用小写,则不会把这3部分数据填充到固定长度。

例如,下面语句修改spfile中log_archive_format参数的值。由于该参数不可动态修改,所以只能修改该参数在初始化参数文件中的值,修改后需要重新启动数据库实例才能生效。

(3)调整归档进程数量

初始化参数LOG_ARCHIVE_MAX_PROCESSES决定Oracle实例中启动的归档进程(ARCn)数量。在Oracle Database 11.2版本中,该参数的默认值是4,所以实例启动时会启动4个归档进程。在归档过程中,如果现已启动的归档进程满足不了重做日志文件归档的要求,Oracle会自动启动额外的归档进程。所以,通常情况下,用户不需要修改该参数的默认值。

数据库运行中启动额外的归档进程不可避免地会存在一定的开销,要避免这种开销,可以设置初始化参数LOG_ARCHIVE_MAX_PROCESSES。该参数的有效取值范围是1~30的整数,也就是说最多可以启动30个归档进程。LOG_ARCHIVE_MAX_PROCESSES参数是动态参数,所以用ALTER SYSTEM语句即可调整当前运行的归档进程数量。例如,下面语句把归档进程数量调整为5。

(4)改变归档模式

要改变归档模式,数据库首先必须处在MOUNT状态,之后执行下面3条语句可分别把数据库转为非归档模式、自动归档模式和手工归档模式:

1)启用归档模式

orcl数据库当前处于非归档模式,下面以它为例,说明如何把数据库从非归档模式更改为自动归档模式。

①在数据库运行期间,以sysdba身份连接到数据库,修改初始化参数,指定归档位置和归档日志文件的命名方法:

②关闭数据库:

③把数据库重新启动到MOUNT状态:

④把数据库修改为自动归档模式:

⑤打开数据库,供用户访问:

这时在SQL∗Plus内再次执行archive log list命令可以检查以上修改结果:

这说明数据库已经运行在自动归档模式,归档位置为F:\oracle\archive,这是用户设置的辅归档位置。

最后,执行下面语句,强制进行日志切换,以检查日志文件是否能够正确归档:

切换之后用资源管理器查看归档位置路径,用同样的方法还可以检查主归档位置中日志文件的归档情况。

在归档模式下,在日志切换后填充过的重做日志组即可立即用于归档,只有在重做日志组归档完成之后LGWR才能重新使用它们。数据库运行在归档模式具有以下优点:

①无论出现实例故障还是介质失败,利用数据库备份,以及联机和归档重做日志文件能够确保恢复所有已提交的事务

②能够在数据库打开和正常使用的情况下进行备份。

③将归档日志应用到备用数据库,可以使其与原数据库保持同步。

2)转为非归档模式

在SQL∗Plus内以管理员权限登录后,再执行以下步骤,可以将数据库由归档模式转为非归档模式。

①关闭数据库:(www.daowen.com)

②把数据库重新启动到MOUNT状态:

③把数据库修改为非归档模式:

④打开数据库,供用户访问:

非归档模式下,在日志切换后,当重做日志组的状态变为INACTIVE后,它们即可为LGWR重新使用。

非归档模式下,只要重做日志文件完好,在实例出现故障时能够实现实例恢复。但在出现介质失败时,则只能使用最近一次所作的数据库完整备份把数据库恢复到备份时的状态,由于没有归档日志,所以最近一次完整备份后所提交的事务无法恢复。除此之外,在非归档模式下,也不能执行联机表空间备份。因此,在实际生产环境中,应使用归档模式。

(5)查新归档重做日志相关的信息

Oracle数据库动态性能视图为用户查询归档重做日志相关信息提供了一个接口。与此相关的动态性能视图见表5.6。

表5.6 与归档重做日志相关的视图

【例5.1】 查询V DATABASE,了解数据库当前模式。

【例5.2】 下面语句从V ARCHIVE_PROCESSES视图查询数据库的归档进程信息。从检索结果可以看出,该数据库实例最多可启动30个归档进程,目前只启动了5个归档进程(这与前面的设置相同),它们当前均处于空闲状态。

【例5.3】 下面语句从V ARCHIVED_LOG视图查询数据库的归档日志文件名称、重做日志序列号,以及每次归档的完成时间等信息。从检索结果可以看出,重做日志每次归档到两个位置,这与前面归档位置的设置一致。

【例5.4】 下面语句从V ARCHIVE_DEST视图查询数据库归档位置设置。从检索结果可以看到目前设置了两个日志归档位置。

【例5.5】 下面语句从V LOG视图查询数据库各组重做日志文件的状态,以及它们的归档情况。从检索结果可以看出,第1组重做日志是当前重做日志组,还没有归档,其余各组均已完成归档。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈