摘 要 在数据库应用领域中,Linux操作系统作为全世界范围内使用的操作系统,大量企业都以该操作系统为基础进行数据库的安装平台。对于数据库的运行,如果采用的模式为非归档模式,则在数据库没有进行日志备份的情况下,对日志文件进行重做,就会导致数据库的运行错误。本文中,重点以Oracle数据库系统中的日志重做所导致的文件丢失,设计并验证了非归档模式下的数据库重做日志恢复方法。实验结果表明,所设计的方法可以对重做日志进行无备份恢复。
【关键词】Oracle数据库 非归档模式 日志恢复 Linux操作系统
1 引言
作为当前数据库领域中已经被广泛应用的大型关系型数据库,Oracle展现出了非常高的可用性,而在数据库的运行过程中,对数据库中的日志文件进行快速而准确的恢复,则对数据库的高可用性就显得非常重要。在本文中,基于Linux操作系统,针对在非归档模式下进行重做日志,所导致的文件丢失问题进行深入研究,设计了一种切实可行的恢复方法。已有的实验结果表明,所设计的方法可以有效实现非归档模式下的进行日志重做的文件恢复,从而有效提高数据库的可用性。
2 重做日志概念简介
数据库应用中的重做日志文件,主要用于对数据库中的表、索引进行保存,或者对其他数据库对象中的数据添加、删除等进行记录。在Oracle数据系统中,采用循环的方法重做的日志文件,所以,在任何Oracle数据库中,就至少会包含两个重做日志文件。这样,如果其中一个重做日志文件充满重做日志条目时,在系统需要进行实例恢复的情况下,就可以将当前的日志文件标记为“激活”;如果不需要进行实例恢复过程,则可以将其标记为“冻结”;整个系统从文件的开始,就可以根据具体的序列来使用下一个日志文件,并将该日志文件标记为“當前状态”。在现有的Oracle数据库体系中,构成其文件系统的内容主要包括:数据文件、控制文件、重做日志文件以及归档日志文件等。
在具体的使用过程中,为了能够使得整个系统可以正常运行,就需要对整个系统中的数据库日志文件进行备份;这里,日志文件与其对应的镜像文件所记录的日志信息相同,可以构成系统中的日志文件组。而为了有效控制日志文件的安全性,则需要将相同组中的日志文件刻意存放到不同的磁盘中。在系统中的重做日志文件丢失的时间内,整个数据库系统可能难以正常使用,在此期间,如果数据库中的数据文件出现丢失的情况,则不会被及时恢复,从而给系统用户造成更大的损失。所以,只有有效提高系统中重做日志文件的安全性、冗余性,则对整个系统的稳定非常重要。
3 数据库系统日志恢复中存在的问题
3.1 归档模式
Oracle数据库系统在运行过程中,所能够采用的模式主要胡归档模式和非归档模式。其中,数据库的非归档模式,只能对数据库中的实例失败进行保护,不能针对数据库中的存储介质失败进行保护。因此,为了能够有效防范数据库中物理文件的损坏所导致的数据丢失,需要将数据库运行在归档模式下。在具体的使用与操作过程中,则有可能会由于DBA操作的错误,则导致整个系统采用非归档模式来运行,这样,如果出现重做日志文件丢失的情况,就难以通过归档日志来恢复重做日志。
3.2 数据库内容的一致性检查
在Oracle数据库的启动过程中,当启动过程执行到对数据库MOUNT状态进行装载时,则会对数据库中的内容一致性进行检查。而在重做日志丢失的情况下,就很难对数据的一致性进行检查;为了确保数据库的恢复功能有效,就需要对系统的隐藏参数进行修改,使数据库在启动的过程中可以跳过一致性检查过程。
3.3 系统用户的身份验证
在Oracle的数据库日志文件丢失的时间段内,数据库不能正常启动,也就难以对用户的身份进行验证。在这种情况下,对数据库的操作,就需要基于系统的SYS用户来实现,并通过操作系统认证的方式,来获取SYS用户的相应权限。
4 数据库中重做日志的恢复
4.1 恢复方法的说明
在Linux操作系统环境中,对运行在非归档模式出现故障的Oracle数据库系统,主要采用数据库控制文件来实现数据库的恢复功能;同时,还可以通过Linux操作系统中Oracle数据库中相关隐藏参数值的修改,来跳过数据库系统在启动过程中所进行的一致性检查,实现数据库系统的正常启动,并在此基础上通过resetlogs方法来实现对数据库中重做日志文件 的恢复。
4.2 具体的实验过程
文中实验所采用的基础环境为Linux操作系统下的Oracle 11g R2数据库系统。因此,由于Linux系统所采用的文件系统与常用的Windows系统的文件系统有差别,导致也其具体的恢复过程与Windows操作系统中的恢复过程存在差异。而为了能够对实际中的重做日志恢复过程与效果进行模拟,可以手动删除数据库中的Yedo01.log、redo02.log、redo03.log等三个与日志相关的文件。在实际的操作中,最好能够对数据文件进行备份,防止在恢复失败的情况下导致数据的丢失。在具体的实验过程中,还需要对常见的系统异常提示进行及时处理。下面,对实验的具体操作进行说明如下:
(1)进入系统命令终端,利用OSA方式从系统中获得SYS用户所对应的权限,然后利用startup命令对Oracle数据库进程进行启动;
(2)考虑到当前系统没有重做日志文件,所以系统会提示用户无法找到文件,在数据库的启动过程中出现系统报错。在这种情况下,就需要通过命令查询当前数据库的实例名、数据库所采用的归档模式以及打开模式,确定当前状态所对应的开户模式,具体内容如下:
SQL>select name log_mode from vMYM daLabase;
利用模式,所得到的查询结果如下表中所示:
NAME LOG_MODE OPEN_MODE
ORCL NOARCHIVELOG MOUNTED
(3)在上面所得到的LOG_MODE其模式主要为NOARCHIVELOG模式。这样,就充分说明当前数据库处于非归档模式,同时,就可以将当前数据库调整到MOUNT-ED模式。这样,就可以借助于resetlogs方法,实现对数据库的启动,此过程中所输入的命令具体为:
SQL>alder database open resetlogs;
(4)基于系统所给出的提示信息,如果系统数据库中所选择的方法为resetlogs方法,则应该在完成对系统的恢复之前,需先对数据库实施数据恢复。对数据库进行数据恢复。在实际的实验过程中,考虑到数据库环境中只有重做日志文件缺失,而其他控制文件则没有丢失,则可以利用控制文件对数据库进行恢复;
(5)对于上面步骤中所产生的问题,主要是由于在非归档模式下,系统会自动进行错误提示,造成相关的归档日志的失效;不过,在实际的具体应用中,对数据库的恢复过程主要通过控制文件来实现,同时,就可以再次采用resetlogs方法来实现对数据库的日志恢复过程,系统在操作过程中所返回的异常则为:
ORA-01113:file 1 needs media recovery
ORA-0111:data file 1:'/usr/app/oracle oradata/orcl/system01.dbf'
(6)上面步骤中所产生的异常提示可以说明,如果数據库的恢复过程中采用了resetlogs的方法,则需要借助于恢复媒介才能实现。这里,考虑到数据库中重做日志文件的缺失,则难以通过媒介来实现具体的恢复过程。所以,就有必要对数据库中的隐藏参数进行修改与调整,确保Oracle数据库不会对数据库中的数据一致性进行检查。
(7)完成对上达参数的修改过程后,就可以通过数据库强制重启命令,实现对数据库的重新启动。在启动过程中,所采用的命令为:
SQL>startup force mount
利用该重启命令所返回的信息主要为:
……
Database mounted
(8)在数据库装载成功的基础上,还可以采用resetlogs方法来完成数据库恢复过程。随后,系统会返回database altered信息,这就说明数据库的重做日志恢复过程完成。
(9)将系统中的_allow_resetlogs_corruption参数修改为系统所默认的false,从而对数据启动的过程中,对数据的一致性进行检查。
(11)在对数据库进行重启后,还需要对数据库中的隐藏参数值进行查询修改;
(12)最后启动Oracle数据库的归档模式,使数据库的可用性得到有效提高。
获得上面的返回信息后,就充分说明当前数据库运行在归档模式下,整个实验过程顺利完成。
5 结论
实验结果表明,文中所设计和采用的Oracle数据库重做日志恢复方法,可以对Linux操作系统下的非归档模式重做日志文件进行恢复,从而实现对Oracle数据库系统中各类故障的恢复,进一步提高数据库系统的可用性。
参考文献
[1]王良莹.Oracle数据库故障恢复技术剖析[J].电脑编程技巧与维护,2011,50(14):123-124,135.
[2]韦德强.Oracle数据库的备份与恢复策略[J].电脑知识与技术,2010,6(19):5367-5370.
[3]贺亚茹.Oracle数据库日志文件损坏时修复方法的实验研究[J].计算机应用,2009,29(S2):393-395.
[4]周文琼,王乐球.Oracle数据库启动过程研究与实践[J].软件导刊,2011,10(7):169-171.
[5]刘超,张明安.基于Oracle数据库系统的备份与恢复技术研究[J].软件,2014,35(03):125-128.
[6]叶瑞绵,王晓华,丁慧莹.Oracle数据库跨版本的升级实现[J].中国数字医学,2016(05).
[7]刘海霞.oracle数据库外包服务访问控制的隐私保护研究[J].电子测试,2016(10).
[8]张标,金英.ORACLE性能调整[J].煤炭技术,2007(02).
[9]宋霞.ORACLE疑难错误解析[J].山东省农业管理干部学院学报,2007(06).
[10]李学忠.ORACLE数据库的优化使用[J]. 电子工艺技术,2003(05).
作者简介
田彬(1981-),女,山西省灵石县人。硕士研究生学历。现为晋中师范高等专科学校数理科学系讲师。多年来一直从事计算机基础、计算机应用专业的教学、科研及应用开发工作,精通Access、SQL server、ORACLE、Foxpro等多种数据库语言。
作者单位
晋中师范高等专科学校数理科学系 山西省晋中市 030600