我们先来看一下他们的定义:
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。这就像一个用户有一个缺省的表空间,但是该用户还可以使用其他的表空间,如果我们在创 建对象时不指定表空间,则对象存储在缺省表空间中,要想让对象存储在其他表空间中,我们需要在创建对象时指定该对象的表空间。
oracle中的schema就是指一个用户下所有对象的集合,schema本身不能理解成一个对象,oracle并没有提供创建schema的语法,schema我自己理解也并不是在创建user时就创建,而是在该用户下创建第一个对象之后schema也随之产生,只要user下存在对象,schema就一定存在,user下如果不存在对象,schema也不存在;这一点类似于temp tablespace group,另外也可以通过oem来观察,如果创建一个新用户,该用户下如果没有对象则schema不存在,如果创建一个对象则和用户同名的schema也随之产生。。。如果此时把对象删除,schema是否还存在,这一点需要验证一下。。。没有oem,无法验证。。。
另外在创建ddl trigger时:
create or replace trigger trigger_name
after||before ddl on username.schema....
通过上面语法我们就能很好的理解schema是指用户username下的所有对象。。。
咳,说了这么多,给大家举个例子,否则,一切枯燥无味!
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名。
分享到:
相关推荐
详细描述了在oracle中创建方案的3种方法,包括利用图形界面和sql语句
2.3.2 捕获方案 2.3.3 设置数据映射 2.3.4 转换为oracle模型 2.3.5 生成数据结构执行脚本 2.3.6 迁移数据结构 2.3.7 设置“数据移动选项” 2.3.8 迁移数据 2.3.9 删除移植资料档案库 2.4 迁移数据准确性验证 2.4.1 ...
oracle备份和恢复方案
ORACLE数据库迁移方案,单机迁移到rac
Oracle大数据解决方案和案例介绍
Oracle BI 完整解决方案 Oracle BIEE方案等 很好的资料,Oracle BI 完整解决方案 Oracle BIEE方案等 很好的资料。
oracle 电信大数据解决方案,介绍了大数据平台架构,功能...
Oracle云计算解决方案
ORACLE服务器部署方案
资源名称:深入理解Oracle RAC 12c内容简介:《深入理解Oracle RAC 12c》介绍了Oracle RAC 12c技术的方方面面,涵盖了与RAC技术相关的集群件知识、数据库知识、存储知识、网络知识,并在基于RAC的应用软件设计、优化...
1.4 ORACLE数据仓库:被证明是有实力的商务解决方案 6 二、ORACLE数据仓库的体系结构 7 2.1 数据仓库的平台:数据库和决策分析工具 11 2.1.1 Oracle8i的数据仓库新特性 11 2.1.2 Oracle OLAP产品的新发展 13 2.1.3 ...
深入理解Oracle Exadata
此文档是Oracle 11g rac安装完成后的IOPS、负载均衡、TAF等的测试,内容详尽。
ORACLE参数调优方案ORACLE参数调优方案ORACLE参数调优方案
oracle双机热备解决方案 oracle双机热备解决方案
Oracle金融服务业方案,想了解Oracle ERP的朋友可以下载了解。
EBS R12 解决方案: •案例介绍及Oracle工程制造整体解决方案; •Oracle项目制造解决方案; •Oracle采购解决方案; •Oracle设备管理解决方案; •Oracle财务解决方案; •Oracle R12产品趋势
oracle在win7中安装出现问题的解决方案.帮助win7用户在安装的时候解决问题。