面向的问题:
为何表不属于表空间,而属于用户名?
现有oracle的一个实例:springs,表空间:axis,某一用户名:sfivy.
现用sfivy登录,新建表:customers,创建完成后,却发现customers表属于sfivy,而不是属于axis.
即在查询时,写sql语句时,
select * from sfivy.customers --- 正确;
select * from axis.customers --- 错误。
逻辑上的归属关系不是实例-->;表空间-->;表吗?
解决的方案:
多个用户都可以在同一个表空间里面建表。而且表名字可以一样,这时候,如果按照
表空间.表名字 你让oracle给你访问哪一个表?
实际上,oracle就是遵循SQL92。不同的用户可以有相同名字的对象。
这样的要求,必然是按照 用户名.objectname来访问。
schema
方案(Schema)为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的方案下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个schema,schema里面包含了各种对象如tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links。 一个用户一般对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema。这也就是我们在企业管理器的方案下看到schema名都为数据库用户名的原因。