深入探讨:oracle中方案的概念以及方案与数据库的关系

 更新时间:2013年05月30日 18:12:14   作者:  
本篇文章是对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并作为该用户的缺省 shcemaschema的个数同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名。 通过以上解释,应该很容易明白什么是方案了,我再分析一下方案与数据库之间的关系。

上文已经提到过方案是用户使用的数据库对象的集合,一个用户有一个缺省的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以及其它默认对象。

相关文章

  • Linux系统下启动/关闭Oracle数据库

    Linux系统下启动/关闭Oracle数据库

    在Linux系统上开启关闭Oracle数据库是一个常见的任务,可以通过多种方法来实现,这篇文章主要给大家介绍了关于Linux系统下启动/关闭Oracle数据库的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • 深入剖析哪些服务是Oracle 11g必须开启的

    深入剖析哪些服务是Oracle 11g必须开启的

    这篇文章主要介绍了哪些服务是Oracle 11g必须开启的以及这些服务的详细介绍,需要的朋友可以参考下
    2014-08-08
  • oracle AWR性能监控报告生成方法

    oracle AWR性能监控报告生成方法

    这篇文章主要为大家详细介绍了oracle AWR性能监控报告的生成方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • oracle 11g 数据库常用操作实例总结

    oracle 11g 数据库常用操作实例总结

    这篇文章主要介绍了oracle 11g 数据库常用操作,结合实例形式总结分析了oracle 11g数据库进入、创建、权限、用户等相关操作技巧与注意事项,需要的朋友可以参考下
    2023-05-05
  • Oracle报错记录被另外一个用户锁定的解决方案

    Oracle报错记录被另外一个用户锁定的解决方案

    这篇文章主要介绍了Oracle报错记录被另外一个用户锁定的解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Oracle REGEXP_LIKE模糊查询用法例子

    Oracle REGEXP_LIKE模糊查询用法例子

    Oracle中偶遇正则表达式的使用,简直逆天,在数据统计方面,最长用的就是regexp_like与regexp_replace两个了,下面这篇文章主要给大家介绍了关于Oracle REGEXP_LIKE模糊查询用法例子的相关资料,需要的朋友可以参考下
    2022-11-11
  • PLSQL安装、汉化和激活的方法步骤实现

    PLSQL安装、汉化和激活的方法步骤实现

    这篇文章主要介绍了PLSQL安装、汉化和激活的方法步骤实现,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • oracle数据库如何使用exp和imp命令导入导出数据

    oracle数据库如何使用exp和imp命令导入导出数据

    这篇文章主要给大家介绍了关于oracle数据库如何使用exp和imp命令导入导出数据的相关资料,Oracle的EXP(Export)和 IMP(Import)是两个非常重要的命令,它们用于数据库的备份和恢复,需要的朋友可以参考下
    2024-07-07
  • Oracle通过时间(分钟)计算有几天几小时几分钟的方法

    Oracle通过时间(分钟)计算有几天几小时几分钟的方法

    这篇文章主要介绍了Oracle通过时间(分钟)计算有几天几小时几分钟的方法,涉及Oracle时间操作的技巧,需要的朋友可以参考下
    2015-03-03
  • Oracle中的半联结和反联结详解

    Oracle中的半联结和反联结详解

    这篇文章主要介绍了Oracle中的半联结和反联结详解,也称半连接和反连接,其实就是in、exists,需要的朋友可以参考下
    2014-07-07

最新评论