oracle 与 sql server 区别之07 系统元数据

本文探讨了SQLServer和Oracle数据库中的系统表及其用途。详细介绍了SQLServer中的资源数据库和目录视图,以及Oracle的数据字典和数据字典视图,并展示了如何通过不同级别的视图查询数据库对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不过是Oracle还是SQL Server,在数据库软件安装和数据库创建的时候,都会自动创建一大堆表以及其他诸如视图、函数、存储过程之类的对象。这些系统级的表包含的是实例和实例所用到的物理和逻辑属性的元数据,Oracle把这些表统称为数据字典(data dictionary),在SQL Server中则是称为系统表(system tables)

在SQL Server 2005及之后的版本,大部分的系统对象都保存在resource数据库中,少部分保存在master数据库中。Oracle中,数据字典表是保存在SYSTEM和SYSAUX表空间中。从SQL Server 2005开始是无法再直接访问系统表了,目录视图(catalogue views)取代系统表作为新的访问系统元数据的统一的接口。在Oracle中数据字典表名都是加密过的,藉此来减少表被直接访问或修改,同样的,Oracle也创建了一系列的视图用于给DBA和开发人员访问元数据,Oracle称这些视图为数据字典视图(data dictionary views)

目录视图的定义存储在SQL Server的resource数据库中,这些系统视图归属于一个特别的名为sys的用户架构之下(user schema)并能从任意数据库中访问到。例如,要查看一个SQL Server实例中存在的所有的数据库,DBA就可以在任意数据库下使用下面语句查询:

1SELECT * FROM  sys.databases

要查出任意一个数据库中的所有对象,则可以使用sys.objects目录视图:

1SELECT * FROM  sys.objects

Oracle中,数据字典从属于Oracle用户SYS。不过不同于SQL Server的时候每个数据字典视图都存在有三种不同的形式,分别提供三个不同级别的信息。数据字典视图也就存在三个不同的类型,从视图名的前缀就能看出视图能带来什么样的信息:

  • 以USER_开头的视图允许用户查看他自己创建的对象的信息。
  • 以ALL_开头的视图允许用户查看他自己创建的对象以及那些非他自己创建的却有权限访问的对象的信息。
  • 以DBA_开头的视图是给DBA用的,这类的视图可以查询到数据库中存在的所有对象的信息,普通的用户是没有权限访问这些视图的。

下面的例子展示的两个查询返回的结果就是不一样的:

1SELECT TABLE_NAME, TABLESPACE_NAME FROM USER_TABLES;
2SELECT TABLE_NAME, TABLESPACE_NAME FROM DBA_TABLES;

第一个只显示执行查询的用户自己创建的表而第二个则会显示数据库中存在的所有的表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值