`
weigang.gao
  • 浏览: 468571 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

tablespace,schema,user

 
阅读更多

首先简单总结一下: 
1. service name 服务名(其实揍是:数据库名),装 ORACLE 时肯定要指定的一个名字 
2. tablespace 表空间,数据库对象的磁盘存储位置 
3. schema 方案,数据库对象的逻辑分类 
4. user 用户,等同于 schema 
5. service name > tablespace > schema(user) 

详细说明: 
schema 为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的 schema 下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个schema,schema 里面包含了各种对象如:tables,views,sequences,stored procedures,synonyms,indexes,clusters,and database links。 

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

一个 user 有一个缺省的 schema,其 schema 名就等于用户名,当然一个 user 还可以使用其他的 schema。如果我们访问一个表时,没有指明该表属于哪一个 schema 中的,系统就会自动给我们在表上加上缺省的 sheman 名。比如我们在访问数据库时,访问 scott 用户下的 emp 表,通过select * from emp; 其实,这 sql 语句的完整写法为 select * from scott.emp。在数据库中一个对象的完整名称为 schema.object,而不属 user.object。类似如果我们在创建对象时不指定该对象的 schema,在该对象的 schema 为 user 的缺省 schema。这就像一个 user 有一个缺省的 tablespace,但是该 user 还可以使用其他的 tablespace,如果我们在创建对象时不指定 tablespace,则对象存储在缺省 tablespace 中,要想让对象存储在其他 tablespace 中,我们需要在创建对象时指定该对象的 tablespace。 

举例如下: 

C:\windows\system32>sqlplus system/niit@ORCL as sysdba

SQL> Grant dba to scott 

授权成功。

SQL> connect scott/tiger@ORCL

已连接。
SQL> create table test(name char(10)); 
Table created. 

SQL> create table system.test(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/manager 
Connected. 

SQL> select * from test; 
NAME 
---------- 
system 

SQL> ALTER SESSION SET CURRENT_SCHEMA = scott; --改变用户缺省schema名 
Session altered. 

SQL> select * from test; 
NAME 
---------- 
scott 

SQL> select owner ,table_name from dba_tables where table_name=upper('test'); 
OWNER TABLE_NAME 
------------------------------ ------------------------------ 
SCOTT TEST 
SYSTEM TEST 

--上面这个查询就是将 schema 作为 user 的别名的依据。实际上在使用上,shcema 与 user 完全一样,没有什么区别,在出现 schema 名的地方也可以出现 user 名。 

schema 和 user 一般是一致的,建立一个 user 后即可得到一个 schema,如:HR 用户建立后便有 HR 方案,接下来建立表、索引等数据库对象时,要指定其属于哪个 schema,也要指定其存放在哪个 tablespace 里。 
也可以这样理解,schema 是数据库对象的逻辑归属和分类,而 tablespace 是数据库对象的物理和实际存放位置。 

from:http://blog.itpub.net/9880886/viewspace-462626

from:http://czmmiao.iteye.com/blog/1967034  

总结如下: 不同的schema之间它们没有直接的关系,不同的shcema之间的表可以同名, 也可以互相引用(但必须有权限),在没有操作别的schema的操作根权下, 每个用户只能操作它自己的schema下的所有的表。不同的schema下的同名的表, 可以存入不同的数据(即schema用户自己的数据)。好比一个房子,里面放满了家具,对这些家具有支配权的是房子的主人(user),而不是房子(schema)user好比房子的主人,schema好比房子,view等好比房子里面的家具。你可以也是一个房子的主人(user),拥有自己的房子(schema)。可以通过alter session的方式进入别人的房子。

分享到:
评论

相关推荐

    数据库建库指令

    Impdp lwzx/1@orcl dumpfile=EXPDAT.DMP REMAP_SCHEMA=old_schema_name:new_schema_name Impdp 用户名/密码 数据库导出路径为oracle数据库备份/导入设置路径:E:\app\Hejiah\admin\orcl\dpdump exp username/...

    最全的oracle常用命令大全.txt

    SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user_role_privs; 查看当前用户的系统权限和表级权限 SQL>select * from user_sys_privs; SQL>select * ...

    最完整的Toad For Oracle使用手册

    Configure User Lists 188 Session Information 189 Change Password 190 Commit & Rollback 190 Connect and Disconnect 191 DBMS_Flashback 191 Diagnosing Problems 193 View Extents 193 Identify Space ...

    RMAN测试演练即讲解

    这里的4对应第四个datafile,可由report schema报告得知是:user01.dbf 测试备份的有点多,那么可以删除一些过期的备份。 (1) 通过删除备份集删除 (2) 通过删除备份片删除 (3) 当然直接删除全部过期更加...

    oracle安装及备份

    TOUSER=TGPMS2 (注:把表的拥有者由FROMUSER改为TOUSER,FROMUSER和TOUSER的用户可以不同) ROWS=Y INDEXES=Y GRANTS=Y CONSTRAINTS=Y BUFFER=409600 file==/backup/ctgpc_20030623.dmp log==/backup/...

    PostgreSQL中文手册9.2

    七、 pg_tablespace: pg_tablespace: pg_tablespace: pg_tablespace: pg_tablespace: pg_tablespace:pg_tablespace: .65 十、 pg_index: pg_index: pg_index:pg_index:pg_index:pg_index: . 67 PostgreSQL ...

    orcale常用命令

    SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user_role_privs; 查看当前用户的系统权限和表级权限 SQL>select * from user_sys_privs; SQL>select * ...

    Oracle 删除用户和表空间详细介绍

    说明: 删除了user,只是删除了该user下的schema objects,是不会删除相应的tablespace的。 步骤二: 删除tablespace DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES; 但是,因为是供开发...

    community.postgresql

    PostgreSQLAnsible集合 为这个收藏做贡献 如何快速入门,请参阅 。 我们使用以下准则: 我们()使用进行一般性公告和讨论。... postgresql_tablespace postgresql_query postgresql_user 其他模块: postg

    oracle详解

    1、FROMUSER和TOUSER,使用它们实现将数据从一个SCHEMA中导入到另外一个SCHEMA中。例如:假设我们做exp时导出的为test的对象,现在我们想把对象导入用户: imp userid=test1/test1 file=expdat.dmp fromuser=test1 to...

    MySQL 8 Cookbook epub 格式

    Analyze slow queries using performance schema, sys schema and third party tools Manage and monitor your MySQL instance and implement efficient performance-tuning tasks Who This Book Is For If you are ...

    Linux系统怎么用命令重启db2数据库.docx

    列出系统表:db2 list tables for system 列出所有用户表:db2 list tables 列出所有表:db2 list tables for all 列出特定用户表:db2 list tables for schema [user] 复制一张表:db2 create table t1 like t2 ...

    Linux系统重启db2数据库命令实例详解.docx

    db2 list tables for schema [user] 复制一张表:db2 create table t1 like t2 显示表结构:db2 describe table tablename 查询表:db2 "select * from table tablename where ..." 执行SQL脚本:db2 -tvf scripts....

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

     删除HKEY_CURRENT_USER/SOFTWARE/Microsoft/windows/CurrentVersion/Explorer/MenuOrder/Start Menu/Programs中所有以oracle 开头的键。  删除HKDY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI中除Microsoft ...

    Oracle8i_9i数据库基础

    §10.1.11 使用 product_user_file来限制用户使用产品 220 §10.2 常用技巧 221 §10.2.1 long 类型的查询 222 §10.2.2 如何确定执行时间 222 §10.2.3 如何终止用户会话 222 §10.2.4 用TRANSLATE对数据加密和解密...

Global site tag (gtag.js) - Google Analytics