您的当前位置:首页正文

ORACLE的实例的浅谈

2023-05-21 来源:易榕旅网


ORACLE的实例的浅谈

【摘 要】ORACLE实例=后台进程(后台进程使用的PGA)+进程所使用的内存(SGA),实例是一个临,时性的东西,你也可以认为它代表了数据库某一时刻的状态!数据库=重做文件+控制文件+数据文件+临时文件,数据库是永久的,是一个文件的集合。

【关键词】ORACLE;数据库;操作系统

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

(Kernel Layer Performance layer V Information tables Transitory Instance parameters )

SYS@orclnew> select kvittag,kvitval,kvitdsc from x$kvit;

kcbldq 25 large dirty queue if kcbclw reaches this

//脏缓冲(Dirty Buffers) 阈值(threshold)

kcbfsp 40 Max percentage of LRU list foreground can

scan for free

//No Free Buffer LRU上是否有足够的free空间的阈值

静态数据字典视图:

由于X$表和数据字典表通常不能直接访问,Oracle创建了静态数据字典视图来提供用户对于数据字典信息的访问。这些信息通常相对稳定、不能直接就该,所以称之为静态数据字典视图

静态数据字典视图在创建数据库时由 catalog.sql 脚本创建,该脚本的位置:

$ORACLE_HOME/rdbms/admin/catalog.sql

静态数据字典视图的分类:

◎USER_ 类视图包含了用户所拥有的相关对象信息,用户可以通过这个视图查询

自己拥有的对象信息;

◎ALL_ 类视图包含了用户拥有权限访问的所有对象的信息;

◎DBA_ 类视图包含了数据库所有相关对象的信息,用户需要 SELECT ANY TABLE

权限才能访问。

动态性能视图:

动态性能 V$ 视图(Dynamic Performance View) 记录了数据库运行时信息和

统计数据。

数据库启动时,Oracle动态创建了 X$ 表,在此基础上,Oracle创建了 GV$和

V$ 视图。从Oracle 8i 开始,GV$ 视图被引入,含义:Global V$。基本上,每个

V$ 视图都有一个对应的GV$视图存在。

一些特殊的视图记录其他视图的创建方式: V$fixed_view_definition

SYS@ora10g> desc v$fixed_view_definition;

SYS@ora10g> select view_definition from v$fixed_view_definition

where view_name=„V$FIXED_TABLE‟;

SYS@ora10g> select view_definition from v$fixed_view_definition

where view_name=„GV$FIXED_TABLE‟;

通常大部分用户访问的 V$ 视图,并不是视图,而是指向 V_$ 视图的同义词;

而V_$视图是基于真正的V$视图(这个视图是基于X$表建立的)创建的。

SQL 语句中对于对象名的解析顺序:

1.Oracle首先查看在发出命令的用户模式中是否存在表或者视图;

2.如果表或者视图不存在,Oracle检查私有同义词是否存在;

3.如果私有同义词存在,将使用这个同义词所引用的对象;

4.如果私有同义词不存在,检查同名的公有同义词是否存在;

5.如果公有同义词存在,使用这个同义词所引用的对象;

6.如果公有同义词不存在,那么返回错误

“ORA-00942 table or view does not exist.”

因篇幅问题不能全部显示,请点此查看更多更全内容