前言:中文期刊网精心挑选了数据库论文范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。
数据库论文范文1
[关键词]SQLServer2000;数据导入;DTS
1SQLServer2000常用的数据导入导出方法
1.1通过DTS的设计器进行导入或导出
DTS的设计器功能强大,支持多任务,也是可视化界面,易于操作,但熟悉的人一般不多,如果只是进行SQLServer数据库中部分表的移动,用这种方法最好,当然,也可以进行全部表的移动。在SQLServerEnterpriseManager中,展开服务器左边的+,选择数据库,右击,选择Alltasks/ImportData...(或Alltasks/ExportData...),进入向导模式,然后按照提示一步一步进行就可以了,里面分得非常详细,可以灵活的在不同数据源之间复制数据,非常的方便,而且还可以另存成DTS包,如果以后还有相同的复制任务,直接运行DTS包就行,省时省力。也可以直接打开DTS设计器,方法是展开服务器名称下面的DataTransformationServices,选LocalPackages,在右边的窗口中右击,选NewPackage,就打开了DTS设计器。值得注意的是:如果源数据库要拷贝的表有外键,注意移动的顺序,有时要分批移动,否则外键主键,索引可能丢失,移动的时候选项旁边的提示说的很明白,或者一次性的复制到目标数据库中,再重新建立外键,主键,索引。其实在建立数据库时,建立外键,主键,索引的文件应该和建表文件分开,而且用的数据文件也分开,并分别放在不同的驱动器上,有利于数据库的优化。
1.2利用Bcp工具
这种工具虽然在SQLServer2000的版本中不推荐使用,但许多数据库管理员仍很喜欢用它,尤其是用过SQLServer早期版本的人。不过Bcp确实有其局限性,首先它的界面不是图形化的;其次它只是在SQLServer的表(视图)与文本文件之间进行复制。但是另一方面,它也有其优点:性能好,开销小,占用内存少,速度快。
1.3利用备份和恢复
先对源数据库进行完全备份,备份到一个设备(device)上,然后把备份文件复制到目的服务器上(恢复的速度快),进行数据库的恢复操作,在恢复的数据库名中填上源数据库的名字(名字必须相同),选择强制型恢复(可以覆盖以前数据库的选项),在选择从设备中进行恢复,浏览时选中备份的文件就行了。这种方法可以完全恢复数据库,包括外键,主键,索引。
1.4直接拷贝数据文件
把数据库的数据文件(*.mdf)和日志文件(*.ldf)都拷贝到目的服务器,在SQLServerQueryAnalyzer中用语句进行恢复:
EXECsp_attach_db@dbname=’test’,
@filename1=’d:\mssql7\data\test_data.mdf’,
@filename2=’d:\mssql7\data\test_log.ldf’
这样就把test数据库附加到SQLServer中,可以照常使用,如果不想用原来的日志文件,可以用如下的命令:
EXECsp_detach_db@dbname=’test’
EXECsp_attach_single_file_db@dbname=’test’,
@physname=’d:\mssql7\data\test_data.mdf’
这个语句的作用是仅仅加载数据文件,日志文件可以由SQLServer数据库自动添加,但是原来的日志文件中记录的数据就丢失了。
1.5在应用程序中定制
可以在应用程序(PB、VB)中执行自己编写的程序,也可以在QueryAnalyzer中执行,这种方法比较灵活,其实是利用一个平台连接到数据库,在平台中用的主要是SQL语句,这种方法对数据库的影响小,但是如果用到远程链接服务器,要求网络之间的传输性能好,一般有两种语句:
1.5.1select...intonew_tablenamewhere...
1.5.2insert(into)old_tablenameselect...from...where...
这两种方式的区别是前者把数据插入一个新表(先建立表,再插入数据),而后者是把数据插入已经存在的一个表中,一般来说,第二条语句强于前者。
1.6SQLServer的复制功能
SQLServer提供了强大的数据复制功能,也是最不易掌握的,具体应用请参考相关资料,值得注意的是要想成功进行数据的复制工作,有些条件是必不可少的:
1.6.1SQLServerAgent必须启动,MSDTC必须启动。
1.6.2所有要复制的表必须有主键。
1.6.3如果表中有text或image数据类型,必须使用withlog选项,不能使用withno_log选项。
另外maxtextreplsize选项控制可以复制的文本和图像数据的最大规模,超过这个限制的操作将失败。
1.6.4在要进行复制的计算机上,应该至少是隐含共享,即共享名是C$或D$…。
1.6.5为SQLServer使用的WindowsNT账号不能是一个本地的系统账号,因为本地的系统账号不允许网络存取。
1.6.6如果参与复制的服务器在另外的计算机域中,必须在这些域之间建立信任关系。
2实现基于网页的数据库数据导入
那么,如何实现基于网页的数据库数据导入呢,下面利用一个比较简单的网络介绍一下。
假设某局域网的网络拓扑结构如下所示:
其中服务器A和工作站B位于局域网内,工作站C与服务器D位于Internet内,局域网与Internet是物理隔离的,工作站C与工作站D在同一个办公室内,服务器A上的数据库管理系统是Oracle,服务器D上的数据库管理系统是SQLServer2000。由于工作需要,要求把服务器A的有关数据导入到服务器D上。
2.1通常的工作流程:
2.1.1在工作站B上运行客户端软件,将服务器A上数据导入到本地的dbf文件。
2.1.2用移动硬盘把dbf文件从工作站B拷贝到工作站C上。
2.1.3在工作站C上,用ftp软件将dbf文件上传到服务器D上。
2.1.4在工作站C上,运行远程桌面软件登录到服务器D上。
2.1.5在服务器D上,执行DTS,将dbf文件中的数据导入到SQLServer
数据库。
2.1.6在服务器D上,运行相关存储过程,做数据的后期处理工作。
在许多情况下,因为各种不同情况的需要,这个工作流程每天(甚至更短的时间内)就要执行一次,非常繁琐,而且使用手工操作,很容易出错。下面提出一种改进的方案。
2.2改进后的工作流程
2.2.1在工作站B上运行客户端软件,将服务器A上数据导入到本地的dbf文件。
2.2.2用移动硬盘把dbf文件从工作站B拷贝到工作站C上。
2.2.3在工作站C上,打开服务器D上的相关网页,利用网页将dbf文件的数据导入到服务器D上的SQLServer数据库中。
首先,要在网页里实现上传功能,把dbf文件从工作站C上传到服务D上,这里就不多介绍了。要通过网页把dbf文件导入到SQLServer中,需要借助DTS可编程对象。DTS包含一组可编程COM对象,主要包含:DTS.Package、DTS.Connection、DTS.Step、DTS.ExecuteSQLTask、DTS.DataPumpTask、DTS.Transformation。
在ASP网页里,通过用VBScript脚本创建调用DTS可编程COM对象,可以完成数据导入任务。SQLServer2000有比较详细的文档资料介绍DTS编程,但没有给一个具体的例子,如果仅参考文档资料,难度比较大,开发时间也会相当长。这里大概的介绍一下开发程序的过程。首先,在SQLSever2000的DTS设计器里,创建DTS包,实现从dbf文件到SQLServer2000的数据导入,把后期处理的存储过程也添加到DTS包里。将这个DTS包另存为VBScript文件。有了这个VBScript文件,开发程序就容易多了,加入所需要的其他代码,就可以在网页里实现数据库的数据导入。
参考文献
【1】张莉,等.SQLServer数据库原理及应用教程[M].北京:清华大学出版社,2003.
数据库论文范文2
然而,针对给定系统环境,数据作为必需数据项,不能和其他实体存在联系,联系仅在实体之间表示。考虑因素。对于数据库设计,是将现实世界信息向信息世界的转变过程。因此,在数据库设计中,需考虑如下问题:一是数据库作为现实世界信息有效、真实反映,通过DBMS开展数据库设计,在数据库使用过程中,需要确保较高性能、效率,保证方便维护、有效实施。二是设计方法。对于数据库设计而言,主要包含六个阶段:数据收集与分析、数据模型的获取、分析数据库细节、建立数据库、维护数据库、改进数据库。对于数据库设计而言,这六个阶段十分重要,必须认真研究、反复推敲,方可确保数据库正确实施。
在数据库设计中,信息设计十分重要。因此,针对数据库设计,必须重点研究信息设计。针对信息设计,E-R设计法是最佳方法。利用E-R设计法,将信息设计属于数据世界、现实世界的纽带。在数据库设计中,E-R设计模型优势十分明显,该模型约束因素较少,具有较强随意性、灵活性。同时,E-R设计模型稳定性较强,若启动新数据库系统,通过E-R设计模型,即可重新设计数据,省略了诸多烦琐环节。在E-R设计图作为直观性工具,容易被客户接受,即使是非专业人士,也可实现交流。
在数据库设计时,非常依赖函数,一个数据库好坏与否,需检验数据库与用户需求是否相符,能否真正满足用户需求。因此,我们必须优化、解决数据库问题。数据库使用时,查询过程的等待执行时间较长,这是数据库的最明显问题。对于这一问题,必须加强分析、优化。实施问题优化,必须考虑查询执行时间较长的原因,在运算过程中,为什么花费时间较长。对于这一问题,笔者认为优化方法如下:第一,尽可能选择先做。在数据库查询时,极大缩短了执行预算时间,大多数选择中间计算,使得中间结果明显变小。第二,在建瓯之前,实施联结之前,对文件进行提前、适当的处理。第三,运用正确表达式,尽可能确保公式简单化,防止复杂、烦琐处理。第四,对于部分选择乘积联合为一个联结,由于联结特殊,尤其是相等联结,必须同一选择乘积要节约时间。利用一些具体措施,在数据库使用之前实施优化,提升数据库的高效性,进而为人们提供更为便捷的信息服务。第五,加强数据库保护。为提高数据库安全性,必须加强信息保护,通过数据库保护,实行并发操作。
数据库论文范文3
本文所说的数据库中,首先是用户数据,而用户数据主要包含的是档案管理部门工作人员的信息,即其用户名与密码。相关工作人员在对文件进行管理前应当先进行身份认证,通过后方可进行操作。为了保证档案管理系统的安全性,在用户正常登录时,session对象中将用一个变量保存对应的用户名,但是非法请求管理页面时,那么对象中的用户名变量为空将页面重定向到登陆页面强制登陆。接着是文件数据,文件数据记录的包括一般属性与几个重要的附加属性。一般属性即是档案的成文时间、收文时间、文件题目、文件字号与类别等,而附加属性包括文件类型,就是标志该档案是以何种方式提交的,图形还是文本,附加属性还有文件状态,即档案是公开还是保密,或是针对哪些级别公开哪些级别保密。一个单位的档案一般都是繁多而复杂的,往往有许多历史类档案,而这些档案如果全部以文本的形式加以呈现,且完全由人工进行管理,那么必将会出现效率低下的问题,同时也很难将档案的价值完全发挥出来,所以我们应当将档案系统与现今科技发展相结合,比如对文件进行扫描,然后将其传入数据库,这样一来又省事又省时。但是与此同时我们不能忽略的另一个重要问题是两种格式的文件如何在一个数据库中进行统一,针对这样的问题,我们可以这样解决,即在文件表中增加一个文件路径,针对图片格式的档案,可以将该档案中的图片文件保存成磁盘文件,接着还需要再创立一个磁盘文件按照顺序记录各个图片的路径,数据库中记录该磁盘文件的路径。而对于文本类的档案,可以将档案的主体内容存入一个磁盘文件中,数据库中记录该文本的路径。
二、档案管理系统的设计档案管理系统
是由不同的动态网页所构成的,而该系统的各项功能也借助动态网页得以实现,档案管理人员、档案使用人员以及档案管理系统和后台数据库之间的交互,从而实现单位管理与文件管理的功能,而档案管理人员可以在经过身份验证后对这些档案进行管理。对档案进行的管理包括对档案的添加修改以及删除。其中添加页面与修改页面比较相似,但是修改页面上的控件已经有了初始值,而添加页面中的数据控件默认是空值,所以添加、修改页面可以在同一个页面中得以实现,在引用比较具体的页面时的区分方式是利用URL后的查询字符串。在对这些档案数据进行操作管理时,也有需要注意的地方,比如在页面提交前应当首先进行客户端的验证,从而保证提交数据的完整性与准确性,其次为了避免重复记录在数据提交到服务器后还要进行服务器端的验证。在对数据库中的图形文件进行处理时也有许多应当注意的问题,首先是图形文件的修改,这是文件管理中一个比较难操作的模块,在对图形文件进行修改时,我们一定会重新上传图片,与此同时也要显示出原来的图片,但是此时图片的大小与数量尚未确定,可能会是档案管理系统的页面出现排序混乱的现象,所以该档案管理系统中只有删除图形文件的功能,没有修改图片的功能。而添加图形文件时也有其比较特殊的部分,即我们无法确定这个文件中具体的图片数量,即页面中无法固定文件上传控件的数量,此时我们可以在进入添加图形文件页面前先向服务器提交一个数据表明这个文件包括多少图片,而后服务器根据这个数据去生成相应数量的文件上传控件,对于文件上传我们可以利用程序从提交的数据中分离出图片信息,或者是使用特定的文件上传组。与此同时还有客户端的验证问题,针对这种问题我们也有相应的解决方案,那就是利用服务器端脚本去生成客户端脚本。在对该系统进行开发时,我们可以利用MicrosoftVisualInterDev作为系统的开发工具。该工具可以对某些对象的属性方法进行自动处理,提高了拼写的准确率与编程速度。同时这个工具还能够将档案中的某些关键词句进行蓝色加粗显示,极大地方便了我们的阅读。在系统完成后,必须应经过相应的测试,模拟实际工作进行测试,保证无问题后可投入运行。
三、档案管理系统更新的意义
数据库论文范文4
目前在WINDOWS环境下有多种访问WEB数据库的技术,主要有:
1.公共网关接口CGI(CommonGatewayInterface)
CGI是较早实现的技术。适用于多种服务器平台,如UNIX、WINDOWS等,但CGI的开发成本高、维护困难、功能有限、不具备事务处理功能、占用服务器资源较多。
2.INTERNET数据库连接器IDC(InternetDatabaseConnector)
IDC集成在ISAPI(InternetServerAPI)中,充分利用了DLL技术,易扩充,但编程较CGI更为复杂,只适用于小型数据库系统。
3.先进数据库连接器ADC(AdvanceDatabaseConnector)
ADC提供了ActiveXControl来访问数据库,它的主要特点是数据查询由用户端浏览器执行,因而需将服务器端数据库中的部分记录下载到用户端,系统开销较大、响应慢,只适用于特别频繁的数据库查询操作。
4.JAVA/JDBC语言编程
JAVA语言是一种面向对象、易移植、多线程控制的语言,可通过JDBC去连接数据库。用JAVA/JDBC编写的软件可移植性强,适用于多种操作系统,但其执行效率和执行速度还不理想,目前无法建立高效、高速的应用。
5.动态服务器页面ASP(ActiveServerPage)
ASP是微软公司最新推出的WEB应用开发技术,着重于处理动态网页和WEB数据库的开发,编程灵活、简洁,具有较高的性能,是目前访问WEB数据库的最佳选择。
二.ASP简介
1.ASP访问数据库的原理
ASP是服务器端的脚本执行环境,可用来产生和执行动态的高性能的WEB服务器程序。
当用户使用浏览器请求ASP主页时,WEB服务器响应,调用ASP引擎来执行ASP文件,并解释其中的脚本语言(JScript或VBScript),通过ODBC连接数据库,由数据库访问组件ADO(ActiveXDataObjects)完成数据库操作,最后ASP生成包含有数据查询结果的HTML主页返回用户端显示。
由于ASP在服务器端运行,运行结果以HTML主页形式返回用户浏览器,因而ASP源程序不会泄密,增加了系统的安全保密性。此外,ASP是面向对象的脚本环境,用户可自行增加ActiveX组件来扩充其功能,拓展应用范围。
2.ASP页面的结构:
ASP的程序代码简单、通用,文件名由.asp结尾,ASP文件通常由四部分构成:
1)标准的HTML标记:所有的HTML标记均可使用。
2)ASP语法命令:位于<%%>标签内的ASP代码。
3)服务器端的include语句:可用#include语句调入其它ASP代码,增强了编程的灵活性。
4)脚本语言:ASP自带JScript和VBScript两种脚本语言,增加了ASP的编程功能,用户也可安装其它脚本语言,如Perl、Rexx等。
3.ASP的运行环境
目前ASP可运行在三种环境下。
1)WINDOWSNTserver4.0运行IIS3.0(InternetInformationServer)以上。
2)WINDOWSNTworkstation4.0运行PeerWebServer3.0以上。
3)WINDOWS95/98运行PWS(PersonalWebServer)。
其中以NTserver上的IIS功能最强,提供了对ASP的全面支持,是创建高速、稳定的ASP主页的最佳选择。
4.ASP的内建对象
ASP提供了六个内建对象,供用户直接调用:
1)Application对象:负责管理所有会话信息,可用来在指定的应用程序的所有用户之间共享信息。
2)Session对象:存贮特定用户的会话信息,只被该用户访问,当用户在不同WEB页面跳转时,Session中的变量在用户整个会话过程中一直保存。Session对象需cookie支持。
3)Request对象:从用户端取得信息传递给服务器,是ASP读取用户输入的主要方法。
4)Response对象:服务器将输出内容发送到用户端。
5)Server对象:提供对服务器有关方法和属性的访问。
6)ObjectContext对象:IIS4.0新增的对象,用来进行事务处理。此项功能需得到MTS(MicrosoftTranscationServer)管理的支持。
5.ASP的主要内置组件:
1)AdRotator组件:用来按指定计划在同一页上自动轮换显示广告,用于WWW上日益重要的广告服务。
2)BrowserCapabilities组件:确定访问WEB站点的用户浏览器的功能数据,包括类型、性能、版本等。
3)DatabaseAccess组件:提供ADO(ActiveXDataObjects)来访问支持ODBC的数据库。
4)FileAccess组件:提供对服务器端文件的读写功能。
5)ContentLinking组件:生成WEB页内容列表,并将各页顺序连接,用于制作导航条。
此外,还可安装Myinfo、Counters、ContentRotator、PageCount等组件,用户也可自行编制Actiive组件,以提高系统的实用性。
6.DatabaseAccess组件ADO
WWW上很重要的应用是访问WEB数据库,用ASP访问WEB数据库时,必须使用ADO组件,ADO是ASP内置的ActiveX服务器组件(ActiveXServerComponent),通过在WEB服务器上设置ODBC和OLEDB可连接多种数据库:如SYBASE、ORACLE、INFORMIX、SQLSERVER、ACCESS、VFP等,是对目前微软所支持的数据库进行操作的最有效和最简单直接的方法。
ADO组件主要提供了以下七个对象和四个集合来访问数据库。
1)Connection对象:建立与后台数据库的连接。
2)Command对象:执行SQL指令,访问数据库。
3)Parameters对象和Parameters集合:为Command对象提供数据和参数。
4)RecordSet对象:存放访问数据库后的数据信息,是最经常使用的对象。
5)Field对象和Field集合:提供对RecordSet中当前记录的各个字段进行访问的功能。
6)Property对象和Properties集合:提供有关信息,供Connection、Command、RecordSet、Field对象使用。
7)Error对象和Errors集合:提供访问数据库时的错误信息。
三.ASP访问数据库步骤
在ASP中,使用ADO组件访问后台数据库,可通过以下步骤进行:
1.定义数据源
在WEB服务器上打开“控制面板”,选中“ODBC”,在“系统DSN”下选“添加”,选定你希望的数据库种类、名称、位置等。本文定义“SQLSERVER”,数据源为“HT”,数据库名称为“HTDATA”,脚本语言采用Jscript。
2,使用ADO组件查询WEB数据库
1)调用Server.CreateObject方法取得“ADODB.Connection”的实例,再使用Open方法打开数据库:
conn=Server.CreateObject(“ADODB.Connection”)
conn.Open(“HT”)
2)指定要执行的SQL命令
连接数据库后,可对数据库操作,如查询,修改,删除等,这些都是通过SQL指令来完成的,如要在数据表signaltab中查询代码中含有“X”的记录
sqlStr=“select*fromsignaltabwherecodelike‘%X%’”
rs=conn.Execute(sqlStr)
3)使用RecordSet属性和方法,并显示结果
为了更精确地跟踪数据,要用RecordSet组件创建包含数据的游标,游标就是储存在内存中的数据。
rs=Server.CreateObject(“ADODB.RecordSet”)
rs.Open(sqlStr,conn,1,A)
注:A=1读取
A=3新增、修改、删除
在RecordSet组件中,常用的属性和方法有:
rs.Fields.Count:RecordSet对象的字段数。
rs(i).Name:第i个字段的名称,i为0至rs.Fields.Count-1
rs(i):第i个字段的数据,i为0至rs.Fields.Count-1
rs("字段名"):指定字段的数据。
rs.Record.Count:游标中的数据记录总数。
rs.EOF:是否最后一条记录。
rs.MoveFirst:指向第一条记录。
rs.MoveLast:指向最后一条记录。
rs.MovePrev:指向上一条记录。
rs.MoveNext:指向下一条记录。
rs.GetRows:将数据放入数组中。
rs.Properties.Count:ADO的ResultSet或Connection的属性个数。
rs.Properties(item).Name:ADO的ResultSet或Connection的名称。
rs.Properties:ADO的ResultSet或Connection的值。
rs.close():关闭连接。
4)关闭数据库
conn.close()
四.查询WEB数据库举例
下面这段示例程序是访问SQLSERVER数据库的signaltab表,表中有三个字段:code(代码字段,字符型,3位),class(分类字段,字符型,10位),memo(备注字段,字符型,20位)。程序中数据源DSN:HT、用户名:client、口令:passwd。
屏幕输入页面input.asp
<%@language=javascript%>
数据库论文范文5
(1)资产信息管理。包括资产登记,资产标签打印,资产信息修改,资产信息删除。(2)合同信息管理。包括合同登记,合同信息修改,合同删除和合同付款验收。(3)供应商管理。包括原厂商登记,原厂商查询变更,供应商登记,供应商查询变更。(4)资产领用管理。包括资产领用,资产领用单打印,资产领用变更,资产归还,资产领用单删除,资产领用查询变更。(5)资产维修管理。包括维修登记,维修记录变更,维修记录删除。(6)资产处置管理。包括处置登记,处置查询变更,处置记录变更,处置记录删除。(7)资产卡片管理。包括卡片登记,卡片变更,卡片删除。(8)查询统计管理。包括供应商查询,合同查询,资产信息统计查询,资产领用查询,卡片领用查询。(9)系统管理。包括数据字典,用户管理,权限分配和角色分配。
2关键技术
2.1数据库设计
数据库是资产管理系统的重要组成部分,数据库结构的好坏将对应用系统的效率以及实现的效果产生直接影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的一致性、安全性和完整性。本系统采用关系型数据库,关系型数据库是建立在严格的数学概念的基础上。概念单一,实体与实体间的联系都用关系表示,故其数据结构简单、清晰,存取路径对用户透明。因此有更高的数据独立性和更好的安全保密性。系统运用实体联系图的方法来进行数据库概念结构设计。依据以上的设计,系统中设计出的实体有:资产实体、用户实体、供应商实体、部门实体等。
2.2数据字典
系统根据机构权限的不同实行级别管理,分为省联社级、市级、市级农商行、县级、网点级五个级别。省联社级为最高级别,网点级为最低级别。所以系统开发时首先要规定统一的数据格式和规范编码规则。系统以数据字典的形式来规范数据。数据字典用于设定计量单位、资产状态、领用类型、报修类型等一些基本数据的管理。通常由服务器系统管理员统一管理。本系统将数据字典的格式规范成三个字段:字典域(进行分级管理),字典域编码和字典域名称。
2.3个性化用户视图
本系统按不同的用户类型来分组,给不同的用户分配不同的角色,不同的角色拥有不同的访问权限。系统根据登录用户角色的不同,来生成不同角色所对应的不同的菜单和功能。即具有不同权限的用户,在登录到系统之后会看到不同的用户操作界面。从而产生了基于角色的个性化用户视。本系统在设计方面严格执行“一人一角色”的操作权限,更好的确保了系统操作的方便性和安全性。
3系统实现
通过对农信社资产管理进行深入地研究,详尽全面地分析了资产管理系统的需求,该系统采用C#编程语言,后台数据库为关系型数据库SQLServer2005开发了三层架构的资产管理系统。系统采用典型的C/S架构,主要是基于数据量和安全性方面的考虑。系统分为三层,第一层为客户层(Client),第二层为业务逻辑层(BusinessLogic),第三层为数据层(Data)。
4结束语
数据库论文范文6
Abstract:StartingfromthearchitectureofORACLE,thispaperdiscussesthebackupmethodandstrategyofdatabaseOracle,includingIMP/EXP,PMANandOStheoreticallyandpractically.
关键字:Oracle,备份,恢复,RMAN
Keywords:Oracle;Backup;Restoration;RMAN
概述
在大型软件运行系统中,存在着很多备份策略,如RAID技术,CLUSTER技术等等。很多时候,这些系统的备份就能够解决数据库备份的问题。但是,这种备份成本很高。同时,硬件的备份有时根本满足不了现实的需要,如果用户不小心误删了一个表,又想恢复的时候,数据库的备份就变的重要了。
Introduction:Intherunningsystemofsomebigsoftware,thereexistmanybackupstrategiessuchasRAIDtechnologyandCLUSTERtechnologyetc.Inmostcases,thesesystembackupstrategiescanfulfillthedatabasebackup.Howeverthecostisratherhigh.Atthesametime,hardwarebackupsometimesisfarfromtheactualrequirement.Thedatabasebackupbecomesveryimportantwhenatableisdeletedbyaccidentandneedstoberestored.
Oracle的运行方式
Oracle数据库有两种运行方式:一是归档方式(ARCHIVELOG),归档方式的目的是当数据库发生故障时最大限度恢复数据库,可以保证不丢失任何已提交的数据;二是不归档方式(NOARCHIVELOG),只能恢复数据库到最近的回收点(冷备份或是逻辑备份)。根据数据库的高可用性和用户可承受丢失的工作量的多少,对于实时性要求高的数据库,强烈要求采用为归档方式;不归档方式只用在那些开发和调试的数据库等。
如何改变数据库的运行方式,在创建数据库时,作为创建数据库的一部分,就决定了数据库初始的存档方式。一般情况下为NOARCHIVELOG方式。当数据库创建好以后,根据我们的需要把需要运行在归档方式的数据库改成ARCHIVELOG方式。操作如下。
1.关闭数据库,备份已有的数据,改变数据库的运行方式是对数据库的重要改动,所以要对数据库做备份,对可能出现的问题作出保护。
2.修改初试化参数,使能自动存档。
修改(添加)初始化文件init[SID].ora参数:
log_archive_start=true#启动自动归档
log_archive_format=ARC%T%S.arc#归档文件格式
log_archive_dest=/archdir/arch#归档路径
在8i中,可以最多有五个归档路径,并可以归档到其它服务器,如备用数据库(standbydatabase)服务器。
3.启动Instance到Mount状态,即加载数据库但不打开数据库。
$>svrmgrl
SVRMGRL>connectinternal
SVRMGRL>startupmount
SVRMGRL>alterdatabasearchivelog;//使数据库运行在归档方式
SVRMGRL>alterdatabaseopen;
Oracle的备份方案
按照备份的方式,可以分为逻辑备份、冷备份(脱机备份)、热备份(联机备份),其中冷备份与热备份又可以合称为物理备份。按照备份的工具,可以分为EXP/IMP备份、操作系统备份、RMAN、第三方工具备份,如VERITAS等。下面分别介绍Oracle本身提供的几种备份工具和操作。
1.EXP/IMP备份(逻辑备份)
EXP/IMP属于逻辑备份的范畴,逻辑备份是指只备份数据库中的数据但不记录数据物理位置的一种备份。导出为数据库作一个二进制的备份,并且这个备份只能由其姊妹程序imp(import)来读取。具体的使用方法如下。(因为EXP和IMP使用上参数基本相同,所以只以EXP为例。)
EXP的命令格式和参数
格式:KEYWORD=value或KEYWORD=(value1,value2,...,valueN)
例程:EXPSCOTT/TIGERGRANTS=YTABLES=(EMP,DEPT,MGR)
USERID必须是命令行中的第一个参数
关键字说明(默认)关键字说明(默认)
USERID用户名/口令FULL导出整个文件(N)
BUFFER数据缓冲区的大小OWNER所有者用户名列表
FILE输出文件(EXPDAT.DMP)TABLES表名列表
COMPRESS导入一个范围(Y)RECORDLENGTHIO记录的长度
GRANTS导出权限(Y)INCTYPE增量导出类型
INDEXES导出索引(Y)RECORD跟踪增量导出(Y)
ROWS导出数据行(Y)PARFILE参数文件名
CONSTRAINTS导出限制(Y)CONSISTENT交叉表一致性
LOG屏幕输出的日志文件STATISTICS分析对象(ESTIMATE)
DIRECT直接路径(N)TRIGGERS导出触发器(Y)
FEEDBACK显示每x行(0)的进度FILESIZE各转储文件的最大尺寸
QUERY选定导出表子集的子句
注:可以通过exp-help命令查看exp的使用方法;imp-help命令查看imp的使用方法.
2.操作系统备份(冷备份和热备份)
操作系统备份有两类,冷备份(Coldbackup)和热备份(Hotbackup)。操作系统备份和上面的逻辑备份有本质的区别,它将拷贝整个的数据文件。
冷备份
在文件级备份开始前数据库必须彻底关闭。关闭操作必须用带有normal、immediate、transaction选项的shutdown来执行。
数据库使用的每个文件都被备份下来,这些文件包括:所有数据文件、所有控制文件、所有联机重做日志文件和INIT.ORA文件(建议)。
作冷备份一般步骤是:
1)正常关闭要备份的实例(instance);
2)备份整个数据库到一个目录
3)启动数据库
即:
SVRMGRL>connectinternal
SVRMGRL>shutdownimmediate
SVRMGRL>!cp<file><backupdirectory>
or
SVRMGRL>!tarcvf/dbbak/fullbk.tar/u01/oracle/oradata/dbname
SVRMGRL>startup
热备份
热备份是当数据库打开时的操作系统备份。热备份只能用于ARCHIVELOG方式的数据库。热备份没有必要备份联机日志,但必须是归档状态,在实例恢复的时候,可能需要用到归档日志。当前联机日志一定要保护好或是处于镜相状态,当前联机日志的损坏,对于数据库的损坏是巨大的,只能以数据的丢失来进行数据库的恢复工作。对于临时表空间,存放的是临时信息,在热备份是也可以考虑不用备份,如果临时文件发生故障,可以删除该数据文件与表空间,重建一个临时表空间。
热备份备份的内容和冷备份备份的内容一样,操作一般步骤是:
1)备份的表空间通过使用ALTERTABLESPACE……BEGINBACKUP使表空间进入热备份方式。
2)用类似冷备份的操作系统命令对组成表空间的数据文件进行拷贝。
3)使用ALTERTABLESPACE……ENDBACKUP命令使表空间脱离热备份方式。
4)使用ALTERDATABSE……BACKUPCONTROLFILE命令备份控制文件。
即:
SVRMGRL>connectinternal;
SVRMGRL>altertablespaceUserbeginbackup;
SVRMGRL>!cp/u01/oradata/dbname/user01.ora/dbbak/user01.ora
SVRMGRL>altertablespaceUserendbackup;
SVRMGRL>alterdatabasebackupcontrolfileto<fielname>;
or
SVRMGRL>alterdatabasebackupcontrolfiletotrace;
注意:因为热备份的时候,用户还在操作数据库,所以最好是让每个表空间处于备份状态的时间最短,这样就要求一个表空间一个表空间的备份,不要一起使表空间处于备份状态而同时拷贝数据文件。
3.RMAN
RecoveryManager(RMAN)是一个使DBA能很方便地对数据库执行备份和恢复任务的Oracle应用工具,能够提供DBA对企业数据库备份与恢复操作的集中控制。RMAN只能用于ORACLE8或更高的版本中。它能够备份整个数据库或数据库部件,其中包括表空间、数据文件,控制文件和归档文件。RMAN可以按要求存取和执行备份和恢复。
RMAN支持六种不通的类型的备份,经常用到的有两种:
FULL数据库全备份,包括所有的数据块。
INCREMENTAL增量备份,是指只备份在同级别或更低级别上进行的前一次备份之后的作过改动的那些数据块。这其中需要一个0级的增量作为增量的基础,它备份包括全部曾经被数据库使用过的数据块(但不是完全数据库备份)。RMAN共可以支持7级增量。
BACKUP,RESTORE,RECOVER是RMAN最基本的三个命令,分别可以进行数据库的备份,复原以及恢复操作。restore命令用于恢复来自备份集或映像拷贝的数据文件、控制文件或归档重做日志。recovery命令用于进行介质恢复应用重做日志文件。
RMAN的备份信息一般保存在恢复目录中,恢复目录也是一个数据库,只不过这个数据库用来保存备份信息,一个恢复目录可以用来保存多个数据库的备份信息。RMAN也可以在没有恢复目录(NOCATALOG)下运行,这个时候备份信息保存在控制文件。这种情况比较危险,因为一旦控制文件被破坏,将导致所有数据库备份信息的丢失和恢复的失败,而且,没有恢复目录,很多RMAN的命令将不被支持。所以对于重要的数据库,建议创建恢复目录。
创建恢复目录一般有以下步骤。(例子数据库为db)
1)为目录创建一个单独的表空间
SQL>createtablespacetsrmandatafile’/dbbak/rman/rsrman.dbf’size50M;
2)创建RMAN用户
SQL>createuserrmanidentifiedbyrmandefaulttablespacersrmantemporarytablespacetemp;
3)给RMAN授予权限
SQL>grantconnect,resource,recovery_catalog_ownertorman;
4)打开RMAN
$rman
5)连接恢复目录数据库
RMAN>connectcatalogrman/rman@db
6)创建恢复目录
RMAN>createcatalogtablespacetsrman在对某个数据库进行备份之前,必须先在恢复目录上注册该数据库,这一过程操作如下(假定目标数据库连接字符串为db100)。
1)连接到恢复目录数据库
$rmanrman/rman@db
2)在RMAN中连接到目标数据库(即要进行备份的数据库)
RMAN>connecttargetsys/change_on_install@db100
3)注册数据库
RMAN>registerdatabase;
注册完数据库后,就可以进行数据库的备份了。有完全数据库备份、表空间备份、控制文件备份、和归档日志备份等。操作分别如下。
1)完全数据库备份
要求:ARCHIVELOG模式,在DBOPEN的情况下进行数据库完全备份。
RMAN>run{
allocatechannelc1type=disk;
backupdatabase;
releasechannelc1;
}
2)表空间备份
要求:ARCHIVELOG模式
RMAN>run{
allocatechannelc1type=disk;
backuptablespace“ts_users”filesperset3format‘aatst_%t%s.%p’;
releasechannelc1;
}
3)控制文件备份
RMAN>run{
allocatechannelc1type=disk;
backupcurrentcontrolfiletag=weekly_sat_backup;
releasechannelc1;
}
在对数据库进行完全备份时,控制文件自动包含其中。也可以在表空间或数据文件的备份中包含一个控制文件。
RMAN>run{
allocatechannelc1type=disk;
backuptablespace“ts_users”
filesperset3format‘aatst_%t%s.%p’;
includecurrentcontrolfile;
releasechannelc1;
}
4)归档日志备份
通过查询数据字典表V$ARCHIVED_LOG获取要备份的日志序列号,然后执行命令:
RMAN>run{
allocatechannelc1type=disk;
backuparchiveloglowlogseq3highlogseq10thread1;
releasechannelc1;
}
Oracle的备份策略
正确的备份策略不仅能保证数据库服务器的24*7的高性能的运行,还能保证备份与恢复的快速性与可靠性。我们将以RMAN的多级增量备份作为一个备份策略的例子来讨论。采用多级备份就是为了减少每天备份所需要的时间,而又保证系统有良好的恢复性。恢复时间与备份时间要有一个权衡。比如只要进行一个数据库的全备份,然后就只备份归档也可以保证能把数据库恢复到最新的状态,但是这样的恢复时间将是不可容忍的。多级备份也正是为了解决这种问题,结合某些应用的特点,可以采用如下的备份策略:
每个月做一个数据库的全备份(包括所有的数据和只读表空间);
每个星期一做一次零级备份(不包含只读表空间);
每个星期三做一次一级备份;
每天做一次二级备份。
每天做一次恢复目录的热备份。
任何数据库的更改需要重新同步CATALOG目录并重新备份(如添加数据文件)或重新备份(如修改表空间为只读)。
每次备份后都可以备份归档日志或定期备份归档日志。如果可能,可以直接备份到磁带上。
Oracle的恢复
下面的操作约定恢复目录存储在db118中,目标数据库是db100。
1.数据库恢复
1)启动SQL*PLUS,使用正确的init.ora文件,使用NOMOUNT选项启动目标数据库实例。
2)启动RMAN并连接到恢复目录,如下:
$rmancatalogrman/rman@db118
恢复管理器:Release9.2.0.1.0-Production
Copyright(c)1995,2002,OracleCorporation.Allrightsreserved.
连接到恢复目录数据库
RMAN>
3)连接到目标数据库
RMAN>connecttargetinternal/oracle@db100
连接到目标数据库:db(DBID=1142471523)
4)一旦连接到目标数据库,执行restore命令执行全数据库恢复
RMAN>run{
2>allocatechannelc1typedisk;
3>restoredatabase;
4>releasechannelc1;
}
2.表空间和数据文件恢复
要执行表空间或数据文件恢复,数据库必须以ARCHIVELOG模式运行,并且用户需要拥有介质恢复所需的归档重做日志文件。在试图恢复表空间之前,必须保证表空间已脱机。RMAN命令如下:
run{
allocatechannelc1typedisk;
sql“altertablespaceusers_dataofflineimmediate”;
restoretablespaceusers_data;
recovertablespaceusers_data;
sql“altertablespaceusers_dataonline”;
}
上面的脚本执行了以下的工作:
1)RMAN分配通道从c1用于恢复操作。
2)将表空间users_data脱机
3)RMAN从备份集中恢复属于表空间的数据文件
4)通过介质恢复提供所需的归档日志文件,恢复属于表空间users_data的数据文件。
5)RMAN将表空间联机。
在脚本执行期间,如果不能把数据文件恢复到指定位置,在执行restore命令前使用setnewname命令。
3.控制文件恢复
1)启动SQL*PLUS,使用正确的init.ora文件,使用NOMOUNT选项启动目标数据库实例。
2)启动RMAN并连接到恢复目录,如下:
$rmancatalogrman/rman@ora8i.oracle
恢复管理器:Release9.2.0.1.0-Production
Copyright(c)1995,2002,OracleCorporation.Allrightsreserved.
连接到恢复目录数据库
RMAN>
3)连接到目标数据库
RMAN>connecttargetinternal/oracle@demo.oracle
连接到目标数据库:db(DBID=1142471523)
4)一旦连接到目标数据库,执行restore命令恢复控制文件
RMAN>run{
2>allocatechannelc1typedisk;
3>restorecontrolfile;
4>}
小结
保证Oracle数据库的安全是系统安全的重要组成部分,必须要设计完善的数据库备份和恢复方案。Oracle提供的各种工具结合起来使用能够使数据库的备份和恢复变得简单。在实际的Oracle数据库的备份和恢复中,会有许多不通的和复杂的情况出现,针对不同的情况,要本着使数据具有最大的可恢复性和恢复时间最短的原则去进行数据库的恢复,这需要大量的实践和经验积累。
参考文献
[1]Oracle8iBackupandRecoveryGuideOracleDocument
[2]Oracle8iRecoveryManagerUser’sGuideandReferenceOracleDocument