Oracle User 和 Schema 的区别

 Oracle User 和 Schema 的区别



1 概述

Schema和User的定义如下

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,schema里面包含了各种对象如tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links。

Oracle中虽然有create schema语句,但是它并不是用来创建一个schema的,具体见下面官方文档。

Use the CREATE SCHEMA statement to create multiple tables and views and perform multiple grants in your own schema in a single transaction. To execute a CREATE SCHEMA statement, Oracle Database executes each included statement. If all statements execute successfully, then the database commits the transaction. If any statement results in an error, then the database rolls back all the statements.

Note:This statement does not actually create a schema. Oracle Database automatically creates a schema when you create a user (see CREATE USER). 

   一个用户对应一个schema, 该用户的schema名等于用户名,并作为该用户缺省schema。这也就是我们在企业管理器的方案下看到schema名都为数据库用户名的原因。Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决。

   如果我们访问一个表时,没有指明该表属于哪一个schema中的,系统就会自动给我们在表上加上缺省的sheman名。比如我们在访问数据库时,访问scott用户下的emp表,通过

    select * from emp;

其实,这sql语句的完整写法为

    select * from scott.emp

   在数据库中 一个对象的完整名称为schema.object,而不属user.object。类似如果我们在创建对象时不指定该对象的schema,在该对象的schema为用户的缺省schema。

2 深入理解user和schema的区别

   不同的schema之间它们没有直接的关系,不同的shcema之间的表可以同名,也可以互相引用(但必须有权限),在没有操作别的schema的操作根权下, 每个用户只能操作它自己的schema下的所有的表。不同的schema下的同名的表, 可以存入不同的数据(即schema用户自己的数据)。 

   好比一个房子,里面放满了家具,对这些家具有支配权的是房子的主人(user),而不是房子(schema)。

你可以也是一个房子的主人(user),拥有自己的房子(schema)。可以通过alter session的方式进入别人的房子。 这个时候,你可以看到别人房子里的家具(desc)。 如果你没有特别指定的话,你所做的操作都是针对你当前所在房子中的东西。 

   至于你是否有权限使用(select)、搬动(update)或者拿走(delete)这些家具就看这个房子的主人有没有给你这样的权限了,或者你是整个大厦(DB)的老大(DBA)。



About Me


.............................................................................................................................................

● 本文转载:http://www.cndba.cn/dave/article/2046

● 本文在itpub(http://blog.itpub.net/26736162/abstract/1/)、博客园(http://www.cnblogs.com/lhrbest)和个人微信公众号(xiaomaimiaolhr)上有同步更新

● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/

● 本文博客园地址:http://www.cnblogs.com/lhrbest

● 本文pdf版、个人简介及小麦苗云盘地址:http://blog.itpub.net/26736162/viewspace-1624453/

● 数据库笔试面试题库及解答:http://blog.itpub.net/26736162/viewspace-2134706/

● DBA宝典今日头条号地址:http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

.............................................................................................................................................

● QQ群号:230161599(满)、618766405

● 微信群:可加我微信,我拉大家进群,非诚勿扰

● 联系我请加QQ好友(646634621),注明添加缘由

● 于 2017-08-01 09:00 ~ 2017-08-31 22:00 在魔都完成

● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

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

.............................................................................................................................................

● 小麦苗的微店:https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

● 小麦苗出版的数据库类丛书:http://blog.itpub.net/26736162/viewspace-2142121/

.............................................................................................................................................

使用微信客户端扫描下面的二维码来关注小麦苗的微信公众号(xiaomaimiaolhr)及QQ群(DBA宝典),学习最实用的数据库技术。

   小麦苗的微信公众号      小麦苗的DBA宝典QQ群1     小麦苗的DBA宝典QQ群2        小麦苗的微店

.............................................................................................................................................

时间: 2024-11-01 20:19:54

Oracle User 和 Schema 的区别的相关文章

oracle的游标和过程区别

问题描述 oracle的游标和过程区别 我想要查询emp表中的所有的数据 用游标的方式会写 但是能不能用过程实现这个查询呢?还有过程是和函数一样 只能返回一个参数吗?不能返回行数据吗? 解决方案 存储过程当然可以返回行数据.http://www.cnblogs.com/attraction/archive/2008/01/23/13489.html

MySQL、SQL Server、Oracle Database的Schema比较

数据库系统课上老师介绍了2种数据库:Oracle Database和SQL Server,也说了他们之间模式( Schema ,也称为架构)的区别,这里我也补充下与我常用的MySQL的模式区别,备忘. 模式相当于数据库系统中的名称空间,一个模式中可以有多种对象,例如基本表.视图.索引.访问某个模式中的对象,需要指定 模式名.对象名 . Oracle Database Oracle Database客户端工具登录的时候,需要提供用户名.密码,以及数据库名,登陆后,查询表中的数据,需要提供 用户名.

Oracle过程与函数的区别分析_oracle

Oracle过程和函数相信大家都比较了解,下面就为您详细介绍Oracle过程和函数二者之间的区别,希望可以让您对Oracle过程和函数有更深的认识. Oracle过程和函数都以编译后的形式存放在数据库中,函数可以没有参数也可以有多个参数并有一个返回值.过程有零个或多个参数,没有返回值.函数和过程都可以通过参数列表接收或返回零个或多个值,函数和过程的主要区别不在于返回值,而在于他们的调用方式.Oracle过程是作为一个独立执行语句调用的: pay_involume(invoice_nbr,30,d

SQL Server与Oracle并行访问的本质区别

设计优良.性能卓越的数据库引擎可以轻松地同时为成千上万的用户服务.而"底气不足"的数据库系统随着更多的用户同时访问系统将大大降低其性能.最糟糕的情况下甚至可能导致系统的崩溃. 当然,并行访问是任何数据库解决方案都最为重视的问题了,为了解决并行访问方面的问题各类数据库系统提出了各种各样的方案.SQL Server和Oracle两大DBMS也分别采用了不同的并行处理方法.它们之间的实质差别在哪里呢? 并行访问的问题 并行访问出现问题存在若干种情况.在最简单的情形下,数量超过一个的用户可能同

Oracle B*tree索引和Oracle Bitmap索引有什么区别

(1) 建立B*tree索引 3:11:08 SQL>create index emp1_job_ind on emp1(job); (2)分析索引结构 3:11:08 SQL> ANALYZE INDEX EMP1_JOB_IND VALIDATE STRUCTURE; Index analyzed. (3)查看索引存储信息 03:11:41 SQL> SELECT BLEVEL,LEAF_BLOCKS,NUM_ROWS FROM USER_INDEXES 03:12:12   2  

Oracle 热备份和冷备份的区别

冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库.冷备份时将关键性文件拷贝到另外的位置的一种说法.对于备份Oracle信息而言,冷备份时最快和最安全的方法.冷备份的优点是: 1. 是非常快速的备份方法(只需拷文件) 2. 容易归档(简单拷贝即可) 3. 容易恢复到某个时间点上(只需将文件再拷贝回去) 4. 能与归档方法相结合,做数据库"最佳状态"的恢复. 5. 低度维护,高度安全. 但冷备份也有如下不足: 1. 单独使用时,只能提供到"某一时间

小麦苗BLOG文章索引

小麦苗BLOG文章索引            自从2014年7月1号开始写blog到2015年5月5日,历时10个月的时间,大概写了90篇文章,这blog多了就乱了,今天抽空出来整理整理,方便大家也方便自己阅读,本文将一直更新,另外,最后我把所有的blog文章全列出来,可能会有用.    小麦苗的所有文章:itpub文章链接-小麦苗.zip     2015年06月03日更新一次,我写的blog数量:109 篇    2015年07月03日更新一次,我写的blog数量:126 篇    2016

oracle之Schema

  在一个数据库中可以有多个应用的数据表,这些不同应用的表可以放在不同的schema之中, 同时,每一个schema对应一个用户,不同的应用可以以不同的用户连接数据库, 这样,一个大数据库就可以根据应用把其表分开来管理. www.2cto.com 不同的schema之间它们没有直接的关系,不同的shcema之间的表可以同名, 也可以互相引用(但必须有权限),在没有操作别的schema的操作根权下, 每个用户只能操作它自己的schema下的所有的表.不同的schema下的同名的表, 可以存入不同的

在Oracle中session和process的区别(转)

对应元数据表 v$resource_limit. 相互关系 sessions=1.1 * processes + 5 ,至于开多少个进程和你的用户并发数有关. 如果修改要修改数据库初始化参数,processes 和session 在Oracle中session和process的区别 问:在Oracle中session和process的区别是什么?答:一.一个process可以有0个.1个或者多个session,一个 session也可以存在若干个process中,并行同样是一个session对应