转载地址:http://hi.baidu.com/ayongs/blog/item/f93f93519a7ac32143a75be1.html
首先先理解方案的概念,然后再理解方案与数据库的关系。
先来看一下他们的定义:
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名。【以上转自http://bbs.loveunix.net/viewthread.php?tid=13418】
通过以上解释,应该很容易明白什么是方案了,我再分析一下方案与数据库之间的关系。
上文已经提到过方案是用户使用的数据库对象的集合,一个用户有一个缺省的schema,其schema名就等于用户名,当然一个用户还可以使用其他的schema。
我们只能以某一身份登陆某一数据库,然后再该数据库中进行操作;但是一个用户登陆某个数据库后,可以在该数据库中操作各个不同方案的数据库对象。也就是说一个数据库是由各种不同方案的数据库对象组成;而一个方案是由不同数据库里的该方案的数据库对象组成。
例如:我们安装ORACLE数据库时系统默认生成一个名为ORCL的数据库,安装完之后,我们再创建一个名为FATEST的数据库,这个时候,我们以 SYS的身份登陆ORCL数据库,我们发现系统默认的用户(包括SYS/SYSTEM/SYSMEN等等)都有自己相应的方案。此时我们再创建一个用户:TESTUSER,系统会为TESTUSER自动产生一个同名的方案名。然后我们可以创建表AA,并且属于方案TESTUSER;也可以创建同名的表 AA,但是属于SYS。同理,我们可以以TESTUSER用户的身份登陆ORCL操作该数据库其他方案的数据库对象。
但是我们却不能操作FATEST中的数据库对象。再登陆FATEST创建表TESTUSER.BB、TESTUSER.AA,那么方案TESTUSER的数据库对象包括FATEST数据库中的表AA、BB以及其它默认对象、ORCL的表AA以及其它默认对象。
分享到:
相关推荐
Oracle数据库双机热备方案 Oracle 双机热备方案是指运用适当的拓扑结构将两台数据库连接起来,以主-从的方式实现数据库热备份。该方案可以避免由数据库崩溃而给前端服务造成损失。 一、数据库双机热备的概念和...
总的来说,Oracle数据库的多语言入库解决方案需要深入理解字符集的概念,熟悉Oracle数据库的字符集架构,以及掌握利用工具如sqlloader进行数据导入时的字符集处理技巧。只有这样,才能确保在全球化业务背景下,各种...
在Oracle数据库中实现这样的系统,需要进行数据库设计,包括实体关系模型(ER模型)的构建,确定数据表的结构、字段、主键和外键等关键元素,以确保数据的一致性和完整性。 在PPT中,可能详细阐述了需求分析、系统...
在Oracle数据库中,方案(Schema)是一个非常重要的概念,它是一个数据库对象的集合,这些对象包括但不限于表、视图、序列、存储过程、同义词、索引、簇和数据库链接。方案的主要目的是管理和组织数据库中的逻辑结构...
本文介绍了Oracle RMAN备份方案的基本概念和技术要点,包括设置归档模式、创建备份脚本以及设置自动化备份计划。通过这些步骤,可以有效地保护数据库中的数据安全,确保在出现故障时能够快速恢复数据。在实际应用...
### Oracle数据库的备份与恢复方案知识点详解 #### 一、备份与恢复的重要性 数据库备份与恢复是维护数据库安全的关键步骤之一。它确保了在遇到意外情况时能够及时恢复数据,减少损失。对于Oracle数据库而言,这更...
Oracle数据库迁移方案是一项复杂的技术任务,涉及到数据库的多个核心概念,如数据库名、SID、域名、服务名以及网络服务名。以下是对这些关键概念的详细解释: 1. **数据库名** (DB_NAME): 这是数据库的唯一标识,...
8. **Oracle数据库与云计算**:随着云计算的发展,Oracle数据库也提供了云服务,如Oracle Autonomous Database。学习者会了解到如何在云端部署和管理Oracle数据库,以及相关的安全性和成本效益。 通过深入学习...
Oracle持续创新,如In-Memory选项加速分析查询,JSON支持增强NoSQL功能,以及与大数据、人工智能等领域的集成,保持了Oracle在数据库领域的领先地位。 这份"Oracle数据库资料大全"将详细解读以上各个方面,帮助读者...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,尤其在企业级应用中占据着核心地位。本课件将深入探讨Oracle数据库的应用,旨在帮助学习者掌握其基础知识和操作技能。 首先,我们来了解一下“数据库的基础...
首先,手册可能涵盖了Oracle数据库的基础概念,如数据库的体系结构,包括表空间、数据文件、控制文件、重做日志文件等组成部分,以及它们在数据库运行中的作用。这些基础知识对于理解数据库的工作原理至关重要。 ...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,尤其在企业级应用中占据重要地位。这份“Oracle数据库中文手册汇集”提供了全面的学习资源,适合初学者和有经验的DBA(数据库管理员)深入理解Oracle数据库...
针对源数据库与目标数据库db_name和instance_name不同的情况,采用以下步骤实现迁移: 1. **备份源数据库**: - 使用RMAN或其他工具进行全面备份,确保迁移前的数据完整性和一致性。 2. **创建镜像文件**: - ...
Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统之一,它为数据存储、管理和处理提供了高效、安全和可扩展的解决方案。对于初学者来说,理解Oracle数据库系统应用与开发的基础至关重要,这将帮助他们掌握...
Oracle8是Oracle首次引入面向对象技术的版本,它提供了一种结合面向对象和关系表达的解决方案,使得数据库设计更加紧凑有效。 Oracle数据库在全球范围内广泛应用,尤其在大型企业、Web站点和UNIX平台中占据重要地位...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,尤其在企业级应用中占据重要地位。本教程针对初学者,深入浅出地介绍了Oracle的核心概念、功能和操作,旨在帮助学习者快速掌握这一强大的数据库系统。 首先...
10. **高可用性与集群**:Oracle Real Application Clusters (RAC) 提供了高可用性解决方案,允许多台服务器共享同一数据库,提高系统的容错性和负载均衡能力。 通过深入学习和实践这些Oracle数据库实用教程中的...
Oracle数据库管理是计算机科学中数据库管理系统领域的重要分支。...通过Oracle数据库管理教程的学习,数据库管理员可以获得数据库设计、管理、备份与恢复等方面的全方位知识,为日常工作中遇到的各种问题提供解决方案。
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,它在企业级数据存储和管理中扮演着核心角色。Oracle数据库基础知识是每个IT从业者或自学者必备的知识领域。以下将深入讲解Oracle数据库的一些关键概念和操作...
本文将深入探讨大型ORACLE数据库优化设计方案,从系统结构、工作机理以及具体调整策略等方面进行全面分析。 #### 一、数据库优化自由结构OFA OFA(Optimal Flexible Architecture)是ORACLE推荐的一种数据库逻辑...