ORACLE的实例的浅谈

2012-07-06 03:10卢振生
科技视界 2012年35期
关键词:字典视图实例

冯 骥 卢振生

(绥化学院 黑龙江 绥化 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.”

猜你喜欢
字典视图实例
开心字典
开心字典
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
我是小字典
正版字典
完形填空Ⅱ
完形填空Ⅰ