冯 骥 卢振生
(绥化学院 黑龙江 绥化 152000)
ORACLE实例和数据库之间的关系
1.临时性和永久性
2.实例可以在没有数据文件的情况下单独启动startup nomount,通常没什么意义
3.一个实例在其生存期内只能装载(alter database mount)和打开(alter database open)一个数据库
4.一个数据库可被许多实例同时装载和打开(即RAC),RAC环境中实例的作用能够得到充分的体现!
在Oracle领域中有两个词很容易混淆,这就是“实例”(instance)和“数据库”(database)。
作为Oracle术语,这两个词的定义如下:
数据库(database):物理操作系统文件或磁盘(disk)的集合。使用Oracle 10g的自动存储管理(Automatic Storage Management,ASM)或RAW分区时,数据库可能不作为操作系统中单独的文件,但定义仍然不变。
这两个词有时可互换使用,不过二者的概念完全不同。实例和数据库之间的关系是:数据库可以由多个实例装载和打开,而实例可以在任何时间点装载和打开一个数据库。一组操作系统进程(或者是一个多线程的进程)以及一些内存;这些进程可以操作数据库。
而数据库只是一个文件集合(包括数据文件、临时文件、重做日志文件和控制文件)。
在任何时刻,一个实例只能有一组相关的文件(与一个数据库关联)。大多数情况下,反过来也成立:一个数据库上只有一个实例对其进行操作。不过,Oracle的真正应用集群 (Real Application Clusters,RAC)是一个例外,这是Oracle提供的一个选项,允许在集群环境中的多台计算机上操作,这样就可以有多台实例同时装载并打开一个数据库(位于一组共享物理磁盘上)。数据字典(Data Dictionary)是Oracle数据库的一个重要组成部分,是元数据(Metadata)的存储地点。
数据字典记录了一下内容:
◎所有数据库Schema对象的定义(表、视图、索引、簇、同义词、序列、过程、函数、包、触发器等)
◎数据库的空间分配和使用情况;
◎字段的缺省值;
◎完整性约束信息;
◎Oracle用户名称、角色、权限等;
◎审计信息;
◎其他数据库信息。
通常所说的数据字典由4个部分组成:
◎内部RDBMS(X$)表
◎数据字典表
◎动态性能视图(V$)
◎数据字典视图
内部 RDBMS(X$)表:
X$表示加密命名的,Oracle不做文档说明,Oracle通过X$表建立起大量视图提供用户查询管理数据库之用;
X$表是在数据库启动时由Oracle应用程序动态创建,并且不允许sysdba之外的用户直接访问。
SYS@orclnew>set autotrace traceonly;
SYS@orclnew>select*from v$parameter;
可以看到所有的东西来自两个内部表:X$KSPPI&X$KSPPCV
另外一个有意思的X$表:X$KVIT
静态数据字典视图:
由于X$表和数据字典表通常不能直接访问,Oracle创建了静态数据字典视图来提供用户对于数据字典信息的访问。这些信息通常相对稳定、不能直接就该,所以称之为静态数据字典视图
静态数据字典视图在创建数据库时由 catalog.sql脚本创建,该脚本的位置:
$ORACLE_HOME/rdbms/admin/catalog.sql
静态数据字典视图的分类:
◎USER_ 类视图包含了用户所拥有的相关对象信息,用户可以通过这个视图查询自己拥有的对象信息;
◎ALL_ 类视图包含了用户拥有权限访问的所有对象的信息;
◎DBA_类视图包含了数据库所有相关对象的信息,用户需要SELECTANY TABLE权限才能访问。
动态性能视图:
动态性能 V$视图 (Dynamic Performance View)记录了数据库运行时信息和统计数据。
数据库启动时,Oracle动态创建了 X$表,在此基础上,Oracle创建了 GV$和V$ 视图。从Oracle 8i开始,GV$视图被引入,含义:Global V$。基本上,每个V$视图都有一个对应的GV$视图存在。
通常大部分用户访问的 V$视图,并不是视图,而是指向V_$视图的同义词;
而V_$视图是基于真正的V$视图(这个视图是基于X$表建立的)创建的。
SQL语句中对于对象名的解析顺序:
1.Oracle首先查看在发出命令的用户模式中是否存在表或者视图;
2.如果表或者视图不存在,Oracle检查私有同义词是否存在;
3.如果私有同义词存在,将使用这个同义词所引用的对象;
4.如果私有同义词不存在,检查同名的公有同义词是否存在;
5.如果公有同义词存在,使用这个同义词所引用的对象;
6.如果公有同义词不存在,那么返回错误
“ORA-00942 table or view does not exist.”