`
jiang5495
  • 浏览: 92971 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

oracle 方案的理解(转载)

阅读更多
我们先来看一下他们的定义:
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 双机集群文档(转载)

    Oracle 双机集群是一种高可用性和高性能的数据库解决方案,它允许多...总之,Oracle RAC是一个复杂但强大的数据库解决方案,通过理解其基本结构、硬件需求、软件配置和安装流程,可以为后续的学习和实践打下坚实基础。

    转载 在 Oracle 数据库上构建 .NET 应用程序

    根据不同的需求,可以选择由Oracle官方提供的Oracle Data Provider for .NET (ODP.NET),也可以选择由Microsoft或第三方供应商提供的解决方案。在这篇文章中,我们将重点介绍ODP.NET的使用。 #### 三、ODP.NET的...

    《转载》ora-00020超出最大进程数

    3. 解决方案实例:提供具体的SQL语句或操作步骤来解决问题。 4. 预防措施:介绍如何通过优化配置、应用设计或监控策略来防止类似问题的再次出现。 5. 源码分析:如果标签提到“源码”,可能涉及Oracle数据库的源代码...

    转载,若依快速开发框架很不错,详情请看https://www.ruoyi.vip/

    8. **数据库支持**:RuoYi框架通常支持多种数据库,如MySQL、Oracle等,通过MyBatis进行数据操作,提供灵活的数据存储解决方案。 9. **RESTful API**:RuoYi框架可能采用RESTful架构风格设计API,使得前后端分离...

    计算机行业深度分析:拨云见日,始得真金——美股重点SaaS公司年度点评.pdf

    相比之下,SAP和Oracle这些传统的企业级解决方案供应商,尽管也有云计算产品和服务,但面临着市场增速放缓以及激烈的市场竞争,这影响了它们的估值水平。 在原生SaaS公司方面,行业出现了明显的估值分化。Workday...

    java+Web审批流程.rar

    5. **数据库创建**:用户需要自行创建数据库,这可能需要了解SQL语言和数据库管理系统,如MySQL或Oracle,根据提供的SQL脚本或模型进行数据表的创建。 在【压缩包子文件的文件名称列表】中提到的"java+Web审批流程...

    架构设计from infoQ

    - **微软弃用ORACLECLIENT命名空间**:分析了微软这一决策的背后原因及其对开发者的影响,帮助读者理解技术变更的重要性和应对策略。 - **使用ADOBE FLEX进行模型驱动开发**:介绍了如何利用ADOBE FLEX进行高效的...

    LO615 Billing

    根据给定文件的信息,我们可以提炼出与“LO615 Billing”相关的关键知识点。...通过对LO615 Billing的深入理解,企业可以更好地利用其功能来优化自身的销售和分销流程,从而提升整体运营效率和客户满意度。

    j++学习资料

    Java是一种广泛使用的高级编程语言,由Sun Microsystems(现为Oracle Corporation的一部分)在1995年推出。它以其“一次编写,到处运行”的跨平台特性而闻名,通过Java虚拟机(JVM)在各种操作系统上运行。Java的...

    二十三种设计模式【PDF版】

    需要将 J2EE 用对地方,那么只有理解 J2EE 此类框架软件的精髓,那么你才能真正灵活应用 Java 解决你的问题,甚至构架出你自 己企业的框架来。(我们不能总是使用别人设定好的框架,为什么不能有我们自己的框架?) ...

Global site tag (gtag.js) - Google Analytics