ORACLE 中SCHEMA的概念以及数据库,表空间,数据文件等的

上传人:迪迦****号 文档编号:11435580 上传时间:2017-10-13 格式:DOCX 页数:7 大小:22.69KB
返回 下载 相关 举报
ORACLE 中SCHEMA的概念以及数据库,表空间,数据文件等的_第1页
第1页 / 共7页
ORACLE 中SCHEMA的概念以及数据库,表空间,数据文件等的_第2页
第2页 / 共7页
ORACLE 中SCHEMA的概念以及数据库,表空间,数据文件等的_第3页
第3页 / 共7页
ORACLE 中SCHEMA的概念以及数据库,表空间,数据文件等的_第4页
第4页 / 共7页
ORACLE 中SCHEMA的概念以及数据库,表空间,数据文件等的_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《ORACLE 中SCHEMA的概念以及数据库,表空间,数据文件等的》由会员分享,可在线阅读,更多相关《ORACLE 中SCHEMA的概念以及数据库,表空间,数据文件等的(7页珍藏版)》请在金锄头文库上搜索。

1、ORACLE 中 SCHEMA 的概念以及数据库,表空间,数据文件等的区别(转)有的人还是对 schema 的真正含义不太理解,现在我再次整理了一下,希望对大家有所帮助。我们先来看一下他们的定义:A schema is a collection of database objects (used by a user.).Schema objects are the logical structures that directly refer to the databases data.A user is a name defined in the database that can conne

2、ct 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

3、database links。一个用户一般对应一个 schema,该用户的 schema 名等于用户名,并作为该用户缺省 schema。这也就是我们在企业管理器的方案下看到schema 名都为数据库用户名的原因。Oracle 数据库中不能新创建一个schema,要想创建一个 schema,只能通过创建一个用户的方法解决(Oracle 中虽然有 create schema 语句,但是它并不是用来创建一个schema 的),在创建一个用户的同时为这个用户创建一个与用户名同名的 schem 并作为该用户的缺省 shcema。即 schema 的个数同 user 的个数相同,而且 schema 名字同

4、 user 名字一一 对应并且相同,所有我们可以称 schema 为 user 的别名,虽然这样说并不准确,但是更容易理解一些。一个用户有一个缺省的 schema,其 schema 名就等于用户名,当然一个用户还可以使用其他的 schema。如果我们访问一个表时,没有指明该表属于哪一个 schema 中的,系统就会自动给我们在表上加上缺省的sheman 名。比如我们在访问数据库时,访问 scott 用户下的 emp 表,通过 select * from emp; 其实,这 sql 语句的完整写法为 select * from scott.emp。在数据库中一个对象的完整名称为 schema.o

5、bject,而不属 user.object。类似如果我们在创建对象时不指定该对象的schema,在该对象的 schema 为用户的缺省 schema。这就像一个用户有一个缺省的表空间,但是该用户还可以使用其他的表空间,如果我们在创建对象时不指定表空间,则对象存储在缺省表空间中,要想让对象存储在其他表空间中,我们需要在创建对象时指定该对象的表空间。咳,说了这么多,给大家举个例子,否则,一切枯燥无味!SQL Grant dba to scottSQL create table test(name char(10);Table created.SQL create table system.test

6、(name char(10);Table created.SQL insert into test values(scott);1 row created.SQL insert into system.test values(system);1 row created.SQL commit;Commit complete.SQL conn system/managerConnected.SQL select * from test;NAME-systemSQL ALTER SESSION SET CURRENT_SCHEMA = scott; -改变用户缺省schema 名Session al

7、tered.SQL select * from test;NAME-scottSQL select owner ,table_name from dba_tables where table_name=upper(test);OWNER TABLE_NAME- -SCOTT TESTSYSTEM TEST-上面这个查询就是我说将 schema 作为 user 的别名的依据。实际上在使用上,shcema 与 user 完全一样,没有什么区别,在出现 schema名的地方也可以出现 user 名。表空间:一个表空间就是一片磁盘区域,他又一个或者多个磁盘文件组成,一个表空间可以容纳许多表、索引或者簇

8、等 每个表空间又一个预制的打一磁盘区域称为初始区间(initial extent)用完这个区间厚在用下一个,知道用完表空间,这时候需要对表空间进行扩展,增加数据文件或者扩大已经存在的数据文件instance 是一大坨内存 sga,pga.和后台的进程 smon pmon.组成的一个大的应用。schema 就是一个用户和他下面的所有对象。tablspace 逻辑上用来放 objects.物理上对应磁盘上的数据文件或者裸设备。在 Oracle 中,结合逻辑存储与物理存储的概念,我们可以这样来理解数据库、表空间、SCHEMA、数据文件这些概念:数据库是一个大圈,里面圈着的是表空间,表空间里面是数据文

9、件,那么 schema 是什么呢? schema 是一个逻辑概念,是一个集合,但schema 并不是一个对象,oracle 也并没有提供创建 schema 的语法。schema:一般而言,一个用户就对应一个 schema,该用户的 schema 名等于用户名,并作为该用户缺省 schema,用户是不能创建 schema 的,schema 在创建用户的时候创建,并可以指定用户的各种表空间(这点与 PostgreSQL 是不同,PostgreSQL 是可以创建 schema 并指派给某个用户)。当前连接到数据库上的用户创建的所有数据库对象默认都属于这个 schema(即在不指明 schema 的情

10、况下),比如若用户scott 连接到数据库,然后 create table test(id int not null)创建表,那么这个表被创建在了 scott 这个 schema 中;但若这样 create kanon.table test(id int not null)的话,这个表被创建在了 kanon 这个schema 中,当然前提是权限允许。创建用户的方法是这样的:create user 用户名 identified by 密码 default tablespace 表空间名 temporary tablespace 表空间名 quota 限额 (建议创建的时候指明表空间名)由此来看,

11、schema 是一个逻辑概念。但一定要注意一点:schema 好像并不是在创建 user 时就创建的,而是在该用户创建了第一个对象之后才将 schema 真正创建的,只有user 下存在对象,他对应的 schema 才会存在,如果 user 下不存在任何对象了,schema 也就不存在了;数据库:在 oracle 中,数据库是由表空间来组成的,而表空间里面是具体的物理文件-数据文件。我们可以创建数据库并为其指定各种表空间。表空间:这是个逻辑概念,本质上是一个或者多个数据文件的集合。数据文件:具体存储数据的物理文件,是一个物理概念。一个数据文件只能属于一个表空间,一个表空间可以包含一个或多个数据

12、文件。一个数据库由多个表空间组成,一个表空间只能属于一个数据库。若还不理解,下面是我从网上摘的一个比喻,很形象的解释了什么是Database,什么是 Schema,什么是 Table,什么是列,什么是行,什么是 User,不妨一看。“我们可以把 Database 看作是一个大仓库,仓库分了很多很多的房间,Schema 就是其中的房间,一个 Schema 代表一个房间,Table 可以看作是每个 Schema 中的床,Table(床)被放入每个房间中,不能放置在房间之外,那岂不是晚上睡觉无家可归了,然后床上可以放置很多物品,就好比 Table 上可以放置很多列和行一样,数据库中存储数据的基本单元

13、是 Table,现实中每个仓库放置物品的基本单位就是床, User 就是每个 Schema 的主人,(所以 Schema 包含的是 Object,而不是 User),user 和 schema 是一一对应的,每个 user 在没有特别指定下只能使用自己 schema(房间)的东西,如果一个 user 想使用其他 schema(房间)的东西,那就要看那个 schema(房间)的user(主人)有没有给你这个权限了,或者看这个仓库的老大(DBA)有没有给你这个权限了。换句话说,如果你是某个仓库的主人,那么这个仓库的使用权和仓库中的所有东西都是你的(包括房间),你有完全的操作权,可以扔掉不用的东西从每个房间,也可以放置一些有用的东西到某一个房间,你还可以给每个 User 分配具体的权限,也就是他到某一个房间能做些什么,是只能看(Read-Only),还是可以像主人一样有所有的控制权(R/W),这个就要看这个 User 所对应的角色 Role 了。”-摘自网络

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号