oracle schema彻底理解

oracle中的Schema简析

在一个数据库中可以有多个应用的数据表,这些不同应用的表可以放在不同的schema之中,
同时,每一个schema对应一个用户,不同的应用可以以不同的用户连接数据库,
这样,一个大数据库就可以根据应用把其表分开来管理。

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

Oracle里schema几乎和user/用户是通用的。schema是指一组数据库object
(比如:表,视图,包,序列,等等),而这些object是属于用户的,
属于一个用户的所有object就叫schema。

如果你使用Oracle的企业管理器Enterprise Manager,你会发现里面的用户就叫schema。

Schema 中文意思是 方案. "方案"只是 Oracle 一个分类,不同用户有不同的方案.

拿 DBA Studio 来说吧,在左边分了四大类:(例程,存储,安全,方案)

例程: 是管理库的启动...之类的.   www.2cto.com

存储: 管理表空间,数据文件之类.

安全: 就是管理用户(密码,表空间分配...)

方案: 有(表,视图,存储过程...),不同用户有不同的案.

如: 在"方案"->选你的"用户名"之后,才会出现用户名相关的表.

----------------------------两个不容易理解的概念──user和schema

user是控制权限的,而schema则是一个容器,非所有者如果需要访问这个容器下的对象
就需要在对象前面写上schema(owner)的名字,如果不想写而又没有创建synonym,此时可以通过alter session set current_schema=schema_name来改变当前session的schema从而在访问对象时省去schema(owner);最终能否访问对象还是要看是否有访问这个对象的权限而和schema无关。

深入理解user和schema的区别:

user即Oracle中的用户,和所有系统的中用户概念类似,用户所持有的是系统的权限及资源;

而schema所涵盖的是各种对象,它包含了表、函数、包等等对象的“所在地”,并不包括对他们的权限控制。

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

你可以也是一个房子的主人(user),拥有自己的房子(schema)。可以通过alter session的方式
进入别人的房子。  www.2cto.com

这个时候,你可以看到别人房子里的家具(desc)。

如果你没有特别指定的话,你所做的操作都是针对你当前所在房子中的东西。

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

如果你想调用其他schema的对象(有权限的前提下),但并没有建synonym,
同时又不想把其他schema名字放入代码中,就可以首先使用alter session set schema=<其他schema名字>。

本文转自http://www.2cto.com/database/201205/131238.html

时间: 2024-10-03 23:33:32

oracle schema彻底理解的相关文章

5.oracle的dump理解五 数据块理论

5.oracle的dump理解五 数据块理论 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/51228514 前两篇描述了我们在操作层面看到的一些东西,但是没有理论指导,看到越多我们只会越迷糊.所以,蛤蟆从官方文档上摘取一些老少皆宜的内容来补脑. 块是数据块IO的最小单位. 1     数据块和操作系统块 从物理层面,数据库的块存储时候是由操作系统块组成.操作系统块是操作系统可以读写的最小数据单位.ORACLE块是一个逻辑存

Oracle Schema Objects——伪列ROWID Pseudocolumn(ROWNUM、ROWID)

Oracle Schema Objects Oracle Schema Objects——Tables——Oracle Data Types Oracle伪列 在Oracle数据库之中为了实现完整的关系数据库的功能,专门为用户提供了许多的伪列. “NEXTVAL”和“CURRVAL”就是两个默认提供的操作伪列Oracle Schema Objects——Sequences(伪列:nextval,currval) SYSDATE与SYSTIMESTAMP也属于伪列SQL Fundamentals

Oracle Schema Objects——PARTITION

Oracle Schema Objects 表分区 表- - 分区( partition )TABLE PARTITION 一段时间给出一个分区,这样方便数据的管理. 可以按照范围range分区,列表分区,哈希分区等. 创建表分区: SQL> create table t_part(id int) 2 partition by range(id) 3 (partition p1 values less than(5), 4 partition p2 values less than(10), 5

oracle数据库基本理解

一.概念 1. 数据库 (Database) 什么是数据库? 数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合. 这种数据集合具有如下特点: 尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序, 对数据的增.删.改和检索由统一软件进行管理和控制. 从发展的历史看,数据库是数据管理的高级阶段,它是由文件管理系统发展起来的. 什么是数据库系统? 数据库系统是一个实际可运行的存储.维护和应用系统提供数据的软件系统,是存储介质.处理对象和管理系统的集合体.

DB---数据库中Schema的理解

今天看到了Schema一词,对于它的理解网上也是说法很多,有一种受到认可的程度比较大,暂且先使用一下: " 首先我来做一个比喻,什么是Database,什么是Schema,什么是Table,什么是Column,什么是Row,什么是User?我们可以把 Database看作是一个大仓库,仓库分了很多很多的房间,Schema就是其中的房间,一个Schema代表一个房间,Table可以看作是每个 Schema中的床,Table(床)就被放入每个房间中,不能放置在房间之外,那岂不是晚上睡觉无家可归了.然

Oracle Schema Objects

One characteristic of an RDBMS is the independence of physical data storage from logical data structures. RDBMS的特点之一是物理数据与逻辑数据结构的独立性. Introduction to Schema Objects Schema Object Types Schema Object Storage Schema Object Dependencies SYS and SYSTEM S

Oracle中rownum理解及和rowid的区别

rownum,rowid都叫伪列. 但是,rownum是逻辑上的编号,且其值总是从1开始,每行的rounum不是固定的.而rowid是“物理”编号.若数据库文件没有移动,则每行的 rowid一般是固定不变的. oracle中rownum用法的总结 对于 Oracle的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=),并非说用>,>=,=,between..and时会提示SQL语法错误,而是经常是查不出一条

oracle 存储过程(分析理解)

我的理解 比较简单(仅供参考)   存储过程就相当于java里面的方法 简单讲就是一串代码能够实现某个特定的功能,想要使用这个方法直接调用方法名就能够使用他的功能,这就是方法 oracle 存储过程也相当于是写方法来调用  用图片的形式来解释  通俗易懂   有中文解释 1.无参存储过程     or replace一般不要写 仅供学习的时候写上 工作不要写 2.带参存储过程  多个参数用逗号隔开 3.定义变量以及赋值 4.打印语句 5.简单的操作 写一存储过程,打印1-n   n是传入的参数

oracle索引的理解

1.当查询表时where条件中有多个索引时,优先使用主键索引,其它索引会失效. 2.当查询的返回的数据占总量数据的百分比小于20%时,建索引才有效果 3.不是主键的索引值可以为空,主键索引不能为空. 4. 容易引起oracle索引失效的原因很多: 1).在索引列上使用函数.如SUBSTR,DECODE,INSTR等,对索引列进行运算.需要建立函数索引就可以解决了. 2).新建的表还没来得及生成统计信息,分析一下就好了 3).基于cost的成本分析,访问的表过小,使用全表扫描的消耗小于使用索引.