Oracle的方案(Schema)和用户(User)的区别

从定义中咱们能够看出方案(Schema)为数据库对象的集合,为了区分各个集合,咱们须要给这个集合起个名字,这些名字就是咱们在企业管理器的方案下看到的许多相似用户名的节点,这些相似用户名的节点其实就是一个schema,schema里面包含了各类对象如tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links。

   一个用户通常对应一个schema,该用户的schema名等于用户名,并做为该用户缺省schema。这也就是咱们在企业管理器的方案下看到schema名都为数据库用户名的缘由。Oracle数据库中不能新建立一个schema,要想建立一个schema,只能经过建立一个用户的方法解决(Oracle中虽然有create schema语句,可是它并非用来建立一个schema的),在建立一个用户的同时为这个用户建立一个与用户名同名的schem并做为该用户的缺省shcema。即schema的个数同user的个数相同,并且schema名字同user名字一一对应而且相同,全部咱们能够称schema为user的别名,虽然这样说并不许确,可是更容易理解一些。 sql

   一个用户有一个缺省的schema,其schema名就等于用户名,固然一个用户还可使用其余的schema。若是咱们访问一个表时,没有指明该表属于哪个schema中的,系统就会自动给咱们在表上加上缺省的sheman名。好比咱们在访问数据库时,访问scott用户下的emp表,经过select * from emp; 其实,这sql语句的完整写法为select * from scott.emp。在数据库中一个对象的完整名称为schema.object,而不属user.object。相似若是咱们在建立对象时不指定该对象的schema,在该对象的schema为用户的缺省schema。这就像一个用户有一个缺省的表空间,可是该用户还可使用其余的表空间,若是咱们在建立对象时不指定表空间,则对象存储在缺省表空间中,要想让对象存储在其余表空间中,咱们须要在建立对象时指定该对象的表空间。 数据库

   oracle中的schema就是指一个用户下全部对象的集合,schema自己不能理解成一个对象,oracle并无提供建立schema的语法,schema也并非在建立user时就建立,而是在该用户下建立第一个对象以后schema也随之产生,只要user下存在对象,schema就必定存在,user下若是不存在对象,schema也不存在;这一点相似于temp tablespace group,另外也能够经过oem来观察,若是建立一个新用户,该用户下若是没有对象则schema不存在,若是建立一个对象则和用户同名的schema也随之产生。 oracle

相关文章
相关标签/搜索