博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

《Oracle Database Concepts 11g Release 2》读书笔记(1)-schema

Posted on 2011-11-09 00:18  古帆  阅读(796)  评论(0)    收藏  举报

(P31-P36)

1. 定义

Schema 是 oracle 中最基本的逻辑容器, 包括 tables,indexes,partitions,views,sequences,dimensions,synonyms(同义词),procedures,functions,packages等都是 schema object.

注: 像 users, roles, contexts, directory objects 并不包含在 schema 里.

 

每个 oracle 用户都对应一个唯一的schema, 这个 schema 包含着此用户的所有数据,每个数据以 schema object 的形式存在, 同一个 schema 内的对象名字必须唯一,所以在同一用户下,如果创建一个与某table同名的procedure 也会提示:”ORA-00955 名称已由现有对象使用”.

 

2.存储

oracle 的 schema 逻辑上存储在 tablespace 里, 但 schema 与 tablespace 之间并无直接关系, 一个 tablespace 可以存储多个 schema, 一个 schema 也可以存储在几个 tablspace 里. 物理实现上,每个 schema object 存储在一个或多个 data file 里.


 

3. 依赖关系

如果在 schema A 中引用了 schema B, 那么A是B的 dependent object, B是A 的 referenced object. 当一个 referenced object 发生变化时,其对应的所有 dependent都会被自动标记为 invalid.

(这里提到了一段说是会自动进行重新编译,但是看不明白” An invalid dependentobject must be recompiled against the new definition of a referenced objectbefore the dependent object is usable. Recompilation occurs automatically whenthe invalid dependent object is referenced. ”)

 

例:

-- 建立一个 table, 并在一个 procedure 里引用它


以下查询可以看出test_proc 是 valid 的


在新增一个column 后, test_proc 仍是 valid 的, 因为test_proc 与此新增字段并无依赖关系

 

但是如果修改 column col1 的数据类型, 则test_proc 将会置为 invalid


  重新编译后, test_proc 变为 valid



 

4.  SYS 与 SYSTEM

安装 oracle 时会默认创建两个用户SYS, STSTEM.

SYS 具有进行所有数据库操作的最高权限,SYSschema 中存储了有关 data directory 的所有基本表, 其内的仅由数据库进行操作,禁止任何其他用户进行修改.


SYSTEM 中存储了数据库管理,配置,工具产生的信息. 不要在 SYSTEM 里存放非管理员信息的数据.