容器数据库的制作方法_2

文档序号:8460738阅读:来源:国知局
是限制性的。例如,数据库字典可以比那些为数据库字典101描绘的具有更多的表和属性。其它的表可以定义用户、用户权限以及哪些用户权限被授予哪个用户。此外,数据库字典的数据结构不限于表,诸如在图1中所绘出的表。
[0034]数据库字典元数据的存储
[0035]用于数据库字典的元数据被永久地存储在字典存储库(dict1nary store)中。字典存储库可以是,但不限于,一个或多个文件,包括表空间的文件。当数据库服务器运行时,数据库字典至少部分地包括易失性存储器中的一个或多个数据结构(“存储器中的数据结构”),其存储至少一部分字典存储库中的元数据。这种存储器中的数据结构在例如初始化用于操作的数据库服务器或实例时利用来自字典存储库中的元数据进行创建和填充。存储器中的数据结构的例子包括前面描述的表,诸如Column_sys 104和Table_sys 102。
[0036]一旦存储器中的数据结构被填充,存储器中的数据结构中的元数据就可以被需要使用数据库字典的数据库操作,诸如查询评估,快速访问。填充存储器中的数据结构在本文中被称为加载数据库字典。
[0037]命名空间
[0038]命名空间是其中特定类型对象的名称或标签必须对那种类型的对象唯一的域。数据库字典101包括若干个不同的命名空间。
[0039]一种这样的命名空间是用于表的命名空间。用于表的命名空间受模式约束。表的名称在属于该模式的其它表的名称之间是唯一的。用于列的命名空间受表的约束。列名在用于表的其它列名中是唯一的。
[0040]对于模式和表空间,命名空间受数据库约束,如由数据库字典101所定义的。模式的名称在由数据库字典101定义的其它模式的名称之间是唯一的。表空间的名称在由数据库字典101定义的其它表空间的名称之间是唯一的。注意,尽管表空间TS_EMP1、TS_EMP2、TS_EMP3、TS_EMP4、TS_EMP5为名为EMP的表存储数据,表空间的命名空间也需要表空间具有唯一的名称。
[0041]容器数据库
[0042]图2绘出了容器DBMS 200,它是根据本发明实施例的容器DBMS。容器DBMS 200包含被数据库服务器托管和管理的多个数据库。数据库包括可插拔数据库PDA 220和可插拔数据库I3DB 230,以及根数据库210,其与可插拔数据库PDA 220和可插拔数据库TOB 230相关联,如将更详细解释的。可插拔数据库及相关联的根数据库,诸如可插拔数据库PDA220、可插拔数据库TOB 230和根数据库210,在本文中被统称为容器数据库。容器DBMS可以包含比图3中绘出的可插拔数据库的数量多的可插拔数据库。根数据库210是用于全球地管理容器DBMS 200并为多个可插拔数据库的用户可访问的“公共数据库对象”存储元数据和/或数据的数据库。
[0043]参考图2,可插拔数据库PDA 220包括数据库字典221。用于可插拔数据库PDA 220的数据库对象的数据存储在表空间文件226中。类似于用户数据,用于数据库字典的元数据永久地存储在字典存储库中。数据库字典221中包含的元数据存储在文件PDA.DBDIC中。
[0044]可插拔数据库I3DB 230包括数据库字典231。表空间文件236存储用于可插拔数据库TOB 230的数据库对象的数据。用于数据库字典231的元数据永久地存储在文件TOB.DBDIC 中。
[0045]可插拔数据库的数据库字典在本文中可以被称为可插拔数据库字典。由可插拔数据库字典定义的、不是公共数据库对象的数据库对象在本文中被称为可插拔数据库对象。
[0046]可插拔数据库会话
[0047]用户可以通过将可插拔数据库的相应可插拔数据库字典建立为用于数据库会话的数据库字典来访问容器DBMS 200内的可插拔数据库。一旦可插拔数据库字典被建立为可插拔数据库的数据库字典,访问就被隔离到该可插拔数据库的数据库对象,以及根数据库的公共数据库对象,如将进一步详细描述的。可插拔数据库字典由数据库服务器响应于来自用户对可插拔数据库的连接请求而为数据库会话建立。将可插拔数据库字典建立为用于数据库会话的数据库字典在本文中可以被称为附加数据库字典。
[0048]对于容器数据库的一个或多个可插拔数据库中的可插拔数据库对象,执行发给附加到可插拔数据库字典的数据库会话的数据库命令只能访问由可插拔数据库字典定义的可插拔数据库对象。因此,数据库会话的用户只能访问由附加的可插拔数据库字典定义的可插拔数据库对象,从而将对可插拔数据库对象的数据库访问隔离到在相应的可插拔数据库中的那些。这种隔离不仅适用于终端用户,而且也适用于可插拔数据库的管理员。
[0049]例如,响应于对可插拔数据库PDA 220访问的连接请求,数据库字典221被附加到数据库会话。在数据库会话中发出的数据库命令被针对数据库字典221执行。通过数据库会话中发出的DML命令访问可插拔数据库对象被隔离到由数据库字典221定义的可插拔数据库对象。通过同时执行与可插拔数据库PDA或可插拔数据库PDB的数据库会话的隔离以同样方式实现。
[0050]根数据库
[0051]根数据库210是用来全局地管理容器DBMS 200的数据库。根数据库210促进的一个重要功能是定义容器DBMS 200中的可插拔数据库。类似于可插拔数据库,根数据库210包括数据库字典211。根数据库的数据库字典在本文中可以被称为根数据库字典。数据库字典211包含元数据,其定义管理容器DBMS 200及其中包含的可插拔数据库所需的容器DBMS 200的各个方面。用于由数据库字典211定义的数据库对象的数据存储在表空间文件216中。
[0052]数据库字典211 包括 Database_sy s 203。Database_sy s 203 定义容器 DBMS200中的可插拔数据库。Database_sys 203的每个属性描述可插拔数据库的方面或特性。属性可插拔DB (Pluggable DB)是用于可插拔数据库的名称或标签。属性字典存储库(Dict1nary Store)识别保持数据库字典中的元数据的字典存储库。数据库字典211中的一条记录定义可插拔数据库PDA 220及其字典存储库文件PDA.DBIDC。数据库字典211中的另一条记录定义可插拔数据库I3DB 230及其字典存储库TOB.DBIDCo
[0053]在实施例中,数据库字典211定义实际上被容器DBMS 200中的可插拔数据库共享的公共数据库对象。公共数据库对象在可插拔数据库字典中定义,其包括对相应根数据库字典中公共数据库对象的引用。公共数据库对象的例子包括供应商提供的函数、实用工具、表和视图。
[0054]根据实施例,存在两种类型的公共数据库对象:元数据链接的对象和对象链接的对象。对于这两者,用于公共数据库对象的元数据存储在根数据库中。但是,对于元数据链接的对象,用于公共数据库对象的数据,如果有的话,被存储在可插拔数据库中。因此,对于元数据链接的对象,不同的可插拔数据库可以为同一公共数据库对象存储不同的数据。对于对象链接的对象,用于数据库对象的元数据和数据两者,如果有的话,都被存储在根数据库中。用于这种类型的公共数据库对象的数据对于容器数据库中的可插拔数据库来说是相同的。
[0055]种子(Seed)可插拔数据库290包含数据库对象和数据库字典。种子可插拔数据库290被克隆以快速地创建初始的可插拔数据库,并有助于这种可插拔数据库的快速供给。种子可插拔数据库290包含通常需要和/或使用的一组基本的数据库对象。例如,种子数据库290可以包含到公共数据库对象的数据库对象链接和用于访问可插拔数据库字典和其它系统信息的视图。
[0056]数据库字典211、221和231是解释性的和说明性的容器DBMS中的数据库字典,但不是限制性的。
[0057]为可插拔数据库建立数据库会话
[0058]用户通过为可插拔数据库在托管该可插拔数据库的DBMS上建立数据库会话访问可插拔数据库。在描述如何为可插拔数据库建立数据库会话之前,进一步描述数据库会话是有用的。
[0059]数据库会话包括为客户端建立的到诸如数据库实例的数据库服务器的特定连接,通过其客户端发出一系列的请求(例如,执行数据库语句的请求)。数据库服务器可以维护关于该会话的会话状态数据。会话状态数据反映数据库会话的当前状态,并且可以包含为其建立该数据库会话的用户的身份、被该用户使用的服务、对象类型的实例、语言和字符集数据、关于用于该会话的资源使用的统计、由在数据库会话中执行软件的过程生成的临时变量值,以及用于游标和变量及其它信息的存储。如果数据库字典已附加到数据库会话,则用于该数据库会话的会话状态包括访问所附数据库字典所需的一个或多个引用或链接。
[0060]图3绘出了包括尤其为了建立用于可插拔数据库的数据库会话而执行的操作的过程。参考图3,在310,托管容器数据库的数据库服务器收到连接请求,以及与该连接请求关联的参数值,其包括数据库标识符。数据库标识符可以是可用来识别访问所请求的数据库的任何信息。在实施例中,数据库标识
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1