《Oracle Database Concepts 11g Release 2》读书笔记(1)-schema
(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 里引用它
CREATE TABLEtest_table ( col1 INTEGER, col2 INTEGER ); CREATE OR REPLACE PROCEDUREtest_proc AS BEGIN FOR x IN ( SELECT col1, col2 FROMtest_table ) LOOP -- process data NULL; END LOOP; END;
以下查询可以看出test_proc 是 valid 的
SQL> SELECT OBJECT_NAME, STATUSFROM USER_OBJECTS WHERE OBJECT_NAME = 'TEST_PROC'; OBJECT_NAME STATUS ----------- ------- TEST_PROC VALID
在新增一个column 后, test_proc 仍是 valid 的, 因为test_proc 与此新增字段并无依赖关系
SQL> ALTER TABLE test_table ADD col3 NUMBER; Table altered. SQL> SELECT OBJECT_NAME, STATUSFROM USER_OBJECTS WHERE OBJECT_NAME = 'TEST_PROC'; OBJECT_NAME STATUS ----------- ------- TEST_PROC VALID
但是如果修改 column col1 的数据类型, 则test_proc 将会置为 invalid
SQL> ALTER TABLE test_table MODIFY col1 VARCHAR2(20); Table altered. SQL> SELECT OBJECT_NAME, STATUSFROM USER_OBJECTS WHERE OBJECT_NAME = 'TEST_PROC'; OBJECT_NAME STATUS ----------- ------- TEST_PROC INVALID
重新编译后, test_proc 变为 valid
SQL> EXECUTE test_proc; PL/SQL procedure successfullycompleted. SQL> SELECT OBJECT_NAME, STATUSFROM USER_OBJECTS WHERE OBJECT_NAME = 'TEST_PROC'; OBJECT_NAME STATUS ----------- ------- TEST_PROC VALID
4. SYS 与 SYSTEM
安装 oracle 时会默认创建两个用户SYS, STSTEM.
SYS 具有进行所有数据库操作的最高权限,SYSschema 中存储了有关 data directory 的所有基本表, 其内的仅由数据库进行操作,禁止任何其他用户进行修改.
SYSTEM 中存储了数据库管理,配置,工具产生的信息. 不要在 SYSTEM 里存放非管理员信息的数据.
- 《Oracle Database Concepts 11g Release 2》读书笔记(1)-schema
- 《Oracle Database Concepts 11g Release 2》读书笔记(2)-table
- 《Oracle Database Concepts 11g Release 2》读书笔记(2)-table
- Data Guard Physical Standby Setup in Oracle Database 11g Release 2
- 用户、补丁-Create Oracle ASM Cluster File Systems (ACFS) in Oracle Database 11g Release 2-by小雨
- Oracle® Database Vault Administrator's Guide 11g Release 2 (11.2)
- Adaptive Cursor Sharing in Oracle Database 11g Release 1
- Using Oracle Database 11g Release 2 Result Cache in an Oracle RAC Environment
- Online Table Redefinition Enhancements in Oracle Database 11g Release 1
- Partitioning Enhancements in Oracle Database 11g Release 1
- Oracle:PIVOT and UNPIVOT Operators in Oracle Database 11g Release 1
- 在redhat6.4下安装 Oracle® Database 11g Release 2
- Oracle:Virtual Columns in Oracle Database 11g Release 1
- 转载:Data Guard Physical Standby Setup in Oracle Database 11g Release 2
- Pro Oracle Database 11g RAC on Linux 读书笔记2
- Oracle Database 11g Release 2 DBCA Error At Adding Oracle JVM When Creating A Database With A Datab
- Table Compression Enhancements in Oracle Database 11g Release 1
- Data Guard Physical Standby Setup in Oracle Database 11g Release 2
- (转)Fine-Grained Access to Network Services in Oracle Database 11g Release 1
- Adaptive Cursor Sharing in Oracle Database 11g Release 1