ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle 命名空间(转载)

oracle 命名空间(转载)

原创 Linux操作系统 作者:赵文超 时间:2011-05-27 17:23:58 0 删除 编辑
oracle 命名空间
来源:http://hi.baidu.com/yinyuman/blog/item/ac65da2a785ae526d42af1cf.html

不知道大家在学习的过程中有没有注意到过这样的一个问题,当你创建一个表,名字为TEST。也许过几天当你做索引或者视图实验的时候,想再次创建一个名字为TEST的索引或视图的时候,ORACLE会提示你已经存在该对象。本来我也没太在意,我以为就是以前可能创建过一个同名的对象呗,可做的实验多了我发现好像里面有些蹊跷,比如说我有个表叫TEST,那么当我再创建一个TEST视图的时候就会报错,可我如果再创建的不是视图,而是一个叫做TEST的索引的时候,就不会报错。由此引申出了命名空间的概念,在这之间我一直没在ORACLE中思考过这个概念。于是去网上搜了些相关资料,自己做了下实验,在这里小总结一下~

命名空间定义了一组对象类型,在命名空间里,对象的名字必须是唯一的,当然,在不同的命名空间里,是可以使用相同的的名字的。

 

下面的对象类型共享同一个命名空间:

• Tables

• Views

• Sequences

• Private synonyms

• Stand-alone procedures

• Stand-alone stored functions

• Packages

• Materialized views

• User-defined types

 

 

因此,如果数据库中有一个表叫做TEST,那么就不能再创建一个叫做TEST的视图,至少,在一个schema中是不可能出现这种现象的。

 

下面的对象类型有各自的命名空间:

• Indexes

• Constraints

• Clusters

• Database triggers

• Private database links

• Dimensions

 

 

所以你可以创建一个叫做TEST的索引,即使在相同的schema中。

 

不受Schema局限的对象类型(Non schema objects)有它们自己的命名空间,如下:

• User roles

• Public synonyms

• Public database links

• Tablespaces

• Profiles

• Parameter files (PFILEs) and server parameter files (SPFILEs)

所以两个Non-schema objects可以用相同的名字。 ......

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

下一篇: 深入了解SCN
请登录后发表评论 登录
全部评论

注册时间:2011-03-22

  • 博文量
    3
  • 访问量
    8032