时间:2024-05-04
缪娟,杨琴
(无锡职业技术学院,江苏无锡 214000)
高校教务系统是全校教学运行的管理平台,不仅包含了大量的学生信息、教师信息、课程信息等重要数据,同时也是学校管理决策的重要依据。随着信息化程度的提高,系统的迭代升级必不可少,数据安全和稳定性变得越来越重要。
闪回技术是Oracle 数据库的一项重要功能,Oracle 数据库闪回技术能够回滚数据库到任意时间点,实现在不破坏数据完整性的情况下迅速地回退到某个时间点,从而提高了数据库的数据恢复能力,是一种快速恢复数据的方法。在教务系统的日常运行中,系统数据库服务器升级维护、系统故障以及系统数据可能会出现误操作、删除、修改或者损坏等情况,使用Oracle 数据库闪回技术能够有效处理数据库升级过程中的数据备份和恢复,高效解决系统升级过程中的数据丢失和系统出现异常等问题,还可以在系统故障时快速恢复数据,避免系统故障导致的数据错误,提高了系统的稳定性,保障教务系统的正常运行。
Oracle数据库闪回技术主要通过对数据库进行时间轴式的管理,实现快速恢复数据库到指定的时间点[1],支持不同级别的恢复,包括行、事务、表和整个数据库。可实现有选择地、有效地消除错误的影响,逆转人为错误修改和应用程序错误数据的处理。
Oracle 数据库闪回技术提高了教务系统的安全性。数据库闪回技术可以将数据库恢复到特定的时间点,这就意味着可以快速恢复到某个稳定版本,避免了恶意攻击、病毒侵入、数据库崩溃等问题带来的损失。闪回技术的特征、类型和原理如图1所示:
图1 闪回技术的特征、类型和原理
闪回技术主要有基于UNDO数据的闪回技术、基于FDA 闪回数据归档技术、基于Recyclebin 的闪回删除技术和基于闪回数据库日志的闪回数据库技术四种后台技术实现数据库的恢复。
在Oracle 数据库中,UNDO 是指当一个事务修改数据库时,UNDO会记录改变之前的数值,如将数据1改为100,1 被记录在UNDO 中,利用UNDO 数据技术实现对之前数据的追溯查询。UNDO 可实现闪回查询(查询一张表在过去某个时间点的数据状态)、闪回表(把一张表闪回到过去的时间点)、闪回版本查询(一段时间多个事务操作对应表中数据状态)和闪回事务查询(查询事务对应的UNDO SQL,闪回数据归档)[2]。UNDO数据的闪回流程如图2所示:
图2 UNDO数据的闪回流程
UNDO 数据库的状态会随着事务的提交、回滚和过期而不断变化。在实际应用中,如需查询一张表在过去某指定时间(T1)的数据状态,首先需确认是否可以查询对象或将对象改回到修改之前的某个时间点,并确保T1时间点数据的UNDO未被覆盖;其次需设置UNDO_MANAGEMENT=AUTO、设置UNDO_TABLESPACE参数和UNDO_RETNTION(单位为秒)。执行闪回查询的三种使用方法:
1)闪回到某精确时间点:
SELECT*FROM SH.test_tab1 AS OF TIMESTAMP
TO_TIMESTAMP('2020-12-21 08:45:00','yyyymm-dd hh24:mi:ss');
2)闪回到多久时间之前(例如:1分钟前)
select*from tab AS OF TIMESTAMP sysdate-1/24/60;
3)闪回到指定SCN
select*from tab12 as of scn×××××××;
闪回版本查询技术可以查询某一个时间点的数据,使用VERSIONS 子句给BETWEEN TIMESTAMP,返回满足条件的两个时间点之间间隔的变化情况(即查询某一段时间对应行的所有版本)。返回结果是行的改变历史,且只返回已提交的行(包括删除和重新插入的行版本),提供了一种审计表行的方式,并可以获取改变行的事务信息,可以使用返回的事务标识符,通过LogMiner 执行日志挖掘,或者进行闪回事务查询。执行闪回版本查询技术的方法如下:
闪回表技术可以将表恢复到过去的指定时间点,因为UNDO表空间是循环覆盖的结构,所以只能将表闪回到UNDO所允许的过去的时间点,且需要对闪回表开启行迁移(row movement),实现过程为:alter table table_name enable row movement[3]。下面举例说明执行闪回表的三种方法:
1)将表闪回到指定时间点
2)将表闪回到n分钟(小时)之前
3)将表闪回到指定的SCN
闪回查询和闪回表在UNDO数据中是有限制的,只能闪回查询或闪回到UNDO保留的期限范围内,无法返回到时间久远的数据,为了扩充闪回的能力,利用FDA闪回数据归档技术,即在UNDO数据循环覆盖之前建立表空间,将UNDO 数据进行闪回数据归档,固化到表空间中,不受UNDO 的时间限制,实现闪回查询和闪回表在时间上的延续。FDA 闪回数据归档的步骤如下:首先创建一个供闪回数据库使用的表空间,在该表空间创建闪回数据归档,并限制空间大小和保留的时间;然后赋予用户权限;最后给某些表开启闪回数据归档的功能,执行查询来确定归档创建的对象。下面举例说明创建FDA的方法:
FDA闪回数据的流程如图3所示:
图3 FDA闪回数据的流程
基于回收站的闪回应用面相对较窄,主要针对表删除,是所有被删除对象的逻辑存储容器,对非system表空间可以使用,适用于通过drop操作和非purge的方式删除的对象,在recycle bin 中可以闪回表及相关的object,包括相关索引、约束和触发器。
利用Recycle bin技术,在数据库中如果drop一个表时,该表并不会马上被数据库彻底删除,删除的表在回收站中被重新命名为系统盘中的名字后保存到recycle bin中。当表被误删时,利用recycle bin闪回技术flashback job从recycle bin中恢复重命名的表。Recycle bin闪回数据的流程如图4所示:
图4 Recycle bin的闪回删除技术流程
数据库全库的闪回依赖于闪回日志,需要给数据库开启闪回,在闪回开启后由一组后台进程把数据的历史变化写到Flashback logs闪回日志里,需要恢复的时候把闪回日志的数据取出覆盖回数据中,实现对数据库整体全库的闪回。闪回数据库是把数据库闪回到过去的某个时间点,是针对逻辑故障的修复或者对相同数据做循环迭代测试。例如系统的测试库,对一组应用程序做反复的测试,经过第一轮测试后的数据全部变化了,如第二轮重测时是基于第一轮测试后的数据,结果则会出现较大的反差,针对这样的多轮测试,可以采取在第一轮测试后闪回到测试前的时间点,经过反复地对相同的数据做循环迭代程序。闪回日志的闪回数据库技术流程如图5所示:
图5 闪回日志的闪回数据库技术流程
Oracle数据库闪回技术是Oracle数据库中的一种重要技术,由于高校教务系统需要频繁进行数据管理和数据恢复,因此闪回技术可以帮助系统管理员快速地恢复数据库中的数据,还原到某个指定的时间点。下面从闪回查询被误删数据、闪回表和恢复误删数据、闪回数据库分别举例说明Oracle数据库闪回技术在高校教务系统中的应用。
误删数据或应用程序有BUG产生了错误数据,可通过闪回命令查询错误数据之前的数据状态,以及查看具体n 分钟前的数据状态n/24/60。下面举例测试删除了test_tab中的600行数据,查询结果如下:
1)查看当前和n分钟前的数据状态
结果显示,当前数据和1 分钟前的数据为0,5 分钟前的数据为138行,10分钟前的数据为417行,15分钟前的数据为600 行(15 分钟为错误数据产生之前的时间点)。
2)精确的查看某一条数据
在教务系统中,有时需要查询某个时间点的数据状态,如学生的课程成绩数据被修改,需要查询某个学生某门课程的成绩,使用闪回技术,可以快速定位问题,恢复到指定时间点的数据库状态,方便查询分析。
闪回技术可以帮助系统管理员快速恢复教务系统中误操作删除的数据,缩短维护时间并提高系统可用性。比如,管理员可以使用闪回技术将数据库恢复到删除前的状态,以保证学生的成绩记录的完整性。
下面举例说明如何通过闪回命令查询使用之前记录的时间点,查看该时间点时,以及该时间点后n分钟该时刻的数据状态。
结果显示,'2023-05-05 05:51:51'故障发生点前的数据为600 行,故障发生点后1 分钟的数据为558行,故障发生点后3分钟的数据为440行,故障发生点后5分钟的数据为321行,故障发生点后8分钟的数据为146 行,精确到故障发生点后5 分钟id=550 的数据仍存在。
3)闪回版本查询
闪回版本可用于查询两个时间间隔之间的数据所有的变化历史以及相应的DML操作记录,主要包括该版本数据的创建时间和结束时间,操作者是谁以及每个更改的事务标识符[4]。下面举例测试某人利用系统权限漏洞将学生Tom的课程名称为ACC100的成绩由D改为A+,如何追溯数据的变化。
结果显示,旧版本“D”在“06.26.43 AM”时发生变化,新版本为“A+”,是由编码为050015002B030000的事务将数据进行了更换。
在教务系统中,由于人为或者系统原因可能会出现误操作,比如删除了重要的数据或者修改了错误的数据。使用闪回技术,可以快速回滚到误操作之前的状态,避免数据丢失或者错误。闪回技术可以快速地恢复数据。在教务系统中,数据的准确性非常重要,如果数据被修改错误,将会给教学管理带来很大的影响。使用Oracle 数据库闪回技术可以快速地还原到修改错误之前的状态。
例1:先向前闪回再向后闪回
当数据第一次闪回后发现错误时,可以通过先向前闪回再向后闪回的方式返回到正确的时间点。
例2:表被误删或恶意删除时的数据恢复
从数据恢复方面来看,闪回技术可以帮助数据库管理员在数据误操作、系统故障、用户错误输入等情况下快速恢复数据。比如,当数据库中的表数据被误删除或数据错误地被覆盖时,管理员可以通过闪回技术将数据库恢复到删除或覆盖前的状态,保证数据的完整性;从数据修复方面来看,闪回技术可以帮助数据库管理员修复一些难以解决的数据问题。比如,当一些数据被错误地修改或数据结构出现问题时,系统管理员通过闪回技术将数据库恢复到正确的状态。
结果显示,快速闪回被删除之前的146 行数据,recyclebin处于on的状态。
当许多表被删除时,需要做全库的闪回。闪回数据库即完全恢复,是数据库的一个整体操作,当完全恢复时,使用完全或部分备份的数据将数据文件还原到错误之前的最后一次提交,而不会丢失数据[5]。
SQL>alter session set container=PDB1;//全库闪回可以针对单个PDB级别的闪回
结果显示,表的146行数据全部返回。
高校教务管理系统是教学运行能够正常开展的保障,通过Oracle 闪回技术,可以帮助恢复教务系统中因系统故障导致的数据丢失或损坏,系统管理员可以实现快速的数据恢复和回滚,保护学生的课程记录、成绩、选课等信息的完整性,保障教务系统的稳定性和可靠性。同时,闪回技术还可以用于数据查询和性能优化,提高教学管理的工作效率和使用过程的用户体验。随着信息技术的不断进步,Oracle 闪回技术在高校教务系统中的实践应用将会更加广泛和成熟。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!