Source: https://patents.google.com/patent/KR101044849B1/en
Timestamp: 2019-04-21 01:36:24+00:00

Document:
본 발명은 일반적으로 데이터베이스 및 파일 시스템 관리에 관한 것이고, 더 구체적으로는, 데이터 신뢰성을 보장하기 위한 자동 데이터베이스와 파일 시스템 관리 및 수리에 관한 것이다. The present invention generally relates to databases, and file system management, and more specifically, to a database and automatic file system maintenance and repair to ensure data reliability. 본 발명의 다양한 양태들은 모든 데이터 페이지 유형들에 대한 데이터 페이지 레벨에서 데이터 손상에 응답하고 교정하는 것, 및 인덱스 페이지 손상(클러스터되고 클러스터되지 않음), 데이터 페이지 손상, 및 로그 파일의 페이지 손상을 포함하는, 하지만 이에 제한되지는 않는, 다양한 시나리오들에 대한 복구(재구성 또는 복원 동작들을 포함함)에 관련된다. Various aspects of the present invention includes a data page responsive to data corruption and correct at the level, and an index page corruption (a cluster is not clustered), data page corruption, and page damage to the log file for all data page type to, but is not limited to, it relates to the recovery (including the reconstruction or decompression) of the various scenarios.
본 출원서는 본 명세서에서 그 전체내용이 참조되는, 2004년 5월 3일 출원된, 미국 특허출원 제10/837,932호에 우선권을 주장한다. The present application claims priority to US Patent Application No. 10 / 837,932, filed in May 2004, the entire contents of 3, which is one reference herein.
본 출원서는 본 명세서에 그 전체내용이 병합되는 다음의 공통 양수된 출원서들에서 개시된 발명들의 주제와 관련된다: 미국 특허출원 제10/647,058호(2003년 8월 21일) "STSTEMS AND METHODS FOR REPRESENTING UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM BUT INDEPENDENT OF PHYSICAL REPRESENTATION"; This application is related to the subject of the invention disclosed in the following common positive with the request of which merge their entirety herein: U.S. Patent Application No. 10/647 058 Lake (August 2003 May 21) "STSTEMS AND METHODS FOR REPRESENTING UNITS OF INFORMATION MANAGEABLE BY A HARDWARE / SOFTWARE INTERFACE SYSTEM BUT INDEPENDENT OF PHYSICAL REPRESENTATION "; 미국 특허출원 제10/646,941호(2003년 8월 21) "SYSTEMS AND METHODS FOR SEPARATING UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM FROM THEIR PHYSICAL ORGANIZATION"; U.S. Patent Application No. 10 / No. 646 941 (August 2003 21) "SYSTEMS AND METHODS FOR SEPARATING UNITS OF INFORMATION MANAGEABLE BY A HARDWARE / SOFTWARE INTERFACE SYSTEM FROM THEIR PHYSICAL ORGANIZATION"; 미국 특허출원 제10/646,940호(2003년 8월 21일) "SYSTEMS AND METHODS FOR THE IMPLEMENTATON OF A BASE SCHEMA FOR ORGANIZING UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM"; U.S. Patent Application No. 10 / No. 646 940 (July 21, 2003) "SYSTEMS AND METHODS FOR THE IMPLEMENTATON OF A BASE SCHEMA FOR ORGANIZING UNITS OF INFORMATION MANAGEABLE BY A HARDWARE / SOFTWARE INTERFACE SYSTEM"; 미국 특허출원 제10/646,632호(2003년 8월 21일) "SYSTEMS AND METHODS FOR THE IMPLEMENTATION OF A CORE SCHEMA FOR PROVIDING A TOP-LEVEL STRUCTURE FOR ORGANIZING UNITS OF INFORMATION MANAGEABLE BY HARDWARE/SOFTWARE INTERFACE SYSTEM)"; U.S. Patent Application No. 10 / No. 646 632 (August 2003 May 21) "SYSTEMS AND METHODS FOR THE IMPLEMENTATION OF A CORE SCHEMA FOR PROVIDING A TOP-LEVEL STRUCTURE FOR ORGANIZING UNITS OF INFORMATION MANAGEABLE BY HARDWARE / SOFTWARE INTERFACE SYSTEM)"; 미국 특허출원 제10/646,645호(2004년 8월 21일) "SYSTEMS AND METHODS FOR REPRESENTING RELATIONSHIPS BETWEEN UNITS OF INFORMATION MANAGEABLE BY A HARDWARE/SOFTWARE INTERFACE SYSTEM"; U.S. Patent Application No. 10 / No. 646 645 (August 21, 2004) "SYSTEMS AND METHODS FOR REPRESENTING RELATIONSHIPS BETWEEN UNITS OF INFORMATION MANAGEABLE BY A HARDWARE / SOFTWARE INTERFACE SYSTEM"; 미국 특허출원 제10/646,575호(2003년 8월 21일) "SYSTEMS AND METHODS FOR INTERFACING APPLICATION PROGRAMS WITH AN ITEM-BASED STORAGE PLATFORM"; US Patent Application No. 10 / 646,575 No. (21 August 2003) "SYSTEMS AND METHODS FOR INTERFACING APPLICATION PROGRAMS WITH AN ITEM-BASED STORAGE PLATFORM"; 미국 특허출원 제10/646,646호(2003년 8월 21일) "STORAGE PLATFORM FOR ORGANIZING, SEARCHING, AND SHARING DATA"; U.S. Patent Application No. 10 / No. 646 646 (July 21, 2003) "STORAGE PLATFORM FOR ORGANIZING, SEARCHING, AND SHARING DATA"; 미국 특허출원 제10/646,580호(2003년 8월 21일) "SYSTEMS SND METHODS FOR DATA MODELING IN AN ITEM-BASED STORAGE PLATFORM". US Patent Application No. 10 / 646,580 No. (21 August 2003) "SYSTEMS SND METHODS FOR DATA MODELING IN AN ITEM-BASED STORAGE PLATFORM".
본 발명은 일반적으로 데이터베이스 및 파일 시스템 정비에 관한 것으로서, 특히, 데이터 신뢰성(data reliability)을 보장하기 위한 자동 데이터베이스 및 파일 시스템 정비 및 수리에 관한 것이다. The present invention relates generally to databases, and file system maintenance, more particularly, to automatic file system and database maintenance and repair to ensure data reliability (data reliability). 본 발명의 다양한 양태들은 모든 데이터 페이지 유형들에 대해 데이터 페이지 레벨에서 데이터 손상에 응답하고 수리하는 것, 및 인덱스 페이지 손상(클러스터 되고 클러스터 되지 않음), 데이터 페이지 손상, 및 로그 파일의 페이지 손상을 포함하는, 하지만 이에 제한되지는 않으며, 다양한 시나리오들에 대한 복구(재구성 또는 복원 동작들을 포함함)에 관련된다. Various aspects of the invention include the data to the page level of response and repair to data corruption, and the index page corruption (a cluster is not clustered), data page corruption, and page damage to the log file for all data page type to, but not are not limited to, it relates to the recovery (including the reconstruction or decompression) of the various scenarios.
클라이언트 데이터베이스 플랫폼들(예를 들어, 가정 및 비지니스 데스크톱 컴퓨터들)은 서버 플랫폼들에서보다 휠씬 더 낮은 품질의 하드웨어를 사용하는 한 편, 서버-클래스 하드웨어(제어기, 드라이버, 디스크 등)도 읽기 동작이 응용 프로그램이 데이터 저장소에 기록한 것을 리턴하지 않는 것과 같은 데이터 손상의 원인이 될 수 있다. The client database platforms (for example, home and business desktop computers) is a piece that uses the hardware is much lower than the quality on the server platform, server-class hardware (controller, driver, disk, etc.) are read-operation can cause data corruption, such as the application it does not return the records to the data store. 물론, 이것은, 클라이언트 머신이 기대하지 않은 전력 중단 때문에 쓰기 동작 중에 임의적으로 전력이 중단되어, 찢어진 페이지들과 잠재적 데이터베이스 손상으로 이어지는 증대된 가능성을 포함하는, 하지만 이에 제한되지는 않는, 다양한 이유들로 클라이언트 데이터베이스 플랫폼들(서버 데이터베이스 플랫폼들에 반해)에서 명백히 더 많은 문제들이 있다. Of course, this is a discretionary power during the write operation aborted because the client machine, unexpected power outages, including the increased possibility of leading to torn pages and potential database corruption, but are not limited to, a variety of reasons in a client database platforms (as opposed to the database server platform), there are clearly more problematic. (전력 중단으로부터의 문제들을 완화시키기 위해 연속적 전력 공급기들을 서버 데이터베이스 시스템들이 사용하는 것은 더 일반적임) 물리적 저장 매체가 시간에 걸쳐 문자 그대로 마멸되는 경우, 매체 마멸은 데이터베이스 손상의 다른 소스이다. If (it is a continuous power supply to the server database system used to alleviate the problems of power interruption from more typical) physical storage media literally wear over time, the media attrition is another source of database corruption. 또한, 신뢰성에 관한 관심의 다른 소스는 부주의하고(예를 들어, 버그) 악의적인(예를 들어, 바이러스) 모든 소프트웨어 오류들로 인한 손상들로부터 탐지와 복구이다. In addition, another source of concern for credibility is careless (eg, bug) malicious (eg, virus) detection and recovery from the damage caused by all software errors.
종래 데이터베이스들의 정비 및 수리는 데이터베이스 시스템들에 대한 잘 개발된 기술 세트 및 깊은 지식을 가진 데이터베이스 관리자, 또는 적어도 데이터베이스들에 익숙하고 정기적으로 사용하는 개인들에게 -데이터베이스 기술들에 대해 비교적 기술이 있는 사람들- 속한 일이었다. Maintenance of conventional databases and repair for individuals to know and use regularly in well-developed set of technologies and database administrators who have deep knowledge, or at least a database of database systems - those with relatively technology about database technology - it was the one to which they belong. 한편, 운영 시스템들과 응용 프로그램들의 통상의 소비자들 및 비지니스 최종 사용자들은 데이터베이스들과 거의 작업을 하지 않고, 데이터베이스 정비 및 수리 이슈들을 다루기에 잘 준비가 되어있지 않다. Meanwhile, the operating system and the application of ordinary consumers and business end-users of the program are not nearly work with the database, it is not well prepared to deal with database maintenance and repair issues.
이들 2개의 그룹들 간의 분리된 레벨의 기술이 과거에는 크게 관련이 없었지 만, 운영 시스템들을 위한 데이터베이스-구현된 파일 시스템 -본 명세서의 처음부분에 "상호참조" 섹션에서 식별된 관련된 미국특허 출원서들에 개시된 운영 시스템과 같은- 은 이들 기술이 부족한 최종 사용자들이 그들이 주로 해결할 수 없는 데이터베이스 정비 및 수리 이슈들에 직면할 경우의 시나리오를 생성한다. In the first part of the terms "cross-reference" the relevant US patents identified in the section of the request - the two groups only the isolation level technology between has turned largely related to the past, operating system, database for-implemented file system as it disclosed in the operating system - creates a scenario where end users lack these skills are faced with the database maintenance and repair issues they can not solve, mainly. 그러므로, 비지니스/소비자 데이터베이스-구현된 운영 시스템 파일 시스템, 또는 간략하게 "DBFS(database file system)"는 손상을 탐지하고 그것의 데이터베이스를 트랜잭션에서 일관적인 상태로 복구할 수 있어야 하고, 복구불능의 데이터 유실인 경우들에서, DBFS는 데이터로의 항목 변경 단위가 관리되는 레벨에서(예를 들어, 항목-기반 DBFS를 위한 "항목" 레벨에서) 데이터 일관성을 보장해야 한다. Therefore, business / consumer database - to the implementation of the operating system, the file system, or simply "(database file system) DBFS" will be able to detect the damage and recover its database to a consistent state in the transaction, and data recovery impossible in the case of loss, the DBFS (e.g., entry "entry" level in the for-based DBFS) from the level at which the item changes to the data management unit to guarantee data consistency. 더욱이, 느린 위임 모드(commit mode)에서 디폴트로 실행하는 DBFS에 대해, 변칙 셔트다운(abnormal shutdown) 바로 전에 행해진 트랜잭션들의 영속성(durability)은 보장되지 않으므로, 설명되어야 하고, 교정되어야 한다. Furthermore, it should be corrected for the DBFS running on slow delegation mode (commit mode) by default, anomalous shut down (abnormal shutdown) persistence (durability) of the transaction is performed just before is not guaranteed, to be described.
더욱이, 비지니스/소비자 최종 사용자가 자동 DBFS 관리 및 복구로부터 크게 이득을 얻을 것인 한편, 데이터베이스 관리자들과 더 깊은 데이터베이스 기술을 가진 이들도 또한 일반 데이터베이스 정비 및 수리에 대한 기술 해결책으로부터 이득을 얻을 것이다. Moreover, in the other hand, even those with a deeper database technology and the database manager will also benefit from technical solutions to common database maintenance and repairs business / consumer end users will greatly benefit from automatic DBFS management and recovery. 데이터베이스 관리 분야에서 데이터베이스 툴들(예를 들어, SQL 서버 2000과 함께 제공된 데이터베이스 튜닝 어드바이져)을 사용하는 것은 일반적이지만, 이들 툴들은 직접 신뢰성을 해결하지는 않지만, 대신에 데이터베이스 백업이 관리되는 수단을 제공한다 -대부분-자동의 방식이 아닌, 특히 데이터베이스 백업을 이용할 수 없거나 다른 수리 이슈들이 발생할 때, 실제적 데이터베이스 관리 자의 관여를 요구함-. Which in database management using database tools (for example, SQL Server database tuning advisor provided with 2000), it is generally, but these tools do not address directly the reliability, but instead to provide a means by which the database backup management - most - non-automatic manner, in particular access to a database backup, or when other repair issues that arise, requiring the parties involved in practical database management. 그러므로, 데이터베이스 신뢰성을 해결하기 위한 자동 해결책은 또한 데이터베이스 관리자와 다른 숙련된 데이터베이스 사용자들에게 이득이 될 것이다. Therefore, the automatic solution to solve the reliability database will also be of interest to database administrators and other skilled database users. 본 발명은 그런 해결책을 제공할 따름이다. According to the present invention is to provide such a solution.
본 발명의 다양한 실시예들은 DBFS를 위한 데이터 신뢰성 시스템(data reliability system;DRS)에 관한 것이고, 여기서, DRS는 최종 사용자에 의한 직접 관여가 없이 또는 관여가 거의 없이 데이터베이스 관리(database administration;DBA) 작업들을 자동으로 수행하는(그러므로, 기본적으로 최종 사용자에게 투명함) 프레임워크와 정책들(policies)의 세트를 포함한다. Various embodiments of the invention the data reliability system for the DBFS; relates to a (data reliability system DRS), wherein, DRS is directly or almost no database manager involved without involvement by the end-user (database administration; DBA) tasks to perform automatically to (and therefore, by default transparency for the end user), including a set of frameworks and policies (policies). 여러 실시예들에서, DRS 프레임워크는 오류와 이벤트 통지, 정책, 및 오류/이벤트 핸들링 알고리즘을 DRS로 플러그인하는 메카니즘들을 구현한다. In various embodiments, the DRS framework implements mechanisms for the plug-in error and event notifications, policies, and error / event handling algorithms into DRS. 더 구체적으로, 이들 실시예들에 대해, DRS는 배경에서 DBFS를 관리하고 수리하는 책임이 있는 배경 쓰레드(thread)이고, 그러므로, 최상위 레벨에서, DRS는 DBFS의 전체 정상상태(health)를 보호하고 관리한다. More particularly, for these embodiments, DRS is a background thread (thread) which is responsible for managing and repairing the DBFS in the background, therefore, at the top level, DRS is to protect the entire steady state (health) of the DBFS and management.
본 발명의 다양한 실시예들에서, DRS는 다음 특징들을 포함한다: (1) 모든 페이지 유형들에 대해 페이지 레벨의 데이터 손상에 응답하고 교정하는 것; In various embodiments of the invention, DRS comprises the following features: (1) responsive to data corruption in the page level and correct for all page types; 및 (2) (a) 인덱스 페이지 손상(클러스터되고 클러스터되지 않음); And (2) (a) the index page corruption (a cluster is not the cluster); (b) 데이터 페이지 손상; (B) data page injury; 및 (c) 로그 파일의 페이지 손상에 대해 복구(재구성 또는 복원)의 제2 레벨을 시도하는 것. And (c) to try to second-level recovery (restored or reconstructed) on page corruption in the log file.
본 발명의 특정 실시예들은 다음과 같은 것들을 포함하는, 하지만 이에 제한되지는 않은, DRS를 위한 특정 기능을 더 포함한다: (i) 수리/복원 데이터 손상 경우들을 핸들링하는 것; Specific embodiments of the present invention further includes the specific feature for, DRS that has not, however limited to include the following: (i) to handle the case repair / restore data corruption; 및 (ii) (iii) 시스템의 신뢰성과 이용성을 개선하는 것; And (ii) (iii) to improve the reliability and availability of the system; 및 (iv) 필요하면 숙련된 제3자가 데이터베이스 또는 저장 엔진 문제들을 해결하도록 DRS 오류/이벤트 이력표(history table)를 유지하는 것. And (iv) if necessary, an experienced third party to maintain a DRS error / event history table (history table) to solve the database or storage engine problems.
전술된 개요 및 선호되는 실시예들에 대한 다음의 상세한 설명은 부착된 도면들과 연결하여 읽혀질 때 더 잘 이해된다. The following detailed description of the preferred embodiment in which the above-described overview and is better understood when read in connection with the attached drawings. 본 발명을 설명하는 목적으로, 도면들에 본 발명의 예시적 구성들이 도시된다: 그러나, 본 발명은 개시된 특정 방법들 및 도구들에 제한되지는 않는다. For the purpose of illustrating the invention, and is an exemplary configuration of the invention in the drawings it is shown: however, the invention is not limited to the specific methods and tools disclosed.
도 1은 본 발명의 양태들이 병합될 수 있는 컴퓨터 시스템을 나타내는 블럭도이다. 1 is a block diagram showing a computer system in which aspects of the invention can be combined.
도 2는 본 발명의 여러 개의 실시예들을 나타내는 데이터베이스 파일 시스템(database file system;DBFS)의 데이터 신뢰성 시스템(data reliability system;DRS)의 구조를 설명하는 블럭도이다. Figure 2 is a database file system illustrating multiple embodiments of the present invention is a block diagram illustrating the structure of;; (DRS data reliability system) data reliability system (DBFS database file system).
도 3a는 데이터베이스 FPM에 의해 DBFS로 데이터 저장소들의 부착을 설명하는 블럭도이다. Figure 3a is a block diagram for explaining the attachment of the data store to the DBFS database by the FPM.
도 3b는 본 발명의 여러 개의 실시예들을 위한 데이터베이스 부착 동작 동안 손상된 페이지들이 탐지되고 교정되는 프로세스를 설명하는 흐름도이다. Figure 3b is a flow chart illustrating the process that is corrupted pages are detected and corrected during the database attached to the operation for multiple embodiments of the present invention.
도 4a는 본 발명의 다양한 실시예들에 따라 스타트-업(start-up)/크래쉬-복구(crash recovery) 컨텍스트로 DRS의 사용을 설명하는 흐름도이다. Figure 4a is a start, according to various embodiments of the invention a flow chart illustrating the use of the DRS in the recovery (crash recovery) context-up (start-up) / crashed.
도 4b는 데이터베이스 부착 동안 DRS에 의해 핸들링되는 오류들을 설명하는 표이다. Figure 4b is a table illustrating the error that is handled by a DRS for a database attached.
도 5a는 본 발명의 다양한 실시예들에 대해 쿼리 엔진(query engin)이 오류를 대면하는 온라인 동작들에서 DRS의 사용을 설명하는 흐름도이다. Figure 5a is a flow diagram illustrating the use of the DRS in-line motion facing the query engine (query engin) error for the various embodiments of the present invention.
도 5b는 온라인 동작들 동안 DRS에 의해 핸들링되는 오류들을 설명하는 표이다. Figure 5b is a table illustrating the error that is handled by the DRS during online operation.
도 6은 페이지가 가장 최신의 스냅샷에 존재하고 유효한 트랜잭션 로그(transaction log)가 존재할 때 복원을 수행하는 DRS를 설명하는 흐름도이다. Figure 6 is a flow chart for the page is present in the most recent snapshot of explaining the DRS to perform restoration in the presence of a valid transaction log (transaction log).
도 7은 데이터베이스가 복구될 수 없고 사용가능한 백업(backup)이 없는 경우 본 발명의 특정 DRS 실시예들에 대해 데이터베이스를 온라인으로 다시 불러오는 방법을 설명하는 흐름도이다. 7 is a flow diagram illustrating a method for re-loading into the online database for specific DRS embodiment of the present invention when there is no available backup (backup) without the database can be restored.
도 8은 본 발명의 일 양태에 따라 데이터 페이지를 복구하려고 시도하기 위한 DRS에 대한 방법을 설명하는 흐름도이다. Figure 8 is a flow diagram illustrating a method for the DRS to attempt to restore the data page according to an aspect of the present invention.
본 발명의 요지는 법적인 요건을 충족하도록 기술되었다. The gist of the present invention has been described to meet the legal requirements. 그러나, 설명 그자체는 본 출원의 범위를 제한하고자 하는 것이 아니다. However, the description itself is not intended to limit the scope of the present application. 오히려, 발명자는 본 발명의 요지가 다른 현재 또는 미래의 기술과 결합되어 본 명세서에 기재된 것과 유사한 다른 단계 또는 단계들의 조합을 포함하도록 다른 방식으로 실시됨을 고려한다. Rather, the inventor contemplates silsidoem in a different way so as to include a combination of a base is another step or steps, similar to that described herein in combination with other present or future technologies of the present invention. 더욱이, 용어 "단계"가 본 명세서에서 채용된 방법의 다른 요소를 나타내는데 사용된다고 할지라도, 용어는 개별 단계의 순서가 명백히 기술될 때까지 그리고 이러한 경우만을 제외하고 본 명세서에 개시된 여러 단계들 사이에서 임의의 특정 순서를 암시하는 것으로 해석되어서는 안된다. Furthermore, even if that the term "stage" is used to designate the different elements of methods employed herein, the term is among the various steps described, and in this specification except as and this only if until the order of individual steps is explicitly described It should not be construed to imply any particular order.
상술한 개요는 본 발명의 특징의 개관을 제공한다. The above-described outline and provides an overview of the features of the present invention. 본 발명의 일 실시예의 상세한 설명이 뒤따른다. In this example, the description follows of one embodiment of the invention. 이하 기재되는 여러 실시예에서, 본 발명의 특징들은 MICROSOFT SQL SERVER 데이터베이스 시스템(때때로 본 명세서에서 단순히 "SQL"로 언급됨)만으로 구현되거나, 또는 차세대 개인용 컴퓨터 운영 시스템(통상 짧게 얘기하면 "Windows Longhorn" 또는 "Longhorn"으로 언급됨)을 위한 MICROSOFT WinFS 파일 시스템에 통합되는 것으로 기술되고, 후자는 본 명세서 처음에 상호 참조된 특허 출원서들 중의 다수의 주제이다. In the various embodiments hereinafter described, features of the present invention MICROSOFT SQL SERVER database system when or implemented only (sometimes simply referred to as "SQL" herein), or (usually talking briefly next generation personal computer operating system "Windows Longhorn" or is described as being incorporated into the MICROSOFT WinFS file system for the referred to "Longhorn"), the latter is a plurality of subjects in the present specification cross-referenced patent application in the first place. 전술한 바와 같이, SQL SERVER는 MICROSOFT.NET CLR(common language runtime)을 통합하여, 관리된 코드가 SQL SERVER 데이터베이스의 데이터 저장소 상에서 동작하도록 기록 및 실행될 수 있게 한다. As mentioned above, SQL SERVER incorporates the MICROSOFT.NET CLR (common language runtime), it allows the managed code may be executed to record and operate on the data store of the SQL SERVER database. 이하 설명되는 실시예가 이런 컨텍스트에서 동작한다 할지라도, 본 발명이 SQL SERVER 제품에서의 구현에 결코 제한되지 않음을 이해할 것이다. FIG embodiment described below operates in this context, although an example, it will be understood that the invention is not way limited to implementation in the SQL SERVER product. 그 보다는, 본 발명은 데이터베이스 저장소, 예를 들어, 객체지향 데이터베이스 시스템 및 객체 관계 확장을 갖는 관계 데이터베이스 시스템, 에서 동작하도록 객체지향 프로그래밍 코드의 실행을 지원하는 임의의 데이터베이스 시스템에서 구현될 수 있다. Rather, the present invention can be implemented in a database storage, for example, a relational database system, any database system that supports the execution of object-oriented programming code to operate in a having an object-oriented database system and object-relational extensions. 따라서, 본 발명은 이하 설명되는 특정 실시예에 제한되는 것이 아니라, 부착된 청구범위에 의해 정의된 본 발명의 정신 및 범위 내에 있는 모든 수정을 커버하려는 것으로 이해해야 한다. Accordingly, the invention should be understood to cover all modifications that fall within the spirit and scope of the following not limited to particular embodiments described, as defined by the attached claims the invention.
본 발명의 많은 수의 실시예들은 컴퓨터상에서 실행될 수 있다. A large number of embodiments of the present invention can run on a computer. 도 1 및 다음의 논의는 본 발명이 구현될 수 있는 적당한 컴퓨팅 환경의 간략한 일반적 설명을 제공하고자 하는 것이다. 1 and the following discussion are intended to provide a brief general description of a suitable computing environment in which the invention may be implemented. 비록 요구되지 않았다 할지라도, 본 발명은 클라이언트 웍스테이션 또는 서버와 같은 컴퓨터에 의해 실행되는 프로그램 모듈들과 같은 컴퓨터 실행가능한 명령의 일반적인 컨텍스트로 기술될 것이다. Even if, the invention will be described in the general context of computer-executable instructions, such as program modules, being executed by a computer, such as a client workstation or a server, though not required. 일반적으로, 프로그램 모듈은 특정 작업들을 수행하거나 특정 추상 데이터 유형들을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. 더욱이, 당업자들은 본 발명이 핸드 헬드 디바이스, 멀티 프로세서 시스템, 마이크로프로세서 기반 또는 프로그래밍가능한 소비자 전자제품, 통신망 PC, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 다른 컴퓨터 시스템 구성으로 실시될 수 있음을 이해할 것이다. Moreover, it will be appreciated that those skilled in the art may be practiced with other computer system configurations, including the present invention is hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PC, a minicomputer, a mainframe computer, etc. . 본 발명은 또한 통신망을 통해 링크되는 원격 처리 디바이스에 의해 작업이 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 디바이스 모두에 위치한다. In a distributed computing environment, program modules are located in both local and remote memory storage device.
도 1에 도시된 바와 같이, 일반 목적 컴퓨팅 시스템의 예는 프로세싱 유닛(21), 시스템 메모리(22), 및 시스템 메모리(22)를 포함하는 여러 시스템 컴포넌트들을 프로세싱 유닛(21)에 연결하는 시스템 버스(23)를 포함하는 종래의 개인용 컴퓨터(20) 등을 포함한다. 1, the example of a general purpose computing system is a system bus that connects the various system components including the processing unit 21, system memory 22, and system memory 22 to processing unit 21 It includes 23 conventional personal computer 20, including a or the like. 시스템 버스(23)는 메모리 버스 또는 메모리 제어기, 주변 버스, 및 각종 버스 아키텍처들중 임의의 하나를 이용하는 로컬 버스를 포함하는 여러 유형의 버스 구조들 중의 임의의 하나일 수 있다. System bus 23 may be any one of the bus structures of different types of a local bus using any of a memory bus or memory controller, a peripheral bus, and a variety of bus architectures. 시스템 메모리는 ROM(read only memory)(24) 및 RAM(random access memory)(25)을 포함한다. The system memory includes a ROM (read only memory) (24) and RAM (random access memory) (25). 기동 시와 같이, 개인용 컴퓨터(20) 내의 요소들 간의 정보 전달에 도움을 주는 기본 루틴들을 포함하는 BIOS(basic input/output system)(26)은 ROM(24)에 저장된다. Such as during start-up, personal BIOS (basic input / output system) (26) to the computer, containing the basic routines that help to transfer information between elements within the 20 is stored in the ROM (24). 개인용 컴퓨터(20)는, 도시 안된, 하드 디스크로부터 판독 및 기록하기 위한 하드 디스크 드라이브(27), 제거가능한 자기 디스크(29)로부터 판독 및 기록하기 위한 자기 디스크 드라이브(28), 및 CD-ROM 또는 다른 광매체와 같은 제거가능한 광 디스크(31)로부터 판독 및 기록하기 위한 광 디스크 드라이브(30)를 더 포함한다. The personal computer 20 is not shown, a magnetic disk drive to read and write from the read and hard disk drive 27, a removable magnetic disk 29 for recording from the hard disk 28, and CD-ROM, or an optical disk drive 30 for reading and writing from a removable optical disk 31 such as other optical media further included. 하드 디스크 드라이브(27), 자기 디스크 드라이브(28), 및 광 디스크 드라이브(30)는 하드 디스크 드라이브 인터페이스(32), 자기 디스크 드라이브 인터페이스(33) 및 광 디스크 드라이브 인터페이스(34)에 의해 각각 시스템 버스(23)에 연결된다. The hard disk drive 27, magnetic disk drive 28, and optical disk drive 30 respectively, by a hard disk drive interface 32, magnetic disk drive interface 33, and an optical disk drive interface 34, a system bus It is connected to 23. 드라이브들 및 이들과 관련된 컴퓨터 판독가능한 매체는 컴퓨터 판독가능한 명령, 데이터 구조, 프로그램 모듈 및 개인용 컴퓨터(20)용 다른 데이터의 비휘발성 저장 장치를 제공한다. The computer-readable medium associated with the drive and these provide non-volatile storage of the other data for the computer-readable instructions, data structures, program modules and the personal computer 20. 본 명세서에 개시된 예시적인 환경이 하드 디스크, 제거가능한 자기 디스크(29) 및 제거가능한 광 디스크(31)를 채용한다 할지라도, 당업자들은, 자기 카세트, 플래시 메모리 카드, 디지털 비디오 디스크, 버놀리 카트리지, RAM, ROM 등과 같은 컴퓨터에 의해 액세스가능한 데이터를 저장할 수 있는 컴퓨터 판독가능한 매체의 다른 유형들이 예시적인 컴퓨팅 환경에 또한 사용될 수 있음을 이해해야 한다. Also the exemplary environment described herein employs a hard disk, a removable magnetic disk 29 and a removable optical disk 31, although, those skilled in the art, such as magnetic cassettes, flash memory cards, digital video disks, server tease cartridge, it should be understood that other types of RAM, ROM computer readable media that can store data accessible by a computer, such as may also be used in the exemplary computing environment.
많은 수의 프로그램 모듈들은 운영 시스템(35), 하나 이상의 응용 프로그램들(36), 기타 프로그램 모듈들(37) 및 프로그램 데이터(38)를 포함하는 하드 디스크, 자기 디스크(29), 광 디스크(31), ROM(24) 또는 RMA(25) 상에 저장될 수 있다. A large number of program modules operating system 35, one or more application programs 36, other program modules, hard disk, magnetic disk 29 including a 37 and program data 38, an optical disk (31 ), it may be stored on a ROM (24) or RMA (25). 사용자는 커맨드 및 정보를 키보드(40) 및 포인팅 디바이스(42)와 같은 입력 디바이스들을 통해 개인용 컴퓨터(20)로 입력한다. A user enters commands and information through input devices such as a keyboard 40 and pointing device 42 to the personal computer 20. 다른 입력 디바이스들(도시되지 않음)은 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너 등을 포함할 수 있다. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. 이들 및 다른 입력 디바이스들은 시스템 버스를 통해 접속되는 직렬 포트 인터페이스(46)를 통해 프로세싱 유닛(21)에 종종 연결되지만, 병렬 포트, 게임 패드, 또는 USB(universal serial bus)와 같은 다른 인터페이스들에 의해서도 연결될 수 있다. These and other input devices are however often connected to the processing unit 21 through a serial port interface 46 that is connected via a system bus, by other interfaces, such as a parallel port, a game pad, or a USB (universal serial bus) It can be connected. 모니터(47) 또는 다른 유형의 디스플레이 디바이스는 비디오 어댑터(48)와 같은 인터페이스를 통해 시스템 버스(23)에 또한 연결된다. A monitor 47 or other type of display device is also connected to the system bus 23 via an interface, such as a video adapter 48. 모니터(47)에 추가하여, 개인용 컴퓨터들은 전형적으로 스피터 및 프린터와 같은 다른 주변 출력 디바이스들(도시 안됨)을 포함한다. In addition to the monitor 47, personal computers typically include other peripheral output devices (not shown) such as a printer and seupiteo. 도 1의 예시적인 시스템은 또한 호스트 어댑터(55), SCSI(small computer system interface)버스(56), 및 SCSI 버스(56)에 연결된 외부 저장 디바이스(62)를 포함한다. The exemplary system of Figure 1 also includes an external storage device 62 connected to the host adapter (55), SCSI (small computer system interface) bus 56, and SCSI bus 56.
개인용 컴퓨터(20)는 원격 컴퓨터(49)와 같은 하나 이상의 원격 컴퓨터들에 대한 논리 연결을 이용하는 통신망된 환경에서 동작할 수 있다. The personal computer 20 may operate in a networked environment using logical connections to one or more remote computers, such as remote computer (49). 원격 컴퓨터(49)는 다른 개인용 컴퓨터, 서버, 라우터, 통신망 PC, 피어 디바이스, 또는 다른 공통 통신망 노드일 수 있으며, 단지 메모리 저장 디바이스(50)만이 도 1에 예시된다 할지라도, 전형적으로 개인용 컴퓨터(20)에 관한 상술한 요소들중 많은 수 또는 모두를 포함한다. Remote computer 49 may be other, only a personal computer, a server, a router, a network PC, a peer device or other common network node, only a memory storage device 50 is illustrated in Figure 1 although, typically, personal computer ( of the above-mentioned components relating to 20) contains a number, or both. 도 1에 도시된 논리 연결들은 LAN(local area network)(51) 및 WAN(wide area network)(52)을 포함한다. The logical connections depicted in Figure 1 include a LAN (local area network) (51) and a WAN (wide area network) (52). 이런 통신망 환경은 사무실, 기업체 전반 컴퓨터 통신망, 인트라넷 및 인터넷에서 일반적이다. Such network environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.
LAN 통신망 환경에서 사용될 때, 개인용 컴퓨터(20)는 통신망 인터페이스 또는 어댑터(53)를 통해 LAN(51)에 연결된다. When used in a LAN network environment, the personal computer 20 is connected to the LAN (51) via the communication network interface or adapter 53. WAN 통신망 환경에서 사용될 때, 개인용 컴퓨터(20)는 전형적으로 모뎀, 또는 인터넷과 같은 WAN(52)을 통해 통신을 구축하는 다른 수단을 포함한다. When used in a WAN network environment, the personal computer 20 typically includes other means for establishing communications over the WAN (52), such as a modem, or the Internet. 내부 또는 외부일 수 있는 모뎀(54)은 직렬 포트 인터페이스(46)을 통해 시스템 버스(23)에 연결된다. A modem, which may be internal or external (54) is connected to the system bus 23 via the serial port interface 46. 통신망 환경에서, 개인용 컴퓨터(20), 또는 그 일부, 에 관해 묘사된 프로그램 모듈은 원격 메모리 저장 디바이스에 저장될 수 있다. In a networked environment, program modules depicted on the personal computer 20, or portions thereof, may be stored in the remote memory storage device. 도시된 통신망 연결이 예시적이며, 컴퓨터들 간에 통신 링크를 구축하는 다른 수단이 사용될 수 있음을 이해할 것이다. Is exemplified by the illustrated network connections ever, it will be appreciated that other means may be used for establishing communication links between computers.
본 발명의 수많은 실시예들이 컴퓨터화된 시스템들에서 특히 매우 적합한 것으로 고려된다 할지라도, 본 명세서는 이런 실시예들만으로 본 발명을 제한하고자 하는 것이 아니다. It is also considered to be particularly well suited, although in many embodiments the computerized system of the present invention, this specification is not intended to limit the invention only of these embodiments. 이와 반대로, 본 명세서에서 사용되는 바와 같이, "컴퓨터 시스템"이란 용어는, 디바이스가 속성상 전자, 기계, 논리 또는 가상적인지에 무관하게, 정보를 저장 및 처리할 수 있고 그리고/또는 디바이스의 행위 또는 실행을 제어하기 위하여 저장된 정보를 이용할 수 있는 임의의 모든 디바이스들을 포함하려고 의도된다. Conversely, as used herein, "a computer system" refers to, the device is independent of whether the nature, electronic, mechanical, logical, or virtual, to store and process information, and and / or actions of the device, or It is intended to include any and all devices that can access information stored for controlling execution.
본 발명의 몇몇 실시예들에 있어서, DRS는 데이터베이스를 배경에서 유지 및 보수하여 DBFS의 일반 정상상태를 보호하는 쓰레드이다. In some embodiments of the invention, DRS is a thread that maintains and maintenance of the database in the background protect normal steady state of the DBFS. 도 2는 DBFS 내의 DRS의 구조를 나타내는 블록도이다. Figure 2 is a block diagram showing the structure of the DRS in the DBFS. 도면에서, 운영 시스템 레벨 서비스를 복수의 응용 프로그램들(212, 214, 216)에 제공하는 운영 시스템(202)은 지속적 데이터 저장소 (232)에 논리적으로 연결된 DBFS(222)를 포함한다. In the figure, the operating system 202 providing operating system level services to a plurality of applications (212, 214, 216) comprises a DBFS (222) logically coupled to a persistent data store (232). 또한, 운영 시스템(202)은, 지속적 데이터 저장소(232) 내의 복수의 페이지(234, 236, 238)에서 페이지 오류(a page error)(240)가 발견될 때마다 DBFS(222)에 의해 호출되는 DRS(242)를 포함하며, 그 다음, DRS(242)는 페이지 오류(240)에 응답하여 수리 동작을 수행한다. In addition, the operating system 202, persistent data storage 232, a page fault in a plurality of pages (234, 236, 238) in the (a page error) (240) is each time found to be called by the DBFS (222) includes a DRS (242), then, DRS (242) performs a repair operation in response to the page fault (240).
본 발명의 다양한 실시예들에 대해, DRS는 다음 특징들을 포함할 것이다: (1) 모든 페이지 유형들에 대해 페이지 레벨에서 데이터 손상에 응답하고 교정하는 것; For the various embodiments of the invention, DRS will include the following features: (1) responsive to data corruption at the page level, and correction for all page types; 및 (2) (a) 인덱스 페이지 손상(클러스터되고 클러스터되지 않음); And (2) (a) the index page corruption (a cluster is not the cluster); (b) 데이터 페이지 손상; (B) data page injury; 및 (c) 로그 파일의 페이지 손상을 위한 복구(재구성 또는 복원)의 제2 레벨을 시도하는 것. And (c) of the first to try the two-level recovery (restored or reconstructed) for damaged pages in the log file. 본 발명의 특정 실시예들은 다음의 것들을 포함하는, 하지만 이에 제한되지는 않는, DRS를 위한 특정 기능을 더 포함한다: (i) 수리/복원 데이터 손상 경우들을 핸들링하는 것; Specific embodiments of the present invention further includes the specific feature for, DRS does not, however limited to include the following of: (i) to handle the case repair / restore data corruption; (ii) 시스템의 신뢰성과 이용성을 개선하는 것; (Ii) to improve the reliability and availability of the system; 및 (iii) 필요하면 제3자가 데이터베이스 또는 저장 엔진 문제들을 해결하도록 DRS 오류/이벤트 이력표를 유지하는 것. And (iii) if necessary, a third party to maintain a DRS error / event history table to solve the database or storage engine problems.
본 발명의 특정 실시예들은 DRS가 확장가능하여, DBFS가 해제된 후에 복구 정책들 및 탐지 메카니즘들이 업데이트될 수 있음을 제공한다. Specific embodiments of the present invention provide that the DRS is to expandable, DBFS has been released after the recovery policies and detection mechanisms may be updated. 여러 실시예들은 DBFS 데이터베이스가 온라인으로 유지되는 동안 수리를 실행하는 DRS에 관한 것이다. Various embodiments are directed to a DRS that run repairs while the DBFS database remains online. 여전히 다른 실시예들은 DBFS 저장소로의 전체 액세스(즉, 시스템관리자 권한)를 가지고 실행하는 것에 관한 것이다. Still other embodiments are directed to run with full access (i. E., System administrator) to the DBFS store. 여전히 다른 실시예들은 실시간으로 실패들을 탐지하고 반응하는 능력을 가질 것이다. Still another embodiment will have the ability to detect and respond to the real-time failure. 여러 실시예들에서, DRS 수리는 데이터로의 변경 단위가 관리되는 레벨에서(즉, 항목-기반 DBFS에 대한 "항목" 레 벨에서) 트랜잭션이 될 것이다. In various embodiments, DRS repairs on the level at which the change to the data management unit (that is, the item-in "entry" level for based DBFS) to the transaction. 마지막으로, 다양한 실시예들에서, 수리들은 항목을 완전 복구하거나 또는 그것은 그것의 변경들을 취소할 것이고, 재부팅이 그 프로세스를 통해 중간에 실행되더라도 DRS는 복구/복원 작업을 계속하는 능력을 가질 것이다. Finally, in various embodiments, the repairs are complete recovery items, or it will be canceled them of the change, even if a reboot is run midway through the process, DRS will have the ability to continue to repair / restore operations.
본 발명의 여러 실시예들에서, DRS는 SQL 이벤트들에 가입하여, SQL이 일반 이벤트를 시작하면, DRS는 그것을 인터셉트하여 반응할 것이다(823/824 이벤트들을 포함하지만, 이에 제한되지는 않는). In various embodiments of the present invention, the DRS will subscribe to SQL events, SQL is started when a normal event, DRS will respond to intercept it (including 823/824 events, however, is not limited). 추가로, 본 발명의 다른 양태는 DRS가 특정하게 핸들링하는 오류 조건들에 대해 DRS-고유의 이벤트들을 전송하기 위해 수정되는 데이터베이스 엔진에 대한 것이다. In addition, another aspect of the invention is for the database engine, which is modified for transmitting DRS--specific events for error conditions that the DRS is particularly handling.
본 발명의 다양한 실시예들에 대해, DBFS가 디스크로부터 페이지들을 읽거나 쓸 때마다 손상들이 탐지될 것이고, 이 경우, SQL은 손상의 유형에 따른 오류들 중의 하나를 생성할 것이고, 또한 특정 DRS 이벤트들을 시작하여 그것에게 특정 오류 조건들을 통지할 것이다. For the various embodiments of the invention, DBFS is will be damaged are detected for each read a page from the disk or written to, in this case, SQL will generate one of the error according to the type of damage, and the specific DRS events starting the will notify it to specific error conditions. DRS는 이들 오류들을 수신하여, 그들을 프로세싱을 위한 인입 큐(incoming queue)에 배치시킬 것이다. DRS will receive those errors, it will be placed in the incoming queue (incoming queue) for processing them.
본 발명의 여러 실시예들에서, 페이지가 손상되었는지를 확인하는 것은 다음의 것들을 포함하는, 하지만 이에 제한되지는 않는, 다양한 수단들에 의해 성취된다: (a) 페이지에 대해 체크섬(checksum)을 검사하는 것, 체크섬이 무효하면, 페이지는 손상되었다고 고려된다, 또는 (b) LSN(log serial number)이 로그 파일의 끝 이상인지를 검사하는 것(여기서, LSN은 각 트랜잭션마다 증가되는 정수이어서, 로그의 최종 트랜잭션이 LSN 432이고 더 큰 LSN을 가진 페이지가 발견되면, 쓰기 장 애 오류가 발생해야 한다). In various embodiments of the present invention, it is to determine whether the page is corrupted is accomplished by, but this is not limited to, a variety of means, including those following: checking a checksum (checksum) for (a) page that, if the checksum is invalid, the page is considered to have been damaged, or (b) to check whether the LSN (log serial number) over the end of the log file (where, LSN is an integer then log that is incremented for each transaction that Once the final transaction LSN 432 and the page is found with greater LSN, and writing disability errors have occurred). 이 관점에서, DBFS의 동작들에 영향을 미칠 수 있는 4 가지 주요 유형들의 페이지 손상들(버그 등과 같은 다른 소스들에 추가하여)이 존재하고, 이들 4 가지 유형들은 찢어진 페이지, 매체 마멸, 하드웨어 장애, 및 쓰기 장애를 포함한다. From this point of view, this (in addition to other sources, such as bugs) existing pages damage to their four main types that can affect the the DBFS operation, these four types are torn page, the media attrition, hardware failures It includes, and writing disabilities. 찢어진 페이지는 데이터 페이지가 항목별로 정확하게 쓰이지 않았을 때 발생하므로, 쓰기 동안 단지 페이지의 섹터들 중의 일부만이, 예를 들어, 전력 장애 또는 섹터 쓰기 장애와 같은, 장애 이벤트 전에 디스크에 기록되므로 페이지의 임의의 부분이 손상될 수 있다. Torn page because generated when the data page has not obsolete precisely itemized, only a subset of the sectors of the page, for example, are written to disk before the power failure or fault events such as sector writing failure of the page random while writing there are parts it could be damaged. 매체 마멸은 데이터 페이지 비트들이 물리적 매체 마멸에 의해 손상될 때 발생한다. Media attrition occurs when the page data bits to be corrupted by physical media attrition. 하드웨어 장애는 버스, 제어기, 또는 하드 디스크 디바이스에 관련된 다양한 이유들에 대해 발생할 수 있다. Hardware failures can occur for a variety of reasons related to the bus, controller, or hard disk device. 쓰기 장애에 대해, 이들 오류들은 IDE 드라이브들이 디스크에 쓰는 순서를 보장할 수 없고, 특히 IDE 드라이브는 쓰기-캐슁(write-caching)을 가동하여(턴온됨(turned on)), 데이터 저장소에의 쓰기는 장애가 발생할 수 있음이 가능하다는 사실로부터 생겨난다. Write in to activate the caching (write-caching) (the turn ondoem (turned on)), a data store - for a write failure, these errors are IDE drives are not able to guarantee the order in writing to the disc, particularly IDE drive letter It arises from the fact that it is possible that a failure may occur. 쓰기 장애의 부분적 연속물이 발생하지만, 예를 들어, 전력 중단으로 인터럽트(interrupt)되면, 예를 들어, 연관된 로그 엔트리들이 기록되기 전에 데이터 페이지가 디스크에 기록되는 것과 같은 여러 오류들이 발생할 수 있다. Write a series of partial failure, but for example, when a power failure interrupts (interrupt), for example, before the associated log entries recorded data page can cause several errors, such as those recorded on the disc. 장애 오류들이 데이터 페이지들의 LSN(log sequence numbers)을 검사하여 탐지될 수 있는 한편, 모든 페이지를 읽는 것보다 더 쉽게 이것을 수행하는 방법이 없다. That failure errors can be detected by checking the LSN (log sequence numbers) of data pages Meanwhile, there is no easier way to do this than to read all the pages.
데이터 페이지들: 데이터 페이지는, 클러스터된 인덱스 종단(leaf) 페이지들을 포함하는, 사용자 데이터를 가진 임의의 페이지인 것으로 고려된다. The data page is a data page, including the clustered index end (leaf) page, is considered to be any page with the user data.
인덱스 페이지들: 이들 페이지들은 단지 인덱스 정보를 포함하고, 그들은 클러스터되지 않은 인덱스 페이지들 및 클러스터된 인덱스의 비종단(non-leaf) 페이지들을 모두 포함한다. The index page: these pages should contain only includes all the index information, and they ended the non (non-leaf) page in the non-clustered index pages and clustered index.
시스템 페이지들: 이들 페이지들은 GAM, SGAM, 및 부트 페이지들을 포함하고, DRS가 이들 페이지들을 위해 특정한 복원 지원을 갖지 않을 수 있지만, DRS는 이들 페이지들에 페이지 레벨 복원을 시도할 것이다; System pages: these pages, but they are, and DRS include GAM, SGAM, and boot pages may not have the specific support for restoring these pages, DRS will attempt to page-level restore to these pages; 임의의 이벤트에서, 페이지 레벨 복원이 실패하면, DRS는 비상 복원(본 명세서에서 나중에 논의됨)을 시도한다. If in any event, the page-level restore fails, DRS attempts to restore emergency (discussed later herein).
복구불능 페이지들: PFS(Page Free Space) 페이지 또는 5개의 시스템 표들(Sysrowsetcolumns, Sysrowsets, Sysallocunits, Syshobtcolumns, Syshobts)로부터의 페이지들은 이 클래스의 페이지들을 포함하고, DRS는 이 경우에 전체 데이터베이스를 복원할 것이다. The recoverable Page: from the PFS (Page Free Space) pages or five system tables (Sysrowsetcolumns, Sysrowsets, Sysallocunits, Syshobtcolumns, Syshobts) comprise the pages of this class, DRS is to restore the entire database, in this case, will be.
로그 페이지들: 이들은 트랜잭션 로그에 속하는 페이지들이고, DRS는 그들이 손상될 때(본 명세서에서 나중에 논의됨) 비상 수리를 시도할 것이다. The log pages: these are the pages that belong in the transaction log, DRS when they become damaged (discussed later herein) will attempt an emergency repair.
본 발명의 여러 실시예들에서, 손상이 탐지될 때 정의되는 데이터 페이지 손상들의 3개의 구별되는 카테고리들을 리졸브(resolve)하기 위해 DRS는 디자인되고, 3개의 카테고리들은 다음을 포함한다: (1) 데이터베이스 부착 동안; In various embodiments of the invention, in order to resolve (resolve) the three distinct categories that of the data page corruption is defined when damage is detected DRS is designed, three categories include: (1) during a database attach; (2) 정상 온라 인 동작들 동안; (2) during normal online operation; 및 (3) 트랜잭션 롤백(rollback) 동안. And (3) the transaction rollback (rollback) over.
도 3a는 데이터베이스 FPM에 의해 DBFS로 데이터 저장소들의 부착을 설명하는 블럭도이다. Figure 3a is a block diagram for explaining the attachment of the data store to the DBFS database by the FPM. 도 3b는 손상된 페이지들이 데이터베이스 부착 동작 동안 탐지되고 교정되는 프로세스를 설명하는 흐름도이다. Figure 3b is a flow chart illustrating the process that is detected and corrected during the attachment operation to the database damaged page. 일반적으로, 데이터베이스 파일 특성 관리자(DBFPM)(302)는 DBFS 저장소들(304, 306, 및 308)의 부착과 분리를 관리한다. In general, the database file attributes administrator (DBFPM) (302) manages the attachment and separation of the DBFS store (304, 306, and 308). 단계(352)에서, DBFPM(302)가, 예를 들어 DBFS 저장소(304)와 같은 저장소를 부착할 때, 트랜잭션 로그(314)에서의 크래쉬의 시간에 임의의 활성화된 트랜잭션들(324)이 존재하는지(예를 들어, 임의의 완료되지 않은 트랜잭션들)를 단계(356)에서 판정하기 위해 SQL은 단계(354)에서 크래쉬 복구를 실행하고, 만약 그렇다면, 단계(358)에서, SQL은 계속하기 전에 데이터베이스의 크래쉬 복구를 수행한다. In step (352), DBFPM (302) is, for example DBFS for attaching the storage, such as storage 304, to any activation of the transaction at the time of the crash at the transaction log 314, 324 is present that in order to determine at step 356 (e.g., the transaction is not any completion of) SQL runs crash recovery in step 354, and if so, at step (358), SQL is before continuing It performs crash recovery of the database. 크래쉬 복구 동안, SQL은 정상적으로는 (a) 최종 검사점 후에 트랜잭션 로그를 분석하고, (b) 디스크에 기록된 것으로 발견되지 않는 로그의 임의의 동작들을 재실행(redo)하고, 및 (c) 완료되지 않은 임의의 트랜잭션들을 실행취소(undo)할 것이다. During a crash recovery, SQL is normally (a) since the last checkpoint and analyze transaction logs, (b) a is not found (redo) re-execute any of the operations of the log to be written to disk, and (c) not complete will not be undone (undo) any of the transactions. 단계(360)에서, 복구 동안 발견된 오류가 없으면, 데이터베이스는 단계(362)에서 성공적으로 부착된다. In step 360, if there is no error found during recovery, the database is successfully attached to the step 362. 그러나, 단계(360)에서 크래쉬 복구 동안 오류가 발견되면, SQL은 단계(364)에서 데이터베이스 부착을 실패할 것이다. However, if an error is detected during crash recovery in step (360), SQL will fail to attach the database in step 364.
이 "데이터베이스 부착" 시나리오는 그것이 저장소가 부착될 때마다 호출되므로 중요하다. The "Database Attach" scenario is important because it calls whenever the store is attached. 저장소들은 운영 시스템(예를 들어, 윈도우즈 운영 시스템)이 시작될 때마다, 및 외부 드라이브들(예를 들어, 파이어와이어, USB 등)이 컴퓨터로부 터 부착되거나 분리될 때마다 부착된다. Storage systems are operated each time (for example, a Windows operating system) is started, and the external drive (e.g., Firewire, USB, etc.) attached to the emitter unit to the computer or is attached every time the separation. 데이터베이스 부착 시나리오들은 크래쉬 복구 및 그러므로 찢어진 페이지들(불완전한 기록)의 탐지를 호출하고, 그러므로 사용자가 물리적으로 하드웨어를 제거하는 잠재성 때문에 DRS가 이 경우를 핸들링하는 것이 바람직하다. Database attachment scenarios is desirable that the DRS handling this case, because the potential to invoke the detection of crash recovery, and therefore torn pages (incomplete record), and therefore the user removes the hardware physically.
그러나, 본 발명의 다양한 실시예들에 따라 DSR을 사용할 때, 도 4a의 흐름도에 의해 도시된 바와 같이 행위는 약간 다르다. However, when using the DSR, according to various embodiments of the present invention, it acts as illustrated by the flow chart of Figure 4a is a bit different. 먼저, 단계(402)에서, DBFPM은 DBFS 데이터베이스들을 부착하고, 단계(404)에서, SQL은 크래쉬 복구를 실행하고, 단계(408)에서, 데이터베이스를 온라인으로 불러오는 시도를 한다. First, at step (402), DBFPM is attached to the DBFS database, in step (404), SQL is to try loading the database online in a step (408) and run crash recovery. 데이터베이스가 단계(410)에서 크래쉬 복구로부터의 오류가 없이 부착되면, SQL은 성공을 리턴할 것이고, 데이터베이스는 단계(452)에서 (온라인) 부착될 것이다. When the database is attached from the crash without any error recovery step (410), SQL will return a success, the database will be attached (online) in step 452. 그러나, 오류들이 있으면, 단계(412)에서, DRS는 데이터베이스가 트랜잭션에서 일관적인지를 판정하기 위해 데이터베이스를 평가할 것이다. However, if errors are, in step (412), DRS is a database to be evaluated to determine if the database is consistent in the transaction.
단지 데이터베이스가 트랜잭션 롤백 동안에 실패를 경험했으면, 즉, 물리적 또는 논리적 실행취소(undo) 오류 -또는 크래쉬 복구 동안 알지 못하는 오류가 발생되었으면-, 데이터베이스는 일관적이지 않다. Once the database is just experience a failure during a transaction rollback, ie, physical or logical undo (undo) the error - do not know if or during crash recovery Error -, the database is inconsistent. 데이터베이스가 단계(412)에서 트랜잭션에서 일관적이면, 단계(414)에서, DRS는 복구 동작이 완료될 때까지 수리를 지연할 것이다 -부연하면, DRS는 데이터베이스 상태를 데이터베이스 부착에 대해 일관적이라고("성공") 선언할 것이고, 그 다음, 복구가 완료된 후에 탐지된 손상들에 대한 수리를 시작하기 위해 기다리고, 데이터베이스는 크래쉬 복구와 임의의 충돌을 피하기 위해 단계(452)에서 부착된다. If the database is consistent in the transaction at step 412, at step (414), DRS is a recovery operation is to be will delay the repair until complete - that when amplification, DRS has been consistent for the database attached to the state of the database ( "success") will be declared, and then, waiting to start the repair of the damage detected after the recovery is completed, the database is attached in step 452 in order to avoid any collision with crash recovery.
일단 복구가 완료되고 부착이 단계(452)에서 성공적이면, 단계(478)에서 지연된 수리들이 존재하면, 단계(480)에서 DRS는 수리들을 시작할 것이고, 단계(482)에서, 먼저 손상에 대한 페이지 레벨 복원을 호출하려고 시도할 것이다. If once recovery is complete and the mounting is successful in step 452, if the delayed repair are present at step 478, at step (480) DRS will start the service, in step 482, first, the page level for the damage It will attempt to call the restore. 페이지 레벨 복원이 실패하거나, 또는 단계(484)에서 불가능하면, 단계(486)에서, DRS는 그것이 인덱스 페이지의 실패 때문인지를 확인할 것이고, 만약 그렇다면, DRS는 단계(488)에서 인덱스를 재구성할 것이다. If the page-level restore is impossible in failure, or step 484, in step (486), DRS is that it will verify whether due to the failure of the index page, and if so, DRS will reorganize the index in step (488) . 한편, 오류가 단계(490)에서 데이터 페이지에 존재하면, DRS는 단계(492)에서 데이터 페이지 복구를 시도할 것이다. On the other hand, if an error exists in the data page, in step (490), DRS will try to restore the data page in step 492. 그러나, DRS가 데이터베이스가 일관적이지 않거나 단계(490)에서 알려지지 않은/지원되지 않은 오류를 가진다고 판정하면, DRS는 즉시 데이터베이스를 오프라인으로 만들고(그러므로, 복구 동작을 종료함), 단계(494)에서 데이터베이스를 "서스펙트(suspect)"로서 표시를 할 것이고, 그 다음, 단계(496)에서, 비상 수리를 시도할 것이다. However, if the DRS database is inconsistent if either said to have unknown / unsupported errors that are determined in step (490), DRS creates an instant database offline (and therefore, terminates the recovery operation, in step 494) the database will be displayed as a "suspect (suspect)", in the next step (496), it will attempt an emergency repair.
도 5a는 쿼리 엔진이 본 발명의 다양한 실시예들에 대한 오류를 대면하는 온라인 동작들에서 DRS의 사용을 설명하는 흐름도이다. Figure 5a is a flow diagram illustrating the use of the DRS in-line motion facing the error for the various embodiments of the invention, the query engine present. 이 시나리오는, 최종 사용자가 DBFS에 대해 적당히 복잡한 쿼리를 실행하기 위해 운영 시스템 쉘을 사용할 때 및 그 쿼리의 실행 동안과 같은, DBFS의 정상 실행 시간 사용 동안의 것이고, 쿼리 엔진은 오류를 보고한다. In this scenario, the end user, such as during the execution of and the query when you use the operating system shell to run moderately complex queries against the DBFS, will during normal run-time use of the DBFS, the query engine will report an error. 이들 온라인 동작 상황들에서, 오류가 발생했을 때, 단 계(502)에서, DRS는 트랜잭션을 취소하여 그 오류를 고치려는 시도를 한다. In their online behavior in situations, when an error occurs, step (502), DRS is an attempt gochiryeo its failure to cancel the transaction. 단계(504)에서, DRS는 먼저 페이지 레벨 복원을 시도할 것이다. In step (504), DRS will first attempt to page-level restoration. 그러나, 페이지 레벨 복원이 불가능하거나 단계(506)에서 실패하면, DRS는 페이지 유형이 단계(508)에서 실패하는지를 판정할 것이다. However, when a page-level restoration is not possible, or failed in step (506), DRS will determine whether this type of page fails at step 508. 단계(510)에서, 그것이 인덱스 페이지의 실패이면, DRS는 단계(512)에서 인덱스 복구를 시도할 것이다. In step 510, if it fails, the index page, DRS will try to repair the index in step 512. 단계(514)에서 실패가 데이터 페이지에 있으면, DRS는 단계(516)에서 데이터 페이지 복구를 시도할 것이다. If there is a failure in step 514, the data page, DRS will attempt to recover the data pages in step 516. 실패가 단계(518)에서 시스템이나 로그 페이지 오류 때문이면, DRS는 단계(520)에서 비상 수리를 시도할 것이다. If the failure is due to the system or error log page at step (518), DRS will attempt an emergency repair in step 520. The 실패가 다시 단계(518)에서 복구불능의 오류(5개의 시스템 표, 또는 PFS 페이지)이면, DFS는 단계(522)에서 전체 데이터베이스를 자동 복구하거나, 또는 다른 경우에, 최종 사용자가 전체 데이터베이스를 복구하도록 촉구할 것이다. If errors recoverable from the back steps fail (518) (Five system tables, or PFS pages), DFS automatically recover the entire database in step 522, or in other cases, to recover the entire database by the end user that will be called.
오류가 트랜잭션 롤백 동안 발생하면, DRS는 데이터베이스를 오프라인으로 하고, 그것을 서스펙트로 표시하고, 및 크래쉬 복구를 호출하기 위해 데이터베이스를 재시작할 것이다. If an error occurs during a transaction rollback, DRS will restart the database to make the database offline, and calls for it to appear to suspect, and crash recovery. 그 다음, 프로세스는 본 명세서에서 앞서 개시된 크래쉬 복구 손상 탐지를 위한 방법을 재호출할 것이다. Then, the process will recall the previously described method for detecting a crash damage repair herein.
당업자들에게 잘 알려지고 쉽게 이해되는 바와 같이, 트랜잭션 일관성은 단 지 위임된 데이터만 디스플레이하는 것(또는 이용가능하도록 하는 것), 및 단지 정확한 데이터를 위임하는 것(지속적 저장소에 기록하는 것 및 트랜잭션을 로깅(logging)하는 것)에 관한 것이다. As it is well-known to those skilled in the art readily understand, transactional consistency (something or make available) to display only the data entrusted only if, and only to log on to (the persistent store to delegate the correct data and transactions the present invention relates to a logging (logging)). 이 관점에서, 데이터베이스는 크래쉬 복구 동안 모든 재실행 및 실행취소가 존중되는 한, 트랜잭션에서 일관적이다. In view of this, the database is in a consistent, transactions during crash recovery, redo and undo all respects. 그러므로, 다수의 유형들의 손상이 데이터 및 인덱스 페이지들에 존재할 수 있지만, 여전히 트랜잭션에서 일관적일 수 있다. Therefore, the damage of multiple types can exist on the data and index pages, but you can still jeokil consistent in the transaction.
본 발명의 다양한 실시예들은 이들 트랜잭션들의 다수를 온라인으로 수행하는 것은 종종 바람직하지 않음을 인식할 것이고, 그러므로, 이들 실시예들은 데이터베이스가 오프라인인 동안 모든 수리들을 수행하려고 시도한다. Various embodiments of the present invention will be aware of what to do the majority of their transactions online do not often desirable, therefore, these examples should try to perform any repairs while the database is offline.
SQL 오류가 발생한 때, DRS는 페이지 ID와 데이터베이스 ID만을 수신할 것이다. When a SQL error, DRS will receive only the page ID and database ID. 그 정보로부터, DRS는 페이지를 조사하여 그것이 확실히 무슨 유형의 페이지인지를 알아낼 것이다. From the information, DRS will examine the page and find out whether it's definitely what type of page. 이들 실시예들은 DRS가 손상 때문에 유실된 DBFS 항목들을 복구하려는 시도를 하는 경우, 데이터 페이지 및 인덱스 손상에 대한 복구 메카니즘들을 가진다. These embodiments When an attempt to recover the DRS is DBFS items lost due to corruption, and has a recovery mechanism for the data page and index damage. 그러나, 데이터베이스에서 GAM, SGAM, PFS, 부트 페이지 등을 포함하여 유실될 수 있는 다수의 다른 유형들의 페이지들이 존재한다. However, there are a number of different types of pages that can be lost, including GAM, SGAM, PFS, including in the database boot page. 통상적 DBFS들이 이들 유형들의 페이지들에 대해 특정 백업 및 복구 메카니즘들을 갖지 않는 한편, DRS는 페이지 레벨 복원을 호출하려고 시도할 것이다. DBFS are typically does not have a specific backup and recovery mechanism for these types of pages Meanwhile, DRS will try to invoke the page-level restore.
페이지가 손상되었으므로, DRS는 페이지 레벨 복원을 시도할 것이다. Because the page is damaged, DRS will attempt to page-level restore. 위임되지 않은 임의의 데이터가 유실될 것임을 사용자에게 보장할 수 있기 때문에 페이지 레벨 복원은 무반응일 것이다. Because the random data delegates not being able to guarantee to users that the page-level restore will be lost will be no reaction. 동일 기술이 임의의 표로부터의 페이지들에 적 용될 것이고, 복원되는 페이지나 표의 유형에 무관하게 방법은 변경하지 않는다. In the same technology it will ever be used on the page from any of the tables, regardless of the page to be restored or table type method does not change. 페이지 레벨 복원은 단지 페이지가 가장 최신의 스냅샷에서 존재하면 발생할 것이다. Page-level restore it will only occur when the page is present in the most recent snapshot of. 또한 유효한 트랙잭션 로그를 이용할 수 있어야 한다. It should also be able to enjoy a valid transaction log. 페이지가 가장 최신의 스냅샷에 있지 않으면, 당업자들에게 알려지고 이해되는 항목 레벨 복원 기술들을 사용하여 페이지를 복구해야 한다(백업 동작으로부터의 복원과 같은). If the page is not in the most recent snapshot, the entry-level restore using techniques known and understood by those skilled in the art should recover the page (such as a restore from backup operation).
페이지가 가장 최신 스냅샷에 존재하고 유효한 트랜잭션 로그가 있으면, 도 6에 도시된 바와 같이, DRS는 페이지를 복원하기 위해 다음 동작들을 수행할 것이다: (1) 단계(602)에서, 손상된 페이지의 페이지 ID를 결정하고; If the page is the most current present in the snapshot, available transaction log, as shown in Figure 6, DRS will perform the following operations to recover the page: (1) In step 602, the page of the damaged page determine the ID and; (2) 단계(604)에서, DBFS의 저장소의 가장 최신 스냅샷으로부터 손상된 페이지를 찾고 복사하고; (2) In step 604, copied from the repository the latest snapshot of the DBFS looking for pages that are damaged; (3) 단계(606)에서, 그 페이지에 적용하는 트랜잭션들을 롤링 포워드(rolling forward)하여 페이지에 온디스크(on-disk) 트랜잭션 로그를 적용하고; 3, in step 606, and apply the disc (on-disk), a transaction log on to the rolling forward (rolling forward), the transaction is applied to the page page; (4) 단계(608)에서, 온라인 데이터베이스에 복원된 페이지를 적용하고; (4) In step (608), and apply the Restore page in the online database; 및 (5) 단계(610)에 복원되는 페이지에 대한 지연된 트랜잭션들이 존재하면, 단계(612)에서 데이터베이스를 재시작해야 할 것이고(그러므로, 크래쉬 복구가 실행되어 지연된 트랜잭션들을 없앰), 그렇지 않으면 동작들은 단계(614)에서 계속한다. And (5) if there are deferred transaction for the page is restored to the step 610, it will need to restart the database in step 612 (elimination of the deferred transaction is, therefore, crash recovery), otherwise operations stage It continues at 614.
전술된 스냅샷에 대해, 당업자들에 의해 이해될 것처럼, VSS(Volume Shadowcopy Service)는 특정 볼륨들(예를 들어, NTFS 볼륨들)의 시간 스냅샷들에서 포인트를 관리하기 위한 방식을 제공한다. For the above-described snapshot, as will be appreciated by those skilled in the art, VSS (Volume Shadowcopy Service) provides a method for managing a point in time snapshot of a certain volume (e.g., NTFS volume). VSS 스냅샷들이 쓰기에 복사를 사용하여 볼륨의 쉐도우 복사를 관리한다, 즉, 디스크 페이지가 수정될 때마다, 그 페이지의 이전-이미지가 가장 최신 스냅샷의 저장 지역에 기록된다. The VSS snapshots to manage the shadow copy of the volume using the copy on write, that is, whenever the disk page is modified, prior to that page - is written in the storage area of ​​the image is the most recent snapshot. 타임워프 (TimeWarp)가 머신에서 가동될 때 -이것은 특정 DBFS와 그들의 대응하는 운영 시스템들에 디폴트일 수 있음-, 스냅샷들을 하루에 두 번의 디폴트 비율로 찍혀지고, 최대 63 스냅샷들이 관리된다. Timewarp when (TimeWarp) is to be operational in the machine - are managed are being stamped, the snapshot with two default rate on the day, up to 63 snapshots - this particular DBFS and may be a default on their corresponding operating systems. 스냅샷에 저장된 이전 이미지들을 사용하기 위해, 스냅샷이 찍힌 시간으로부터 현재 시간까지의 로그가 관리되고, 로그 절단(log truncation)은 타임워프 스냅샷 시간에만 발생하여서, 항상 최종 스냅샷으로부터 이용가능한 로그가 존재하도록 한다. To use a previously saved image in the snapshot, and log on to the present time management from the time the snapshot was taken, hayeoseo log cutting (log truncation) occurs only timewarp snapshot time available logs used always from the last snapshot and so it is present. 페이지 손상이 존재하는 경우, 페이지는 가장 최근의 스냅샷에서 이용가능하고, 로그는 그것을 복원할 그 페이지에 현재 지점까지 스냅샷으로부터 재생될 수 있다. If the page exists, corruption, and the pages are available in a recent snapshot of the log can be reproduced on the page that you want to restore it from the snapshot to the current point.
타임 워프(Time Warp) 스냅샷들 동안, 스냅샷의 DBFS 저장소가 복구된다. Time Warp (Time Warp) during the snapshot, the DBFS store the snapshot is restored. 이것은 스냅샷 데이터베이스의 복구에 의해 터치된 페이지들에 대해 페이지 레벨 복원이 불가능하도록 한다. It is not possible to restore the page level for the page by touching the recovery of the snapshot database. 이 문제를 해결하기 위해, SQL 서버 시점(viewpoint)이 스냅샷 볼륨에 대해 데이터베이스에 취해지고, 그 다음 데이터베이스가 복구된다 -즉, DRS는 페이지 레벨 복원을 위해 시점이 항상 사용될 수 있는 스냅샷 볼륨 및 페이지들에서 데이터베이스에 복구되지 않은 시점을 가짐-. To solve this problem, SQL Server, point (viewpoint) is being taken into the database for the snapshot volume, then the database is restored - ie, DRS is that time can be used all the time snapshot for page-level restore volume and the time has not recovered from the pages in the database.
시스템, 로그, 또는 알려지지 않은 페이지 수리에 대해 -즉, 로그 손상이 발생하거나 또는 DRS가 교정할 수 없는(예를 들어, 데이터 또는 인덱스) 실패들이 존재하면, DRS는 사용자에게 다음 옵션들을 제공할 것이다: (a) 전체 데이터베이스(저장소)를 복원하는 것; For the system log, or undiscovered pages repairs - that is, when the log damage or DRS exists that can not be corrected (for example, data or index) fails to, DRS will provide users with the following options: : (a) to restore the full database (store); 또는 (b) 비상 모드에 데이터베이스를 복구하는 것. Or (b) to restore the database to emergency mode.
비상 모드의 데이터베이스를 수리하기 위해, 손상-트랜잭션 로그 및 복구불능 데이터베이스 상황들로부터 복구하는 DBCC의 새 능력을 인식하는 것이 우선 중 요하다. To repair the database of the emergency mode, the damage - it yohada of the first to recognize the new capabilities of DBCC to recover from the transaction log and database unrecoverable situation. 그 다음, 데이터베이스가 복구될 수 없고, 사용할 수 있는 백업이 없으면, 도 7에 도시된 다음 액션들의 세트는 본 발명의 특정 DRS 실시예들에서 데이터베이스를 온라인으로 다시 불러올 것이다: (a) 단계(702)에서, 데이터베이스를 비상 모드로 세트하고; Then, it can not be the database is recovered, if there is no available backup, also a set of the following actions shown in Figure 7 is called up again, the database in certain DRS embodiment of the invention the line: (a) step (702 ) on, and set the database to emergency mode; (b) 단계(704)에서, (i) 과거 오류들을 데이터베이스 복구가 처리하도록 강제하고(로그로부터 가능한 많은 데이터를 얻지만 트랜잭션에서 비일관적 데이터베이스를 남김), (ii) 손상 로그 파일들을 던져버리고 새 것들을 생성하고, (iii) 전체 데이터베이스 수리를 실행하여 데이터베이스를 구조적으로 일관적인 상태로 가져오는(롤백되거나 수행취소될 수 없는 '항목적인' 일방 동작, 이것은 수동으로 파일들을 편집하지 않고 그런 상황에서 데이터베이스를 복구하는 유일하게 가능한 방식임) 비상 모드에서 특별 의미를 갖는 'DBCC CHECKDB(database, REPAIR_ALLOW_DATA_LOSS)'를 실행하고; (B) In step (704), (i) away forced them past the error database restore to process (just get as much data as possible from the log leaving the inconsistent databases from the transaction), throw the (ii) damage to the log file create new ones and, (iii) an entire database by running repairs to bring the database to a consistent state structurally (rollback or canceled "item of" one operation can not be performed, which in such situations without having to edit the file manually the only possible way to restore the database) and run 'DBCC CHECKDB (database, REPAIR_ALLOW_DATA_LOSS)' has a special meaning in emergency mode; 및 (c) 이제 데이터베이스는 물리적으로 일관적이고, DSR은 단계(706)에서 전체 저장소에 CC를 실행한다. And (c) database now, physically consistent, DSR is running the CC on the entire store at 706. 이들 단계들의 성공적 실행은 데이터(항목-기반 DBFS의 항목들)가 일관적일 것을 보장해야 하지만, 이것은 특정 응용 프로그램들이 트랜잭션으로 일관적이지 않을 것임을 의미할 것이다. Successful execution of these steps, the data - should ensure that the jeokil (item of item-based DBFS) consistent, but this will mean that you do not have a specific application are consistent with the transaction.
2개의 유형들의 인덱스 페이지들이 존재한다: 클러스터되지 않은 페이지들 및 클러스터된 비종단 페이지들. In the non-clustered and clustered page unterminated pages: 2 pages indexed there are of two types. 데이터를 가진 인덱스 페이지들(클러스터된 인덱스 종단 페이지들)은 데이터 페이지들로서 고려된다. The index page with the data (in a clustered index page termination) is thought of as a data page. 이것을 염두에 두고, 복구가능한 인덱스 실패들에 대해, DRS는 오프라인 인덱스 재구성을 사용하여 인덱스를 수리하려는 시도를 한다(여기서, 데이터베이스는 이 수리 동안 온라인일 것인 한 편, 단지 인덱스만이 오프라인일 것이다). With this in mind, for the recoverable index failed, DRS will attempt to repair the index using the reconstructed offline index (where the database is the one piece that will be online for repairs, it will be just the index only offline ). 수리가 실패하면, DRS는 인덱스를 드롭(drop)하고, 인덱스를 재생성하려는 시도를 한다. If the repair fails, DRS will drop the index (drop), and attempt to re-create the index. 그 다음, 그것이 또한 실패하면, DRS는 인덱스를 모두 드롭하거나, 또는 다른 경우에, 인덱스를 가동중지하여, 나중에 재구성하려는 시도를 할 것이다(및 아마도 성공할 때까지 무한정 그것을 수행할 것임). If that, then it will also fail, DRS will drop all indexes, or in other cases, to shut down the index (which will be carried out indefinitely, until it succeeds, and perhaps) later will attempt to reconstruct.
데이터 페이지 복구에 대해, DRS가 핸들링되는 오류들 중의 하나를 수신하고 페이지가 데이터 페이지임을 판정하면, 그것은 복구를 시도할 것이다. For the data page recover, upon receiving one of the error handling, and a DRS it is determined that the page is a data page, which will attempt to recover. 이것은 SQL 서버 동작의 임의의 상태(DB 부착, 온라인 동작, 및 롤백) 동안 발생할 수 있다. This can occur during any state of the SQL Server behavior (DB attached, online behavior, and rollback). 도 8에 도시된 바와 같이, DRS가 단계(802)에서 데이터 페이지 오류를 탐지하면, 단계(806)에서 실패하는 단계(804)에서의 페이지 레벨 복원을 시도한 후에, DRS는 다음을 수행할 것이다: (a) 단계(808)에서, 손상된 페이지의 페이지 ID를 수신하고 이전에 논의된 것처럼 페이지 유형을 판정하여(데이터 페이지 손상이 주어지면, DRS는 페이지를 액세스하려고 시도하는 다른 트랜잭션들을 해결할 필요는 없음) 손상된 페이지의 유형을 판정하고; As shown in Figure 8, when the DRS is detected, the data page fault in step 802, after trying a page-level restoration in step 804 fails in step (806), DRS will perform the following: (a) in step 808, receives the page ID of the corrupted page and determines the type of page, as discussed previously (given the data page corruption, DRS will not necessarily solve other transactions that attempt to access the page ) is damaged determines the type of page; (b) 단계(810)에서, 유실된 항목 ID들의 범위를 얻고(Tx를 시작하고, 클러스터된 키들과 매치하지 않는 클러스터되지 않는 인덱스로부터 모든 인덱스 키들을 리턴하는 DBCC CHECK 표(table, REPAIR_ALLOW_DATA_LOSS)를 실행하고, 클러스터되지 않은 인덱스 키들은 항목 ID들을 포함하여, DRS는 이들을 추출할 수 있고, 내부 표에 이들을 기록할 수 있음), 및 (c) 단계(812)에서, DBFS가 일관적임을 보장하기 위해 WCC(여기서, WCC는 이들 항목 ID들을 수리함)에 항목 ID들과 표 이름들의 리스트를 전달하고(및 저장소의 나머지 부분을 검사함), Tx에 위임하여 DRS가 이들 복구들을 취소하고 재시도하도록 한다. (B) to obtain a range of from the step 810, the missing item ID (the DBCC CHECK TABLE to start the Tx, and returns all the index keys from the cluster keys that are not clustered indexes do not match (table, REPAIR_ALLOW_DATA_LOSS) execution, non-clustered index keys, including the item ID, DRS is to ensure in and to extract them, it can be recorded them within a table), and (c) (812), DBFS is consistent eligibility for WCC also delivered a list of items ID and table name (here, WCC repair also these items ID) and (and also check the rest of the store), delegated to the Tx DRS canceled these recovery and restart and to. 손상된 페이지들의 세트가 존재하면, DRS는 추가 프로세싱을 위해(백업으로부터 페이지를 복원하여서와 같이) 그들을 핸들링하기 전에 모든 손상된 페이지들로부터 모든 항목 ID들을 알아낸다. When a set of corrupted pages exist, DRS finds out all item ID from all the damaged page before handling them for further processing (such as hayeoseo restoring page from the back).
페이지 레벨 복원이 잘 동작하면 사용자 데이터는 유실되지 않을 것임을 DRS는 보장할 수 있으므로, 페이지 레벨 복원이 일어나는 동안 사용자는 대부분 단지 기대된 것보다 더 느린 응답만을 알아챌 것이므로 DRS는 단지 명목상으로 사용자에게 알릴 필요가 있다. If the page-level restore operation well, so your data can ensure that DRS is not lost, the user while the page-level restore happens mostly because notice only a slower response than the one just expects DRS will only need to notify the user nominally a. 특정 실시예들에서, 사용자는 아무런 통지를 수신하지 않을 것이다(이것은 고작 몇 초가 걸릴 것이기 때문이므로); In certain embodiments, the user will not receive any notification (Since this is because at best take a few seconds); 그러나, 다른 실시예들에 대해, DRS는 DRS가 페이지를 복원했다는 사실을 "이벤트" 로그 엔트리가 캡춰하도록 할 것이다. However, for other embodiments, DRS will DRS is the fact that the restoring page "event", the log entry to the capture. 복원되는 페이지에 대해 미해결의 활성화된 트랜잭션이 존재하는 경우의 최악의 시나리오에서, 데이터베이스가 분리되고 재시작되어야 하고(크래쉬 복구를 실행시키기 위해), 그러므로 데이터베이스로의 모든 접속이 종료될 것이다. In the worst case scenario for the activation of the outstanding transactions exist for the page to be restored, it will be separate from the database is restarted and all connected to (in order to run the Crash Recovery), therefore the database shutdown. 응용 프로그램들은 이 가능성을 염두에 두고 이미 디자인되어야 한다; Applications should be already designed with this possibility in mind; 그러나, 이것은 서투르게 디자인된 응용 프로그램들이 "공중에 뜨는(hang)" 원인이 될 수 있다. However, this program is poorly designed applications that can be "floating (hang) in the air" causes. 그러므로, 본 발명의 특정 실시예들은 이 바람직하지 못한 결과를 피하려는 노력에서 모든 그런 응용 프로그램들을 사용자가 닫도록 하는 그런 이벤트로만 유도될 수 있는 상황들에 대한 사용자 통지를 제공한다. Therefore, certain embodiments of the present invention provide a user notification for situations that can be derived only such event that causes the user to close all such applications in an effort to avoid this undesirable result.
DRS의 동작을 설명하기 위해, 본 명세서에서 사용자 경험 및 사용자에게 비 가시적인 DRS가 수행하는 것을 일반적으로 특성화하는 몇 개의 상황들이 기재된다. To illustrate the operation of the DRS, are several situations in general characterized by performing the user experience, and user non-visible DRS is described herein.
애비(Abbey: 사람의 성명)는 지난주에 그녀가 수정한 모든 문서들을 찾기 위해 WinFS 쿼리를 수행하고 있다. Abbey (Abbey: name of person) is carrying out the WinFS query to find all documents that she corrected last week. 이 쿼리 동안, WinFS는 보통 때보다 좀 더 시간이 걸림을 알아챈다. During the query, WinFS is a little more time than usual noticed the jam. 사실상 그녀의 후속 쿼리들의 일부도 또한 좀 느리다. In fact, some of her subsequent queries are also a bit slow. 그 다음, 그녀는 그녀의 작업줄(task bar)에 작은 풍선을 보게된다. Then she sees a small balloon in her line of work (task bar). 이 풍선은 신뢰성 이슈가 그녀의 머신에서 발견되었고 윈도우즈가 오류들을 수리할 동안 인내심을 가지고 기다릴 것을 보고한다. The balloon is reported that the reliability issues have the patience to wait for the machine to her were found in the Windows repair the error. 잠시 후, 다른 풍선이 나타나서 애비에게 인덱스가 성공적으로 재구성되었음을 통지한다. After a while, the other balloons appear to notice that the index for Abby successfully rebuilt. 애비는 그녀의 컴퓨터가 이제 성능이 나아진 것 같아서 기쁘다. Abby was glad that her computer now like to better performance.
장면들 뒤에서, DRS는 인덱스 손상을 탐지하고 수리한다. Behind the scenes, DRS will detect and fix index corruption. 그것은 인덱스를 오프라인으로 하고(그러므로 성능이 느려짐), 그것을 재구성하고, 및 그 다음, 인덱스를 다시 온라인으로 만든다. It indexes offline (and therefore slower performance), and reconstructing it, and the next, creating an index online.
번개치는 거친 날씨 중에 토비는 숙제로서 아담 스미스에 대한 에세이를 쓰고 있고, 정기적으로 저장하고 있다. During lightning rough weather Toby and write an essay about Adam Smith as homework, it is regularly saved. 에세이를 거의 90% 정도 썼을 때, 토비의 전체 숙제에 전력이 중단된다. When he wrote the essay by almost 90%, the power is interrupted to the entire homework Toby. 토비는 랩톱에서 실행하는 중이 아니고, 전지 백업을 가지고 있지 않다. Toby is not trying to run on a laptop, do not have a battery backup. 토비에게 다행히도, 약 30분 후에 전력이 다시 재개된다. Fortunately for Toby, it will resume power again after about 30 minutes. 토비는 컴퓨터에 로그온하고, 그의 에세이를 열려고 시도한다. Toby is logged on to the computer, and then try to open his essay. 그것이 보통 때보다 조금 더 시간이 걸리는 것 같아 토비는 머리를 긁적인다. I think it takes a little more time than usual Toby Indah scratching their heads.
장면들 뒤에서 일어난 일은 토비의 에세이 문서 항목이 전력이 유실되었을 때 그의 하드 디스크 드라이브에 의한 찢어진 페이지 쓰기 때문에 손상된 것이다. What happens behind the scenes when the topic of the essay documents Toby when power is lost to damaged due to torn page of a letter on his hard drive. DBFS가 재시작되었을 때, DRS는 이 데이터 페이지 손상을 탐지하고, 그 데이터의 복구를 시도한다. As the DBFS is restarted, DRS will detect this corrupted data page, and attempt to recover the data. DRS는 자동 스냅샷으로부터 데이터 페이지를 복원하려고 자동으로 시도한다. DRS will automatically attempt to try to restore the data pages from the automatic snapshots. 토비가 그의 작업을 정기적으로 저장했기 때문에, 가장 최신 스냅샷에 에세이의 복사본이 존재하였다. Because Toby had saved his job on a regular basis, a copy of the essay was present in the most recent snapshot. 그러므로, DBFS는 손상된 페이지들을 자동으로 복원할 수 있었다. Therefore, DBFS was able to automatically restore the damaged page.
수잔은 그녀의 디지탈 카메라를 사랑하고, 현재까지 최근 2년 동안 그녀의 자식들의 5800장의 사진들을 찍어왔다. Susan has been taking photos of 5,800 of her children for the last two years and I love her digital camera to date. 이들 5800장 중에, 그녀는 컴퓨터의 WinFS에 3000장이 넘는 사진들을 보관해왔다. Of these 5,800 pages, she has kept the more than 3,000 sheets of photos on the computer WinFS. 수잔에게 불행히도, 이들 중요한 사진들을 가진 그녀의 하드 디스크 드라이브가 디스크의 소수의 섹터들을 손상시켰다. Unfortunately for Susan, her hard disk drive with a handful of these important pictures were damaged sectors of the disk. 이들 손상된 섹터들은 이제 수잔의 사진들 중의 10장을 손상시켰다. They were damaged, corrupt sectors are now Chapter 10 of the pictures of Susan. 수잔이 이들 사진들을 일람하려고 시도할 때, 그녀는 운영 시스템 쉘로부터 오류를 얻고, 백업으로부터 이들 사진들을 복원할 것이 촉구된다. When Susan tries to list those photos, she is encouraged to get an error from the operating system shell, restore from a backup of these pictures. 수잔은 그 촉구를 따르고, 그녀의 백업 매체(집 드라이브)를 찾고, 그 다음, 디스크로부터 항목들을 복원한다. Susan followed his calling, looking at her backup medium (Home Drive) and then to recover the items from disk.
장면들 뒤에서, DBFS는 페이지 레벨 복원을 시도하고 있다. Behind the scenes, DBFS is trying to restore the page level. 그러나, 이들 사진들이 수정되지 않았기 때문에(전혀), 그들은 가장 최신의 스냅샷에 존재하지 않고, 그러므로, 수잔이 그녀의 백업(단지 이들 항목들에 대해서만)을 집어넣으라고 촉구하는 것은 이 특정 실시예에서 필요하다. However, (all), they are not for the most up to date does not exist in the snapshot, and thus, Susan urged retract the (only for just these items), her backup performed this particular example, because these pictures have not been modified it is needed in.
본 명세서에서 기재된 다양한 시스템, 방법, 및 기술은 하드웨어 또는 소프트웨어 또는, 필요한 경우, 그 둘의 조합으로 구현될 수 있다. Various systems, methods, and techniques described herein may be implemented in hardware or software or a combination of, if necessary, the two. 그러므로, 본 발명, 또는 그것의 특정 양태들이나 일부, 의 방법들 및 장치는, 플로피 디스켓, CD-ROM, 하드 드라이브, 또는 임의의 다른 기계-판독가능한 저장 매체와 같은, 실체적 매체에 구현된 프로그램 코드(즉 명령들)의 형태를 취할 것이고, 프로그램 코드가, 컴퓨터와 같은, 기계에 의해 로드되고 실행될 때, 기계는 본 발명을 실시하는 장치가 된다. Thus, the present invention, or portions thereof, or certain aspects, the methods and apparatus, a floppy diskette, CD-ROM, hard drives, or any other machine-programmed implementation, substantive media, such as a readable storage medium would take the form of a code (i.e., instructions), the program code, such as a computer, when loaded and executed by a machine, the machine becomes an apparatus for practicing the invention. 프로그램가능한 컴퓨터들에서 프로그램 코드의 실행의 경우, 컴퓨터는 일반적으로 프로세서, 프로세서에 의해 판독될 수 있는 저장 매체(휘발성 및 비휘발성 메모리 및/또는 저장 소자들을 포함함), 적어도 한 개의 입력 디바이스, 및 적어도 한 개의 출력 디바이스를 포함할 것이다. If the program is a computer of the program code execution, the computer will generally include a processor (including volatile and non-volatile memory and / or storage elements), a storage medium that can be read by a processor, at least one input device, and It will include at least one output device. 한 개 이상의 프로그램들은 컴퓨터 시스템과 통신하기 위해 고수준의 절차형 프로그래밍 언어 또는 객체지향형 프로그래밍 언어로 구현되는 것이 선호된다. Program one or more are preferred to be implemented in a high-level procedural programming language, or object-oriented programming language to communicate with a computer system. 그러나, 프로그램(들)은, 원하면, 어셈블리어 또는 기계어로 구현될 수 있다. However, the program (s), if desired, can be implemented in assembly or machine language. 임의의 경우에, 언어는 컴파일되거나 인터프리트된 언어일 것이고, 하드웨어 구현과 조합될 수 있다. In any case, the language would be a compiled or interpreted languages, and can be combined with hardware implementations.
본 발명의 방법 및 장치가 또한, 전기 유선이나 케이블을 통해, 광섬유를 통해, 또는 임의의 다른 형태의 전송을 통해서와 같이, 일부 전송 매체를 통해 전송되는 프로그램 코드의 형태로 구현될 수 있고, 프로그램 코드가, EPROM, 게이트 어레이, PLD(programmable logic device), 클라이언트 컴퓨터, 비디오 레코더 등과 같은 기계에 의해 수신되고, 로드되고, 및 실행될 때, 기계는 본 발명을 실시하는 장치가 된다. A method and apparatus of the present invention also, through a electric wire or cable, through an optical fiber, or such as through the transmission of any other form, it can be implemented in the form of program code that is transmitted over some transmission medium, program when the code is received by the machine, such as EPROM, a gate array, PLD (programmable logic device), a client computer, a video recorder, are loaded, and executed, the machine becomes an apparatus for practicing the invention. 일반-목적 프로세서에 구현될 때, 프로그램 코드는 본 발명의 인덱싱 기능을 수행하기 위해 동작하는 유일한 장치를 제공하기 위해 프로세서와 결합된다. General-purpose, when implemented on a processor, program code combines with the processor to provide a unique apparatus that operates to perform the indexing functionality of the present invention.
본 발명이 다양한 도면들의 선호되는 실시예들과 연결하여 기재되는 한편, 다른 유사한 실시예들이 사용될 수 있거나, 또는 본 발명에서 벗어나지 않고 본 발명의 동일 기능을 수행하기 위해 기재된 실시예로 수정 및 추가가 만들어질 수 있음을 이해할 것이다. That the present invention has been described in connection with the preferred embodiment of the various figures the other hand, or other similar embodiments may be used, or the present invention, modifications to the described embodiment for performing the same function of the present invention without departing from, and additional it will be appreciated that it can be made. 예를 들어, 본 발명의 실시예들의 예가 개인용 컴퓨터들의 기능을 모방하는 디지탈 디바이스들의 컨텍스트로 기재되는 한편, 당업자는, 본 발명이 본 출원서에 기재된 바와 같이 그런 디지탈 디바이스들에 제한되지 않고, 게임 콘솔, 핸드헬드 컴퓨터, 휴대형 컴퓨터 등과 같은, 유선이나 무선에 무관하게, 임의의 수의 기존 또는 새로 생겨나는 컴퓨팅 디바이스들 또는 환경들에 적용될 것이고, 통신망을 통해 접속되어 상호작용하는 임의의 수의 그런 통신망 디바이스들에 적용될 수 있음을 인식할 것이다. For example, those skilled in the art, the invention is not limited to such digital devices, as described in this application example of the embodiments of the invention described in the context of digital devices emulating the functionality of personal computers other hand, game consoles , such a communication network of the hand-held computer, that, regardless of wired or wireless, such as a portable computer, it will be applied to any number of existing or to emerging computing devices or environments, any number of interactive connected through a communication network disclosed herein may be applied to the device. 더욱이, 핸드헬드 디바이스 운영 시스템 및 다른 응용 프로그램 고유의 하드웨어/소프트웨어 인터페이스 시스템을 포함하는 다양한 컴퓨터 플랫폼들이, 특히 무선 통신망 디바이스들의 수가 증가하기를 계속함에 따라, 본 명세서에서 고려됨이 강조되어야 한다. Furthermore, as the handheld device operating systems and a variety of computer platforms, including other application specific hardware / software interface system that, in particular, continue to increase in the number of wireless devices, to be taken into account being the emphasis in this specification. 그러므로, 본 발명은 임의의 한 개의 실시예에 제한되어서는 안 되고, 그 보다는 부착된 청구범위에 따라 넓이와 범위에서 이해되어야 한다. Therefore, the invention is not to be limited to any single embodiment of the example, it is to be understood in breadth and scope in accordance with the attached claims rather than the.
을 포함하는 자동 데이터 신뢰성 시스템. Automated data reliability system that includes.
상기 손상된 페이지를 재구성하거나 복원하는 제2 레벨의 복구를 위한 서브시스템은 인덱스 페이지 손상들을 해결하는 서브시스템을 포함하는 자동 데이터 신뢰성 시스템. Automated data reliability system for the sub-system for the recovery of the second level of reconstructing or restoring the damaged page comprises a sub-system to address the index page corruption.
상기 손상된 페이지를 재구성하거나 복원하는 제2 레벨의 복구를 위한 서브시스템은 데이터 페이지 손상들을 해결하는 서브시스템을 포함하는 자동 데이터 신뢰성 시스템. Automated data reliability system for the sub-system for the recovery of the second level of reconstructing or restoring the damaged page comprises a sub-system to address the data page corruption.
상기 손상된 페이지를 재구성하거나 복원하는 제2 레벨의 복구를 위한 서브시스템은 로그 파일에서 페이지 손상들을 해결하는 서브시스템을 포함하는 자동 데이터 신뢰성 시스템. Automated data reliability system subsystem for the recovery of the second level to reconstruct and restore the corrupted page contains a subsystem that solves page corruption in the log file.
오류 및 이벤트 통지, 정책, 및 오류/이벤트 핸들링 알고리즘 기능의 그룹 중에서 적어도 하나의 기능을 추가, 삭제, 및 수정하기 위한 인터페이스를 더 포함하는 자동 데이터 신뢰성 시스템. Error and event notifications, policies, and error / event handling algorithms feature at least add, delete one of the features, and automated data reliability system further comprises an interface for modification from the group.
상기 DRS는 배경 쓰레드(background thread)로서 동작하는 자동 데이터 신뢰성 시스템. The DRS is automated data reliability system that operates as a background thread (background thread).
서브시스템을 더 포함하는 시스템. The system further comprises a sub-system.
상기 데이터 저장소를 온라인으로 불러오려는 시도가 성공적이지 않은 경우, 그리고 상기 데이터베이스가 트랜잭션면에서 일관적이지 않은 경우에 상기 데이터베이스를 오프라인으로 하고, 비상 수리를 시도하는 서브시스템을 더 포함하는 시스템. If you want to try calling the data store online it is not successful, and the system further comprises a subsystem if the database is inconsistent in the face transactions and the database offline, try the emergency repairs.
상기 손상된 페이지를 재구성하거나 복원하려고 시도함으로써 제2 레벨의 복구를 수행하는 단계는 인덱스 페이지 손상들을 해결하는 단계를 포함하는 방법. Performing a recovery in the second level by trying to reconstruct and restore the corrupted pages comprises the step of solving the index page corruption.
상기 손상된 페이지를 재구성하거나 복원하려고 시도함으로써 제2 레벨의 복구를 수행하는 단계는 데이터 페이지 손상들을 해결하는 단계를 포함하는 방법. Performing a recovery in the second level by trying to reconstruct and restore the corrupted pages comprises the step of solving the data page corruption.
상기 손상된 페이지를 재구성하거나 복원하려고 시도함으로써 제2 레벨의 복구를 수행하는 단계는 로그 파일에서 페이지 손상들을 해결하는 단계를 포함하는 방법. Performing a recovery in the second level by trying to reconstruct and restore the corrupted pages comprises the step of solving the page corruption in the log file.
상기 DRS는 오류 및 이벤트 통지, 정책, 및 오류/이벤트 핸들링 알고리즘 기능의 그룹 중 적어도 하나의 기능을 추가, 삭제, 및 수정하기 위한 인터페이스를 포함하는 방법. The DRS comprises the error and event notifications, policies, and error / event handling algorithms add at least one function of a group of functions, deletion, and interfaces for modifying.
상기 DRS는 배경 쓰레드(background thread)로서 동작하는 방법. It said DRS operates as a background thread method (background thread).
상기 방법은, 페이지 레벨 복원을 시도하고, 상기 페이지 레벨 복원이 실패하면, 상기 실패가 인덱스 페이지 때문인지를 확인하고, 상기 실패가 인덱스 페이지 때문이라면, 상기 인덱스 페이지를 재구성하는 단계를 더 포함하는 방법. If you are due to the method, if the attempt to page-level restore, the page-level restore fails, the failure index is above fails, check whether they index pages and pages, further comprising the step of reconstructing the index page .
상기 방법은, 상기 데이터베이스를 오프라인으로 하고, 비상 수리를 시도하는 단계를 더 포함하는 방법. The method includes the database offline, and the method further comprises the step of attempting an emergency repair.
를 포함하는 컴퓨터-판독가능 저장 매체. Readable storage medium computer-containing.
상기 손상된 페이지를 재구성하거나 복원하려고 시도함으로써 제2 레벨의 복구를 수행하는 명령어는 인덱스 페이지 손상들을 해결하는 명령어를 포함하는 컴퓨터-판독가능 저장 매체. Readable storage medium - computer instructions to perform the recovery of the second level by attempting to reconstruct or restore the damaged pages include instructions that address the index page corruption.
상기 손상된 페이지를 재구성하거나 복원하려고 시도함으로써 제2 레벨의 복구를 수행하는 명령어는 데이터 페이지 손상들을 해결하는 명령어를 포함하는 컴퓨터-판독가능 저장 매체. Readable storage medium - computer instructions to perform the recovery of the second level by attempting to reconstruct or restore the damaged pages include instructions that address the data page corruption.
상기 손상된 페이지를 재구성하거나 복원하려고 시도함으로써 제2 레벨의 복구를 수행하는 명령어는 로그 파일에서 페이지 손상들을 해결하는 명령어를 포함하는 컴퓨터-판독가능 저장 매체. Readable storage medium - computer instructions to perform the recovery of the second level by attempting to reconstruct or restore the damaged pages include instructions that address the page corruption in the log file.
오류 및 이벤트 통지, 정책, 및 오류/이벤트 핸들링 알고리즘의 기능의 그룹 중 적어도 하나의 기능을, 추가, 삭제, 및 수정하기 위한 인터페이스를 위한 명령어를 더 포함하는 컴퓨터-판독가능 저장 매체. Error and event notifications, policies, and error / event handling at least one function of a group of functions of the algorithm, the computer further comprising instructions for an interface for adding, deleting, and modifying-readable medium.
상기 DRS가 배경 쓰레드로서 동작하게 하는 명령어를 더 포함하는 컴퓨터-판독가능 저장 매체. Readable storage medium - computers further include instructions that cause the DRS operates as a background thread.
명령어를 더 포함하는 컴퓨터-판독가능 저장 매체. Readable storage medium - computers further include instructions.

References: Application No. 10
 Application No. 10
 Application No. 10
 Application No. 10
 Application No. 10
 Application No. 10
 Application No. 10
 Application No. 10
 Application No. 10