Oracle数据库数据跨平台备份与恢复的实现

来源 :海峡科学 | 被引量 : 0次 | 上传用户:lixiangzone119
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要] 从数据备份、恢复的灵活性出发,解析Oracle数据库表结构,给出了Windows环境下通过计算机VB语言对Oracle数据库的备份及恢复的实现方法和开发实例。
  [关键词] Oracle 数据库 备份 恢复 跨平台 数据字典
  
  Oracle数据库在铁路运输收入现代化管理中发挥着重要的作用,它存储着包括客运、货运、杂费等各类票据的历史数据,担负着客货票据的审核工作。因此对数据库的管理、备份,维护系统数据的安全就显得格外重要。不仅如此,如何充分地利用数据库的功能,在巨量的历史数据中快速获取我们所需数据,也是数据库管理的一项重要内容。实际工作中常常需要将数据库数据跨操作系统平台地备份和恢复,因此需要一种直观、灵活的工具软件,用于实现Oracle数据库数据在不同的平台上的备份与恢复、导出与导入。
  
  1 传统的备份和恢复方法
  
  Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。导出备份是一种逻辑备份,冷备份和热备份是物理备份。
  1.1 导出/导入(Export/Import)
  利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。Oracle支持三种方式类型的输出,分别是:① 表方式(T方式),将指定表的数据导出。② 用户方式(U方式),将指定用户的所有对象及数据导出。③ 全库方式(Full方式),将数据库中的所有对象导出。
  数据导入(Import)的过程是数据导出(Export)的逆过程,分别将数据文件导入数据库和将数据库数据导出到数据文件。这是一种常用的数据备份方法,但它最小的操作对象是表。而在实际工作中,经常需要以表内的某个字段(如时间字段)为条件进行操作,因此Export/Import方法就存在一定的局限性。
  1.2 冷备份
  冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份是将关键性文件拷贝到另外的位置的一种方法。因为它是将数据库文件完整地拷贝,因此需要占用大量的服务器资源。
  1.3 热备份
  热备份是在数据库运行的情况下,采用archivelog mode方式备份数据库的方法。
  从以上对这三种方法的分析可以看出:操作都必须在服务器上执行,而且都是行命令方式提交。因此操作者不仅要了解数据库知识,还需熟知操作系统平台的各种命令,而且所生成的备份文件都是操作系统平台下的二进制数据文件。当数据库需要跨平台备份或移动时,以上方法就不适用了。笔者在实际工作中就遇到了这种情况。目前收入管理的操作系统平台是VMS操作系统加Oracle数据库。客货管理的各种数据库表空间都建立在这一个平台上,服务器磁盘空间就显得相对有限。而大量的历史数据又是运输收入分析的基础,因此必需将历史数据移动到其他操作系统平台上,如在Windows下建立Oracle数据库。由于Windows不能识别VMS下的数据文件,上述方法自然无法做到数据库表从VMS到Windows的移动。根据实际工作需要,笔者用计算机VB语言编制了一个工具软件,在C/S(客户端/服务器)模式下实现了一种简捷的、跨平台的数据库数据备份与恢复的方法,操作的范围大到表空间内所有的表,小至按表的字段值为操作条件,同时备份数据不仅用于数据恢复,还能够直接被再利用,如被EXCEL读取后再加工。下面笔者详细阐述该软件的设计原理及实现过程。
  
  2 设计思路
  
  2.1 备份
  在C/S模式下运用Microsoft ActiveX数据对象(ADO)建立对Oracle数据库的连接,通过用户数据字典获取表空间内的所有表名、表的数据结构;建立一个能够按需要在程序运行过程中动态创建查询语句的模型,然后根据创建的查询条件创建数据集对象,将表名、表结构、查询条件以及数据集的所有数据导出到客户端。为了导出的数据能够兼有备份以外更多的用途,笔者使用文本文件存储备份数据,字段间使用ASC码中的TAB符间隔;
  2.2 恢复
  建立对Oracle数据库的连接后,判断表空间内是否存在欲恢复的表。如果有,而且数据结构与备份的数据结构一致,说明是在原数据库上恢复数据,通过SQL命令将数据导入相应的表内;如果没有,就根据表结构创建表,再将数据导入相应的表内。
  由于是通过ADO连接数据库,而且备份文件存储于客户端,因此数据的导入导出不受数据库所在的操作系统平台限制,能够实现数据库数据跨平台的移动。
  
  3 实现原理
  
  表空间是Oracle数据库中最大的逻辑单位与存储空间单位,数据库系统通过表空间为数据库对象分配空间。数据库表是一系列二维数组的集合,用来代表和储存数据对象之间的关系,可以直观地理解为具有行、列的表格。表中每列代表不同的对象属性、有不同的名称,统称为字段;表中每行则代表这组数据不同时段、状况下的取值。数据库采用数据字典的模式管理表空间。数据字典由一组特殊的表组成,以二维数组的形式记录表空间的所有信息,如数据字典TABLESPACE_NAME记录着表空间名及其类型,SYS.COL记录着表空间内所有表的数据结构等等。总之,数据库通过数据字典以表的结构形式来管理表以及其他数据库信息。数据库数据的导入导出不仅仅是对数据的操作,更重要的是获取表的数据结构。只有这样,才能在其他操作系统上克隆表结构,进而备份数据。下面,笔者详细阐述该软件编制的各个环节。
  3.1 连接数据库
  在C/S模式下采用ADO (Microsoft ActiveX Data Objects)来快速建立与数据库的连接。ADO具有高度的灵活性,它可以使用相同的编程模式连接到不同的操作系统平台下的Oracle数据库,而不管操作系统平台的特定特性,同时又具有较低的内存占用率。 因此当在需要跨平台移动数据的情况下,备份数据时连接原数据库,而当需要移动恢复数据时就连接目标数据库。实现连接数据库具体代码如下:
  ’在工程菜单中引用Microsoft ActiveX Data Object 2. 5 Library
  ’声明ADO连接对象为工程级全局变量
  Public cnn As ADODB.Connection
  cnn.ConnectionString = "PROVIDER=MSDASQL; " _
  + "DRIVER={Microsoft ODBC for Oracle};" _
  + "SERVER=" +数据库别名 + ";UID=" + 用户名 + ";PWD=" + 口令
  3.2 获取表空间信息
  在建立连接对象后,可以通过Exexute方法执行SQL命令,获取表空间信息。
  SQL> SELECT TABLESPACE_NAME FROM USER_TABLES
  从该语句的查询结果可以看出,数据字典视图USER_TABLES中存储有所有表名(TABLE_NAME字段)及其所属的表空间名(TABLESPACE_NAME字段)。记录集(Recordset)对象是ADO操作数据最常用的对象。因此通过执行上述SQL命令创建并打开记录集,即可获取所有表名及其所属的表空间名。程序代码如下:
  Public cnn As ADODB.Connection‘声明ADO连接对象
  Public rds As ADODB.Recordset ‘声明记录集Recordset对象
  cnn.Open
  rds.Open "SELECT TABLE_NAME, TABLESPACE_ NAME FROM USER_TABLES", cnn, adOpenDynamic, adLockOptimistic
  Do While rds.EOF = False
  List1.AddItem Trim(rds.Fields("TABLE_NAME"))
  rds.MoveNext
  Loop
  rds.Close
  cnn.Close
  3.3 获取表数据结构
  数据字典视图SYS.COL中存储所有表的数据结构。以下SQL命令检索出表中字段的定义信息。
  SQL> desc sys.col
  名称 是否为空? 类型
  ------------------ -------- ----
   TNAME NOT NULL VARCHAR2(30) 表名
   COLNO NOT NULL NUMBER 字段序号
   CNAME NOT NULL VARCHAR2(30) 字段名
   COLTYPE VARCHAR2(9) 字段类型
   WIDTH NOT NULL NUMBER 字段宽度
   SCALE NUMBER 小数点位数
   PRECISION NUMBER 整数位数
   NULLS VARCHAR2(19)
   DEFAULTVAL LONG
  同样是通过创建记录集,便可以获取表的数据结构。在实现数据移动时,能够在新的数据库表空间中克隆表的数据结构。
  3.4 建立条件设置模型
  对数据库的备份通常是以表为单位进行操作,但随着日积月累,表中的记录数将越来越大。以客票数据为例,路局每月客票的售票量就达560万以上,一年仅这一项数据的保存记录近7千万条。如果仍以表为单位操作,不但会重复地浪费空间资源,备份或恢复的过程将很漫长,过程中受意外事件干扰而中断的概率也很高。因此笔者设计了一套条件查询的设置模型,引入SQL命令中的条件查询功能,将备份/恢复的操作单位由表缩小到以表中任意一个字段值为条件的查询范围,实现大表分阶段的备份/恢复,既节省时间,又节省磁盘空间。如对客票数据表,就可以按时间字段为条件,以月为单位备份/恢复数据。条件设置模型就是在操作者和数据库之间建立一个平台,由操作者输入或动态选择生成带条件的SQL查询命令。当然,如果没有设置任何条件,那么程序将生成无条件的SQL查询命令,操作的范围就是整个表。
  条件设置模型包含以下三部分:
  3.4.1数据库列表
  通过单项或多项选择方式选中欲操作的表,并列于其中。
  3.4.2 SQL命令手工编辑
  对于具有相同数据结构的一组表或都具有共同字段的一组表,在选中这一组表后直接在该编辑区手工输入SQL的条件。如客票数据库中每个表都有一个记录日期的字段“RQ”,如果想备份2008年1月的数据,就可以选中数据表后在编辑区输入“RQ=200801”,那么条件设置模型就会将所选中的表加入该条件生成一组SQL命令。对于多条件的情况同样适用,只是在两个条件句之间加入“AND”或“OR”表示两句是“并且”还是“或者”的逻辑关系。如上例改为备份南昌站2008年1月的数据,就可以选中数据表后在编辑区输入“ZM=南昌AND RQ=200801”(其中ZM是表示站名的字段名称)。
  3.4.3字段参数动态设置
  这是一个与数据库互动的过程,涉及这几个区:字段区、逻辑关系区、字段值区。全过程分以下步骤:(以备份2008年1月的数据为例)
  ① 在数据库列表双击选中欲操作的表(如选择表LCTJ),字段区列出该表的所有字段,等待选择;
  ② 在字段区双击选中欲操作的字段(选择字段RQ),逻辑关系区提供如=、>、>=、<、<=、LIKE等比较运算符;
  ③ 在逻辑关系区选中“=”,这时字段值区以列表的形式列出RQ字段在表内不重复的值;
  ④ 选择值(200801)
  通过以上四个步骤便生成了一条标准的条件SQL语句(SELECT * FROM LCTJ WHERE RQ=200801)。如果是多条件的情况,只要重复步骤②、③、④即可实现。而步骤③是通过选中比较运算符时触发一个事件来实现RQ字段在表内不重复的值的列表。该事件对RQ字段冠以DISTINCT关键字进行查询(SELECT DISTINCT RQ FROM LCTJ),就能从表中把RQ字段的所有不重复的数据读出来,并赋予字段值区。
  


  3.5 数据备份
  数据备份包括备份三部分内容:备份条件、表的数据结构、数据。备份内容以文本文件形式存储,记录内数据之间以ASCII码中的TAB符间隔。之所以采用这种存储形式,是因为在实际工作中经常需要数据库中的某部分数据进行一些数据分析工作,并不是为了备份数据。而这种存储形式的数据就能够直接被诸如EXCEL之类的软件所读取进行数据再利用。
  3.5.1记录备份条件
  将对表所设置的备份条件记录下来,实际上就是保存下条件设置模型所生成的SQL语句。它不但记录了表名及备份时的数据环境的信息,同时也是为数据恢复做准备。
  3.5.2记录表的数据结构
  首先通过对数据字典视图SYS.COL的查询结果,获取表的每一个字段的名称、数据类型以及字段长度;其次是通过对数据字典视图USER_TABLES的查询结果获取表所属的表空间名;最后将完整的数据结构记录在备份文件中。
  3.5.3备份数据
  备份数据是用条件设置模型所生成的SQL语句通过ADO打开数据记录对象RecordSet,该对象所生成的记录集就是符合SQL条件的所有要备份的数据,然后使用该对象的各种方法将所有记录按既定的格式保存到备份文件中。
  以下是以备份南昌站2008年1月的数据为例的程序代码:
  Public cnn As ADODB.Connection
  Public rds As ADODB.Recordset
  cnn.Open
  rds.Open “SELECT * FROM LCTJ WHERE RQ=200801 AND ZM=‘南昌’”, cnn, adOpenDynamic, adLockOptimistic
  Do While rds.EOF = False
  For ii = 0 To rds.Fields.Count – 1 对每条记录的所有字段进行循环取数
  If (ii <> rds.Fields.Count - 1) Then
   If (IsNull(rds.Fields(ii)) = True) Then 对字段数据为空的特别处理
   Print #1, ""; Chr(9);
   Else
   Print #1, rds.Fields(ii); Chr(9);
   End If
  Else
   If (IsNull(rds.Fields(ii)) = True) Then对字段数据为空的特别处理
   Print #1, ""; Chr(9)
   Else
   Print #1, rds.Fields(ii); Chr(9)
   End If
  End If
  Next ii
  rds.MoveNext
  Loop
  cnn.Close
  3.6 数据恢复
  3.6.1判断所连接的数据库内是否存在要恢复的表
  如果是在原位上恢复数据,表自然是存在的;但如果要在另外平台上重新建立数据库,那么就需要新建表。首先从备份文件中读取表名,通过对数据字典视图USER_TABLES
  
  的TABLE_NAME字段的查询判断表是否存在。如果表不存在,那么从备份文件中读取表的数据结构后发送SQL的CREATE命令新建一个同名同结构的表。
  3.6.2清除表内与备份条件相符的原有记录
  为了防止数据的重复,保持数据的完整性和唯一性,在正式恢复数据之前从备份文件中读取备份时的条件语句,删除表内与此条件相符的所有记录。
  3.6.3恢复数据
  经上述准备,就可以进行恢复数据的步骤了。只要逐一读取数据记录,通过辨别TAB分隔符获取每个字段的数据,并将其写入表内,直至最终完整地将数据恢复,结束了全过程。
  
  4 结语
  该软件采用VB+数据库ADO技术,实现了Oracle数据跨操作系统平台的数据备份与恢复的过程,特别是加入了SQL条件,使得备份与恢复的范围更加灵活,同时备份数据兼顾再利用的功能,满足了运输收入信息化管理工作的实际需要。
其他文献
[摘要] 目的:以南方红豆杉的枝叶为原料,研究其活性成分10一脱乙酰巴卡丁Ⅲ(10-DABⅢ)提取的最佳工艺条件。方法:运用正交试验法研究萃取温度、萃取压力、萃取时间、混合夹带剂用量对CO2超临界萃取10-DABⅢ的影响。结果:最佳工艺条件为:夹带剂用量为15ml,萃取温度为50℃,压力为25MPa,时间在180min。各因素影响的强烈程度为夹带剂用量>萃取温度>压力>时间。用最佳工艺条件从南方红
期刊
[摘要] 从GIS的概念入手,详细分析了GIS技术应用于旅游景区规划的优势所在,尝试将功能强大的GIS软件ArcMap与空间视域分析手段应用于旅游景区的实际规划。应用结果表明GIS技术手段能很有效地为旅游景区规划提供科学有益的支持。  [关键词] GIS ArcMap 空间视域分析 景区规划    近年来随着旅游业的迅猛发展,旅游景区的资源调查、评价、分析、开发、规划和管理中的一些传统方法已不能满
期刊
[摘要] 本文通过对基于H.323的IP视频会议系统的视频会议标准、系统组成、组网结构、视频会议室配套设计、发展趋势等方面进行的简要分析,给出近年来视频会议系统在中国各类行业用户信息化项目中的建设思路。  [关键词] 视频会议 H.323 视频终端 MCU GK(关守) 矩阵    1 视频会议系统的定义    什么是“视频会议系统”?视频会议系统是集视频通信、音频通信、数据通信于一体的新一代交互
期刊
[摘要] 光催化是一门新型技术,它为人类开发利用太阳能开辟了崭新的途径。与常用的处理方法比较,光催化有许多优点。该文简要介绍了光催化机理,并利用Materials Studio 4.0软件对TiO2和ZnO的能带、电子能态密度进行计算,并将结果和实验值进行了对比。计算结果表明,计算值和实验值吻合良好。  [关键词] 光催化 TiO2 ZnO 能带 电子能态密度     光催化是一门新型技术,始于1
期刊
[摘要] 针对我国干线货运机车SS4机车的大逻辑控制装置检修的需要,以确保其质量稳定,设计研制了SS4机车大逻辑控制装置便携式测试仪。通过实际运用,表明其测试精度准确、操作简便、性能稳定。  [关键词] 大逻辑控制装置 测试仪 研制 SS4机车    随着科学技术日新月异的发展,我国电力机车装备技术不断提升,新技术、高科技产品在机车上得到广泛运用。2004年原永安段新配属的SS4-800系列机车控
期刊
[摘要] 夫妻约定财产制是规范夫妻对其婚前财产、婚后财产的占有、使用、管理、收益、处分协议的法律制度。修订后的《婚姻法》对夫妻约定财产制进行了补充和完善,适应了我国社会和家庭出现的多种经济形式的需要。夫妻财产约定的成立要件包括实质要件和形式要件两方面。其中,夫妻财产约定的实质要件包括约定双方必须具有合法的夫妻关系,夫妻双方必须具有完全民事行为能力,夫妻双方必须亲自缔结约定,夫妻双方意思表示真实,夫
期刊
[摘要] 详细分析了SS3型机车主断路器主要故障现象及其原因,并从材料结构、制造工艺、力学性能及检修保养方面提出了防治措施。  [关键词] 电力机车 主断路器 故障 措施    1 问题提出    随着机务生产力布局的调整,福州机务段由原福州、邵武、永安、漳平4个机务段重新组建。配属我段的SS3型电力机车有TDZ1-200/25,TDZ1A-10/25等多种型号的主断路器,是安装于车顶的一个重要高
期刊
[摘要] 亲子关系问题在家庭问题中占有较大比例。随着越来越多的孩子离家进入高校,大学生亲子互动尤其是远距互动与关系问题日益凸现。该文以两名社会工作学生的实习进程为例,介绍团体工作方法在协助大学生就亲子关系建立支持网络,实现应对亲子问题的沟通交流,促进亲子关系的良性发展方面的积极尝试,并总结出小组实习员对大学生亲子问题和社会工作实习的理解与评估。  [关键词] 小组社会工作 大学生 家庭亲子关系  
期刊
[摘要] 中国移动EGPRS网络投入商用后,业务发展迅猛,承载无线数据业务的GPRS网络出现了较严重的容量受限情况。为了保证EGPRS网络的性能,必须配置足够的网络资源。该文针对影响EGPRS网络性能的无线时隙配置、EDAP、PCU、Gb Link等相关资源进行优化,并分析了造成EGPRS传输速率较低的原因。  [关键词] EGPRS CDED CDEF EDAP PCU    1 前言    新
期刊
[摘要] 福建省电力工业发展面临着省内电力一次能源资源不足、电力发展与生态环境保护约束、能源利用效率偏低的挑战;存在电力结构不合理、厂网发展不够协调、电网抵御自然灾害能力不强、与周边电网联系薄弱等问题。为实现福建省电网的可持续发展,必须转变电网发展方式,走节约型发展电网之路。该文从电网现状、负荷需求出发,描述福建省“十一五”末及“十二五”期间电源、电网发展规划及重点,提出了建设节约型电网应采取的措
期刊