ITPub博客

首页 > 数据库 > Oracle > Namespace

Namespace

原创 Oracle 作者:goasktom 时间:2014-05-07 14:54:01 0 删除 编辑
namespace到底是啥,我在官网上也不找着具体的说法,你可以将它看成是一个容器,在同一个容器内物体不能有相同的名字——就这么简单,在oracle的世界里,一共有两类对象,一类是索引,另一类是除索引以外的所有物体,下面是官网上的原话:

The following objects owned by the same user share one namespace and so the names for each of these objects must be unique within that namespace: tables, views, materialized views, sequences, private synonyms, PL/SQL packages, functions, procedures, and cache groups.

Indexes are created in their own namespace.


综上,以下几句话都是正确的:

1.索引可以和任何对象重名,除了它自己以外
2.除索引以外的任何物体都不能重名(当然了,是在同一个容器内)


不过还有一个问题没弄明白,就是无论在哪,查到的namespace都是以数字形式出现的,但每个数字表示的是啥不知道还是说Oracle只是用不同的数字来表示不同的namespace,那如果是这样,为啥表示namespace的这些数字还不连续呢(一共21个,但范围却从1-64)

参考http://blog.csdn.net/tianlesoftware/article/details/6624122后发现,namespace和对象类型差不多,但oracle又说了并非每个对象类型都对应一个namespace,也就是说namespace的数量可能要比对象类型少,或者说一个namespace里可以放2个甚至更多个不同类型的对象,博文里又通过对比obj$和library_cache里,namespace数量不一致的问题引出对library_cache进行dump查看的问题,最后主要是对namespace数量的研究——这不重要!因为

 What is a certainty is that all the objects of the same type will always be stored in the same namespace. An object can only be of one type, hence the search for an object in the library cache is reduced to a search for this object in the corresponding namespace.

可以确定的是相同类型的对象最终会被放到相同的namespace,一个对象只能属于一种类型,因此在库缓存中查找对象,可以简化为在这个对象所属类型对应的namespace中查找


自己总结一下,主要有三点:
1.对象类型和Namespace数量因oracle版本或软件内具体功能的实现与否而不同
2.对象类型与namespace的字符表示虽然相似,但二者之间并没有一一对应的关系
3.Namespace重在作用,数量具体是多少倒在其次

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29646619/viewspace-1155929/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: Logmnr使用简介
请登录后发表评论 登录
全部评论

注册时间:2014-05-07

  • 博文量
    27
  • 访问量
    43325