在Oracle中,SCHEMA和USER的区别是什么?
在官方文档中对SCHEMA的定义如下所示:
A schema is a collection of database objects (used by a user.). Schema objects are the logical structures that directly refer to the database's data. A user is a name defined in the database that can connect to and access objects.Schemas and users help database administrators manage database security.
从定义中可以看出,SCHEMA为数据库对象的集合。SCHEMA里面包含了各种对象如TABLES、VIEWS、SEQUENCES、STORED PROCEDURES、SYNONYMS、INDEXES、CLUSTERS、和DATABASE LINKS。一个USER对应一个SCHEMA,该用户的SCHEMA名等于用户名,并作为该用户缺省SCHEMA。Oracle数据库中不能新创建一个SCHEMA,要想创建一个SCHEMA,只能通过创建一个用户的方法解决。
不同的SCHEMA之间没有直接的关系,不同的SHCEMA之间的表可以同名,也可以互相引用(但必须有权限)。在没有操作别的SCHEMA的操作根权下,每个用户只能操作自己的SCHEMA下的所有的表。好比一个房子,里面放满了家具,对这些家具有支配权的是房子的主人(USER),而不是房子(SCHEMA)。
一个使用上的示例如下所示:
SYS@lhrdb> SHOW USER; USER is "SYS" SYS@orclasm > SELECT SYS_CONTEXT ('USERENV', 'CURRENT_SCHEMA') CURRENT_SCHEMA FROM DUAL; CURRENT_SCHEMA --------------- SYS SYS@lhrdb> ALTER SESSION SET CURRENT_SCHEMA=SCOTT; Session altered. SYS@lhrdb> SHOW USER; USER is "SYS" <---切换SCHEMA并不等同于切换USER SYS@orclasm > SELECT SYS_CONTEXT ('USERENV', 'CURRENT_SCHEMA') CURRENT_SCHEMA FROM DUAL; CURRENT_SCHEMA --------------- SCOTT SYS@lhrdb> SELECT COUNT(*) FROM EMP; COUNT(*) ---------- 12 SYS@lhrdb> ALTER SESSION SET CURRENT_SCHEMA=SYS; Session altered. SYS@lhrdb> SELECT COUNT(*) FROM EMP; SELECT COUNT(*) FROM EMP * ERROR at line 1: ORA-00942: table or view does not exist |
● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用
● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/
● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
● QQ:646634621 QQ群:230161599
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步
长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。




