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