CN108475271B - 容器数据库的应用容器 - Google Patents
容器数据库的应用容器 Download PDFInfo
- Publication number
- CN108475271B CN108475271B CN201680072769.1A CN201680072769A CN108475271B CN 108475271 B CN108475271 B CN 108475271B CN 201680072769 A CN201680072769 A CN 201680072769A CN 108475271 B CN108475271 B CN 108475271B
- Authority
- CN
- China
- Prior art keywords
- database
- application
- root
- pluggable
- application root
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
Abstract
在方法中,通过指定应用根来优化数据库管理系统内的存储器使用,所述应用根存储用于跨支持相同应用的可插拔数据库公共的数据库对象的数据和元数据。此外,通过定义在应用根处创建的、但可以用于访问任何成员可插拔数据库的公共用户,应用根可以用于管理对可插拔数据库的访问。此外,通过为每个版本维护单独的应用根,可以同时支持相同应用的不同版本。例如,当对应用根应用升级时,可以创建克隆并可将更新应用于克隆。然后,要升级的成员可插拔数据库可以同步到克隆,同时让其它可插拔数据库服务于应用的先前版本。
Description
技术领域
本发明一般而言涉及用于管理可插拔数据库内由同一应用通过被称为应用根(application root)的专用可插拔数据库使用的可插拔数据库的技术。
背景技术
本部分中描述的方法是可以寻求的方法,但不一定是先前已被构思或寻求的方法。因此,除非另外指出,否则不应当假定在本部分中描述的任何方法仅仅凭其包括在本部分中就有资格作为现有技术。
发明内容
数据库系统
数据库管理系统(DBMS)管理数据库。DBMS可以包括一个或多个数据库服务器。数据库包括存储在持久性存储器机制(诸如一组硬盘)上的数据库数据和数据库字典。数据库数据可以存储在一个或多个数据容器中。每个容器包含记录。每条记录内的数据被组织到一个或多个字段中。在关系型DBMS中,数据容器被称为表,记录被称为行,并且字段被称为列。在面向对象的数据库中,数据容器被称为对象类,记录被称为对象,并且字段被称为属性。其它数据库体系架构可能使用其它术语。
用户通过向数据库服务器提交命令来与DBMS的数据库服务器交互,这些命令使数据库服务器对存储在数据库中的数据执行操作。用户可以是运行在客户端计算机上的与数据库服务器交互的一个或多个应用。多个用户在本文也可以被统称为用户。
数据库命令可以采用符合数据库语言的数据库语句的形式。用于表达数据库命令的数据库语言是结构化查询语言(SQL)。存在许多不同的SQL版本,一些版本是标准版本和一些是专有版本,并且存在各种扩展。数据定义语言(“DDL”)命令被发到数据库服务器以创建或配置数据库对象,诸如表、视图或复杂数据类型。SQL/XML是在操纵对象关系数据库中的XML数据时使用的SQL的公共扩展。
多节点数据库管理系统由共享对相同数据库的访问的互连节点组成。典型地,节点经由网络互连并且以不同的程度共享对共享存储装置的访问,例如,对一组盘驱动器和其上存储的数据块的共享访问。多节点数据库系统中的节点可以是经由网络互连的一组计算机(例如,工作站、个人计算机)的形式。替代地,节点可以是网格的节点,其中网格由节点组成,这些节点以刀片服务器(server blade)的形式与机架上的其它刀片服务器互连。
多节点数据库系统中的每个节点托管数据库服务器。服务器(诸如数据库服务器)是集成的软件组件和计算资源分配的组合,计算资源诸如存储器、节点和节点上的用于在处理器上执行集成的软件组件的过程,软件和计算资源的组合专用于代表一个或多个客户端执行特定的功能。
来自多节点数据库系统中的多个节点的资源可以被分配来运行特定数据库服务器的软件。软件和来自节点的资源分配的每种组合是在本文中被称为“服务器实例”或“实例”的服务器。数据库服务器可以包括多个数据库实例,其中一些或全部在独立的计算机(包括单独的刀片服务器)上运行。
多租户体系架构
容器是多租户容器数据库(CDB)中的模式、对象和相关结构的集合,它在逻辑上作为单独的数据库呈现给应用。在CDB内,每个容器具有唯一的ID和名称。根数据库和每个可插拔数据库(PDB)都被视为容器。PDB隔离数据和操作,使得从用户或应用的角度看,每个PDB看起来好像是传统的非CDB。每个PDB都由其自己的单独数据库字典定义。数据库字典包括定义包含在数据库中的数据库对象的元数据。实际上,数据库字典定义了数据库的总体。数据库对象包括表、表列和表空间。表空间是用于存储各种类型的数据库对象(诸如表)的数据的一组一个或多个文件。如果数据库对象的数据存储在表空间中,则数据库字典会将数据库对象映射到保持该数据库对象的数据的一个或多个表空间。
根容器也称为“根”,它是特定CDB内所有PDB所属的模式、模式对象和非模式对象的集合。每个CDB具有存储管理CDB内所有PDB所需的系统元数据的一个根。在一些实现中,根不存储“用户”数据,而是存储跨CDB的PDB公共的数据,诸如对公共用户和角色、共享表、代码包等的定义。PDB包括用户创建的一组模式、对象和相关结构,其在逻辑上作为单独的数据库呈现给应用。因此,每个PDB可以潜在地用于存储与不同应用有关的数据,诸如一个PDB专用于托管人力资源应用,并且另一个PDB专用于托管销售应用。但是,由于共享资源仅在根数据库中存储一次,并且由PDB的数据库字典链接,因此与利用完全独立的传统数据库托管每个应用相比,避免了数据的重复。此外,由于PDB本质上本身是自包含的数据库,因此为了升级或负载平衡的目的,PDB可以在不同的CDB之间轻松地转移。
附图说明
在附图中:
图1图示了可以在其上实现实施例的操作环境。
图2图示了根据实施例的容器数据库的示例结构。
图3图示了根据实施例的根数据库、应用根和可插拔数据库的示例逻辑层次结构。
图4图示了根据实施例的数据链接和元数据链接的对象的示例。
图5图示了根据实施例的用于修补或更新应用的示例处理流程。
图6是图示可以在其上实现本发明的实施例的示例计算机系统的框图。
具体实施方式
在以下描述中,出于解释的目的,阐述了许多具体细节,以便提供对本发明的透彻理解。但是,很显然,本发明可以在没有这些具体细节的情况下进行实践。在其它情况下,众所周知的结构和设备以框图的形式示出,以避免不必要地模糊本发明。
具体实施方式在以下部分中列出:
1.0总体概述
1.1代理可插拔数据库
1.2应用根副本
1.3容器映射
1.4查询优化
2.0数据库系统
3.0通用操作环境
3.1容器数据库
3.2撤消和重做记录
4.0应用容器
4.1数据链接和元数据链接示例
4.2创建应用根
4.3在应用根处执行命令
4.4应用用户和角色
4.5修补和升级应用
4.6运输应用根
6.0硬件概述
7.0附加公开
1.0总体概述
虽然通过允许将公共对象和定义存储在一个位置中并且在多个可插拔数据库之间共享,根对于优化容器数据库内的存储器使用是有用的,但是根也有其局限性。
1.1存储器优化
由于根数据库存储在CDB的所有PDB之间共享的数据和元数据,因此由根数据库存储的信息通常由数据库软件提供商安装并且包括对象/项目,诸如公共代码/函数、诊断信息表、度量表、公共用户和角色的定义,等等。通常不鼓励或阻止DBMS的用户将其自己的元数据和数据存储在根中,因为任何与根相关的事故都可能导致整个DBMS出现故障。但是,存在一些情况,其中用户可能想要定义仅应用CDB内的PDB的子集的公共数据和元数据,并且将这些公共对象存储在PDB的子集之间共享的单个位置中。
其中上述功能将有用的一个常见场景是在应用的上下文中。虽然每个PDB可以表示不同的数据库,但是一些数据库可以实现或由同一应用使用。例如,用户可以定义两个不同的PDB,它们存储两个不同存储位置的数据,但是被配置为使用相同的应用来访问。因此,可能存在可能受益于存储器优化的在两个PDB之间共享的数据和/或元数据。例如,用于访问PDB的应用可能期望存在名称为“雇员”的表,其中包含诸如“名字”、“姓”、“年龄”等属性。雇员表的数据在两个PDB之间会有所不同,但定义表的名称、属性和属性类型的元数据可以被共享。
因此,本文描述的实施例使用本文称为“应用根”的新类型的PDB。类似于CDB的根,应用根存储在其成员PDB之间共享的数据和元数据。应用根及其成员PDB统称为“应用容器”。但是,虽然CDB中的每个PDB都是根的成员,但只有实现或由同一应用使用的PDB才是应用根的成员。通过将由应用使用的公共数据和元数据存储在应用根处,而不是单独存储在每个成员PDB中,存储器使用被优化,因为共享对象只被存储一次并且然后由成员PDB引用。
在应用根的上下文中,存在两种数据分类。第一种分类被称为“数据链接”。数据链接的数据库对象既有定义对象的元数据,也有存储在应用根中的数据本身。因此,如果用户连接到应用根,则数据链接的对象使用应用根的数据字典和表空间文件来访问。另一方面,如果用户连接到应用根的成员PDB,则尝试访问数据链接的对象会导致DBMS上下文切换并使用应用根的数据字典和表空间文件,而不是与其建立会话的PDB。当数据库对象的定义和数据库对象的数据两者跨成员PDB是公共的时,数据链接的对象是有用的。
第二种分类被称为“元数据链接”。元数据链接的数据库对象将其定义存储在应用根中,但对象的数据存储在各个成员PDB中。元数据链接的对象有用的场景是以上关于雇员表给出的示例,其中表的定义将在应用根中存储一次,并且在成员PDB之间是公共的,但每个成员PDB对于该表具有其自己的数据。因此,如果用户连接到应用根,则元数据链接的对象使其定义通过应用根的数据字典访问,但数据本身从一个或多个成员PDB的表空间文件中读取。在为成员PDB之一建立会话的情况下,访问元数据链接的对象会导致使用应用根的数据字典访问定义,但数据本身是使用成员PDB的表空间文件访问的。
应用根下的可插拔数据库也可以具有数据和元数据,对于这些数据和元数据,对象和对象的定义两者分别存储在成员PDB的表空间文件和数据库字典中。这允许每个可插拔数据库都有其自己的唯一对象。此外,数据链接和元数据链接的对象的概念也适用于可以与其成员PDB执行相同类型的共享的CDB的根数据库。因此,在一些实施例中,存在两个级别的共享,一个在存储对所有PDB公共的数据和元数据的根数据库处,并且另一个在存储跨由同一应用利用的PDB公共的数据和元数据的应用根处。
1.2管理应用用户和角色
除了存储器优化之外,还可以使用应用根来高效地从单个位置管理多个PDB。例如,CDB的根可以用来存储跨所有PDB公共的用户和角色的信息。在这种上下文中,角色是指可以通过引用角色的名称而不是单独授予用户每个权限被捆绑在一起并分配给用户的一组权限。但是,可能存在应该在由同一应用使用的PDB之间但不是跨CDB的所有PDB建立的用户和角色。因此,在一些实施例中,DBMS被配置为允许在应用根内建立“应用用户”和“应用角色”,其然后跨整个应用容器应用。
例如,回顾商店位置PDB示例,可能存在代表应该有权读取和写入应用容器内的任何PDB的区域管理者的用户。不是连接到应用容器中的每个PDB并单独地定义用户,而是用户可以在应用根处定义一次并在成员PDB之间共享。因此,可以关于存储器(例如,密码信息、权限等可以在根中存储一次,而不是复制到所有PDB)和时间(例如,管理员可以建立到应用根的一个会话并发出创建用户的指令而不是单独地在每个成员PDB处创建用户)两者高效地创建应用用户。
但是,在一些实施例中,定义应用用户和应用角色的信息也可以在应用根内创建期间或之后自动镜像到各个PDB上。执行这种镜像的一个原因是确保用户和角色在成员PDB被传输到新的CDB的情况下继续存在。
1.3应用修补和更新管理
应用根也可以用于跨应用容器有效地管理对应用的修补和更新。当应用被修补或更新时,应用容器内的各种元数据和/或数据被修改。例如,元数据链接的表可以被更新以包括新列,这将需要修改表的定义以识别应用根内的新列,并且表的数据将需要在成员PDB内被修改以包括新列。
如本文所使用的,修补是指在应用容器内进行的与应用的先前版本兼容的修改,而更新是指使得应用的先前版本变得不兼容的修改。使修改与先前版本不兼容的原因可能因实施例而不同,并且因此可以以任何数量的任意方式来定义。例如,一个实施例可以指示对数据库对象的定义的任何改变都需要更新,而对数据库对象的数据的改变可以在修补中执行。作为另一个示例,去除由应用的先前版本所依赖的所存储的函数可能需要更新,而所存储的更新的修改可以在修补中执行。作为又一个示例,实施例可以定义这样的规则:即,去除(可能潜在地由应用的先前版本所依赖的)数据的任何改变必须在更新期间执行。
在一些实施例中,每个应用根和成员PDB将上次更新的应用的版本号作为元数据存储。修补或更新是通过执行与应用根处的修补或更新相关联的命令集合来执行的。例如,该命令集合可以被包括在脚本中,该脚本由发布给应用根的修补或更新命令引用。DBMS的行为取决于修补或更新是否正在被处理而不同。
如果正在将更新应用于应用根,则DBMS克隆应用根,并且然后对克隆执行更新。这允许成员PDB在更新正在执行时保持打开并可用于服务。当克隆完成更新时,克隆的版本号被更新并且同步命令被发给成员PDB。同步命令更新成员PDB,诸如更新存储在成员PDB内的数据和/或元数据、更新指向原始应用根的任何指针以引用克隆、和/或更新PDB的应用版本号。在一些情况下,该组指令可以被细分为要在应用根上发出的指令以及要发给成员PDB以将PDB同步到应用根的指令。因此,可以使用先前的指令来执行对应用根的更新,并且可以使用后来的指令来执行将PDB同步到应用根。
同步命令可以自动或手动发出。例如,在一些情况下,管理员可能不希望将所有成员PDB更新为应用的新版本。因此,在更新克隆之后,同步命令可以仅发给要同步到应用的新版本的那些PDB。尚未同步到克隆的其余PDB可以在原始应用根下继续工作。因此,通过使每个版本使用其自己的应用容器,可以在同一CDB内同时服务同一应用的多个版本。
如果正在执行修补,则DBMS发出存储在应用根上的命令集合中的命令。由于更改与先前版本的应用兼容,因此不会生成应用根的克隆,而是在当前应用根上执行修补。取决于实施例,当前正在更新的数据库对象或数据库对象的部分可以被锁定,这可能导致处理命令的一些延迟,但是应用容器通常可以在修补期间保持打开。当修补完成时,成员PDB会自动或手动同步到应用的新版本。
2.0数据库系统
本发明的实施例用在DBMS的上下文中。因此,对DBMS的描述是有用的。
DBMS管理一个或多个数据库。DBMS可以包括一个或多个数据库服务器。数据库包括存储在持久性存储器机制(诸如一组硬盘)上的数据库数据和数据库字典。数据库数据可以存储在一个或多个数据容器中。每个容器包含记录。每条记录内的数据被组织到一个或多个字段中。在关系DBMS中,数据容器被称为表,记录被称为行,并且字段被称为列。在面向对象的数据库中,数据容器被称为对象类,记录被称为对象,并且字段被称为属性。其它数据库体系架构可能使用其它术语。
用户通过向数据库服务器提交命令来与DBMS的数据库服务器交互,这些命令使数据库服务器对存储在数据库中的数据执行操作。用户可以是运行在客户端计算机上的与数据库服务器交互的一个或多个应用。多个用户在本文也可以被统称为用户。
数据库命令可以采用符合数据库语言的数据库语句的形式。用于表达数据库命令的数据库语言是结构化查询语言(SQL)。存在许多不同的SQL版本,一些版本是标准版本和一些是专有版本,并且存在各种扩展。数据定义语言(“DDL”)命令被发到数据库服务器以创建或配置数据库对象,诸如表、视图或复杂数据类型。SQL/XML是在操纵对象关系数据库中的XML数据时使用的SQL的公共扩展。
多节点数据库管理系统由共享对一个或多个数据库的访问的互连节点组成。典型地,节点经由网络互连并且以不同的程度共享对存储装置的访问,例如,对一组盘驱动器和其上存储的数据块的共享访问。多节点数据库系统中的节点可以是经由网络互连的一组计算机(例如,工作站、个人计算机)的形式。替代地,节点可以是网格的节点,其中网格由节点组成,这些节点以刀片服务器的形式与机架上的其它刀片服务器互连。
多节点数据库系统中的每个节点托管数据库服务器。服务器(诸如数据库服务器)是集成的软件组件和计算资源分配的组合,计算资源诸如存储器、节点和节点上的用于在处理器上执行集成的软件组件的过程,软件和计算资源的组合专用于代表一个或多个客户端执行特定的功能。
来自多节点数据库系统中的多个节点的资源可以被分配来运行特定数据库服务器的软件。软件和来自节点的资源分配的每种组合是在本文中被称为“服务器实例”或“实例”的服务器。数据库服务器可以包括多个数据库实例,其中一些或全部在独立的计算机(包括单独的刀片服务器)上运行。
3.0通用操作环境
图1图示了实施例可以在其上实现的示例计算机联网环境。虽然图1仅描绘了特定数量的每个元件,但实际环境可能具有更多,可能数百或数千个图1中所示的每个元件。
在图1中,数据库服务器100、数据库服务器101和数据库服务器102(统称为“数据库服务器”)每个表示在通信地耦合到其相应的数据库(分别是容器数据库103、容器数据库104和容器数据库105)和经由网络106通信地耦合到彼此并且还耦合到数据库客户端107的一个或多个计算设备上的软件和资源的组合。容器数据库103、容器数据库104和容器数据库105统称为“容器数据库”。其上可以实现数据库服务器的计算设备的示例在下面“硬件概述”中描述。在一些实施例中,数据库服务器被配置为接受用户命令,诸如查询、数据定义语言(DDL)和数据操纵语言(DML)指令,并且在其相应的容器数据库上执行那些命令。
在实施例中,网络106表示一个或多个本地网络、广域网络、互联网络或服务提供商网络。在一些实施例中,网络106表示因特网。
在实施例中,数据库客户端107表示一个或多个计算设备上的软件和资源的组合,实现向数据库服务器发送命令以便检索、修改、删除或提交由容器数据库存储的数据的一个或多个应用。其上可以实现数据库服务器的计算设备的示例在下面“硬件概述”中描述。
3.1容器数据库
图2图示了根据实施例的通用容器数据库的示例结构。为了图示清楚的示例,图2关于容器数据库103进行描述,但是该描述也适用于其它容器数据库,诸如也适用于容器数据库104和容器数据库105。
容器数据库103包含由数据库服务器100托管和管理的多个数据库。数据库包括应用根220、可插拔数据库230和与应用根220和可插拔数据库230相关联的根数据库210,如下面将更详细解释的。在其它实施例中,容器数据库103可以包含比图2中描绘的可插拔数据库的数量更多的可插拔数据库。但是,由于固有的硬件限制,一些实现可以对容器数据库103可以支持的可插拔数据库的数量设置上限。根数据库210是由数据库服务器100用来全局管理容器数据库103并且存储用于容器数据库103内的PDB的用户可访问的“公共数据库对象”的元数据和/或数据的数据库。
应用根220是数据库,其由数据库服务器100使用以存储在由相同应用使用或实现相同应用的容器数据库103内的PDB的子集之间共享的数据库对象的元数据和/或数据。应用根220存储数据库字典221,其存储定义用于数据链接的和元数据链接的数据库对象、应用容器的公共用户和角色、应用容器的成员PDB的标识符等。应用根220的数据链接的数据库对象的数据被存储在表空间文件226中。包含在数据库字典221中的元数据被存储在文件APPROOT.DIC中。在一些实施例中,指定应用根200实现的应用的版本号的应用根220的元数据被存储在数据库字典221中。类似地,成员PDB的应用版本号可以被存储在成员PDB的相应数据库字典中。
可插拔数据库230包括数据库字典231。表空间文件236存储可插拔数据库230的数据库对象的数据。用于数据库字典231的元数据被永久存储在文件PDB.DBDIC中。
负责容器数据库103的数据库服务器100可以建立到根数据库210、应用根220或任何成员可插拔数据库的数据库会话。数据库会话连接到的数据库确定由数据库客户端107发出的命令的范围(例如,命令将在哪一个或多个数据库上执行)、哪些权限被检查、哪些数据库字典将用于会话,等等。
根数据库210是由数据库服务器100用来全局管理容器数据库103的数据库。由根数据库210促进的重要功能是定义容器数据库103内的可插拔数据库。类似于可插拔数据库,根数据库210包括数据库字典211。根数据库的数据库字典在本文可以被称为根数据库字典。数据库字典211包含元数据,其定义管理容器数据库103和其中包含的可插拔数据库所需的容器数据库103的各个方面。由数据库字典211定义的数据库对象的数据存储在表空间文件216中。
数据库字典211包括数据库对象Database_sys 303,其可以被表示为表。Database_sys 203定义容器数据库103内的可插拔数据库,并且Database_sys 203的属性每个描述可插拔数据库的方面或属性。属性“可插拔DB”是可插拔数据库的名称或标签。属性“字典存储库”识别保持指向成员可插拔数据库的数据库字典的元数据的字典存储库。数据库字典211中的一条记录定义应用根220及其字典存储库文件APPROOT.DBIDC。数据库字典211中的另一条记录定义可插拔数据库230及其字典存储库PDB.DBIDC。
应用根220的数据库字典221包含与Database_sys 203结构上相同的表,该表识别作为应用根200的应用容器的成员的可插拔数据库并且描述成员PDB的方面和/或属性。
在实施例中,数据库字典211定义在容器数据库103中由可插拔数据库共享或共同使用的公共数据库对象。公共数据库对象在可插拔数据库字典中定义,可插拔数据库字典包括对相应根数据库字典中的公共数据库对象的引用。公共数据库对象的示例包括供应商供应的函数、实用工具、表和视图。在实施例中,数据库字典221定义由应用根220的成员PDB共享或共同使用的公共数据库对象。
根据实施例,关于根数据库210和应用根220,存在两种类型的公共数据库对象:先前已经描述的元数据链接的对象和对象链接的对象。
种子可插拔数据库290包含数据库对象和数据库字典。种子可插拔数据库290被克隆以快速创建初期的可插拔数据库,并促进快速供给这种可插拔数据库。种子可插拔数据库290包含共同需要和/或使用的一组基本数据库对象。例如,种子可插拔数据库290可以包含到公共数据库对象的数据库对象链接和用于访问可插拔数据库字典和其它系统信息的视图。
3.2撤销和重做记录
根数据库210的表空间文件216包括撤销文件241,数据库服务器100使用该撤销文件241存储与容器数据库103内包含的数据库上的事务相关的数据和/或元数据(“撤销记录”)。在一些实施例中,撤销记录存储事务期间被修改的数据的前后图像。例如,如果在事务期间数据库服务器350修改了特定行的“STATE”列以将值从“OHIO”改变为“CALIFORNIA”,则数据库服务器100还在撤销文件341中存储指定前值“OHIO”、后值“CALIFORNIA”以及修改的位置(例如,被修改的一个或多个数据块)的撤销记录。如果事务需要被回滚,则数据库服务器100回溯撤销记录以反转事务已执行的任何修改。
撤销记录可以用于各种目的,诸如回滚事务、恢复数据库、提供读取一致性等。在一些实施例中,撤消文件241是有限大小,并且因此数据库服务器100可以覆盖撤消记录以在事务发生时节省空间。例如,存储撤销记录的段可以在对应的事务结束(例如,通过提交或回滚)之后被重用。但是,在其它实施例中,数据库服务器100可以在对应的事务已经结束之后的一段时间内保留撤消记录。例如,可以保留撤消记录以为长时间运行的查询提供读取一致性。
容器数据库103还包括数据库服务器100用来存储与对容器数据库103执行的修改有关的数据和/或元数据(“重做记录”)的重做日志240。例如,每当数据库服务器100改变容器数据库103的数据块时,数据库服务器100还在重做日志240中存储识别被修改的(一个或多个)块并指定前/后值的重做记录。
在一些实施例中,数据库服务器基于被修改的数据库的状态来识别重做记录。例如,数据库服务器100可以维护容器数据库103的“系统更改编号”(SCN)。每次事务在底层数据库之一上开始、提交或回滚时,数据库服务器100递增SCN。对于由事务做出的改变,或者对于与管理事务相关的其它事件,也可以递增SCN。SCN在根数据库210和可插拔数据库之间共享。当数据库服务器100生成重做记录时,重做记录被标记或以其它方式与识别被修改的数据库和对应的SCN的信息相关联。因此,SCN用作在创建重做记录时识别对应数据库的状态。在其它实施例中,时间戳可以用于相同的效果。
因此,重做日志240存储可以由数据库服务器100使用以当需要恢复时重放对容器数据库103的修改的重做记录的流。
4.0应用容器
如以上提到的,应用容器用于整合跨CDB内的PDB的子集共享的元数据和数据库对象、提供对成员PDB的高效访问、以及促进应用的修补和升级。
在CDB内,根数据库的结构、应用根和应用根的成员PDB逻辑上按树结构进行布局。图3图示了示例树结构,其图示了具有两个不同应用容器的CDB。虽然图3仅图示了两个应用容器,但实际上CDB可以具有任意多数量的应用容器。此外,在其它实施例中,根数据库还可以具有其自己的不属于应用容器的成员PDB。
在图3中,容器数据库103包括具有成员PDB应用根220和应用根300的根数据库210。应用根220具有成员PDB可插拔数据库290,它们一起被统称为应用容器303。应用根300包括成员PDB可插拔数据库301和可插拔数据库302,它们被统称为应用容器304。在图3所示的层次结构中,所有可插拔数据库(包括应用根)是根数据库210的成员,可插拔数据库290是应用根220的成员,以及可插拔数据库301和可插拔数据库302是应用根300的成员。此外,每个应用根被认为是自身的成员,并且根数据库210也被认为是自身的成员。
4.1在应用根上执行命令
如以上所讨论的,由于所有可插拔数据库都是根数据库210的成员,因此在连接到根数据库210时发出的命令可能潜在地影响容器数据库103内定义的任何PDB。但是,在连接到应用根时发出的命令仅影响应用根的成员。例如,如果数据库客户端107要连接到应用根300,则应用根300处发出的查询只能在应用根300和其成员PDB可插拔数据库301和可插拔数据库302上执行。以这种方式,每个应用容器充当虚拟容器数据库,并且因此将在应用根处发出的命令的范围限制为其成员PDB。
在一些实施例中,旨在在多个成员PDB上执行的查询由指定查询影响多个PDB的关键字来表示。例如,可以将关键字“CONTAINERS”围绕(wrap around)数据库对象,以指定查询是要跨应用容器从数据库对象的所有副本读取。如果查询仅限于应用容器内的特定PDB,则可以包含谓词(诸如“WHEREIN”子句),以将查询的执行限制为其ID与由WHEREIN子句指定的那些PDB匹配的PDB。因此,在一些实施例中,容器数据库103内的每个PDB被标记有跨容器数据库103的PDB唯一的ID以促进这些特征。当接收到利用CONTAINERS关键字的命令时,查询在应用容器的每个涉及的PDB中被单独重写和执行。然后,来自每个PDB的结果被聚合并返回给数据库客户端107。关于跨多个PDB执行的查询的重写和优化的进一步信息参见2016年10月21日与本申请同时提交的Thomas Baby的“Implementing a LogicallyPartitioned Data Warehouse using a Container Map”的美国申请No.XX/XXX,XXX,该申请通过引用被结合于此,用于所有目的,就像在本文被完全陈述一样。
4.2数据链接和元数据链接的对象示例
如以上所讨论的,在应用根的上下文中,有两种类型的对象,即数据链接的对象和元数据链接的对象。数据链接的对象是这样的对象:其中对象的数据和元数据都存储在应用根中,具体而言,分别存储在应用根的表空间文件和数据库字典内。因此,数据链接的对象对于跨成员PDB共享定义和数据的对象(诸如表)是有用的。元数据链接的对象是其中数据驻留在成员PDB的表空间文件内的对象,但对象的定义存储在应用根的数据库字典中。因此,元数据链接的对象对于跨成员PDB具有公共定义的对象是有用的,但是对象的数据在成员PDB之间潜在地是唯一的。
图4图示了根据实施例的数据链接的对象和元数据链接的对象的示例。
在图4中,应用根300将商店位置表402存储在表空间文件406内并且将商店位置表402的表定义401存储在数据库字典405内。在这种情况下,由于表定义401和对应的表402两者都存储在应用根300内,因此对象是数据链接的403。在这个示例中,商店位置表402对于所有商店可以是相同的,因为它仅仅列出每个商店前端的位置和细节,并且因此可以跨拥有商店的公司的PDB是相同的。
此外,在图4中,雇员表404被存储在可插拔数据库301内的表空间文件407内,并且雇员表404的表定义400被存储在应用根300的数据库字典405内。在这种情况下,对象是元数据链接的408,因为表定义400被存储在应用根300中并且对应的雇员表404被存储在可插拔数据库301中。在这个示例中,雇员表404遵守的格式或模式可以跨商店位置是相同的,但是每个商店位置可以具有在雇员表404中列出的不同的一组雇员。
因此,使用上述结构,每个商店位置可以被给予单独的可插拔数据库,其中每个商店位置唯一的信息(诸如雇员)是元数据链接的408,并且跨商店位置共享的信息可以是数据链接的403。
4.3创建应用根
在一些实施例中,响应于数据库服务器100从数据库客户端107接收指定创建应用根220的命令来创建应用根220。例如,可以在数据库客户端107建立与容器数据库103的根数据库210的会话之后接收命令。在一些实施例中,该命令与在容器数据库103内创建正常PDB的命令相同,但是替代地包括附加标志或自变量,其指定要创建的PDB是应用根。在其它实施例中,该命令与用于创建容器数据库103的正常PDB的命令不同。
在一些实施例中,创建应用根220的命令还指定哪些现有的PDB将是应用根220的成员。但是,在其它实施例中,数据库服务器100通过检查PDB内指示PDB支持的应用和应用的版本号的元数据来自动检测哪些PDB应该是成员。如果存在匹配,则PDB成为应用根220的成员。此外,在建立应用根220之后,可以通过提交命令将各个PDB分配为应用根220的成员。在一些实施例中,改变应用根220的成员资格只能通过根数据库210发生,但是其它实施例可以允许从应用根220的上下文内添加或去除PDB。
4.4应用用户和角色
如上所述,应用根也可以用于高效管理跨应用根的所有成员PDB公共的用户和角色。这些用户和角色分别被称为“应用用户”和“应用角色”。用户可以由用户名称或标识符、安全信息(例如,私人加密密钥、密码、生物特征数据等)、分配给用户的权限和角色等来定义。角色是指一组权限,其可以通过引用角色的名称或标识符捆绑在一起并分配给用户,而不是单独授予用户每个权限。本部分中提供的示例引用应用根220,但是本文描述的特征可以应用于任何应用根。
在实施例中,为了创建应用用户或角色,数据库客户端107连接到应用根220,并且然后发出创建应用用户或角色的命令。在一些实施例中,数据库客户端107必须作为具有足以创建新用户和角色的权限的用户连接到应用根220,诸如在最初创建应用根220时建立的管理用户。在应用用户的情况下,命令可以指定应用用户的名称或标识符、应用用户的安全信息以及要分配给应用用户的权限和/或角色。但是,在其它实施例中,可以首先创建用户,并且然后用附加命令为其分配权限和用户。在应用角色的情况下,命令可以指定要创建的应用角色的名称(其可以在创建用户时引用),以及要绑定到应用角色中的权限。但是,在其它实施例中,可以首先创建角色,并且然后使用附加命令向其分配权限。然后将定义已经创建的应用用户或角色的信息存储在应用根220的数据库字典221中。
在一些实施例中,定义应用容器的应用用户和角色的信息被镜像在成员PDB的数据库字典内。执行这个镜像的一个原因是如果要转移PDB,则确保用户和角色在PDB被转移到新的CDB的情况下(至少关于传输的PDB)继续存在。在大多数情况下,通过将PDB的数据库字典和表空间文件复制到远程CDB处的新位置来执行转移。因此,如果应用用户和角色未镜像到成员PDB的数据库字典中,则把PDB转移到新位置将导致这些用户和角色相对于转移的PDB丢失。响应于在应用根220内创建新的应用用户或角色,该镜像可以由数据库服务器100自动执行。
在一些实施例中,当数据库客户端107连接到应用根220或应用根220的任何成员PDB时,将由数据库客户端107供应的用户名称/标识符和安全信息与和应用用户相关联的用户名称/标识符和安全信息进行比较。取决于DBMS是否实现应用用户和角色的镜像,应用根220的数据库字典221内的应用用户的定义被检查,或者替代地,成员PDB的数据库字典内定义的镜像副本被检查。然后,当数据库客户端107提交命令时,针对分配给应用用户的权限和应用角色来检查命令。如果应用用户具有足够的权限来执行命令,则执行该命令,否则将错误返回给数据库客户端107。
4.5修补和升级应用
如以上所讨论的,应用根也可以用于跨应用容器有效管理对应用的修补和更新。如本文所使用的,修补是指在应用容器内进行的与应用的先前版本兼容的修改,而更新是指使得应用的先前版本变得不兼容的修改。
图5图示了根据实施例的用于执行应用的修补或更新的框图形式的处理流程。虽然图5图示了以特定顺序执行的特定方框,但与图5的图示相比,其它实施例可以重新排列方框、组合方框、将方框分离为不同的子方框、添加方框或者去除方框。为了图示清楚的示例,将假定修补或更新在应用根220上执行。
在图5中,在方框500处,数据库服务器100接收修补或更新安装在应用根220上的应用的命令。在一些实施例中,数据库客户端107建立与应用根220的会话,并且然后发出引用命令集合(例如,位于脚本内的SQL命令)的命令,当该命令集合被执行时将修补或更新应用。在一些实施例中,命令集合被分成更新应用根220的命令和对成员PDB执行以将它们同步到与应用根220相同的应用版本的命令。
在方框501处,数据库服务器100确定命令是指示修补还是更新。在一些实施例中,命令本身指定是执行修补还是更新。例如,标识符、标志或关键字可以插入到命令中以指定是执行修补还是更新。在其它实施例中,可以通过检查将发给应用根的命令集合来做出确定。例如,数据库服务器100可以使用规则或逻辑集合,该规则或逻辑集合基于将由命令集合执行的修改来确定是执行修补还是更新。例如,数据库服务器100可以确定如果只有对象的数据被修改,而不是对象的定义被修改时,命令才指示修补,否则确定执行更新。另一个示例可以是如果数据或元数据被擦除或修改以擦除对象的现有属性,那么擦除必须在修补中发生,因为先前的版本可能已依赖于这些对象的存在和/或对象的特定属性/列。如果数据库服务器100确定命令应用于升级,则数据库服务器100前进到方框505,否则如果命令应用于修补,则数据库服务器前进到方框503。
在方框502处,数据库服务器100克隆应用根300。克隆应用根具有至少两个目的。首先,由于更新被应用于克隆而不是活动应用根300,因此应用根220和成员PDB可以在克隆正在更新时继续服务命令。其次,维护克隆和原始应用根220两者允许同时服务不同版本的应用。例如,应用的每个版本都可以在其自己的应用容器内工作,其中较新版本的应用根是克隆,并且较旧版本的应用根是原始应用根220。为了执行克隆,数据库服务器100将应用根220的数据库字典221和表空间文件226复制到新的PDB中。
在方框503处,数据库服务器100对克隆的应用根执行更新。在实施例中,数据库服务器100执行由在方框500处接收到的命令引用的命令集合,以便对克隆的应用根执行更新。对于将命令集合划分为用于应用根的命令和用于成员PDB的命令的实施例,在方框503处应用前者。一旦更新被应用于克隆的应用根,就修改克隆的一个或多个定义和对象,并更新由克隆支持的应用的版本号。
在方框504处,数据库服务器100同步应用根200的成员PDB。
在一些实施例中,数据库服务器100自动同步应用根200的成员PDB。例如,数据库服务器100可以连接到每个成员PDB并执行将成员PDB更新为克隆数据库的版本号的命令集合。在一些实施例中,同步涉及将存储在PDB处的版本号与PDB将被同步到的应用根的版本号进行比较并且执行桥接应用版本之间的差异的命令。在同步期间,可以更改存储在成员PDB内的一个或多个数据库对象或定义,对应用根220的引用由对克隆的应用根的引用(在更新的情况下)替代,并且由PDB服务的应用的版本号被更新。此外,在更新的情况下,在已经将PDB同步并更新为应用的新版本之后,可以可选地去除原始应用根220。
在其它情况下,DBMS的管理员可能希望将一些PDB更新为新的应用版本,但允许其它PDB继续使用应用的旧版本。因此,管理员(使用数据库客户端107)可以向要升级的每个成员PDB提交将这些PDB同步到新版本的命令。因此,尚未被更新的其它PDB可以继续使用原始应用根220,并且每个版本可以继续使用两个不同的应用容器同时被支持。在一些实施例中,数据库服务器100比较PDB的版本号和版本号。
在命令执行修补的情况下,取决于修补的性质,成员PDB可能不需要任何修改,并且因此不需要同步。在这种情况下,方框504可以被跳过。否则,数据库服务器100执行成员PDB的自动或手动同步。由于在修补期间不生成克隆,因此对应用根220的引用不必被修改为指向克隆。
在方框505处,数据库服务器100对应用根220执行修补。在实施例中,数据库服务器100执行由在方框500处接收到的命令引用的命令集合,以便对克隆的应用根执行更新。对于将命令集合划分为用于应用根的命令和用于成员PDB的命令的实施例,在方框503处应用前者。一旦修补被应用于克隆的应用根,就修改克隆的一个或多个定义和对象,并更新由克隆支持的应用的版本号。但是,与更新不同,修补被直接应用于应用根220而不使用克隆。由于修补只包括与应用的先前版本兼容的修改,因此与应用更新有关的版本控制问题不适用于修补。因此,不需要为应用的每个版本同时运行两个单独版本的应用根220。
4.6运输应用根
如以上所讨论的,PDB的优点之一是能够将PDB从一个CDB运输到另一个CDB。例如,当支持CDB的基础设施变得过载,从而需要将一些PDB运输到新的CDB以平衡负载时,可能会出于负载平衡目的而执行这个操作。
在一些实施例中,运输PDB涉及将PDB的数据库字典和表空间文件转移到新的CDB。在大多数情况下,转移非常直接,仅涉及将相应的数据库字典和表空间文件复制到在目标CDB内建立的新PDB。但是,应用根的转移潜在地可能更棘手。在一些实施例中,CDB限于两级根,第一级是CDB的根,另一级是由CDB支持的各种应用的应用根。但是,可能是这种情况,即,应用根要作为新CDB内另一个应用根的成员PDB转移到新CDB。由于在这样的实施例中不允许进一步级别的根,因此在将应用根转移到新CDB之后,执行将应用根变换为正常PDB的脚本。例如,识别应用根的成员PDB的信息可以被剥离掉,与新应用根冲突的数据链接的对象和元数据链接的对象被修改以引用新的应用根,剥离掉运输的应用根,和/或转换成对新PDB唯一的用户数据,等等。最终的结果是转移之后的应用根在目标CDB处的新应用根下成为普通的PDB。
5.0硬件概述
根据一个实施例,这里描述的技术由一个或多个专用计算设备或一个或多个通用计算设备来实现。专用计算设备可以是硬连线的以执行这些技术,或者可以包括诸如被永久性编程以执行这些技术的一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)的数字电子设备,或者可以包括被编程为按照固件、存储器、其它存储装置或其组合中的程序指令来执行这些技术的一个或多个通用硬件处理器。这些专用计算设备还可以将定制的硬连线逻辑、ASIC或FPGA与定制的编程组合来实现这些技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、联网设备或者包含硬连线和/或程序逻辑以实现这些技术的任何其它设备。通用计算设备可以包括一个或多个通用硬件处理器,该一个或多个通用硬件处理器被编程为按照固件、存储器、其它存储装置或组合中的程序指令来执行这些技术。
例如,图6是图示本发明的实施例可以在其上实现的示例计算机系统600的框图。计算机系统600包括总线602或者用于传送信息的其它通信机制,以及与总线602耦合用于处理信息的硬件处理器604。硬件处理器604可以是例如通用微处理器。
计算机系统600还包括耦合到总线602用于存储信息和要由处理器604执行的指令的主存储器606,诸如随机存取存储器(RAM)或其它动态存储设备。主存储器606还可以用于在要由处理器604执行的指令执行期间存储临时变量或其它中间信息。当存储在处理器604可访问的非瞬态存储介质中时,这种指令使计算机系统600变成为执行指令中所规定的操作而定制的专用机器。
计算机系统600还包括只读存储器(ROM)608或者耦合到总线602的其它静态存储设备,用于为处理器604存储静态信息和指令。提供了存储设备610,诸如磁盘或光盘,并且耦合到总线602,用于存储信息和指令。
计算机系统600可以经总线602耦合到显示器612,诸如阴极射线管(CRT),用于向计算机用户显示信息。输入设备614,包括字母数字和其它键,耦合到总线602,用于向处理器604传送信息和命令选择。另一种类型的用户输入设备是游标控制616,诸如鼠标、轨迹球或者游标方向键,用于向处理器604传送方向信息和命令选择并且用于控制显示器612上的游标运动。这种输入设备通常具有在两个轴,第一个轴(例如,x)和第二个轴(例如,y),中的两个自由度,以允许设备在平面内规定位置。
计算机系统600可以利用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现本文所述的技术,这些与计算机系统相结合,使计算机系统600或者把计算机系统600编程为专用机器。根据本发明的一种实施例,本文的技术由计算机系统600响应于执行包含在主存储器606中的一条或多条指令的一个或多个序列的处理器604而执行。这种指令可以从另一存储介质,诸如存储设备610,读到主存储器606中。包含在主存储器606中的指令序列的执行使处理器604执行本文所述的过程步骤。在备选实施例中,硬连线的电路系统可以代替软件指令或者与其结合使用。
如在本文所使用的,术语“存储介质”是指存储使机器以特定方式操作的数据和/或指令的任何非瞬态介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备610。易失性介质包括动态存储器,诸如主存储器606。存储介质的常见形式包括,例如,软盘、柔性盘、硬盘、固态驱动器、磁带,或者任何其它磁性数据存储介质,CD-ROM,任何其它光学数据存储介质,任何具有孔模式的物理介质,RAM、PROM和EPROM、FLASH-EPROM、NVRAM,任何其它存储器芯片或盒式磁带。
存储介质与传输介质截然不同但是可以与其结合使用。传输介质参与在存储介质之间传送信息。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线602的配线。传输介质还可以采取声或光波的形式,诸如在无线电波和红外线数据通信中产生的那些。
各种形式的介质可以参与把一条或多条指令的一个或多个序列携带到处理器604供执行。例如,指令最初可以在远端计算机的磁盘或固态驱动器上携带。远端计算机可以把指令加载到其动态存储器中并且利用调制解调器经电话线发送指令。位于计算机系统600本地的调制解调器可以在电话线上接收数据并且使用红外线发送器把数据转换成红外线信号。红外线检测器可以接收在红外线信号中携带的数据并且适当的电路系统可以把数据放在总线602上。总线602把数据携带到主存储器606,处理器604从该主存储器606检索并执行指令。由主存储器606接收的指令可以可选地在被处理器604执行之前或之后存储在存储设备610上。
计算机系统600还包括耦合到总线602的通信接口618。通信接口618提供耦合到网络链路620的双向数据通信,其中网络链路620连接到本地网络622。例如,通信接口618可以是综合业务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器,或者提供到对应类型的电话线的数据通信连接的调制解调器。作为另一个示例,通信接口618可以是提供到兼容的局域网(LAN)的数据通信连接的LAN卡。无线链路也可以实现。在任何此类实现中,通信接口618都发送和接收携带表示各种类型信息的数字信号流的电、电磁或光信号。
网络链路620通常通过一个或多个网络向其它数据设备提供数据通信。例如。网络链路620可以通过本地网络622提供到主计算机624或者到由互联网服务提供商(ISP)626操作的数据设备的连接。ISP 626又通过现在通常称为“互联网”628的全局分组数据通信网络提供数据通信服务。本地网络622和互联网628都使用携带数字数据流的电、电磁或光信号。通过各种网络的信号以及在网络链路620上并通过通信接口618的信号是传输介质的示例形式,其中信号把数字数据带到计算机系统600或者携带来自计算机系统600的数字数据。
计算机系统600可以通过(一个或多个)网络、网络链路620和通信接口618发送消息和接收数据,包括程序代码。在互联网示例中,服务器630可以通过互联网628、ISP 626、本地网络622和通信接口618发送对应于程序的所请求代码。
接收到的代码可以在其被接收到时由处理器604执行,和/或存储在存储设备610或其它非易失性存储装置中,用于以后执行。
在前面的说明书中,本发明的实施例已经参考众多的具体细节进行了描述,这些细节可以从一种实现到另一种实现不同。因此,说明书和附图被认为是说明性的而不是限制性的。本发明的范围的唯一且排他指示,以及申请人所预期的作为本发明的范围的内容,是从本申请产生的权利要求集合的书面和等效范围,以这种权利要求产生的具体形式,包括任何后续的校正。
6.0附加公开
在以下条款中描述了其它实施例:
1.一种方法,包括:数据库服务器从数据库客户端接收将在容器数据库的应用根处应用的查询,其中:所述查询识别至少特定数据库对象,所述数据库服务器提供对所述容器数据库的访问,所述容器数据库包括存储一个或多个数据库对象和与在所述容器数据库内存储的多个可插拔数据库之间共享的一个或多个数据库对象相关的元数据的根数据库,所述多个可插拔数据库包括应用根,以及所述应用根存储第二一个或多个数据库对象以及与在所述容器数据库内存储的多个可插拔数据库的子集之间共享的由公共应用利用的所述第二一个或多个数据库对象相关的第二元数据;响应于接收到所述查询,所述数据库服务器基于所述应用根的数据库字典来执行所述查询以生成结果集;所述数据库服务器将所述结果集返回给所述数据库客户端。
2.如条款1所述的方法,其中所述特定数据库对象是元数据链接的对象,其中所述特定数据库对象的定义被存储在所述应用根的数据库字典中,并且所述数据库对象的数据被存储在所述子集内的每个可插拔数据库的相应一个或多个表空间文件内。
3.如条款1所述的方法,其中所述特定数据库对象是数据链接的对象,其中所述特定数据库对象的定义被存储在所述应用根的数据库字典中,并且所述数据库对象的数据被存储在所述应用根的一个或多个表空间文件内。
4.如条款1所述的方法,还包括:所述数据库服务器接收创建跨所述子集公共的应用用户的指令;响应于接收到创建应用用户的指令,数据库服务器将信息存储在定义应用用户的应用根的数据库字典中。
5.如条款4所述的方法,还包括:响应于接收到创建应用用户的指令,所述数据库服务器将信息存储在定义应用用户的所述子集的每个可插拔数据库的相应数据库字典中。
6.如条款1所述的方法,还包括:所述数据库服务器接收创建跨所述子集公共的应用角色的指令;响应于接收到创建应用角色的指令,数据库服务器将信息存储在定义应用角色的应用根的数据库字典中。
7.如条款6所述的方法,还包括:响应于接收到创建应用角色的指令,所述数据库服务器将信息存储在定义应用角色的所述子集的每个可插拔数据库的相应数据库字典中。
8.如条款1所述的方法,还包括:所述数据库服务器接收指定将所述应用根更新为公共应用的新版本的指令,其中所述指令指定或引用要在所述应用根处执行以更新到新版本的指令集合;响应于接收到所述指令,所述数据库服务器创建所述应用根的克隆;所述数据库服务器对克隆执行所述指令集合;所述数据库服务器将所述子集的一个或多个可插拔数据库同步到公共应用的新版本,其中同步所述一个或多个可插拔数据库使得所述数据库服务器将对由所述一个或多个可插拔数据库存储的所述应用根的一个或多个引用切换到改为引用克隆。
9.如条款8所述的方法,其中所述数据库服务器将所述子集的所述一个或多个可插拔数据库同步到公共应用的新版本是响应于接收到指定将所述一个或多个可插拔数据库同步到公共应用的新版本的一个或多个命令而执行的。
10.如条款8所述的方法,其中所述一个或多个可插拔数据库包括比所述子集少至少一个可插拔数据库。
11.如条款1所述的方法,还包括:所述数据库服务器接收指定修补所述应用根的指令,其中所述指令指定或引用要在所述应用根处执行以修补所述应用根的指令集合;响应于接收到所述指令,所述数据库服务器对所述应用根执行所述指令集合。
12.存储指令的一个或多个非瞬态计算机可读介质,当所述指令由一个或多个计算设备执行时使得执行如条款1-11中所述的任何一种方法。
13.一种包括一个或多个计算设备的系统,所述一个或多个计算设备包括至少部分地由计算硬件实现的、被配置为实现如条款1-11中所述的任何一种方法的步骤的组件。
Claims (15)
1.一种方法,包括:
数据库服务器在用于第一应用的数据库会话中从数据库客户端接收将在容器数据库的应用根处应用的查询,其中:
所述查询识别至少特定数据库对象,
所述数据库服务器提供对所述容器数据库和多个可插拔数据库的访问,
所述容器数据库包含用于第一应用的应用根和用于不同应用的附加应用根,
不是应用根的多个可插拔数据库中的特定可插拔数据库包含存储所述特定数据库对象的一个或多个表空间文件,
所述容器数据库包括存储一个或多个数据库对象和与在所述容器数据库内存储的多个可插拔数据库之间共享的一个或多个数据库对象相关的元数据的根数据库,
所述多个可插拔数据库包括应用根和附加应用根,以及
所述应用根存储第二一个或多个数据库对象以及与在所述容器数据库内存储的多个可插拔数据库的子集之间共享的、由第一应用利用的所述第二一个或多个数据库对象相关的第二元数据,
响应于接收到所述查询,所述数据库服务器基于所述应用根的数据库字典来执行所述查询以生成结果集;
所述数据库服务器将所述结果集返回给数据库客户端;以及
响应于在数据库会话中接收附加查询,将附加查询的范围限制为作为用于第一应用的应用根的成员的可插拔数据库。
2.如权利要求1所述的方法,其中所述特定数据库对象是元数据链接的对象,其中所述特定数据库对象的定义被存储在所述应用根的数据库字典中,并且所述数据库对象的数据被存储在所述子集内的每个可插拔数据库的相应一个或多个表空间文件内。
3.如权利要求1-2中任一项所述的方法,其中所述特定数据库对象是数据链接的对象,其中所述特定数据库对象的定义被存储在所述应用根的数据库字典中,并且所述数据库对象的数据被存储在所述应用根的一个或多个表空间文件内。
4.如权利要求1-2中的任一项所述的方法,还包括:
所述数据库服务器接收创建跨所述子集公共的应用用户的指令;
响应于接收到创建应用用户的指令,数据库服务器将信息存储在定义应用用户的应用根的数据库字典中。
5.如权利要求4所述的方法,还包括:
响应于接收到创建应用用户的指令,所述数据库服务器将信息存储在定义应用用户的所述子集的每个可插拔数据库的相应数据库字典中。
6.如权利要求1-2中任一项所述的方法,还包括:
所述数据库服务器接收创建跨所述子集公共的应用角色的指令;
响应于接收到创建应用角色的指令,数据库服务器将信息存储在定义应用角色的应用根的数据库字典中。
7.如权利要求6所述的方法,还包括:
响应于接收到创建应用角色的指令,所述数据库服务器将信息存储在定义应用角色的所述子集的每个可插拔数据库的相应数据库字典中。
8.如权利要求1-2中任一项所述的方法,还包括:
所述数据库服务器接收指定将所述应用根更新为公共应用的新版本的指令,其中所述指令指定或引用要在所述应用根处执行以更新到新版本的指令集合;
响应于接收到所述指令,所述数据库服务器创建所述应用根的克隆;
所述数据库服务器对克隆执行所述指令集合;
所述数据库服务器将所述子集的一个或多个可插拔数据库同步到公共应用的新版本,其中同步所述一个或多个可插拔数据库使得所述数据库服务器将对由所述一个或多个可插拔数据库存储的所述应用根的一个或多个引用切换到改为引用克隆。
9.如权利要求8所述的方法,其中所述数据库服务器将所述子集的所述一个或多个可插拔数据库同步到公共应用的新版本是响应于接收到指定将所述一个或多个可插拔数据库同步到公共应用的新版本的一个或多个命令而执行的。
10.如权利要求8所述的方法,其中所述一个或多个可插拔数据库包括比所述子集少至少一个可插拔数据库。
11.如权利要求1-2中任一项所述的方法,还包括:
所述数据库服务器接收指定修补所述应用根的指令,其中所述指令指定或引用要在所述应用根处执行以修补所述应用根的指令集合;
响应于接收到所述指令,所述数据库服务器对所述应用根执行所述指令集合。
12.存储指令的一个或多个非瞬态计算机可读介质,当所述指令由一个或多个计算设备执行时使得执行如权利要求1-11中所述的任何一种方法。
13.一种包括一个或多个计算设备的系统,所述一个或多个计算设备包括至少部分地由计算硬件实现的、被配置为实现如权利要求1-11中所述的任何一种方法的步骤的组件。
14.一种装置,包括用于执行如权利要求1-11中所述的任何一种方法的部件。
15.一种设备,包括:
处理器,和
存储器,耦接到处理器并包括存储在其上的指令,当由处理器执行时,所述指令使处理器执行如权利要求1-11中任何一项所述的方法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562245937P | 2015-10-23 | 2015-10-23 | |
US62/245,937 | 2015-10-23 | ||
US201662395267P | 2016-09-15 | 2016-09-15 | |
US62/395,267 | 2016-09-15 | ||
PCT/US2016/058264 WO2017070572A1 (en) | 2015-10-23 | 2016-10-21 | Application containers for container databases |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108475271A CN108475271A (zh) | 2018-08-31 |
CN108475271B true CN108475271B (zh) | 2021-09-14 |
Family
ID=58558935
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680073256.2A Active CN108431804B (zh) | 2015-10-23 | 2016-10-21 | 将多个容器数据库分组为单个容器数据库集群的能力 |
CN201680072769.1A Active CN108475271B (zh) | 2015-10-23 | 2016-10-21 | 容器数据库的应用容器 |
CN201680075373.2A Active CN108431810B (zh) | 2015-10-23 | 2016-10-21 | 代理数据库 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680073256.2A Active CN108431804B (zh) | 2015-10-23 | 2016-10-21 | 将多个容器数据库分组为单个容器数据库集群的能力 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680075373.2A Active CN108431810B (zh) | 2015-10-23 | 2016-10-21 | 代理数据库 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10628422B2 (zh) |
EP (3) | EP3365808B1 (zh) |
CN (3) | CN108431804B (zh) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10528596B2 (en) * | 2014-09-26 | 2020-01-07 | Oracle International Corporation | System and method for consistent reads between tasks in a massively parallel or distributed database environment |
US10394818B2 (en) | 2014-09-26 | 2019-08-27 | Oracle International Corporation | System and method for dynamic database split generation in a massively parallel or distributed database environment |
US10387421B2 (en) | 2014-09-26 | 2019-08-20 | Oracle International Corporation | System and method for generating size-based splits in a massively parallel or distributed database environment |
WO2017070580A1 (en) | 2015-10-23 | 2017-04-27 | Oracle International Corporation | Ability to group multiple container databases as a single container database cluster |
US10635658B2 (en) | 2015-10-23 | 2020-04-28 | Oracle International Corporation | Asynchronous shared application upgrade |
US10360269B2 (en) | 2015-10-23 | 2019-07-23 | Oracle International Corporation | Proxy databases |
US10579478B2 (en) * | 2015-10-23 | 2020-03-03 | Oracle International Corporation | Pluggable database archive |
WO2017070572A1 (en) | 2015-10-23 | 2017-04-27 | Oracle International Corporation | Application containers for container databases |
US10606578B2 (en) | 2015-10-23 | 2020-03-31 | Oracle International Corporation | Provisioning of pluggable databases using a central repository |
CN106897338A (zh) * | 2016-07-04 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 一种针对数据库的数据修改请求处理方法及装置 |
US10346189B2 (en) * | 2016-12-05 | 2019-07-09 | Red Hat, Inc. | Co-locating containers based on source to improve compute density |
US10503714B2 (en) * | 2017-06-02 | 2019-12-10 | Facebook, Inc. | Data placement and sharding |
US10877998B2 (en) * | 2017-07-06 | 2020-12-29 | Durga Turaga | Highly atomized segmented and interrogatable data systems (HASIDS) |
US11386058B2 (en) * | 2017-09-29 | 2022-07-12 | Oracle International Corporation | Rule-based autonomous database cloud service framework |
US10936567B2 (en) * | 2017-11-27 | 2021-03-02 | Sap Se | Accelerating queries based on zone condition tallies |
US10613911B2 (en) * | 2018-01-09 | 2020-04-07 | International Business Machines Corporation | Integrating multiple distributed data processing servers with different data partitioning and routing mechanisms, resource sharing policies and lifecycles into a single process |
US11468060B2 (en) * | 2018-06-25 | 2022-10-11 | Oracle International Corporation | Automatic query offloading to a standby database |
US10963464B2 (en) * | 2018-10-17 | 2021-03-30 | Oracle International Corporation | Multiple partitioning schemes for partitioned database objects |
US11182360B2 (en) * | 2019-01-14 | 2021-11-23 | Microsoft Technology Licensing, Llc | Database tuning and performance verification using cloned database |
US11354168B2 (en) | 2019-01-18 | 2022-06-07 | Salesforce.Com, Inc. | Elastic data partitioning of a database |
CN110457944B (zh) * | 2019-08-02 | 2023-08-25 | 爱友智信息科技(苏州)有限公司 | 一种数据分享方法及系统 |
CN110457181B (zh) * | 2019-08-02 | 2023-05-16 | 武汉达梦数据库股份有限公司 | 一种数据库的日志优化分析方法及装置 |
CN110502535B (zh) * | 2019-08-28 | 2022-02-22 | 上海达梦数据库有限公司 | 数据访问方法、装置、设备和存储介质 |
CN112835915B (zh) * | 2019-11-25 | 2023-07-18 | 中国移动通信集团辽宁有限公司 | Mpp数据库系统、数据存储方法及数据查询方法 |
US11372995B2 (en) * | 2020-01-17 | 2022-06-28 | Snowflake Inc. | Container-centric access control on database objects |
CN111858504B (zh) * | 2020-06-04 | 2023-12-12 | 武汉达梦数据库股份有限公司 | 基于日志解析同步的操作合并执行方法和数据同步系统 |
CN112306996A (zh) * | 2020-11-16 | 2021-02-02 | 天津南大通用数据技术股份有限公司 | 一种实现多集群间联合查询和快速数据迁移的方法 |
US11657066B2 (en) * | 2020-11-30 | 2023-05-23 | Huawei Cloud Computing Technologies Co., Ltd. | Method, apparatus and medium for data synchronization between cloud database nodes |
CN113360476B (zh) * | 2021-06-21 | 2023-11-21 | 上海上讯信息技术股份有限公司 | 一种程序数据库虚拟化插拔的方法及设备 |
US20230185856A1 (en) * | 2021-12-13 | 2023-06-15 | Google Llc | Database Container Orchestrator |
US11934543B1 (en) | 2022-11-17 | 2024-03-19 | Snowflake Inc. | Transient object references |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101258483A (zh) * | 2005-09-09 | 2008-09-03 | 易享信息技术(上海)有限公司 | 用于在多租户数据库环境中导出、发布、浏览和安装随需应用的系统及其方法 |
CN104781809A (zh) * | 2012-09-28 | 2015-07-15 | 甲骨文国际公司 | 容器数据库 |
Family Cites Families (69)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5734871A (en) * | 1985-10-29 | 1998-03-31 | Mitem Corporation | Method for and apparatus for controlling the execution of host computer application programs through a second computer |
US7415466B2 (en) | 1996-03-19 | 2008-08-19 | Oracle International Corporation | Parallel transaction recovery |
US6647510B1 (en) | 1996-03-19 | 2003-11-11 | Oracle International Corporation | Method and apparatus for making available data that was locked by a dead transaction before rolling back the entire dead transaction |
US7031987B2 (en) | 1997-05-30 | 2006-04-18 | Oracle International Corporation | Integrating tablespaces with different block sizes |
US6272503B1 (en) | 1997-05-30 | 2001-08-07 | Oracle Corporation | Tablespace-relative database pointers |
US6185699B1 (en) | 1998-01-05 | 2001-02-06 | International Business Machines Corporation | Method and apparatus providing system availability during DBMS restart recovery |
US6205449B1 (en) | 1998-03-20 | 2001-03-20 | Lucent Technologies, Inc. | System and method for providing hot spare redundancy and recovery for a very large database management system |
US6226650B1 (en) | 1998-09-17 | 2001-05-01 | Synchrologic, Inc. | Database synchronization and organization system and method |
US6295610B1 (en) | 1998-09-17 | 2001-09-25 | Oracle Corporation | Recovering resources in parallel |
US10191922B2 (en) * | 1998-11-24 | 2019-01-29 | Oracle International Corporation | Determining live migration speed based on workload and performance characteristics |
US6868417B2 (en) | 2000-12-18 | 2005-03-15 | Spinnaker Networks, Inc. | Mechanism for handling file level and block level remote file accesses using the same server |
US7305421B2 (en) | 2001-07-16 | 2007-12-04 | Sap Ag | Parallelized redo-only logging and recovery for highly available main memory database systems |
US8738568B2 (en) | 2011-05-05 | 2014-05-27 | Oracle International Corporation | User-defined parallelization in transactional replication of in-memory database |
US7493311B1 (en) | 2002-08-01 | 2009-02-17 | Microsoft Corporation | Information server and pluggable data sources |
US6981004B2 (en) | 2002-09-16 | 2005-12-27 | Oracle International Corporation | Method and mechanism for implementing in-memory transaction logging records |
US6976022B2 (en) | 2002-09-16 | 2005-12-13 | Oracle International Corporation | Method and mechanism for batch processing transaction logging records |
US7890466B2 (en) | 2003-04-16 | 2011-02-15 | Oracle International Corporation | Techniques for increasing the usefulness of transaction logs |
US7181476B2 (en) | 2003-04-30 | 2007-02-20 | Oracle International Corporation | Flashback database |
US7457829B2 (en) | 2003-06-23 | 2008-11-25 | Microsoft Corporation | Resynchronization of multiple copies of a database after a divergence in transaction history |
US7873684B2 (en) | 2003-08-14 | 2011-01-18 | Oracle International Corporation | Automatic and dynamic provisioning of databases |
US7660805B2 (en) | 2003-12-23 | 2010-02-09 | Canon Kabushiki Kaisha | Method of generating data servers for heterogeneous data sources |
US7870120B2 (en) | 2004-05-27 | 2011-01-11 | International Business Machines Corporation | Method and system for processing a database query by a proxy server |
CN100358326C (zh) * | 2004-06-04 | 2007-12-26 | 西安电子科技大学 | 宽带无线ip网络安全体系结构及实现安全的方法 |
US7822727B1 (en) | 2004-07-02 | 2010-10-26 | Borland Software Corporation | System and methodology for performing read-only transactions in a shared cache |
US20060047713A1 (en) | 2004-08-03 | 2006-03-02 | Wisdomforce Technologies, Inc. | System and method for database replication by interception of in memory transactional change records |
GB2419697A (en) | 2004-10-29 | 2006-05-03 | Hewlett Packard Development Co | Virtual overlay infrastructures each having an infrastructure controller |
EP1768035A1 (en) * | 2005-09-26 | 2007-03-28 | Research In Motion Limited | LDAP to SQL database proxy system and method |
EP1952283A4 (en) | 2005-10-28 | 2010-01-06 | Goldengate Software Inc | DEVICE AND METHOD FOR GENERATING A REAL-TIME DATABASE DUPLICATE |
US20070118527A1 (en) | 2005-11-22 | 2007-05-24 | Microsoft Corporation | Security and data filtering |
US7822717B2 (en) | 2006-02-07 | 2010-10-26 | Emc Corporation | Point-in-time database restore |
US9026679B1 (en) | 2006-03-30 | 2015-05-05 | Emc Corporation | Methods and apparatus for persisting management information changes |
US8364648B1 (en) | 2007-04-09 | 2013-01-29 | Quest Software, Inc. | Recovering a database to any point-in-time in the past with guaranteed data consistency |
US20080319958A1 (en) | 2007-06-22 | 2008-12-25 | Sutirtha Bhattacharya | Dynamic Metadata based Query Formulation for Multiple Heterogeneous Database Systems |
US8745076B2 (en) | 2009-01-13 | 2014-06-03 | Red Hat, Inc. | Structured query language syntax rewriting |
US8549038B2 (en) | 2009-06-15 | 2013-10-01 | Oracle International Corporation | Pluggable session context |
US10120767B2 (en) | 2009-07-15 | 2018-11-06 | Idera, Inc. | System, method, and computer program product for creating a virtual database |
US8429134B2 (en) | 2009-09-08 | 2013-04-23 | Oracle International Corporation | Distributed database recovery |
CN101706781B (zh) * | 2009-09-29 | 2012-03-07 | 北京星网锐捷网络技术有限公司 | 一种数据库缓存集中管理方法和系统 |
EP2323047B1 (en) | 2009-10-09 | 2020-02-19 | Software AG | Primary database system, replication database system and method for replicating data of a primary database system |
JP5302227B2 (ja) | 2010-01-19 | 2013-10-02 | 富士通テン株式会社 | 画像処理装置、画像処理システム、および、画像処理方法 |
US8666974B2 (en) * | 2010-04-16 | 2014-03-04 | Salesforce.Com, Inc. | Methods and systems for performing high volume searches in a multi-tenant store |
US8386431B2 (en) | 2010-06-14 | 2013-02-26 | Sap Ag | Method and system for determining database object associated with tenant-independent or tenant-specific data, configured to store data partition, current version of the respective convertor |
US9081837B2 (en) | 2010-10-28 | 2015-07-14 | Microsoft Technology Licensing, Llc | Scoped database connections |
US8478718B1 (en) | 2010-11-16 | 2013-07-02 | Symantec Corporation | Systems and methods for replicating data in cluster environments |
US8170981B1 (en) * | 2010-12-08 | 2012-05-01 | Dassault Systemes Enovia Corporation | Computer method and system for combining OLTP database and OLAP database environments |
US8819163B2 (en) | 2010-12-08 | 2014-08-26 | Yottastor, Llc | Method, system, and apparatus for enterprise wide storage and retrieval of large amounts of data |
US8996463B2 (en) | 2012-07-26 | 2015-03-31 | Mongodb, Inc. | Aggregation framework system architecture and method |
US8868492B2 (en) | 2011-06-15 | 2014-10-21 | Oracle International Corporation | Method for maximizing throughput and minimizing transactions response times on the primary system in the presence of a zero data loss standby replica |
US9769250B2 (en) | 2013-08-08 | 2017-09-19 | Architecture Technology Corporation | Fight-through nodes with disposable virtual machines and rollback of persistent state |
US9203900B2 (en) | 2011-09-23 | 2015-12-01 | Netapp, Inc. | Storage area network attached clustered storage system |
US20130085742A1 (en) | 2011-10-04 | 2013-04-04 | Nec Laboratories America, Inc. | Service level agreement-aware migration for multitenant database platforms |
US9058371B2 (en) | 2011-11-07 | 2015-06-16 | Sap Se | Distributed database log recovery |
US9467361B2 (en) * | 2011-12-20 | 2016-10-11 | Shoretel, Inc. | Bandwidth utilization monitoring for a communication system |
KR101322401B1 (ko) | 2012-01-31 | 2013-10-28 | 주식회사 알티베이스 | 동기적 이중화를 위한 데이터베이스 관리 시스템의 병렬 처리 장치 및 방법 |
US8527462B1 (en) | 2012-02-09 | 2013-09-03 | Microsoft Corporation | Database point-in-time restore and as-of query |
US9037677B2 (en) * | 2012-04-17 | 2015-05-19 | Sap Se | Update protocol for client-side routing information |
US9396220B2 (en) | 2014-03-10 | 2016-07-19 | Oracle International Corporation | Instantaneous unplug of pluggable database from one container database and plug into another container database |
US9454548B1 (en) * | 2013-02-25 | 2016-09-27 | Emc Corporation | Pluggable storage system for distributed file systems |
WO2014145230A1 (en) | 2013-03-15 | 2014-09-18 | Recent Memory Incorporated | Object-oriented data infrastructure |
US9830372B2 (en) | 2013-07-24 | 2017-11-28 | Oracle International Corporation | Scalable coordination aware static partitioning for database replication |
US9323817B2 (en) * | 2013-09-09 | 2016-04-26 | Linkedin Corporation | Distributed storage system with pluggable query processing |
US9767178B2 (en) | 2013-10-30 | 2017-09-19 | Oracle International Corporation | Multi-instance redo apply |
US9817994B2 (en) * | 2013-10-30 | 2017-11-14 | Oracle International Corporation | System and method for integrating a database with a service deployed on a cloud platform |
JP6461167B2 (ja) * | 2014-01-21 | 2019-01-30 | オラクル・インターナショナル・コーポレイション | アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムおよび方法 |
US10332297B1 (en) * | 2015-09-04 | 2019-06-25 | Vishal Vadodaria | Electronic note graphical user interface having interactive intelligent agent and specific note processing features |
US10635658B2 (en) | 2015-10-23 | 2020-04-28 | Oracle International Corporation | Asynchronous shared application upgrade |
US10606578B2 (en) | 2015-10-23 | 2020-03-31 | Oracle International Corporation | Provisioning of pluggable databases using a central repository |
WO2017070572A1 (en) | 2015-10-23 | 2017-04-27 | Oracle International Corporation | Application containers for container databases |
WO2017070580A1 (en) | 2015-10-23 | 2017-04-27 | Oracle International Corporation | Ability to group multiple container databases as a single container database cluster |
-
2016
- 2016-10-21 CN CN201680073256.2A patent/CN108431804B/zh active Active
- 2016-10-21 EP EP16788392.5A patent/EP3365808B1/en active Active
- 2016-10-21 CN CN201680072769.1A patent/CN108475271B/zh active Active
- 2016-10-21 EP EP16788001.2A patent/EP3365805B1/en active Active
- 2016-10-21 US US15/331,540 patent/US10628422B2/en active Active
- 2016-10-21 EP EP16788391.7A patent/EP3365807B1/en active Active
- 2016-10-21 CN CN201680075373.2A patent/CN108431810B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101258483A (zh) * | 2005-09-09 | 2008-09-03 | 易享信息技术(上海)有限公司 | 用于在多租户数据库环境中导出、发布、浏览和安装随需应用的系统及其方法 |
CN104781809A (zh) * | 2012-09-28 | 2015-07-15 | 甲骨文国际公司 | 容器数据库 |
Non-Patent Citations (1)
Title |
---|
Oracle12c在整合医院辅助信息系统低版本数据库上的应用实践;李伟等;《信息安全与技术》;20150930;全文 * |
Also Published As
Publication number | Publication date |
---|---|
EP3365805B1 (en) | 2019-08-07 |
US10628422B2 (en) | 2020-04-21 |
CN108431804A (zh) | 2018-08-21 |
EP3365808A1 (en) | 2018-08-29 |
EP3365805A1 (en) | 2018-08-29 |
CN108431810A (zh) | 2018-08-21 |
CN108475271A (zh) | 2018-08-31 |
CN108431810B (zh) | 2022-02-01 |
EP3365808B1 (en) | 2021-08-25 |
CN108431804B (zh) | 2022-01-14 |
EP3365807A1 (en) | 2018-08-29 |
EP3365807B1 (en) | 2019-08-07 |
US20170116278A1 (en) | 2017-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108475271B (zh) | 容器数据库的应用容器 | |
US10572551B2 (en) | Application containers in container databases | |
EP2901325B1 (en) | Container database | |
KR102307371B1 (ko) | 데이터베이스 시스템 내의 데이터 복제 및 데이터 장애 조치 | |
EP4064067B1 (en) | Automatic query offloading to a standby database | |
CN109906448B (zh) | 用于促进可插拔数据库上的操作的方法、设备和介质 | |
CN106415536B (zh) | 用于数据库管理系统间的可插拔数据库传输的方法及系统 | |
US11550667B2 (en) | Pluggable database archive | |
US10114626B2 (en) | Database level containers | |
US10528341B2 (en) | User-configurable database artifacts | |
US20190278856A9 (en) | Asynchronous Shared Application Upgrade | |
US20060224626A1 (en) | Versioned file group repository | |
US10127272B2 (en) | Modifying a database query | |
US20120036166A1 (en) | Effective dating for table or relationship modifications | |
US11657046B1 (en) | Performant dropping of snapshots by converter branch pruning | |
Foster et al. | SQL Data Definition Statements | |
Iqbal Hossain | SQL query based data and structure uniformity maintenance in heterogeneous database environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |