The disclosure relates to the field of managing upgrades of database systems and more particularly to techniques for online upgrading of a database environment using transparently-patched seed data tables.
Some embodiments of the present disclosure are directed to an improved approach for implementing online upgrading of a database environment using transparently-patched seed data tables used by software applications running in the database environment.
During an upgrade of a computing environment, such as a computing environment having a relational database engine, it frequently occurs that both application code and application load data (e.g., initialization data, default data, forms, menus, etc.) need to be upgraded (e.g., up-revisioned). Legacy techniques often require that the application code and all application initialization data are upgraded at the same time. However that technique becomes impractical in modern systems at least in the aspect that modern systems may have hundreds of applications running, at least some of which are critical to the mission served by the computing environment, and should not be taken offline for long periods of time.
Other legacy techniques have partially addressed the foregoing problem by updating the application initialization data and restarting the application later at some convenient moment. Yet, this technique does not address the situation where both the application code and application load data need to be up-revisioned concurrently (e.g., to be sure that the code and data are synchronized to the same version).
Yet another legacy technique forces a coding standard onto application developers so the application would be aware of the occurrence of, and nature of, an up-revision of the application load data, however this techniques is both error prone and not scalable.
What are needed are techniques to transparently perform an upgrade of a computing environment that includes an upgrade of both application code and application load data. Further, what are needed are techniques to transparently perform an upgrade of a computing environment that eliminates the need for application programmers to write application code to manage upgrades.
Moreover, none of the aforementioned technologies have the capabilities to perform online upgrading of a database environment using transparently-patched seed data tables. Therefore, there is a need for an improved approach.
The present disclosure provides an improved method, system, and computer program product suited to address the aforementioned issues with legacy approaches. More specifically, the present disclosure provides a detailed description of techniques used in methods, systems, and computer program products for online upgrading of a database environment using transparently-patched seed data tables.
A method, system, and computer program product for managing upgrades of database systems using a transparently-patched seed data table. The method commences on a running system by copying (while software applications are running) portions of data comprising a seed data table to database table rows that are temporarily inaccessible by the software applications. The copy operation creates new rows (a seed data table copy) in a database table. The method continues while software applications are running by modifying the seed data table copy (e.g., by applying a patch). For a brief time, the method stops the software applications, then changes the database table rows that were temporarily inaccessible by the software applications to become accessible by the software applications and restarts the software application to point to the patched seed data table copy. The patch can add or change a column of the seed data table copy or its schema.
Further details of aspects, objectives, and advantages of the disclosure are described below in the detailed description, drawings, and claims. Both the foregoing general description of the background and the following detailed description are exemplary and explanatory, and are not intended to be limiting as to the scope of the claims.
Some embodiments of the present disclosure are directed to an improved approach for implementing online upgrading of a database environment using transparently-patched seed data tables. More particularly, disclosed herein are exemplary environments, methods, and systems for online upgrading of a database environment using transparently-patched seed data tables.
Described herein-below and in the accompanying figures are scalable methods and apparatus for implementing online upgrading of a database environment using transparently-patched seed data tables.
System downtime or other outage due to upgrading is a major concern in the design of enterprise-wide infrastructure and mission-critical systems. System downtime is especially serious for installations that are configured as a centralized installation, in turn serving many distributed installations. System outages can impact all operations, and system outages often incur great cost or risk when the system outage interferes with customer-related interactions (e.g., sales, service, payments, etc.) or other core activity (e.g., incoming inspection, manufacturing, etc.). The herein-disclosed techniques for upgrades of an installation-wide infrastructure (e.g., including patches or upgrades of software, applications and/or software application services) facilitate the trend to deploying fewer enterprise-wide sites and fewer installations of mission-critical systems without adversely impacting business activities that rely on nearly non-stop uptime of their corresponding computing systems.
The upgrade techniques disclosed herein includes a set of features known as “seed data editioning”. Seed data editioning enables application patches to be applied with dramatically reduced downtime by executing database patch actions on a copy (e.g., a “patch edition”) of the runtime system. While an online patch is executing (e.g., patching the application code and patching the application seed data), the production application remains available and fully functional. Moreover, use of the herein-disclosed techniques serve to transparently perform an upgrade of a computing environment that includes an upgrade of both application code and application seed data, and without the need for application programmers to write application code to manage upgrades.
Some of the terms used in this description are defined below for easy reference. The presented terms and their respective definitions are not rigidly restricted to these definitions—a term may be further defined by the term's use within this disclosure.
Reference is now made in detail to certain embodiments. The disclosed embodiments are not intended to be limiting of the claims.
The depiction of the practice 100 introduces several concepts as shown and described herein. As shown, the installation comprises a database engine 101 which in turn comprises computing nodes (e.g., node 1021, node 1022, node 1023, node 1024, node 102N, etc.) any of which computing nodes can communicate with any other of the computing nodes. A software application (e.g., software application 119, running application 104) executes on a computing node and accesses stored data (e.g., business data 108, one or more instances of a file system (e.g., file system 1101, file system 1102, etc.). A software application can also access stored data in various application-specific embodiments (e.g., application metadata 112, application code modules 116, and application schema 118).
“Seed Data”
The shown application code module 116 serves to store one or more copies of one or more software applications, while the application metadata (e.g., application metadata 1121, application metadata 1122) serves to store data in an area that is specific to the application. The application metadata 112 can comprise application-specific data in the form of seed data 114, which can be used by the application to initialize data structures (e.g., screens, forms, menus, etc.) used by a running application. The application metadata 112 comprises application seed data (e.g., seed data 1141, seed data 1142, etc.), as shown. Application seed data may be embodied in many forms. For example, in the form of menu item descriptions, printable forms, help text in any language or help tooltips in any language, or any other sort of rows of data or tables. As described in detail herein, application seed data (e.g., seed data 1141, seed data 1142, etc.) can be embodied within a relational database, more specifically, in the form of an editioned data storage enabled table (see
The editioning concept (further described hereunder) operates such that a particular collection of interrelated components in a database system (e.g., application metadata 112, application code modules 116, application schema 118, business data 108, one or more instances of a file system 110, etc.) can be amalgamated into an “edition” (e.g., an initial run edition 106), which edition can them be subjected to transformations (e.g., data copies, data references, data conversions, etc.) into one or more other editions (e.g., patch edition 120), as shown.
In order to facilitate for minimizing downtime during upgrades of interrelated components in a database system, the collection of interrelated components are handled using the techniques disclosed herein. Strictly as an introductory example, an instance of a running application can access an initial run edition or a later designated run edition. Patching tools can access a patch edition, and/or an initial run edition and/or a later designated run edition. Various techniques for managing the timing and type of access and/or the timing and type of temporary inaccessibility are provided for by the loaders (e.g., loader 1291, loader 1292), and by use of synonyms 124. Specifically, the loader 1291, can access the application code module 116 from the initial run edition 106, and can obtain exclusive access via a semaphore or lock 134. Then, having exclusive access, the loader 1291, can apply any one or more patches to the application code, possibly into the application code module 116 from the patch edition 120. As an exemplary loading/locking scenario, an exclusive lock is acquired the first time a loader accesses a seed data table. The acquired lock can be used to ensure that only one instance of a loader (e.g., a loader for a particular table) assumes responsibility for making the initial copy of the data. Once the initial copy is made, any number of loaders can run in parallel against the table. In yet another scenario, any number of loaders (e.g., different instances of loader 1292) or a component of the loader 1291, can obtain exclusive access via a semaphore or lock 134. Then, having exclusive access, the loader 1292, can apply any modifications to the application metadata after making a complete editioned copy of seed data (e.g., see seed data 1141 in the initial run edition 106) to create a separate copy (e.g., see seed data 1142 within the patch edition 120). In exemplary cases, the seed data is embodied as one or more relational database tables, and can be “re-striped” during processing within the loader such that any row in the separate copy (seed data 1142) can be accessed using a WHERE clause in order to retrieve the original row data, or the editioned (and possibly patched) copy. In some systems, a technique for editioning is facilitated by automatically including a WHERE clause in any query statement that accesses any seed data table. The WHERE clause can be automatically determined on the basis of which edition the user refers to when establishing a database connection, and all or portions of this technique can be used for myriad objects including seed data tables.
Further details regarding a general approach to object editioning are described in U.S. Publication No. 2008-0098046 A1, which is hereby incorporated by reference in its entirety.
As can be recognized by those skilled in the art, a first instance of a running application can access and make changes to an initial run edition, and such changes can be detected and propagated to a patch edition using a cross-edition trigger agent 122. Thus, the second instance of the running application can access the changes that had been propagated to the patch edition.
The various techniques for copying, referencing, transforming and otherwise managing the location (e.g., physical copy, virtual copy, etc.) of data as well as techniques for managing the timing and type of access observed by the running application are discussed in detail infra.
Embodiments and Components in an Installation
A running installation of an suite of enterprise software applications comprises a vast and complex system made up of many individual parts that are broadly separated into a taxonomy as follows:
Components within an installation can be further described as comprising:
The techniques described herein provide for online patching of applications (and respective application data) as well as for the online patching and online transformation of business data (e.g., transformation to an updated application schema).
Application Editions
A collection of schema, code and metadata definitions comprise an application definition 140. Components of the application definition may need to change over time, and the techniques herein prescribe how each part of the application definition are to be versioned and patched independently. Therefore, an application definition in a particular installation is known by a compound “version ID” comprised of the union of a version of all of its constituent parts. An installed collection of versioned part definitions is referred to as an application edition. In exemplary cases, an application definition is stored both on the file system and in the database. Further it is typical to store multiple application editions within one installation, and in such cases both the file system and database are used to hold a run edition version and a patch edition version of the application definition.
File System Editions
A file system edition is a set of the files that make up an application definition. The files may be organized into a hierarchical directory tree with a root directory. In some cases, the root directory path for an installation is stored in an operating system environment variable. It is possible to store multiple root directory trees in the same file system, and an operating system environment variable can point to any one of the multiple directory trees in that same file system.
In the context of the installation depicted and described in
To apply an online patch to an active/online installation, the installation is promoted through a series of sequential phases, which series is known as an online patching cycle. The shown online patching cycle 202 is given as:
As described in the above cycle, creating and patching relies on many specialized techniques to maintain a run edition (e.g., initial run edition 106) and a patch edition (e.g., patch edition 120) in the presence of continuously changing customer data in database tables (e.g., in the business data 108). The concept and implementation of the foregoing online patching cycle creates patch edition copies of application code modules, seed data, and other data in order to continuously apply patch transformations to runtime data that changes while the patch is executing.
The users can be all online users during the normal operation (e.g., during the running period 226), then for the brief period of the cutover (e.g., during the cutover period 228) the users are offline, to return online (e.g., in cleanup period 230) shortly after conclusion of the cutover period 228.
One embodiment supports full installation of online patching. Some installations comprise many products (e.g., hundreds of software application configurations, and many tens of thousands of tables). In such a case it is convenient to deploy every installation to contain all products (though only some may be licensed for a particular installation) and then to patch all products that are included in every installation. In this manner, all products can be periodically updated to stay current with the recommended code levels.
Implementing the above cycle to manage editionable components (include seed data) serves to minimize downtime during upgrades.
As shown, run edition table 3A00 comprises two columns of data (e.g., see “Col1” and “Col2”) to which is added a third “striping” column that holds an edition identifier (e.g., “Edition1”, or “Edition2”), as shown.
The seed data table copy 3B00 comprises a copy of the run edition of the seed data which is striped (see leftmost column) to refer to “Edition1”, and also comprises a further copy of the seed data which is also striped, this time to refer to “Edition2”.
The patch edition table 3C00 comprises all of the characteristics of the seed data table copy 3B00, and further comprises a patched column 3C04. In this manner, using the patched column, any application running in the initial run edition can access the seed data table and be unaware of the patching operation that adds the patching column. Furthermore, any instances of a patched version of an application can access the patch edition table 3C00 and is able to access the added patched column to create a patched seed data table copy.
In exemplary embodiments, the patch edition table 3C00 is formed as a result of modifying a seed data table copy by applying at least one patch to the seed data table copy to create a patched seed data table copy 3C02. Applying a patch to the seed data table copy to create a patched seed data table copy might comprise an addition of a column to the seed data table copy (e.g., see patched seed data table copy 3C02), or a change of the data type of a column in the seed data table copy, or a modification of a schema of the seed data table copy, or another modification to the seed data table copy.
The shown cleaned-up patch edition table 3D00 indicates a possible state of the seed data during the cleanup period 230. A later state of the seed data just during the cleanup period 230 might collapse the empty rows.
As shown the seed data can comprise a plurality of tables (e.g., Table A (4021, 4022), Table B (4041, 4042), Table C (4061, 4062), Table D (4081, 4082), Table E (4101, 4102)), and any one or more of the tables found in the initial run edition 106 (bottom portion of
In an exemplary implementation, a table is configured to be attached to a policy. Such a configuration facilitates the appropriate WHERE clause as earlier discussed. Initially a policy in the patch and run editions are the same. This indicates that the seed data has not been yet been configured and is therefore referencing the run edition rows.
At some point, a patch edition is created; and at that moment in time, the policy for the run edition is the same as the policy for the patch edition. When a seed table is generated in preparation for defining a patch edition, a process copies the rows, indicates an edition name for the copied rows, and updates the policy.
The policy can be updated as follows:
The sequence frame 5A00 shows running applications 104 in a multi-tier regime where users 505 connect to a run file system (e.g., the file system 1101) and connect to a database (e.g., within initial run edition 106) via a middle tier connectivity 515. The database may comprise an initial run edition 106, a patch edition 120, and any number of old editions 502.
The connectivity and user's connections using said connectivity can persist through the running period 226 even during the time that various operations involved in the prepare step 206, the apply step 208, and the finalize step 210 may be performed.
The sequence frame 5B00 shows one embodiment of an orderly shutdown of running applications 104 in a multi-tier regime. In some instances, users 505 are advised to disconnect from the middle tier connectivity 515, and new connections are disallowed. Regardless of the lack of connections to the middle tier, various operations can persist through the running period 226 right up to the cutover period 228. During the running period 226 and through the cutover period 228 the database is not shutdown, and the file systems remain in existence and accessible. It is during this period that certain of the editioning operations can occur, including copy operations on seed data (e.g., see copy operation 4301, and copy operation 4302), or including referencing operations on any one or more of the tables found in the initial run edition 106 (see reference operation 4401, reference operation 4402, reference operation 4403).
At some moment during the running period, activity within the running applications and application services is quiesced in readiness for further online patch cycle operations (e.g., swap of editions, swap of file systems, and a restart of any patched applications and any patched application services).
As indicated in the discussion of
Again, as indicated in the discussion of
The depiction of sequence frame 5E00 shows the state of the database environment at a point in time during the cutover period. The middle tier now refers to the patched file system (see FS-2 1102), and refers to the promoted, patched database edition (see v07) which are now prepared to become the online version to be accessed by any patched applications and any patched application services, and are now prepared to become the online version to be accessed by users 505.
The example flow 600 includes a possible series of steps, including some optional steps to be taken for online upgrading of a database environment using transparently-patched seed data tables. The example includes a description of on-demand construction of editioned seed data (refer again to
System Architecture Overview
According to one embodiment of the disclosure, computer system 900 performs specific operations by processor 907 executing one or more sequences of one or more instructions contained in system memory 908. Such instructions may be read into system memory 908 from another computer readable/usable medium, such as a static storage device or a disk drive 910. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the disclosure. Thus, embodiments of the disclosure are not limited to any specific combination of hardware circuitry and/or software. In one embodiment, the term “logic” shall mean any combination of software or hardware that is used to implement all or part of the disclosure.
The term “computer readable medium” or “computer usable medium” as used herein refers to any medium that participates in providing instructions to processor 907 for execution. Such a medium may take many forms, including but not limited to, non-volatile media and volatile media. Non-volatile media includes, for example, optical or magnetic disks, such as disk drive 910. Volatile media includes dynamic memory, such as system memory 908.
Common forms of computer readable media includes, for example, floppy disk, flexible disk, hard disk, magnetic tape, or any other magnetic medium; CD-ROM or any other optical medium; punch cards, paper tape, or any other physical medium with patterns of holes; RAM, PROM, EPROM, FLASH-EPROM, or any other memory chip or cartridge, or any other non-transitory medium from which a computer can read data.
In an embodiment of the disclosure, execution of the sequences of instructions to practice the disclosure is performed by a single instance of the computer system 900. According to certain embodiments of the disclosure, two or more computer systems 900 coupled by a communications link 915 (e.g., LAN, PTSN, or wireless network) may perform the sequence of instructions required to practice the disclosure in coordination with one another.
Computer system 900 may transmit and receive messages, data, and instructions, including programs (e.g., application code), through communications link 915 and communication interface 914. Received program code may be executed by processor 907 as it is received, and/or stored in disk drive 910 or other non-volatile storage for later execution. Computer system 900 may communicate through a data interface 933 to a database 932 on an external data repository 931. A module as used herein can be implemented using any mix of any portions of the system memory 908, and any extent of hard-wired circuitry including hard-wired circuitry embodied as a processor 907.
In the foregoing specification, the disclosure has been described with reference to specific embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the disclosure. For example, the above-described process flows are described with reference to a particular ordering of process actions. However, the ordering of many of the described process actions may be changed without affecting the scope or operation of the disclosure. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than restrictive sense.
The present application claims the benefit of priority to U.S. Provisional patent application Ser. No. 61/707,823, entitled “ONLINE PATCHING ORCHESTRATION”, filed on Sep. 28, 2012, and U.S. Provisional patent application Ser. No. 61/707,827, entitled “CONFIGURATION CHANGE DETECTION AND PROPAGATION”, filed on Sep. 28, 2012, and U.S. Provisional patent application Ser. No. 61/707,840, entitled “SYNCHRONIZING DOMAIN CONFIGURATION PARAMETERS”, filed on Sep. 28, 2012, which are all hereby incorporated by reference in their entireties; and the present application is related to U.S. patent application Ser. No. 13/802,771, entitled “USING A DATA DICTIONARY TO DETERMINE AN UPGRADE EDITION OF A RELATIONAL DATABASE TABLE”, filed on even date herewith, which is hereby incorporated by reference in its entirety; and the present application is related to co-pending U.S. patent application Ser. No. 13/802,780, entitled “TRANSPARENTLY UPGRADING DERIVED DATABASE OBJECTS”, filed on even date herewith, which is hereby incorporated by reference in its entirety; and the present application is related to U.S. patent application Ser. No. 13/802,785, entitled “USING CONFIDENCE VALUES FOR SYNCHRONIZING FILE SYSTEMS”, filed on even date herewith, which is hereby incorporated by reference in its entirety; and the present application is related to co-pending U.S. patent application Ser. No. 13/802,791, entitled “REDUCING DOWNTIME DURING UPGRADES OF INTERRELATED COMPONENTS IN A DATABASE SYSTEM”, filed on even date herewith, which is hereby incorporated by reference in its entirety; and the present application is related to co-pending U.S. patent application Ser. No. 13/802,794, entitled “SYNCHRONIZATION OF CONFIGURATION CHANGES BETWEEN APPLICATIONS AND THEIR PLATFORMS”, filed on even date herewith, which is hereby incorporated by reference in its entirety.
A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
Number | Name | Date | Kind |
---|---|---|---|
5227967 | Bailey | Jul 1993 | A |
5315709 | Alston et al. | May 1994 | A |
5440743 | Yokota et al. | Aug 1995 | A |
5448727 | Annevelink | Sep 1995 | A |
5555388 | Shaughnessy | Sep 1996 | A |
5608903 | Prasad et al. | Mar 1997 | A |
5640550 | Coker | Jun 1997 | A |
5717924 | Kawai | Feb 1998 | A |
5978426 | Glover et al. | Nov 1999 | A |
6016497 | Suver | Jan 2000 | A |
6122630 | Strickler et al. | Sep 2000 | A |
6122640 | Pereira | Sep 2000 | A |
6138112 | Slutz | Oct 2000 | A |
6173313 | Klots et al. | Jan 2001 | B1 |
6268850 | Ng | Jul 2001 | B1 |
6304867 | Schmidt | Oct 2001 | B1 |
6324535 | Bair et al. | Nov 2001 | B1 |
6363387 | Ponnekanti et al. | Mar 2002 | B1 |
6460055 | Midgley et al. | Oct 2002 | B1 |
6480848 | DeKimpe et al. | Nov 2002 | B1 |
6519613 | Friske et al. | Feb 2003 | B1 |
6598059 | Vasudevan et al. | Jul 2003 | B1 |
6611848 | Bradley | Aug 2003 | B1 |
6633870 | Bradley | Oct 2003 | B1 |
6633883 | Koskas | Oct 2003 | B2 |
6681225 | Uceda-Sosa et al. | Jan 2004 | B1 |
6745209 | Holenstein et al. | Jun 2004 | B2 |
6769124 | Schoening et al. | Jul 2004 | B1 |
6801983 | Abe et al. | Oct 2004 | B2 |
6834290 | Pugh et al. | Dec 2004 | B1 |
6965899 | Subramaniam et al. | Nov 2005 | B1 |
7028057 | Vasudevan et al. | Apr 2006 | B1 |
7080371 | Arnaiz et al. | Jul 2006 | B1 |
7237238 | Peppers | Jun 2007 | B2 |
7310653 | Coyle et al. | Dec 2007 | B2 |
7350191 | Kompella et al. | Mar 2008 | B1 |
7421458 | Taylor et al. | Sep 2008 | B1 |
7574461 | Armorer et al. | Aug 2009 | B1 |
7603669 | Curtis et al. | Oct 2009 | B2 |
7689587 | Tiruveedi et al. | Mar 2010 | B1 |
7693889 | Armorer et al. | Apr 2010 | B1 |
8087013 | Kelly et al. | Dec 2011 | B2 |
8495612 | Bertrand | Jul 2013 | B2 |
8793230 | Engelko et al. | Jul 2014 | B2 |
9043778 | Lin et al. | May 2015 | B2 |
20020019972 | Grier et al. | Feb 2002 | A1 |
20020087271 | Rozenshtein et al. | Jul 2002 | A1 |
20020188600 | Lindsay et al. | Dec 2002 | A1 |
20030041127 | Turnbull | Feb 2003 | A1 |
20030154216 | Arnold et al. | Aug 2003 | A1 |
20030217069 | Fagin et al. | Nov 2003 | A1 |
20030229610 | Van Treeck | Dec 2003 | A1 |
20040064487 | Nguyen et al. | Apr 2004 | A1 |
20050015376 | Fraser et al. | Jan 2005 | A1 |
20050108733 | Bermudez et al. | May 2005 | A1 |
20050149475 | Chkodrov et al. | Jul 2005 | A1 |
20050149920 | Patrizi et al. | Jul 2005 | A1 |
20050154695 | Gonzalez et al. | Jul 2005 | A1 |
20060015528 | Hejlsberg et al. | Jan 2006 | A1 |
20060085457 | Gelfand | Apr 2006 | A1 |
20060085465 | Nori et al. | Apr 2006 | A1 |
20060117029 | Yingst | Jun 2006 | A1 |
20060130040 | Subramanian et al. | Jun 2006 | A1 |
20060242381 | Shatskih et al. | Oct 2006 | A1 |
20070038590 | Vijayan et al. | Feb 2007 | A1 |
20070038651 | Bernstein et al. | Feb 2007 | A1 |
20070061487 | Moore | Mar 2007 | A1 |
20070079140 | Metzger et al. | Apr 2007 | A1 |
20070106701 | Periyasamy | May 2007 | A1 |
20070156849 | Becker | Jul 2007 | A1 |
20070219951 | Ahmed et al. | Sep 2007 | A1 |
20080098046 | Alpern et al. | Apr 2008 | A1 |
20080201701 | Hofhansl et al. | Aug 2008 | A1 |
20080243966 | Croisettier | Oct 2008 | A1 |
20090006884 | Cahill | Jan 2009 | A1 |
20100110474 | Coulter et al. | May 2010 | A1 |
20100281458 | Paladino | Nov 2010 | A1 |
20120222025 | Pandit | Aug 2012 | A1 |
20130104115 | Bertrand | Apr 2013 | A1 |
20130132936 | Wang | May 2013 | A1 |
20140344798 | Sasaki | Nov 2014 | A1 |
Entry |
---|
Non-final Office Action dated Mar. 8, 2010 for U.S. Appl. No. 11/875,478. |
Advisory Action dated Jan. 26, 2010 for U.S. Appl. No. 11/444,571. |
Davidson, Tom, “Managing Schema Changes (Part 2),” MSSSQL Server Development Customer Advisory Team, Mar. 31, 2006, Microsoft Cororation. Nov. 19, 2000 <http://blogs.msdn.com/sqlcat/archive/2006/O3/31/566046.aspx>. |
Ambler, Scott, and Pramod Sadalage. Refactoring Databases: Evolutionary Database Design. Mar. 3, 2006. |
Final Office Action dated Aug. 30, 2010 for U.S. Appl. No. 11/875,478. |
Notice of Allowance dated Mar. 21, 2011 for U.S. Appl. No. 11/444,571. |
Final Office Action dated Dec. 7, 2010 for U.S. Appl. No. 11/201,797. |
Final Office Action dated Sep. 8, 2011 for U.S. Appl. No. 11/801,495. |
Non-final Office Action dated Jan. 31, 2012 for U.S. Appl. No. 11/875,478. |
Final Office Action dated Jan. 25, 2012 for U.S. Appl. No. 11/201,797. |
Non-final Office Action dated Jun. 27, 2012 for U.S. Appl. No. 11/875,478. |
Final Office Action dated Jan. 29, 2013 for U.S. Appl. No. 11/875,478. |
Advisory Action dated Mar. 8, 2013 for U.S. Appl. No. 11/875,478. |
Final Office Action dated Mar. 29, 2013 for U.S. Appl. No. 11/801,495. |
Notice of Allowance dated Jun. 12, 2013 for U.S. Appl. No. 11/875,478. |
Notice of Allowance dated Jan. 16, 2015 for U.S. Appl. No. 13/802,780. |
Non-final Office Action dated Nov. 20, 2014 for U.S. Appl. No. 13/802,785. |
Non-final Office Action dated Jul. 31, 2014 for U.S. Appl. No. 13/802,794. |
Final Office Action dated Jan. 16, 2015 for U.S. Appl. No. 13/802,794. |
“Oracle OLAP”, Oracle, Jan. 3, 2012, 2 pages url: http://www.oracle.com/technetwork/database/options/olap/index.html. |
“Introduction to Analytic Workspaces”, Oracle OLAP DML Reference, 11g Release 1 (11.1), Part No. B28126-03, Oracle, Mar. 18, 2013, 2 pages url: http://docs.oracle.com/cd/B28359—01/olap.111/b28126/dml—basics004.htm. |
Alan Choi, “Online Application Upgrade Using Edition-Based Redefinition”, 2009, ACM. |
Non-final Office Action dated Feb. 12, 2015 for U.S. Appl. No. 13/802,791. |
Non-final Office Action dated Mar. 27, 2015 for U.S. Appl. No. 13/802,771. |
Lassen et al. Experiences with object oriented development in PL!SQL, Center for Object Technology COT/4-18-V1.4, 2000. |
Object Cache Navigation, Oracle Call Interface PRogrammer's Guide, Release 2 (9.2), Part No. A96584-10, 1996,2002. |
Date et al, A Guide to SQL/DS, 1989, Addison-Wesley, Chapter 10. |
Quest Software, Inc., LiveReorg.RTM., “Reorganization for the 24.times.7, Database,” 2001. |
Paapanen, Eric et al., “Oracle Database Application Developer's Guide—Large Objects”, 10g Release 1 (10.1), Part No. B1079601, Apr. 21, 2008, 668 pages. |
Smith, Jeff, “The Shortest, Fastest, and Easiest way to compare two tables in SQL Server: Union!”, Jeffs SQL Server Blog 10, Apr. 22, 2008, 45 pages. |
T-SQL, “sp—rename (T-SQL)”, printed Apr. 22, 2008, 3 pages. |
Scott Ambler et al., “Refactoring Databases: Evolutionary Database Design”, Mar. 3, 2006, 7 pages. |
Tom Davidson, Managing Schema Changes (Part 2), MSSQL Server Development Customer Advisory Teach, Mar. 31, 2006, Microsoft Corporation, Nov. 19, 2000, http://blgs.msdn.com/squlcat/archive/2006/03/31/566046.aspx, 11 pages. |
Notice of Allowance dated May 11, 2015 for U.S. Appl. No. 13/802,780. |
Notice of Allowance and Fees Due dated Oct. 21, 2015 for related U.S. Appl. No. 13/802,785. |
Final Office Action dated Oct. 23, 2015 for related U.S. Appl. No. 13/802,771. |
Non-final Office Action dated May 21, 2015 for U.S. Appl. No. 13/802,794. |
Final Office Action dated Jun. 1, 2015 for U.S. Appl. No. 13/802,785. |
Final Office Action dated Jul. 14, 2015 for U.S. Appl. No. 13/802,791. |
Non-final Office Action dated Dec. 2, 2015 for related U.S. Appl. No. 13/802,791. |
Notice of Allowance and Fee(s) Due dated Jan. 6, 2016 for related U.S. Appl. No. 13/802,794, 6 pages. |
Number | Date | Country | |
---|---|---|---|
20140101645 A1 | Apr 2014 | US |
Number | Date | Country | |
---|---|---|---|
61707823 | Sep 2012 | US | |
61707827 | Sep 2012 | US | |
61707840 | Sep 2012 | US |