一种数据库的访问方法、系统及具有该系统的服务器与流程

文档序号:12747900阅读:142来源:国知局
一种数据库的访问方法、系统及具有该系统的服务器与流程

本发明属于结构化数据保护技术领域,涉及数据库的访问方法、系统及具有该系统的服务器。



背景技术:

目前,市面上存在的备份软件,如赛门铁克的NBU,EMC的Avamar等,当需要使用密码验证的方式访问Oracle数据库的时候,需要在数据库服务器和客户端之间启动一个监听器(Listener)。在监听器中,会记录相应数据库对应的服务名(一个数据库可能对应有多个服务名)。通过服务名,就可以建立客户端和服务器之间的连接。

数据库将服务名注册到监听器中,有2种方法:

1)动态注册

动态注册是当数据库处于mount或者open时,PMON进程根据initSID.ora中的instance_name,service_names两个参数将实例和服务动态注册到监听器中。

2)静态注册

静态注册就是实例启动时读取listener.ora文件的配置,将实例和服务注册到监听程序。

当数据库处于nomount状态时,才能恢复控制文件。此时数据库还没动态注册数据库服务,也就是说不能使用动态监听。所以在备份恢复领域,一般采用的是静态监听。使用静态监听,需要人工配置listener.ora。

配置监听器,在实际操作中会带来以下一些问题,例如,

1)配置监听具备一定的难度,需要现场实施人员具备一定的Oracle知识。实施人员相关知识的培训,间接提高了产品现场实施的成本。

2)需要在客户的生产环境配置监听,如果配置有问题,会影响到客户的实际生产活动。

因此,如何提供一种数据库的访问方法、系统及具有该系统的服务器,以解决现有技术在数据备份恢复领域因采用静态监听时,需配置监听器,而导致提高产品现场实施成本,若配置出现问题,影响实际生产活动等缺陷,实以成为本领域从业者亟待解决的技术问题。



技术实现要素:

鉴于以上所述现有技术的缺点,本发明的目的在于提供一种数据库的访问方法、系统及具有该系统的服务器,用于解决现有技术中数据备份恢复领域因采用静态监听时,需配置监听器,而导致提高产品现场实施成本,若配置出现问题,影响实际生产活动的问题。

为实现上述目的及其他相关目的,本发明一方面提供一种数据库的访问方法,所述数据库的访问方法包括以下步骤:截取用以访问所述数据库的系统标识符;判断是否调用所述数据库提供的备份工具连接该数据库;若否,则根据所述系统标识符,按照第一预定拼接格式,拼接在未调用所述备份工具的状态下,用以访问所述数据库的第一服务名;若是,则根据所述系统标识符,按照第二预定拼接格式,拼接在调用所述备份工具的状态下,用以访问所述数据库的第二服务名。

于本发明的一实施例中,所述截取用以访问所述数据库的系统标识符的步骤包括:检测系统上用以监视客户端连接进程状态的监视进程,从该监视进程上截取所述系统标识符。

于本发明的一实施例中,所述拼接在未调用所述备份工具的状态下,用以访问所述数据库的第一服务名的步骤包括按照第一预定拼接格式,将在无需开启监听的情况下,访问所述数据库所要求的变量填充至所述第一预定拼接格式中以形成第一服务名;所述变量包括调用备份工具与所述数据库连接的连接协议、数据库版本号、数据库版本号和系统标识符的连接值、和/或环境变量;所述连接协议为BEQ协议。

于本发明的一实施例中,所述拼接在调用所述备份工具的状态下,用以访问所述数据库的第二服务名的步骤包括按第二照预定拼接格式,将在无需开启监听的情况下,访问所述数据库所要求的变量填充至所述第二预定拼接格式中以形成第二服务名;所述变量包括调用备份工具与所述数据库连接的连接协议、数据库版本号、数据库版本号和系统标识符的连接值、环境变量、和/或用以转义的转义字符。

于本发明的一实施例中,在截取用以访问所述数据库的系统标识符的步骤之间,所述数据库的访问方法还包括获取用户登录所述数据库的登录信息;所述数据库的登录信息是通过在根用户下的进程中,创建一个用以获取数据库安装用户的登录信息的子进程而获取的。

于本发明的一实施例中,通过所述登录信息和第一服务名,或通过所述登录信息和所述第二服务名访问所述数据库。

本发明另一方面提供一种数据库的访问系统,所述数据库的访问系统包括:截取模块,用于截取用以访问所述数据库的系统标识符;处理模块,用于判断是否调用所述数据库提供的备份工具连接该数据库;若否,则根据所述系统标识符,按照第一预定拼接格式,拼接在未调用所述备份工具的状态下,用于访问所述数据库的第一服务名;若是,则根据所述系统标识符,按照第二预定拼接格式,拼接在调用所述备份工具的状态下,用于访问所述数据库的第二服务名。

于本发明的一实施例中,在判断为未调用所述数据库提供的备份工具连接该数据库时,所述处理模块还用于按照第一预定拼接格式,将在无需开启监听的情况下,访问所述数据库所要求的变量填充至所述第一预定拼接格式中以形成第一服务名;所述变量包括调用备份工具与所述数据库连接的连接协议、所述数据库版本号、连接值、和/或环境变量。

于本发明的一实施例中,在判断为调用所述数据库提供的备份工具连接该数据库时,所述处理模块还用于按第二照预定拼接格式,将在无需开启监听的情况下,访问所述数据库所要求的变量填充至所述第二预定拼接格式中以形成第二服务名;所述变量包括调用备份工具与所述数据库连接的连接协议、所述数据库版本号、连接值、环境变量、和/或用以转义的转义字符。

本发明又一方面提供一种服务器,包括所述的数据库的访问系统

如上所述,本发明的数据库的访问方法、系统及具有该系统的服务器,具有以下有益效果:

第一,本发明所述的数据库的访问方法、系统及具有该系统的服务器通过程序自动生成BEQ连接符号,而不用修改环境上的tnsname.ora文件;

第二,由于本发明使用BEQ协议连接数据库不需要使用监听,从而不用修改listener.ora文件,降低了产品实施的难度,规避了修改客户环境带来的风险;

第三,本发明可以在数据库关闭的情况下,使用账号密码登录到数据库中,进行备份恢复。

附图说明

图1显示为本发明的数据库的访问方法于一实施例中的流程示意图。

图2显示为本发明的数据库的访问系统于一实施例中原理结构示意图。

图3显示为本发明的服务器于一实施例中原理结构示意图。

元件标号说明

1 数据库的访问系统

11 获取模块

12 截取模块

13 处理模块

14 访问模块

2 服务器

S1~S6 步骤

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

本发明所述的数据库的访问方法、系统及具有该系统的服务器需要求备份客户端与数据库存在于用一个操作系统上。备份客户端与数据库存在于用一个操作系统上满足使用BEQ协议访问数据库的必要条件。

本发明所述的数据库的访问方法、系统及具有该系统的服务器的技术原理为通过程序自动生成BEQ连接符号,而不用修改环境上的tnsname.ora文件;BEQ协议不需要使用监听,从而不用修改listener.ora文件。不用配置客户的环境,达到了简化软件部署的作用。

实施例一

本实施例提供一种数据库的访问方法,其特征在于,所述数据库的访问方法包括以下步骤:

截取用以访问所述数据库的系统标识符;

判断是否调用所述数据库提供的备份工具连接该数据库;若是,则根据所述系统标识符,按照第一预定拼接格式,拼接在调用所述备份工具的状态下,用以访问所述数据库的第一服务名;若否,则根据所述系统标识符,按照第二预定拼接格式,拼接在未调用所述备份工具的状态下,用以访问所述数据库的第二服务名。

以下将结合图示对本实施例所述的数据库的访问方法进行详细说明。本实施例所提供的数据库的访问方法应用于Oracle数据库。访问所述Oracle数据库包括2中形式:

一种是使用操作系统认证,不需要账户和密码就可以登录该Oracle数据库。

另一种就是需要使用账号和密码认证的方法登录所述Oracle数据库,本实施例所述的数据库的访问方法即是在所述Oracle数据库关闭的情况下,使用账号和密码登录该Oracle数据库,以进行数据备份恢复。

请参阅图1,显示为数据库的访问方法于一实施例中的流程示意图。如图1所示,所述数据库的访问方法具体包括以下几个步骤:

S1,获取用户登录所述数据库的登录信息。在本实施例中,所述数据库的登录信息是通过在根用户(root用户)下的进程中,创建一个用以获取数据库安装用户的登录信息的子进程而获取的。在创建子进程时,父进程属于根用户,子进程也属于根用户。父进程等待子进程退出。在本实施例中,所述登录信息包括登录所述数据的账号和密码。

S2,截取用以访问所述数据库的系统标识符。具体地,所述截取用以访问所述数据库的系统标识符的过程为通过检测系统上用以监视客户端连接进程状态的监视进程,从该监视进程上截取所述系统标识符(SID)。在本实施例中,所述Oracle数据库在启动的时候,会产生一个用以监视客户端连接进程状态的监视进程(ora_pmon_SID),当检测到操作系统上的ora_pmon_*进程,然后截取进程名称最后面的信息作为系统标识符,例如该监视进程的进程名称是ora_pmon_orcl,那么SID为orcl。

S3,判断是否调用所述数据库提供的备份工具连接该数据库;若否,则执行步骤S4;若是,则执行步骤S5。在本实施例中,所述备份工具为RMAN。

S4,根据所述系统标识符(SID)按照一预定拼接格式,拼接在未调用所述备份工具的状态下,用以访问所述数据库的第一服务名。在本实施例中,所述第一服务名的拼接过程如下:

按照第一预定拼接格式,将在无需开启监听的情况下,访问所述数据库所要求的变量填充至所述第一预定拼接格式中以形成第一服务名;所述变量包括调用备份工具与所述数据库连接的连接协议、数据库版本号、数据库版本号和系统标识符的连接值、和/或环境变量;所述连接协议为BEQ协议。在本实施例中,拼接成第一服务名为sqlplus的连接标识符。具体格式为:

其中,调用备份工具与所述数据库连接的连接协议为PROTOCOL=beq表示指定使用BEQ协议;

数据库版本号PROGRAM=$oracleVersion表示指定Oracle程序的版本。Oracle 8i以前的产品,$oracleVersion的值与Oracle的具体版本息息相关,如Oracle 7.3版本,$oracleVersion的值为oracle73;Orale 8版本,$oracleVersion的值为oracle80;当oracle 8i之后的版本,$oracleVersion的值统为oracle。

数据库版本号和系统标识符的连接值ARGV0=$oracle$sid;ARGV0的值,为$oracle和$sid连接起来的连接值。如数据库版本为Oracle12c,sid为orcl。那么ARGV0的值为oracleorcl。

环境变量ENVS='ORACLE_SID=$sid'。

S5,根据所述系统标识符(SID)按照另一预定拼接格式,拼接在调用所述备份工具时用以访问所述数据库的第二服务名。在本实施例中,所述第二服务名的拼接过程如下:

按第二照预定拼接格式,将在无需开启监听的情况下,访问所述数据库所要求的变量填充至所述第二预定拼接格式中以形成第二服务名;所述变量包括调用备份工具与所述数据库连接的连接协议、所述数据库版本号、连接值、环境变量、和/或用以转义的转义字符。所述第一预定拼接格式和第二预定拼接格式为一固定拼接格式。

在本实施例中,拼接成第二服务名为RMAN的连接标识符。具体格式为:

在本实施例中,所述sqlplus的连接标识符和RMAN的连接标识符的区别在于,所述RMAN的连接标识符在单引号前面的4个^转义符号。

S6,通过所述登录信息和第一服务名,或通过所述登录信息和所述第二服务名访问所述数据库。

本实施例所述的数据库的访问方法通过程序自动生成BEQ连接符号,而不用修改环境上的tnsname.ora文件;由于使用BEQ协议连接数据库不需要使用监听,从而不用修改listener.ora文件,降低了产品实施的难度,规避了修改客户环境带来的风险,且可以在数据库关闭的情况下,使用账号密码登录到数据库中,进行备份恢复。

实施例二

本实施例提供一种数据库的访问系统1,请参阅图2,显示为数据库的访问系统于一实施例中的原理结构示意图。如图2所示,所述数据库的访问系统1包括:获取模块11、截取模块12、处理模块13、及访问模块14。

所述获取模块11用于获取用户登录所述数据库的登录信息。在本实施例中,所述数据库的登录信息是所述获取模块11通过在根用户(root用户)下的进程中,创建一个用以获取数据库安装用户的登录信息的子进程而获取的。

与所述获取模块11连接的截取模块12用于截取用以访问所述数据库的系统标识符。具体地,所述截取模块12用于通过检测系统上用以监视客户端连接进程状态的监视进程,从该监视进程上截取所述系统标识符(SID)。在本实施例中,所述Oracle数据库在启动的时候,会产生一个用以监视客户端连接进程状态的监视进程(ora_pmon_SID),当检测到操作系统上的ora_pmon_*进程,然后截取进程名称最后面的信息作为系统标识符,例如该监视进程的进程名称是ora_pmon_orcl,那么SID为orcl。

与所述截取模块12连接的处理模块13用于判断是否调用所述数据库提供的备份工具连接该数据库;若否,则根据所述系统标识符,拼接在未调用所述备份工具状态下,用以访问所述数据库的第一服务名;若是,则根据所述系统标识符(SID),拼接在调用所述备份工具状态下,用以访问所述数据库的第二服务名。在本实施例中,所述备份工具为RMAN。

在本实施例中,在判断为未调用所述数据库提供的备份工具连接该数据库时,所述处理模块13用于按照第一预定拼接格式,将在无需开启监听的情况下,访问所述数据库所要求的变量填充至所述第一预定拼接格式中以形成第一服务名;所述变量包括调用备份工具与所述数据库连接的连接协议、所述数据库版本号、连接值、和/或环境变量;所述连接协议为BEQ协议。

在本实施例中,在判断为调用所述数据库提供的备份工具连接该数据库时,所述处理模块13用于按第二照预定拼接格式,将在无需开启监听的情况下,访问所述数据库所要求的变量填充至所述第二预定拼接格式中以形成第二服务名;所述变量包括调用备份工具与所述数据库连接的连接协议、所述数据库版本号、连接值、环境变量、和/或用以转义的转义字符。

与所述获取模块11和处理模块13连接的访问模块14用于,通过所述登录信息和第一服务名,或通过所述登录信息和所述第二服务名访问所述数据库。

本实施例还提供一种服务器2,请参阅图3,显示为服务器于一实施例中的原理结构示意图。如图3所示,所述服务器2包括上述数据库的访问系统1。

综上所述,本发明所述的数据库的访问方法、系统及具有该系统的服务器通过程序自动生成BEQ连接符号,而不用修改环境上的tnsname.ora文件;由于使用BEQ协议连接数据库不需要使用监听,从而不用修改listener.ora文件,降低了产品实施的难度,规避了修改客户环境带来的风险,且可以在数据库关闭的情况下,使用账号密码登录到数据库中,进行备份恢复。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1