CN101694637A - 一种数据库恢复的方法和*** - Google Patents
一种数据库恢复的方法和*** Download PDFInfo
- Publication number
- CN101694637A CN101694637A CN200910211141A CN200910211141A CN101694637A CN 101694637 A CN101694637 A CN 101694637A CN 200910211141 A CN200910211141 A CN 200910211141A CN 200910211141 A CN200910211141 A CN 200910211141A CN 101694637 A CN101694637 A CN 101694637A
- Authority
- CN
- China
- Prior art keywords
- database
- file
- recovery
- parameter information
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库恢复的方法和***,其中,所述方法包括:接收参数信息,所述参数信息与恢复当前数据库相关;根据所述参数信息,下载当前数据库备份文件的压缩文件;解压缩所述压缩文件,获得当前数据库的备份文件;利用所述备份文件和参数信息恢复当前数据库。通过本发明,能够实现数据库恢复的自动化和并行化处理过程,从而提高数据库恢复的效率。
Description
技术领域
本发明涉及数据处理技术领域,更具体地说,涉及一种数据库恢复的方法和***。
背景技术
数据库是按照数据结构来组织、存储和管理数据的仓库,使得可以利用计算机实现生产数据的自动化管理,因此,数据库已广泛应用于各企业中的各个部门中的生产管理。
在现有的诸多数据库应用***中,某些情形下,某个网络内的数据库出现错误后,需要另外网络用户提供该正确数据库压缩文件,对当前出现问题的数据库进行跨网恢复,例如:
A分公司把oracle数据库压缩文件跨网络上传到所属B总部oracle数据库服务器上,B总部oracle数据库服务器根据该压缩文件自动完成恢复过程。在A分公司实施与oracle数据库相关的操作中,需要有专人负责完成与oracle数据库处理相关的工作,如:手工备份oracle数据库、上传oracle数据库压缩文件;通知B总部下载oracle数据库压缩文件、解压缩oracle数据库、导入oracle数据库文件等。
当oracle数据库压缩文件在跨网络恢复的过程存在非操作问题的错误,例如:oracle数据库压缩文件压缩有错误导致不能正常解压缩、oracle数据库备份有错误导致不能正常恢复完整等情况。此时,B总部负责这项工作的人员必须通过电话、邮件等沟通方式通知A分公司的oracle数据库的相关人员,让他们重新上传一个正确的oracle数据库文件,然后再把压缩后的oracle数据库文件重新上传到B总部的FTP(File Transfer Protocol,文件传输协议)服务器,然后,通知B总部负责oracle数据库恢复的人员启动恢复操作。此时,B总部的人员需要从FTP服务器上成功下载oracle数据库压缩文件、解压缩oracle数据库压缩文件、收集导入oracle数据库所需要的相关信息(如:表空间名、备份方式、导出时的用户名等)、利用数据库恢复脚本执行数据库恢复任务、关注导入oracle数据库过程、查看导入日志、确认导入成功与否成功等。
由此可见,现有技术中需要B总部分配人力资源来进行手工下载、解压、恢复oracle数据库压缩文件、以及与A分公司进行沟通等所有操作。整个流程中如果一个环节出现错误,则需要重新开始,导入过程中B总部还要关注导入日志来确认恢复成功与否。一般来说,整个恢复过程需要花费很多时间,当需要恢复的oracle数据库多了,B总部从事oracle数据库恢复的人员难以并行完成对多个oracle数据库的恢复。
发明内容
有鉴于此,本发明提供一种数据库恢复的方法和***,能够实现数据库恢复的自动化处理过程,从而提高数据库恢复的效率。
本发明实施例是这样实现的:
一种数据库恢复的方法,所述方法包括:
接收参数信息,所述参数信息与恢复当前数据库相关;
根据所述参数信息,下载当前数据库备份文件的压缩文件;
解压缩所述压缩文件,获得当前数据库的备份文件;
利用所述备份文件和参数信息恢复当前数据库。
优选的,所述利用所述备份文件和参数信息恢复当前数据库,包括:
根据所述参数信息,生成数据库导入指令信息;
根据所述导入指令信息,执行由配置参数和导入指令信息生成的数据库导入脚本,实现利用所述备份文件和参数信息恢复当前数据库。
优选的,所述方法还包括:
生成表示本次数据库恢复成功与否的日志文件,并将所述日志文件进行显示。
优选的,所述方法还包括:
检测是否存在足够的硬盘空间以存储所述备份文件,如果是,则反馈检测成功信息;如果否,则反馈本次数据库恢复失败信息,并可选择其它服务器进行恢复。
优选的,所述下载当前数据库备份文件的压缩文件,通过以下方式实现:
通过读取字节输入流中对应字节的缓冲数组的数据,并将所述缓冲数组的数据写入字节输出流,实现下载当前数据库备份文件的压缩文件。
优选的,所述解压缩所述压缩文件,包括:
通过递归查找算法,将所述压缩文件内的所有文件进行解压缩处理,并将所述所有文件移动至指定位置。
一种数据库恢复***,所述***包括:客户端和服务器端;其中,所述服务器端包括:
接收模块,用于接收参数信息,所述参数信息与恢复当前数据库相关;
下载模块,用于根据所述参数信息,下载当前数据库备份文件的压缩文件;
解压缩模块,用于解压缩所述压缩文件,获得当前数据库的备份文件;
恢复执行模块,用于利用所述备份文件恢复当前数据库。
优选的,所述恢复执行模块包括:
导入指令信息生成子模块,用于根据所述参数信息,生成数据库导入指令信息;
导入脚本执行子模块,用于根据所述导入指令信息,执行由配置参数和导入指令信息生成的数据库导入脚本,实现利用所述备份文件和参数信息恢复当前数据库。
优选的,所述服务器端还包括:
日志文件生成模块,用于生成表示本次数据库恢复成功与否的日志文件;
日志文件显示模块,用于将所述日志文件进行显示。
优选的,所述服务器端还包括:
检测模块,用于检测是否存在足够的硬盘空间以存储所述备份文件。如果是,则反馈检测成功信息;如果否,则反馈本次数据库恢复失败信息,并可选择其它服务器进行恢复。
优选的,所述下载模块包括:
读取子模块,用于读取字节输入流中对应字节的缓冲数组的数据;
写入子模块,用于将所述缓冲数组的数据写入字节输出流,实现下载当前数据库备份文件的压缩文件。
优选的,所述解压缩模块包括:
递归查找算法子模块,用于通过递归查找算法,将所述压缩文件内的所有文件进行解压缩处理;
移动模块,用于将所述所有文件移动至指定位置。
对现有技术相比,本发明实施例提供的技术方案具有以下优点和特点:
由于能够针对每个客户端的数据库恢复需求,自动建立对应的服务器线程执行相应数据库的恢复,每个服务线程会根据任务步骤执行情况自动决定是否继续执行后续任务步骤,因此,能够实现数据库恢复的自动化处理过程。并且,由于服务器线程与客户端相对应,能够同时满足多个数据库的恢复,从而实现多个数据库恢复操作的并行化处理;此外,由于客户端能够通过日志文件获知本次数据库恢复成功与否,且当本次数据库恢复失败后,分析判断问题出现的环节,因而能够减少双方的沟通时间,节约成本,提高数据库恢复的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一种数据库恢复的方法步骤流程图;
图2是本发明服务器端的工作原理流程示意图;
图3是本发明对应服务器端的服务线程工作原理流程示意图;
图4是本发明一种数据库恢复***的结构示意图;
图5是本发明另一种数据库恢复***的结构示意图;
图6是本发明又一种数据库恢复***的结构示意图。
具体实施方式
本发明可以应用于基于数据库实现的***或软件中,数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改和检索由统一软件进行管理和控制。
为了使本发明的上述目的、特征和优点能够更加明显易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明提供一种数据库恢复的方法,如图1所示,所述方法包括以下步骤:
步骤101、接收参数信息,所述参数信息与恢复当前数据库相关;
步骤102、根据所述参数信息,下载当前数据库备份文件的压缩文件;
步骤103、解压缩所述压缩文件,获得当前数据库的备份文件;
步骤104、利用所述备份文件和参数信息恢复当前数据库。
本发明实施例中,与恢复当前数据库相关的参数信息具体包括:数据库导出时的用户名、表空间名、数据库备份方式及压缩文件要上传的地址等信息,其中,所述地址信息包括:FTP地址或服务器端地址。这些参数信息通常可以通过一软件交互界面,采用客户端人工设置的方式实现。服务器端能够根据具体的参数信息,自动获取与当前数据库相关的备份文件的压缩文件,进而进行下载、解压缩处理。
通过本发明,由于能够针对每个客户端的数据库恢复需求,自动建立对应的服务器线程执行相应数据库的恢复,因此,能够实现数据库恢复的自动化处理过程。并且,由于服务器线程与客户端相对应,能够同时满足多个数据库的恢复,从而实现多个数据库恢复操作的并行,提高数据库恢复的效率。
为了便于客户端实时了解本次数据库恢复的进程,可以根据服务器端实时生成恢复进程中各步骤环节的日志文件,并将该日志文件反馈至客户端,客户端能够通过日志文件获知本次数据库恢复成功与否,且当本次数据库恢复失败后,分析判断问题出现的环节,因而能够减少双方的沟通时间,节约成本。
为了便于本领域技术人员对本发明技术方案的理解,下面结合一个具体实施例进行详细描述。
该实施例以Oracle数据库为例,以Java语言实现,可以运行在各种平台。参照图2,示出了服务器端的工作原理流程示意图。服务器端的工作原理包括:
步骤201、运行服务器端后,启动服务器***的网络服务;
例如:Windows***的网络服务:server和workstation,以便能够访问LAN上的资源。以下为实现启动操作***的网络服务的示例语句:
@echo″启动网络服务server和workstation″
net start″server″
net start″workstation″
步骤202、创建服务端Socket连接,并绑定服务端口(默认5678);
步骤203、加入服务器关闭钩子,以处理由于用户误操作导致关闭服务器;
步骤204~207、进入循环,并监听服务端口,一旦有客户端的连接请求,就创建一个服务线程,并将这个客户端的任何请求交由该服务线程处理;
步骤208~212、判断是否有用户关闭服务器,如果发现存在用户关闭服务器,则触发关闭钩子;这种情况发生时,服务器会判断是否还有客户端连接,如果有的话,提示类似“还有客户端的连接,请不要关闭服务器”的提示信息;如果用户选择取消强制关闭,则服务器继续循环监听服务端口,以便处理客户端的连接请求;
步骤213、如果客户选择强制关闭,则退出循环,并关闭服务器。如果关闭服务器时,当前没有客户端连接,则直接退出循环,关闭服务器。
当有客户端连接请求时,服务器创建一个服务线程来为客户端处理所有的任务请求,如图3所示,为具体的服务线程工作原理流程示意图,包括:
步骤301、初始化服务线程:保持与客户端的连接,存储客户端IP,用来记录反馈服务器日志时的客户端IP,读取服务器的配置文件,初始化所有数据库脚本文件,为后面的数据库导入作好准备;
步骤302、进行客户端连接数计数,以便可以根据配置参数来决定是否客户端连接数超过限制数目;并且,取得Socket连接的输入输出流,为后面与客户端进行数据通信做准备;
步骤303、判断当前客户端连接数是否超过限制数目,如果是,直接退出服务线程,结束与客户端的连接,这样超限后,新的客户端连接请求就会被拒绝;
步骤304、如果当前客户端连接数尚未超过限制数目,将计时器清0,开始对连接空闲时间计时;
步骤305~307、进入循环,判断连接空闲时间是否超时了,如果超时,说明客户端已经因某些原因非正常断开连接了,这时直接退出循环(步骤11)并结束服务线程;否则从Socket输入流中读取客户端发送的指令,并将空闲超时计时器清零;
步骤308~309、判断客户端指令是否为断开连接指令,如果是,则直接退出循环(步骤11)并结束服务线程;否则将根据指令内容调用相关的指令处理器;
步骤310、指令处理器执行相应的任务,并将结果返回至客户端;之后,继续执行步骤306;
步骤311~312、退出循环,关闭输入输出流和Socket连接,将当前客户端连接计数减1。
其中,上述本发明实施例中相关的各个指令处理器的处理操作及其对应的指令功能和软件指令形式如下表所示:
指令 | 指令功能 | 指令处理器 |
connect | 客户端连接请求 | 返回connect_ok给客户端,表示接受连接请求 |
close | 客户端断开连接 | 直接退出循环并结束服务线程 |
set_param | 客户端发送任务参数 | 服务器打开对象输入流,从流中读取一个HashMap对象,这个对象中保存着由客户端发送过来的所有参数。如果成功,返回set_param_ok给客户端,否则,返回set_param_err给客户端。 |
check_space | 客户端请求检测服务器有没有足够的可用磁盘空间 | 服务器从字符输入流中获得指令参数,如果本次恢复任务是从FTP下载Oracle数据库备份文件,则参数是Oracle数据库备份文件的url(Uniform/Universal Resource Locator,统一资源定位符),通过HttpConnection对象打开这个url,获得备份文件的大小;如果本次恢复任务是直接从客户端传递Oracle数据库备份文件到服务器上,则指令参数是这个文件的大小; |
指令 | 指令功能 | 指令处理器 |
接着检测服务器工作目录的可用磁盘空间,如果可用磁盘空间的大小小于Oracle数据库备份文件大小的N倍(N可用配置文件指定),或者该过程中有任何异常发生,则返回check_space_err给客户端,表示检测失败;否则返回check_space_ok给客户端,表示检测成功。 | ||
download | 客户端请求服务器下载Oracle数据库备份文件,并自动解压缩 | 指令参数是由一个或多个url组成的字符串,如果是多个url的话,说明Oralce数据库备份文件是分卷压缩的,分离出每个url来,通过url对象打开输入流开始下载第个url对应的文件,全部下载成功后,自动开始解压缩文件,如果这整个过程没有出现错误,并且成功,则返回download_ok给客户端;否则返回download_err给客户端;最后删除所有临时文件。 |
transform_db | 客户端请求向服务器传递Oracle数据库备份文件 | 服务器将解压缩出来的数据库备份文件移动至指定位置,如果这整个过程没有出现错误,并且成功,则返回transform_db_ok给客户端;否则返回transform_db_err给客户端。最后删除所有临时文件。 |
import | 客户端请求导入Oracle数据库 | 服务器根据之前set_param指令时收集到的参数,自动组合出数据库导入指令,执行相对应的数据库导入脚本,这时服务线程开始等待数据库导入任务的结束,然后再检测数据库导入日志文件,判断是否存在失败标志,如果这整个过程中出现了任何错误,或者导入日志中存在失败标志,则返回import_err给客户端,否则返回import_ok给客户端。 |
指令 | 指令功能 | 指令处理器 |
get_imp_log | 客户端请求获得Oracle数据库导入日志 | 根据之前步骤保存下来的参数,得到本次恢复进程生成的导入日志文件,通过Socket输出流将导入日志文件发送给客户端。 |
clean_pwd | 客户端请求清空数据库用户密码 | 根据之前步骤保存下来的参数,获得清空数据库用户密码的相关信息,调用数据库清空密码的脚本,成功的话,返回clean_pwd_ok给客户端,否则返回clean_pwd_err给客户端。 |
需要说明的是,对于Java语言,通过打印相关操作***命令来获得可用磁盘空间大小的。例如,对于Windows***,打印dir命令,通过该dir命令返回信息中的可用磁盘空间字符得到磁盘空间大小;对于非Windows***,打印df命令,通过该df命令返回信息中的可用磁盘空间字符得到磁盘空间大小;具体实现如下:
先通过System.getProperty(″os.name″)获得操作***类型,通过Process对象执行显示磁盘空间信息的命令,如:dir path或df/path,接着打开新进程的输入流,开始读取命令执行的返回信息,直到获得可用磁盘空间大小的信息,关闭输入流,返回可用磁盘空间大小。
此外,本发明实施例中,客户端与服务器的通信具有以下三种通信方式:
(1)服务器通过字符输入流BufferedInputStream读取客户端的指令,并通过字符打印流PrintWriter向客户端输出指令执行结果;
(2)服务器通过对象输入流ObjectInputStream读取客户端的参数集(HashMap对象),通过对象输出流ObjectOutputStream向客户端发送服务器参数集(HashMap对象);
(3)服务器通过字节输入流InputStream读取客户端发送过来的文件字节数据,从而完成文件传递功能,通过字节输出流向客户端发送日志文件字节数据,从而实现导入日志获得功能。
在下载Oracle数据库备份文件时,首先打开本地文件上的一个文件输出流,接着从Socket输入流读取一个字节缓冲数组的数据,并将该数据写到文件输出流中;如果是客户端直接向服务器传递文件,则接着向客户端发送”next”指令,表示让客户端继续发送下一个字节数组数据下来,以便让客户端的发送与服务器的接收同步。累计已接收字节数,对比要下载或传递的整个文件的大小,如果已接收字节数等于文件总大小,则表示当前下载完成,这时结束对输入流和输出流的读写操作。相关执行下载文件的示例语句如下所示:
int readNum=-1;
int writeNum=0;
//bis是Socket连接的BufferedInputStream,fos是FileOutputStream,
//out是Socket连接的PrintWriter
//dbSize是要传递的文件的总大小
while((readNum=bis.read(buf))>0){
fos.write(buf,0,readNum);
fos.flush();
out.println(″next″);
out.flush();
writeNum+=readNum;
if(writeNum>=dbSize)break;
}
由于TCP/IP连接是有限资源,如果服务器与客户端之间的连接有一段时间没有任何信号传递的话,已有的连接就会自动失效断开,所以在服务器端,每当服务线程要花长时间处理任务时,就必须在开始处理任务之前,启动另外一个线程,该线程负责使用当前的连接向客户端发送一个信号,从而达到保持连接长久有效的作用,而客户端收到该保持连接信号时,即可知道服务器正在某项任务的处理之中。同时,也可以在客户端交互界面上显示当前任务处理中的相关信息。
此外,客户端按照执行步骤分别向服务器发送指令,而服务器完成每个步骤的处理任务后,还需要继续使用输入输出流进行后续任务的处理,所以Socket连接的输入输出流在每个任务处理过程中都不能关闭,否则会将当前Socket连接断开,后续任务处理步骤将无法进行,即:Sokcet连接的输入输出流只有在服务线程最后结束之前关闭。
在服务器端对已下载的压缩文件进行解压缩处理时,可以支持多种压缩情况:单个文件简单压缩、多个文件简单压缩、多次压缩、分卷压缩及压缩包里有多层目录等复杂情况。本发明实施例中,通过递归查找算法将多次压缩和多层目录中的最终数据库备份文件解压缩出来。解压缩的功能是通过调用7z.exe工具来完成的,该工具为具有非常高的压缩比和解压缩效率的软件。通过Process对象调用7z命令,并将需要解压缩的文件作为参数传递给该Process对象,然后打开新进程的输入流,检查解压缩过程打印出来的返回信息,如果检查到有成功标志,则表示已经解压缩成功了,否则解压缩失败。由于解压缩出来的文件可能仍然是压缩文件,所以需要采用递归算法来作解压缩操作,直到解压缩出所有的文件。而解压缩出最终文件后,这些最终文件可能存在复杂的目录结构,因此,需要采用搜索移动算法将最终的数据库备份文件查找出来,并移动到指定位置。
所述解压缩递归算法的工作原理现简单描述如下:
首先解压缩单个文件;判断解压缩是否成功,如果成功,则继续判断解压缩出来的文件是否还存在压缩文件,如果不是,则直接返回;否则再判断是否只有一个压缩文件,如果是,再将这个压缩文件作为参数调用自身;如果是多个压缩文件,则判断是否是分卷压缩,如果是,则将第一个分卷压缩包作为参数调用自身;如果不是分卷压缩,则通过循环,将每个压缩文件作为参数调用自身,直至将压缩文件内的所有文件执行解压缩处理。
所述搜索移动算法的工作原理现简单描述如下:
在传入的目录中搜索所有子目录,对于每个子目录,将子目录的所有文件向上移动到根目录,并以子目录为参数据调用自身。得到最终结果,即所有文件都上移到根目录中来后,再搜索所有DMP文件,如果只有一个DMP文件,则重命名并移动到指定位置;如果有多个DMP文件,则更新导入命令和参数,为后续导入命令准备。
所述数据库导入的功能实现是根据收集到的参数,组成导入命令,调用在服务器初始化过程中初始化了的数据库脚本,并将相关参数传递给该数据库脚本,通过Process对象创建新进程来执行数据库导入进程,当导入进程结束后,检查导入日志,查找是否存在失败标志或成功标志,从而判断当前数据库导入成功与否。
通过Process对象调用数据库脚本时,由于有的脚本是由多条外部命令组成的,所以必须以下面的形式来调用,否则无法执行脚本中的第二条外部命令:
Process p=Runtime.getRuntime().exec(“cmd.exe/C start脚本文件名
”);
InputStream in=p.getInputStream();
int c;
while((c=in.read())!=-1){
//System.out.print(c);
}
in.close();
p.waitFor();
需要说明的是,如果不采用cmd.exe/C start来调用脚本的话,那当脚本中的第一条外部命令执行完之后,脚本的执行就暂停了,而Process对象也在等待脚本进程的执行结束;如果Process对象启动的新进程会向标准输出设备输出信息,最好是将这些输出信息通过InputStream读取过来,否则也很有可能会导致Process与新进程都处理于暂停状态。
此外,客户端的工作原理图如下:
客户端是一个基于Java Swing的用户图形界面GUI程序,GUI收集用户输入的参数信息,并根据具体参数信息响应用户的操作,然后获得一个客户端服务实例,这个客户端服务实例是一个单例对象,以线程方式运行,从而GUI界面可以实时更新信息以反馈服务器端的任务处理情况。相关软件示例语句如下所示:
public class DBAutoClientService{
//执行线程,根据任务类型来执行不同的任务
class ExecThread extends Thread{
private int jobType;
public void setJobType(int jobType){
this.jobType=jobType;
}
public void run(){
if(this.jobType==JobType.RESTORE_JOB)
exec_restore();
else if(this.jobType==JobType.DELETE_JOB)
exec_del();
}
}
private static DBAutoClientService instance=null;//单例模式
private ExecThread execThread=null;
private DBAutoClientService(){}
public static DBAutoClientService getInstance(){
if(instance==null)
instance=new DBAutoClientService();
return instance;
}
public void start(int jobType){
netOptState=NetOptState.NET_OPT_NONE;
lastErrState=NetOptErr.NET_OPT_NO_ERR;
execThread=new ExecThread();
execThread.setJobType(jobType);
execThread.start();
}
}
客户端GUI响应用户的操作,获得客户端服务实例,客户端服务实例将GUI上的用户输入作为指令的参数发送给服务器,等待服务器处理指令对应的任务并返回结果,根据返回结果,更新GUI的状态:
DBAutoClientService client=DBAutoClientService.getInstance();
if(datacenterRestoreInfo==null)datacenterRestoreInfo=new HashMap();
//将GUI的用户输入存储到datacenterRestoreInfo,
//这是一个用来保存参数的HashMap对象
…
client.setDatacenterRestoreInfo(datacenterRestoreInfo);
client.setClientWin(this);
…
client.start(DBAutoClientService.JobType.RESTORE_JOB);
可见,通过本发明,由于能够针对每个客户端的数据库恢复需求,自动建立对应的服务器线程执行相应数据库的恢复,因此,能够实现数据库恢复的自动化处理过程。并且,由于服务器线程与客户端相对应,能够同时满足多个数据库的恢复,从而实现多个数据库恢复操作的并行,提高数据库恢复的效率。
对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
本发明可用于众多通用或专用的计算***环境或配置中,例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器***、包括以上任何***或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的程序、对象、组件或数据结构等等,也可以在分布式计算环境中实践本发明。在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
相应上述数据库恢复的方法,本发明还提供了一种数据库恢复***,参考图4,示出了本发明一种数据库恢复***实施例的结构框图,所述***具体可以包括:客户端40和服务器端41;其中,所述服务器端41包括:
接收模块410,用于接收参数信息,所述参数信息与恢复当前数据库相关;
下载模块411,用于根据所述参数信息,下载当前数据库备份文件的压缩文件;
解压缩模块412,用于解压缩所述压缩文件,获得当前数据库的备份文件;
恢复执行模块413,用于利用所述备份文件恢复当前数据库。
在本发明的一个实施例中,如图5所示,所述恢复执行模块413包括:
导入指令信息生成子模块4130,用于根据所述参数信息,生成数据库导入指令信息;
导入脚本执行子模块4131,用于根据所述导入指令信息,执行由配置参数和导入指令信息生成的数据库导入脚本,实现利用所述备份文件和参数信息恢复当前数据库。
在本发明的另一个实施例中,如图6所示,所述服务器端41还包括:
日志文件生成模块414,用于生成表示本次数据库恢复成功与否的日志文件;
日志文件显示模块415,用于将所述日志文件进行显示。
优选的,所述服务器端41还包括:
检测模块416,用于检测是否存在足够的硬盘空间以存储所述备份文件,如果是,则反馈检测成功信息;如果否,则反馈本次数据库恢复失败信息,并可选择其它服务器进行恢复。
进一步,所述下载模块411具体包括:
读取子模块4110,用于读取字节输入流中对应字节的缓冲数组的数据;
写入子模块4111,用于将所述缓冲数组的数据写入字节输出流,实现下载当前数据库备份文件的压缩文件。
并且,所述解压缩模块412包括:
递归查找算法子模块4121,用于通过递归查找算法,将所述压缩文件内的所有文件进行解压缩处理;
移动子模块4122,用于将所述所有文件移动至指定位置。
对于***实施例而言,由于其基本相应于方法实施例,所以描述的比较简单,相应之处参见方法实施例的部分说明即可,本发明在此不再进行赘述。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (12)
1.一种数据库恢复的方法,其特征在于,所述方法包括:
接收参数信息,所述参数信息与恢复当前数据库相关;
根据所述参数信息,下载当前数据库备份文件的压缩文件;
解压缩所述压缩文件,获得当前数据库的备份文件;
利用所述备份文件和参数信息恢复当前数据库。
2.根据权利要求1所述的数据库恢复的方法,其特征在于,所述利用所述备份文件和参数信息恢复当前数据库,包括:
根据所述参数信息,生成数据库导入指令信息;
根据所述导入指令信息,执行由配置参数和导入指令信息生成的数据库导入脚本,实现利用所述备份文件和参数信息恢复当前数据库。
3.根据权利要求1所述的数据库恢复的方法,其特征在于,所述方法还包括:
生成表示本次数据库恢复成功与否的日志文件,并将所述日志文件进行显示。
4.根据权利要求1所述的数据库恢复的方法,其特征在于,所述方法还包括:
检测是否存在足够的硬盘空间以存储所述备份文件,如果是,则反馈检测成功信息;如果否,则反馈本次数据库恢复失败信息,并可选择其它服务器进行恢复。
5.根据权利要求1所述的数据库恢复的方法,其特征在于,所述下载当前数据库备份文件的压缩文件,通过以下方式实现:
通过读取字节输入流中对应字节的缓冲数组的数据,并将所述缓冲数组的数据写入字节输出流,实现下载当前数据库备份文件的压缩文件。
6.根据权利要求1-5中任一项所述的数据库恢复的方法,其特征在于,所述解压缩所述压缩文件,包括:
通过递归查找算法,将所述压缩文件内的所有文件进行解压缩处理,并将所述所有文件移动至指定位置。
7.一种数据库恢复***,其特征在于,所述***包括:客户端和服务器端;其中,所述服务器端包括:
接收模块,用于接收参数信息,所述参数信息与恢复当前数据库相关;
下载模块,用于根据所述参数信息,下载当前数据库备份文件的压缩文件;
解压缩模块,用于解压缩所述压缩文件,获得当前数据库的备份文件;
恢复执行模块,用于利用所述备份文件恢复当前数据库。
8.根据权利要求7所述的数据库恢复***,其特征在于,所述恢复执行模块包括:
导入指令信息生成子模块,用于根据所述参数信息,生成数据库导入指令信息;
导入脚本执行子模块,用于根据所述导入指令信息,执行由配置参数和导入指令信息生成的数据库导入脚本,实现利用所述备份文件和参数信息恢复当前数据库。
9.根据权利要求7所述的数据库恢复***,其特征在于,所述服务器端还包括:
日志文件生成模块,用于生成表示本次数据库恢复成功与否的日志文件;
日志文件显示模块,用于将所述日志文件进行显示。
10.根据权利要求7所述的数据库恢复***,其特征在于,所述服务器端还包括:
检测模块,用于检测是否存在足够的硬盘空间以存储所述备份文件。如果是,则反馈检测成功信息;如果否,则反馈本次数据库恢复失败信息,并可选择其它服务器进行恢复。
11.根据权利要求7所述的数据库恢复***,其特征在于,所述下载模块包括:
读取子模块,用于读取字节输入流中对应字节的缓冲数组的数据;
写入子模块,用于将所述缓冲数组的数据写入字节输出流,实现下载当前数据库备份文件的压缩文件。
12.根据权利要求7-11所述的数据库恢复***,其特征在于,所述解压缩模块包括:
递归查找算法子模块,用于通过递归查找算法,将所述压缩文件内的所有文件进行解压缩处理;
移动模块,用于将所述所有文件移动至指定位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910211141A CN101694637A (zh) | 2009-11-06 | 2009-11-06 | 一种数据库恢复的方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910211141A CN101694637A (zh) | 2009-11-06 | 2009-11-06 | 一种数据库恢复的方法和*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101694637A true CN101694637A (zh) | 2010-04-14 |
Family
ID=42093610
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910211141A Pending CN101694637A (zh) | 2009-11-06 | 2009-11-06 | 一种数据库恢复的方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101694637A (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102419758A (zh) * | 2010-09-28 | 2012-04-18 | 金蝶软件(中国)有限公司 | 数据处理***及方法 |
CN102546740A (zh) * | 2011-06-24 | 2012-07-04 | 奇智软件(北京)有限公司 | 一种基于云压缩文件的压缩和解压缩方法、装置及*** |
CN103049550A (zh) * | 2012-12-27 | 2013-04-17 | 北京思特奇信息技术股份有限公司 | 一种公用文件导入数据库的方法及*** |
CN106168919A (zh) * | 2016-07-06 | 2016-11-30 | 浪潮电子信息产业股份有限公司 | 一种数据库备份方法、装置及*** |
CN107357614A (zh) * | 2017-06-30 | 2017-11-17 | 深圳前海弘稼科技有限公司 | 参数更新方法及参数更新装置、种植箱和存储介质 |
CN108614978A (zh) * | 2018-04-19 | 2018-10-02 | 中国平安人寿保险股份有限公司 | 压缩包的校验方法、装置、存储介质以及终端 |
CN109062728A (zh) * | 2018-06-22 | 2018-12-21 | 北京星网锐捷网络技术有限公司 | 一种配置恢复方法及装置 |
WO2019019706A1 (zh) * | 2017-07-27 | 2019-01-31 | 平安科技(深圳)有限公司 | 基于 Oracle 数据库的数据表备份方法及服务器 |
CN109634774A (zh) * | 2017-10-09 | 2019-04-16 | 北京国双科技有限公司 | 数据备份、恢复方法及装置 |
CN109783276A (zh) * | 2018-12-19 | 2019-05-21 | 远光软件股份有限公司 | 基于专用压缩卡的数据备份及恢复装置和方法 |
CN111045868A (zh) * | 2019-12-13 | 2020-04-21 | 上海中通吉网络技术有限公司 | 一种数据库数据自动恢复的方法和装置 |
CN111061693A (zh) * | 2019-12-19 | 2020-04-24 | 深圳市迅雷网络技术有限公司 | 一种下载时解压分卷压缩文件的方法、装置及介质 |
CN111078768A (zh) * | 2019-11-25 | 2020-04-28 | 深圳壹账通智能科技有限公司 | 基于图形数据库的数据导入方法、***和可读存储介质 |
CN111143115A (zh) * | 2018-11-05 | 2020-05-12 | ***通信集团云南有限公司 | 基于备份数据的远程容灾方法及装置 |
CN111400105A (zh) * | 2020-03-27 | 2020-07-10 | 北京拓世寰宇网络技术有限公司 | 数据库备份方法及装置 |
WO2021077967A1 (zh) * | 2019-10-21 | 2021-04-29 | 华为技术有限公司 | 网络设备的管理方法、装置及*** |
-
2009
- 2009-11-06 CN CN200910211141A patent/CN101694637A/zh active Pending
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102419758A (zh) * | 2010-09-28 | 2012-04-18 | 金蝶软件(中国)有限公司 | 数据处理***及方法 |
CN102546740A (zh) * | 2011-06-24 | 2012-07-04 | 奇智软件(北京)有限公司 | 一种基于云压缩文件的压缩和解压缩方法、装置及*** |
CN102546740B (zh) * | 2011-06-24 | 2015-05-06 | 奇智软件(北京)有限公司 | 一种基于云压缩文件的压缩和解压缩方法、装置及*** |
CN103049550A (zh) * | 2012-12-27 | 2013-04-17 | 北京思特奇信息技术股份有限公司 | 一种公用文件导入数据库的方法及*** |
CN106168919A (zh) * | 2016-07-06 | 2016-11-30 | 浪潮电子信息产业股份有限公司 | 一种数据库备份方法、装置及*** |
CN107357614A (zh) * | 2017-06-30 | 2017-11-17 | 深圳前海弘稼科技有限公司 | 参数更新方法及参数更新装置、种植箱和存储介质 |
WO2019019706A1 (zh) * | 2017-07-27 | 2019-01-31 | 平安科技(深圳)有限公司 | 基于 Oracle 数据库的数据表备份方法及服务器 |
CN109634774A (zh) * | 2017-10-09 | 2019-04-16 | 北京国双科技有限公司 | 数据备份、恢复方法及装置 |
CN109634774B (zh) * | 2017-10-09 | 2022-11-22 | 北京国双科技有限公司 | 数据备份、恢复方法及装置 |
CN108614978A (zh) * | 2018-04-19 | 2018-10-02 | 中国平安人寿保险股份有限公司 | 压缩包的校验方法、装置、存储介质以及终端 |
CN108614978B (zh) * | 2018-04-19 | 2022-04-15 | 中国平安人寿保险股份有限公司 | 压缩包的校验方法、装置、存储介质以及终端 |
CN109062728A (zh) * | 2018-06-22 | 2018-12-21 | 北京星网锐捷网络技术有限公司 | 一种配置恢复方法及装置 |
CN109062728B (zh) * | 2018-06-22 | 2021-03-02 | 北京星网锐捷网络技术有限公司 | 一种配置恢复方法及装置 |
CN111143115A (zh) * | 2018-11-05 | 2020-05-12 | ***通信集团云南有限公司 | 基于备份数据的远程容灾方法及装置 |
CN109783276A (zh) * | 2018-12-19 | 2019-05-21 | 远光软件股份有限公司 | 基于专用压缩卡的数据备份及恢复装置和方法 |
WO2021077967A1 (zh) * | 2019-10-21 | 2021-04-29 | 华为技术有限公司 | 网络设备的管理方法、装置及*** |
CN111078768A (zh) * | 2019-11-25 | 2020-04-28 | 深圳壹账通智能科技有限公司 | 基于图形数据库的数据导入方法、***和可读存储介质 |
CN111045868A (zh) * | 2019-12-13 | 2020-04-21 | 上海中通吉网络技术有限公司 | 一种数据库数据自动恢复的方法和装置 |
CN111045868B (zh) * | 2019-12-13 | 2023-12-05 | 上海中通吉网络技术有限公司 | 一种数据库数据自动恢复的方法和装置 |
CN111061693A (zh) * | 2019-12-19 | 2020-04-24 | 深圳市迅雷网络技术有限公司 | 一种下载时解压分卷压缩文件的方法、装置及介质 |
CN111061693B (zh) * | 2019-12-19 | 2024-02-27 | 深圳市迅雷网络技术有限公司 | 一种下载时解压分卷压缩文件的方法、装置及介质 |
CN111400105A (zh) * | 2020-03-27 | 2020-07-10 | 北京拓世寰宇网络技术有限公司 | 数据库备份方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101694637A (zh) | 一种数据库恢复的方法和*** | |
US8122107B2 (en) | Method for extending business systems to a mobile workforce | |
US8024712B1 (en) | Collecting application logs | |
CN108196915A (zh) | 基于应用容器引擎的代码处理方法、设备及存储介质 | |
CN102999400A (zh) | 一种云存储***数据备份方法及装置 | |
CN107667351A (zh) | 用于移动设备上的自动基于云的全数据备份和恢复的***和方法 | |
EP2471014A1 (en) | Remote data collection systems and methods | |
CN103984573A (zh) | 应用程序的安装方法及装置 | |
CN102880503A (zh) | 数据分析***及数据分析方法 | |
CN101610173B (zh) | 一种对多网元进行数据配置的方法和网管服务器 | |
CN112181677B (zh) | 业务的处理方法和装置、存储介质、电子装置 | |
CN112615746B (zh) | 一种边缘计算方法、装置及*** | |
US20200226032A1 (en) | Method and system for implementing a backup validation engine | |
CN105791399B (zh) | 多中继互联网大数据推送方法和*** | |
CN103810272A (zh) | 一种数据处理方法和*** | |
CN102724321A (zh) | 一种用于高能物理试验大批量数据的传输***及传输方法 | |
CN102591668A (zh) | 对弹性计算云***升级的装置、方法及*** | |
US8028039B1 (en) | System and method for communicating data between wireless mobile hand-held computer and a back-end computer system | |
CN110336695A (zh) | 一种部署和维护应用的方法和服务器 | |
CN112562217A (zh) | 自助终端控制***的流程引擎设计、通讯方式、工作方法 | |
CN101763294A (zh) | 根据时间段查看和备份***操作日志的方法 | |
CN111813602A (zh) | 一种基于消息中间件的数据库异地备份与恢复方法及*** | |
CN103425486A (zh) | 使用同步服务器端脚本的远程卡内容管理的方法和*** | |
CN110620798A (zh) | Ftp连接的控制方法、***、设备和存储介质 | |
CN111813575B (zh) | 一种基于容器服务的定制化清理方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20100414 |