`

Oracle DB中的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,schema里面包含了各种对象如tables views sequences stored procedures synonyms indexes clusters and database links。
  一个用户一般对应一个schema 该用户的schema名等于用户名,并作为该用户缺省schema。这也就是我们在企业管理器的方案下看到schema名都为数据库用户名的原因。oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决(oracle中虽然有create schema语句,但是它并不是用来创建一个schema的),在创建一个用户的同时为这个用户创建一个与用户名同名的schem并作为该用户的缺省shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同,所有我们可以称schema为user的别名,虽然这样说并不准确,但是更容易理解一些。
  一个用户有一个缺省的schema,其schema名就等于用户名,当然一个用户还可以使用其他的schema。如果我们访问一个表时,没有指明该表属于哪一个schema中的,系统就会自动给我们在表上加上缺省的sheman名。比如我们在访问数据库时,访问scott用户下的emp表,通过select from emp 其实,这sql语句的完整写法为select from scott.emp。在数据库中一个对象的完整名称为schema.object,而不属user.object。类似如果我们在创建对象时不指定该对象的schema,在该对象的schema为用户的缺省schema。这就像一个用户有一个缺省的表空间,但是该用户还可以使用其他的表空间,如果我们在创建对象时不指定表空间,则对象存储在缺省表空间中,要想让对象存储在其他表空间中,我们需要在创建对象时指定该对象的表空间。
  sql> gruant dba to scott
  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名。

分享到:
评论
1 楼 datawarehouse 2012-11-28  
一直对这两个认为是一样的,现在学习了。

相关推荐

    利用python-oracledb库连接Oracledb数据库,使用示例

    python-oracledb的源码和使用示例代码, python-oracledb 1.0,适用于Python versions 3.6 through 3.10. Oracle Database; This directory contains samples for python-oracledb. 1. The schemas and SQL ...

    用Toad for Oracle的Data Dump导入和导出Schema中的数据.txt

    3.在这边点击 Executables,在Export Dump:和Import Dump:中分别输入Oracle安装路径\product\10.1.0\db_3\BIN\expdp.exe,Oracle安装路径\oracle\product\10.1.0\db_3\BIN\impdp.exe,点 OK 4.进入 Database|Export|...

    datanamic DB_Schema_Difftective 数据库结构升级脚本制作工具

    datanamic DB_Schema_Difftective 数据库结构升级脚本制作工具 自动比较 数据库结构差异, 生成DDL脚本 支持多种数据库,数据库结构升级脚本制作的理想工具。 支持oracle, sql server, db2, informix, my sql 。。。...

    jbpm对应的ORACLE数据库脚本

    在网上找了很多关于怎样生成jbpm-oracle数据库脚本的文章,没有一个能真正解决实际过程中遇到的问题。后来才知道,那里有一个包的java文件方法同名了,删除之后,就生成成功了!下载我打个包上传给需要的人。

    db-sample-schemas-19c.zip

    ORACLE 19C的示例安装包,包括HR,HR,OE,SH,IX,BI,PM,SCOTT

    Oracle数据库管理员技术指南

    _SCHEMA收集统计数据 8.9.2 使用 DBMS_UTILITY.ANALYZE _DATABASE 收集统计数据 8.9.3 使用 DBMS_STATS 收集性能统计 数据 8.10 优化环境 8.10.1 怎样优化 Net8/SQL*Net 8.10.2 监控并优化系统资源 8.11 ...

    生成基于Oracle的jBPM数据库脚本

    生成基于Oracle的jBPM数据库脚本 1. 下载最新版本的 JBoss jBPM Starters kit。解压这个文件,假设解压目录为 "${jbpm.starters.kit}",它的下面应该有 jbpm, jbpm-bpel,jbpm-db,jbpm-designer,jbpm-server 五...

    Oracle NoSQL Database_2013.12

    Understand Oracle NoSQL Database architecture and the underlying data storage engine, Oracle Berkeley DB Install and configure Oracle NoSQL Database for optimal performance Develop complex, ...

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

    su - oracle -c "exp system/manager full=y inctype=complete file=/oracle/export/db_comp$rq.dmp" 累计备份的SH文件:exp_cumu.sh rq=` date +"%m%d" ` su - oracle -c "exp system/manager full=y inctype=...

    最完整的Toad For Oracle使用手册

    DB Admin Module 24 Toad and Oracle Enterprise Manager 29 Quick Search Bar 30 Additional Resources 31 Working with other Quest Products 32 Knowledge Xpert 32 Using SQL Optimizer with Toad 32 Benchmark ...

    XML Oracle Servlet 复习汇总(S2)

    7 XML:dtd中的细节 4分 8 XML:内部dtd编写 6分 1 Servlet:EL中间的隐式对象 4分 2 Servlet:session对象的创建 3分 3 Servlet:web程序目录结构 6分 4 Servlet:jsp隐式对象 4分 5 Servlet:指令和动作 6分 6 ...

    Building.Database.Clouds.in.Oracle.12c.0134310861

    An Expert Guide to Building Oracle Database Cloud Infrastructures This is the first complete, practical guide to ...Chapter 10 Virtualizing RAC 12c (DB Clouds) on Oracle VM VirtualBox— RAC Databases

    asp.net_spring_nhibernate_oracle

    asp.net_spring_nhibernate_oracle 网上关于在.net开发的例子不多,这个例子能跑,遗憾的是,nhibernate在存储过程不完美,在oracle 传回多结果集,只能接受到第一个,官网上也是这样说的。 提示:开发前,先将...

    oracle12c 数据库示例 hr.sh.bi.pm.xi等

    sample schemas创建与安装示例库脚本, Oracle 12CR2...创建sample schemas只需执行db-sample-schemas-12.2.0.1目录下的mksample.sql脚本,mksample EXAMPLE TEMP $ORACLE_HOME/demo/schema/log/ localhost:1521/pdb。

    Oracle SchemaDiff-开源

    Oracle DB比较程序,此脚本将比较Oracle数据库版本7.3.4 +中的架构。 用Perl和平台独立编写,报告映射的SchemaName中的所有差异。 输出HTML或ASCII(不久后为XML)(带有TK接口的版本)

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

    ORACLE用户是学习ORACLE数据库中的基础知识,下面就介绍下类系统常用的默认ORACLE用户: 1. sys用户:超级用户,完全是个SYSDBA(管理数据库的人)。拥有dba,sysdba,sysoper等角色或权限。是oracle权限最高的用户,...

    db2-技术经验总结

    1.6. DB2实现类型ORACLE的一些功能 29 1.7. 字符数据类型转换的时候需要注意的问题(原) 30 1.8. 本地谓词的使用注意(原) 31 1.9. windows/Linux或Unix下查看DB2端口号 31 1.10. 尽量让fetch first n row only或者...

    aix_oracle_rac新建表空间方法

    在aix6100 oracle10g RAC数据库,新增schema 检查并发卷组 dbserver2:/home/oracle$ lspv hdisk0 00f763973755a79c rootvg active hdisk1 00f76397a3fde475 rootvg active hdisk2 00f76397ccfedc5a oraclevg ...

    express-oracleconnection:这是 express-myconnection 的副本,稍作修改以与 Oracle 一起使用。 pwalczyszyn 做了所有真正的工作,我只是用 Oracle 代替 MySQL

    var oracledb = require('oracledb'), oracleConnection = require('express-oracleconnection'), dbOptions = { host: 'localhost/XE', user: 'schema', password: 'password' }; app.use(oracleConnection

Global site tag (gtag.js) - Google Analytics