远是online的,所以在数据库打开时所有的数据字典永远是可用的。
HowOracle Database Uses the Data Dictionary(数据库怎样使用数据字典)
Oracle数据库用户SYS拥有所有的数据字典基表以及视图。数据字典基表中的数据 对于数据库运行来说是必须存在的。因此只有Oracle数据库可以写或者更改数据字典中的信息。用户永远不要对SYS schema中的对象或数据进行修改,因为这样的操作会损坏数据完整性。
安全管理员必须保证对这个关键用户(SYS)的控制。
警告:更改或操作数据字典的数据会对数据库运行造成永久的损害。
在数据库运行期间,在用户访问一个schema objects时,Oracle数据库会读取数据字典来确认这些schema objects是否存在。Oracle数据库同样也会持续对数据字典进行更新用来反映数据库中 结构,审计,授权以及数据的变化。
举个例子,如果hr用户创建一个名叫interns的表,那么会有插入一些行到数据字典中来对应这个新表,列,段,区,以及hr在这个表上的权限。这些新的信息会在下次查询数据字典中体现出来。
PublicSynonyms for Data Dictionary Views(数据字典视图的公共同义词)
Oracle数据库给很多数据字典创建了公共同义词,这样用户就可以很方便的访问它们。安全管理员可以另外再增加公共同义词。用户给自己对象起名时要注意规避这些公共同义词的名字。
Cachethe Data Dictionary for Fast Access(将数据字典缓存,方便快速访问)
许多数据字典中的数据都在data dictionary cache中,因为数据库频繁的查询这些信息去验证用户们访问的对象的状态。parsing(解析)信息往往保存在caches中。COMMENTS列 说明了表们以及它的列们没有缓存到dictionary cache,但是可能会缓存到database buffer cache。
OtherPrograms and the Data Dictionary
其他Oracle数据库产品可以引用已经存在的数据字典,然后创建它们自己的数据字典表或视图。应用开发人员在写程序时用到数据字典,应该用它们的公共同义词,而不是底层的表。
同义词在不同版本很少发生改变。
Overview of the DynamicPerformance Views(动态性能试图的概述)
在Oracle数据库运行(从open到关闭),Oracle数据库会维护一组虚表用来记录当前数据库的动作。因为它们在数据库打开后就不间断的更新着 所以称它们为动态性能试图。
这些视图同样会被称之为 V$ 视图。包含的信息如下:
·系统和会话的参数(parameters)
·内存的使用和分配
·文件的状态(包括RMAN备份文件)
·jobs和tasks的进度
·SQL执行情况
·统计信息和度量信息
动态性能有下面几个主要用户:
·Oracle Enterprise Manager 使用这些视图获取Oracle数据库中的信息
·管理员可以使用这些视图来性能监控和排错。
Contentsof the Dynamic Performance Views(动态性能试图的内容)
动态性能试图有时候也被叫做固化(fixed)视图,因为它们不能被DBA更改或者删除。DBA可以查询,以及在这些表上创建视图然后将这些视图的访问授权给其他用户。
SYS拥有动态性能视图,它们的名字都是以V_$开头。这些表上有视图,以及它们的公共同义词前缀是V$。举个例子,V$DATAFILE视图包含了数据文件的信息。V$FIXED_TABLE视图包含了所有动态性能表和视图的信息。
几乎所有的V$视图都有一个对应的GV$视图存在。在RAC中,查询GV$视图将返回所有数据库instance中的V$视图中的信息。
当你使用了Database Configuration Assistant(DBCA)创建一个数据库,Oracle会自动创建数据字典。Oracle数据库会自动运行catalog.sql脚本,这个脚本包含动态性能视图的公共同义词的定义。你必须运行catalog.sql来创建这些视图和同义词。
Storageof the Dynamic Performance Views(动态性能试图的存储)
动态性能试图是基于根据数据库内存结构创建的虚表。因此,它们没有传统的表存储在数据库。视图的读一致性没有保证,因为数据一直在动态更新中。
动态性能试图不是真彪,数据依赖于数据库和实例的状态。举个例子,当数据库是NOMOUNT时你可以查询V$INSTANCE和V$BGPROCESS,可是,在数据库NOMOUNT时,你是不能查询V$DATAFILE的。
Database Object Metadata(数据库对象元数据)
DBMS_METADAT包提供了抽取数据库objects完整定义的接口。这些定义可以表现为XML或者SQL DDL语句。这里提供了两种类型的接口:为程序控制提供了灵活,复杂的接口,以及为临时查询提供的简单接口。