oracle中schema指的是什么?

看来有的人还是对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名。

时间: 2024-11-29 12:20:38

oracle中schema指的是什么?的相关文章

ORACLE中修改表的Schema的总结

前阵子遇到一个案例,需要将数据库中的几个表从USER A 移动到USER B下面,在ORACLE中,这个叫做更改表的所有者或者修改表的Schema.其实遇到这种案例,有好几种解决方法.下面我们通过实验来测试.验证一下.首先准备简单测试数据,如下所示:     SQL> CREATE TABLE TEST.KKK ( ID   INT   ,    NAME VARCHAR2(12) ,   CONSTRAINT PK_KKK PRIMARY KEY(ID) );   Table created.

在Oracle中发布和调用Java functions

oracle 发布过程: 1.  编写.java文件 2.  成功编译.java文件,生成.class文件,此文件为导入到Oracle中的文件. 3.  (Toad工具方法导入),打开Java Manager指要导入的.class文件,执行导入. 注意,此时登录数据库要有足够的权限,可以将文件导入指定的Schema中. 导入完成后,可以在导入的schema中的java目录中找到该java类,其文件标识为J(c),即java class文件. 4.  发布文件,指定要发布的functions,内部

oracle之Schema

  在一个数据库中可以有多个应用的数据表,这些不同应用的表可以放在不同的schema之中, 同时,每一个schema对应一个用户,不同的应用可以以不同的用户连接数据库, 这样,一个大数据库就可以根据应用把其表分开来管理. www.2cto.com 不同的schema之间它们没有直接的关系,不同的shcema之间的表可以同名, 也可以互相引用(但必须有权限),在没有操作别的schema的操作根权下, 每个用户只能操作它自己的schema下的所有的表.不同的schema下的同名的表, 可以存入不同的

oracle中游标(Cursor)的详解

概述 也许大家对数据库中游标都不陌生,但对于其概念可能有时又会有些模糊,游标到底是什么? 为了使大家对游标有个清晰的认识,本文将介绍Oracle中游标(curosr)相关的知识. 游标的概念 一般来讲,游标包含着两种不同的概念: 程序中的游标(Program Cursor)和Oracle中的游标(Oracle Curosr). 程序中的游标(Program Cursor): 在最终用户程序(Client Application)中,游标(curosr)通常指和SQL语句关联的一个数据结构,用于关

oracle中110个常用函数介绍_oracle

1. ASCII 返回与指定的字符对应的十进制数; SQL> select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from dual; A A ZERO SPACE --------- --------- --------- --------- 65 97 48 32 2. CHR 给出整数,返回对应的字符; SQL> select chr(54740) zhao,chr(65) chr65 from dual; ZH C --

Oracle中的游标、硬解析、软解析、软软解析、解析失败

Oracle中的游标.硬解析.软解析.软软解析.解析失败 一. 游标的分类及共享游标 游标(Cursor)是Oracle数据库中SQL解析和执行的载体,它可以分为共享游标(Shared Cursor)和会话游标(Session Cursor).共享游标可以细分为父游标(Parent Cursor)和子游标(Child Cursor),可以通过视图V$SQLAREA和V$SQL来查看当前缓存在库缓存(Library Cache)中的父游标和子游标,其中V$SQLAREA用于查看父游标,V$SQL用

Oracle中自定义临时表的实现及其在Oracle Spatial中的应用

oracle|临时表 Oracle 临时表功能介绍:         Oracle中的临时表是全局的,需要在数据库设计时创建完成,而不是程序使用时.每个登陆用户都使用这一个相同的临时表,但互相之间看不到彼此的数据,也就是说临时表是会话独立的.         Oracle 的临时表分为事务型和会话型.         事务型临时表就是指在事务处理过程中插入的记录只在事务提交或回滚之前有效,一旦事务完成,表中的记录便被自动清除.         会话型临时表指临时表中的数据在本次会话期间一直有效,

oracle中如何创建用户

一.用户的概念 用户,即user,通俗的讲就是访问oracle数据库的"人".在oracle中,可以对用户的各种安全参数进行控制,以维护数据库的安全性,这些概念包括模式(schema).权限.角色.存储设置.空间限额.存取资源限制.数据库审计等.每个用户都有一个口令,使用正确的用户/口令才能登录到数据库进行数据存取. 二.用户默认表空间 表空间是信息存储的最大逻辑单位.当用户连接到数据库进行资料存储时,若未指出数据的目标存储表空间时,则数据存储在用户的默认表空间中. 比如:create

oracle中Shared pool深入分析及性能调整

摘要:本文首先详细介绍了oracle中shared pool的概念以及所包含的内存结构.然后深入介绍了oracle对于shared pool的管理机制.最后全面介绍了有关buffer cache监控以及调优的实用方法. 1. shared pool的概念 oracle数据库作为一个管理数据的产品,必须能够认出用户所提交的管理命令(通常叫做SQL语句),从而进行响应.认出的过程叫做解析SQL语句的过程,响应的过程叫做执行SQL语句的过程.解析的过程是一个相当复杂的过程,它要考虑各种可能的异常情况,