暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在Oracle中,SCHEMA和USER的区别是什么?

DB宝 2017-05-31
865



Q
题目如下所示:

在Oracle中,SCHEMAUSER的区别是什么


     

A
答案如下所示:



在官方文档中对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里面包含了各种对象如TABLESVIEWSSEQUENCESSTORED PROCEDURESSYNONYMSINDEXESCLUSTERS、和DATABASE LINKS。一个USER对应一个SCHEMA,该用户的SCHEMA名等于用户名,并作为该用户缺省SCHEMAOracle数据库中不能新创建一个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



DB笔试面试历史连接

http://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w

About Me:小麦苗

 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/

 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

 版权所有,欢迎分享本文,转载请保留出处

 QQ:646634621  QQ群:230161599

● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。

最后修改时间:2020-01-10 21:12:22
文章转载自DB宝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论