用于數(shù)據(jù)庫應(yīng)用的智能錯(cuò)誤恢復(fù)的制作方法
【專利說明】用于數(shù)據(jù)庫應(yīng)用的智能錯(cuò)誤恢復(fù)
[0001] 背景
[0002] 數(shù)據(jù)庫服務(wù)器是一種響應(yīng)于從軟件應(yīng)用(有時(shí)被稱為"數(shù)據(jù)庫應(yīng)用")接收到的請(qǐng) 求向軟件應(yīng)用提供數(shù)據(jù)庫服務(wù)的軟件產(chǎn)品。此類數(shù)據(jù)庫服務(wù)可以包括但不限于存儲(chǔ)、檢索、 分析或操縱數(shù)據(jù)庫數(shù)據(jù)。取決于實(shí)現(xiàn),這些數(shù)據(jù)庫應(yīng)用可以在數(shù)據(jù)庫服務(wù)器在其上運(yùn)行的 同一機(jī)器上運(yùn)行,或者可以在經(jīng)由一個(gè)或多個(gè)網(wǎng)絡(luò)與數(shù)據(jù)庫服務(wù)器在其上運(yùn)行的機(jī)器相連 接的其他機(jī)器上運(yùn)行。為將請(qǐng)求發(fā)送給數(shù)據(jù)庫服務(wù)器,數(shù)據(jù)庫應(yīng)用打開到數(shù)據(jù)庫服務(wù)器的 連接并且與其建立所謂的會(huì)話。會(huì)話表示數(shù)據(jù)庫應(yīng)用與數(shù)據(jù)庫服務(wù)器之間正在進(jìn)行的交互 式信息交換。通常,會(huì)話在某一時(shí)間點(diǎn)被設(shè)置或建立,并且隨后在稍后的時(shí)間點(diǎn)被拆毀。所 建立的會(huì)話通常涉及從數(shù)據(jù)庫應(yīng)用向數(shù)據(jù)庫服務(wù)器以及從數(shù)據(jù)庫服務(wù)器向數(shù)據(jù)庫應(yīng)用發(fā) 送不止一條消息。
[0003] 已按上面闡述的方式連接至遠(yuǎn)程數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)庫應(yīng)用可能經(jīng)歷由在數(shù)據(jù) 庫服務(wù)器處或在數(shù)據(jù)庫服務(wù)器的環(huán)境(有時(shí)被稱為"后端")中發(fā)生的故障或其他問題帶來 的錯(cuò)誤。這些錯(cuò)誤可能導(dǎo)致數(shù)據(jù)庫應(yīng)用甚至數(shù)據(jù)庫服務(wù)器索性停止工作。為了解決這一問 題,在數(shù)據(jù)庫應(yīng)用中可包括被配置成接收來自數(shù)據(jù)庫服務(wù)器的錯(cuò)誤消息并且響應(yīng)于接收到 那些錯(cuò)誤消息而執(zhí)行操作的邏輯。然而,在數(shù)據(jù)庫應(yīng)用中包括這種邏輯使得這種應(yīng)用更難 開發(fā)并且使得這種應(yīng)用更加復(fù)雜。而且,數(shù)據(jù)庫應(yīng)用有可能無法被編程以預(yù)料數(shù)據(jù)庫服務(wù) 器所產(chǎn)生的所有可能錯(cuò)誤代碼或消息。
[0004] 而且,當(dāng)數(shù)據(jù)庫應(yīng)用經(jīng)歷由后端問題或由該應(yīng)用本身的問題所帶來的錯(cuò)誤時(shí),信 息技術(shù)(IT)專家、數(shù)據(jù)庫管理員(DBA)以及開發(fā)者被動(dòng)員來理解問題的性質(zhì)。然而,由于時(shí) 間約束、工具的缺少以及其他限制,對(duì)生產(chǎn)環(huán)境進(jìn)行故障診斷可以是具有挑戰(zhàn)性的。例如, 當(dāng)需要與每個(gè)數(shù)據(jù)庫應(yīng)用進(jìn)行本地交互來執(zhí)行這種故障診斷時(shí),對(duì)數(shù)據(jù)庫應(yīng)用的大量實(shí)例 進(jìn)行故障診斷在大范圍部署中可以是具有挑戰(zhàn)性的。
【發(fā)明內(nèi)容】
[0005] 本文描述了促進(jìn)用于數(shù)據(jù)庫應(yīng)用的智能錯(cuò)誤恢復(fù)操作的性能的系統(tǒng)和方法。如本 文將討論的,智能錯(cuò)誤恢復(fù)通過數(shù)據(jù)庫驅(qū)動(dòng)程序?qū)崿F(xiàn),該數(shù)據(jù)庫驅(qū)動(dòng)程序被配置成代表數(shù) 據(jù)庫應(yīng)用執(zhí)行數(shù)據(jù)庫操作,其中數(shù)據(jù)庫應(yīng)用和數(shù)據(jù)庫驅(qū)動(dòng)程序兩者均被安裝在客戶端上。 該數(shù)據(jù)庫驅(qū)動(dòng)程序被進(jìn)一步配置成執(zhí)行用于從數(shù)據(jù)庫嚴(yán)重故障智能恢復(fù)的操作。這種智能 恢復(fù)可涉及例如在數(shù)據(jù)庫服務(wù)器故障后將數(shù)據(jù)庫應(yīng)用和/或數(shù)據(jù)庫服務(wù)器還原到良好狀 態(tài)。由數(shù)據(jù)庫驅(qū)動(dòng)程序執(zhí)行的智能錯(cuò)誤恢復(fù)操作可以基于位于數(shù)據(jù)庫驅(qū)動(dòng)程序本身內(nèi)的情 報(bào)(intelligence)以及從數(shù)據(jù)庫服務(wù)器傳遞至數(shù)據(jù)庫驅(qū)動(dòng)程序的附加信息來執(zhí)行。
[0006] 根據(jù)本文描述的某些實(shí)施例,數(shù)據(jù)庫服務(wù)器包括能操作以至少監(jiān)視和分析在數(shù)據(jù) 庫服務(wù)器的環(huán)境內(nèi)發(fā)生的事件和/或由數(shù)據(jù)庫服務(wù)器生成的執(zhí)行錯(cuò)誤,以便檢測(cè)問題狀況 是否存在的邏輯。數(shù)據(jù)庫服務(wù)器進(jìn)一步包括能操作以向通信連接至所述數(shù)據(jù)庫服務(wù)器的客 戶端的數(shù)據(jù)庫驅(qū)動(dòng)程序發(fā)送一個(gè)或多個(gè)命令的邏輯,所述一個(gè)或多個(gè)命令指定要由所述數(shù) 據(jù)庫驅(qū)動(dòng)程序響應(yīng)于所述問題狀況的存在采取的一個(gè)或多個(gè)動(dòng)作。
[0007] 在一個(gè)實(shí)施例中,數(shù)據(jù)庫服務(wù)器能夠操作以在作為應(yīng)用層請(qǐng)求/響應(yīng)協(xié)議(諸如 表格數(shù)據(jù)流(MS-TDS)協(xié)議)的一部分在數(shù)據(jù)庫服務(wù)器和客戶端之間建立的會(huì)話的上下文 內(nèi)向數(shù)據(jù)庫驅(qū)動(dòng)程序發(fā)送一個(gè)或多個(gè)命令。進(jìn)一步根據(jù)此類實(shí)施例,數(shù)據(jù)庫服務(wù)器可以能 操作以將一個(gè)或多個(gè)命令添加到要從數(shù)據(jù)庫服務(wù)器傳送至數(shù)據(jù)庫驅(qū)動(dòng)程序的響應(yīng)。在一替 代實(shí)施例中,在數(shù)據(jù)庫服務(wù)器和客戶端之間通信地連接的網(wǎng)關(guān)服務(wù)也可以能操作以向數(shù)據(jù) 庫驅(qū)動(dòng)程序發(fā)送一個(gè)或多個(gè)命令。
[0008] 在進(jìn)一步的實(shí)施例中,被檢測(cè)到的問題狀況是從該數(shù)據(jù)庫服務(wù)器到替代數(shù)據(jù)庫服 務(wù)器的故障轉(zhuǎn)移。進(jìn)一步根據(jù)此類實(shí)施例,被發(fā)送至數(shù)據(jù)庫驅(qū)動(dòng)程序的一個(gè)或多個(gè)命令可 包括指示期間數(shù)據(jù)庫驅(qū)動(dòng)程序不應(yīng)當(dāng)嘗試重連至數(shù)據(jù)庫服務(wù)器的時(shí)間段的至少一個(gè)命令。 在又進(jìn)一步的實(shí)施例中,被發(fā)送至數(shù)據(jù)庫驅(qū)動(dòng)程序的一個(gè)或多個(gè)命令包括被配置成使得數(shù) 據(jù)庫驅(qū)動(dòng)程序收集信息(諸如一個(gè)或多個(gè)性能相關(guān)或使用相關(guān)的參數(shù))的至少一個(gè)命令。
[0009] 進(jìn)一步根據(jù)本文描述的某些實(shí)施例,通信連接至數(shù)據(jù)庫服務(wù)器的客戶端包括能操 作以接收來自數(shù)據(jù)庫服務(wù)器的一個(gè)或多個(gè)命令的數(shù)據(jù)庫驅(qū)動(dòng)程序,該一個(gè)或多個(gè)命令指定 響應(yīng)于由數(shù)據(jù)庫服務(wù)器標(biāo)識(shí)的問題狀況要由數(shù)據(jù)庫驅(qū)動(dòng)程序采取的一個(gè)或多個(gè)動(dòng)作。數(shù)據(jù) 庫驅(qū)動(dòng)程序進(jìn)一步包括能操作以使得該一個(gè)或多個(gè)命令被執(zhí)行的邏輯。
[0010] 在一個(gè)實(shí)施例中,數(shù)據(jù)庫驅(qū)動(dòng)程序能操作以在作為應(yīng)用層請(qǐng)求/響應(yīng)協(xié)議(諸如 MS-TDS協(xié)議)的一部分在數(shù)據(jù)庫服務(wù)器和客戶端之間建立的會(huì)話的上下文內(nèi)接收一個(gè)或 多個(gè)命令。進(jìn)一步根據(jù)此類實(shí)施例,數(shù)據(jù)庫驅(qū)動(dòng)程序可以能操作以從在會(huì)話的上下文內(nèi)從 數(shù)據(jù)庫服務(wù)器接收的響應(yīng)中提取一個(gè)或多個(gè)命令。
[0011] 在進(jìn)一步實(shí)施例中,客戶端數(shù)據(jù)庫驅(qū)動(dòng)程序能操作以通過在預(yù)定時(shí)間段期間阻止 重連至數(shù)據(jù)庫服務(wù)器的嘗試發(fā)生來執(zhí)行一個(gè)或多個(gè)命令。在另一實(shí)施例中,數(shù)據(jù)庫驅(qū)動(dòng)程 序能操作以通過使得信息(諸如一個(gè)或多個(gè)性能相關(guān)或使用相關(guān)的參數(shù))被跟蹤來執(zhí)行一 個(gè)或多個(gè)命令。進(jìn)一步根據(jù)此類實(shí)施例,數(shù)據(jù)庫驅(qū)動(dòng)程序還可以能操作以使得所收集的信 息被發(fā)送至遠(yuǎn)程實(shí)體。
[0012] 提供本概述以便以簡(jiǎn)化的形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些概念。 本
【發(fā)明內(nèi)容】
并不旨在標(biāo)識(shí)所要求保護(hù)主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要 求保護(hù)主題的范圍。此外,注意到所要求保護(hù)的主題不限于在詳細(xì)描述和/或本文的其它 章節(jié)中所述的特定實(shí)施例。本文呈現(xiàn)這些實(shí)施例僅用于說明性的用途。基于本文所包含的 描述,其它實(shí)施例對(duì)于相關(guān)領(lǐng)域的技術(shù)人員將是顯而易見的。
【附圖說明】
[0013] 合并在此并作為說明書一部分的附圖與說明書一起示出了本發(fā)明的實(shí)施例,且進(jìn) 一步用于解釋本發(fā)明的原理的作用,并且使相關(guān)領(lǐng)域的技術(shù)人員能夠?qū)崿F(xiàn)并使用本發(fā)明。
[0014] 圖1是根據(jù)一個(gè)實(shí)施例的向執(zhí)行數(shù)據(jù)庫應(yīng)用的客戶端提供智能錯(cuò)誤恢復(fù)能力的 示例系統(tǒng)的框圖。
[0015] 圖2是解說根據(jù)一個(gè)示例實(shí)施例的圖1中示出的客戶端的各元件的框圖。
[0016] 圖3是解說根據(jù)一個(gè)示例實(shí)施例的圖1中示出的數(shù)據(jù)庫服務(wù)器的各元件的框圖。
[0017] 圖4描繪根據(jù)一個(gè)實(shí)施例的用于向執(zhí)行數(shù)據(jù)庫應(yīng)用的客戶端提供智能錯(cuò)誤恢復(fù) 能力的第一方法的流程圖。
[0018] 圖5描繪根據(jù)一個(gè)實(shí)施例的用于向執(zhí)行數(shù)據(jù)庫應(yīng)用的客戶端提供智能錯(cuò)誤恢復(fù) 能力的第二方法的流程圖。
[0019] 圖6是可用于實(shí)現(xiàn)各實(shí)施例的示例性的基于處理器的系統(tǒng)的框圖。
[0020]當(dāng)結(jié)合其中相同的附圖標(biāo)記標(biāo)識(shí)對(duì)應(yīng)的元素的附圖時(shí),本發(fā)明的特征和優(yōu)點(diǎn)將從 以下闡述的詳細(xì)描述中變得更加顯而易見。在附圖中,相同的參考標(biāo)號(hào)一般指相同的、功能 上相似的和/或結(jié)構(gòu)上相似的元素。其中元素第一次出現(xiàn)的附圖由對(duì)應(yīng)的參考標(biāo)號(hào)中最左 側(cè)的數(shù)字指示。
[0021] 詳細(xì)描述
[0022] I 引言
[0023] 以下詳細(xì)描述參考示出本發(fā)明的示例性實(shí)施例的附圖。但是,本發(fā)明的范圍不限 于這些實(shí)施例,而是由所附權(quán)利要求書定義。因此,諸如所示實(shí)施例的修改版本之類的在附 圖所示之外的實(shí)施例仍然由本發(fā)明所包含。
[0024] 本說明書中對(duì)" 一個(gè)實(shí)施例"、"實(shí)施例"、"示例實(shí)施例"等的引用指的是所述實(shí)施 例可包括特定的特征、結(jié)構(gòu)或特點(diǎn),但是每一實(shí)施例不一定包括該特定的特征、結(jié)構(gòu)或特 點(diǎn)。此外,這些短語不一定指相同的實(shí)施例。此外,當(dāng)結(jié)合實(shí)施例描述具體特征、結(jié)構(gòu)或特性 時(shí),應(yīng)當(dāng)理解在相關(guān)領(lǐng)域的技術(shù)人員的知識(shí)范圍內(nèi)能夠結(jié)合其他實(shí)施例來實(shí)現(xiàn)具體特征、 結(jié)構(gòu)或特性,無論是否被顯式地描述。
[0025] -般而言,本文描述的實(shí)施例可用于使得執(zhí)行數(shù)據(jù)庫應(yīng)用的客戶端響應(yīng)于檢測(cè)到 在客戶端通信連接至的數(shù)據(jù)庫服務(wù)器處或在數(shù)據(jù)庫服務(wù)器的環(huán)境中發(fā)生的故障狀況執(zhí)行 特定期望動(dòng)作或避免特定非期望動(dòng)作。例如,根據(jù)本文描述的某些實(shí)施例,如果確定該數(shù)據(jù) 庫服務(wù)器正在故障轉(zhuǎn)移到替代數(shù)據(jù)庫服務(wù)器,則可在預(yù)定時(shí)間段內(nèi)抑制客戶端嘗試重連到 該數(shù)據(jù)庫服務(wù)器。作為另一示例,根據(jù)本文描述的某些實(shí)施例,可指令客戶端開始收集某些 性能相關(guān)數(shù)據(jù)、使用相關(guān)數(shù)據(jù)、或可能對(duì)問題狀況進(jìn)行故障診斷有幫助的其他信息。如此收 集的信息隨后可被上傳或以其他方式從客戶端傳送到數(shù)據(jù)庫服務(wù)器或某個(gè)其他實(shí)體以單 獨(dú)地或連同從其他客戶端收集的其他信息被分析。
[0026] 如本文將描述的,為了檢測(cè)問題狀況是否存在,根據(jù)一實(shí)施例的數(shù)據(jù)庫服務(wù)器包 括能操作以監(jiān)視或分析在數(shù)據(jù)庫服務(wù)器的環(huán)境內(nèi)發(fā)生的事件和/或由數(shù)據(jù)庫服務(wù)器生成 的執(zhí)行錯(cuò)誤。進(jìn)一步根據(jù)這樣的實(shí)施例,數(shù)據(jù)庫服務(wù)器進(jìn)一步包括能操作以響應(yīng)于檢測(cè)到 問題狀況來向客戶端的數(shù)據(jù)庫驅(qū)動(dòng)程序發(fā)送一個(gè)或多個(gè)命令的邏輯,