1.3.1 Oracle实例结构

每当启动实例时,Oracle数据库就分配一个称为SGA(System Global Area,系统全局区)的内存区域,并启动一个或多个后台进程,然后由实例加载并打开数据库(即将数据库与实例联系起来),最后由这个实例来访问和控制硬盘中的数据库文件。

用户与数据库建立连接时,实际上是连接到数据库实例中,然后由实例负责与数据库通信,并将处理结果返回用户,实例在用户和数据库之间充当中间层的角色。

数据库与实例之间可以是一对一的,即一个实例管理一个数据库;也可以是一对多的,即一个数据库由多个实例访问(如Oracle RAC)。同一台计算机可以并行运行多个实例,每个实例访问自己的物理数据库。在大型簇系统中,Oracle RAC允许多个实例加载到同一个数据库上。不管是一对一还是一对多的,数据库实例在同一时间只与一个数据库关联,可以先启动实例然后加载(MOUNT)一个数据库,但不能同时加载多个数据库。

系统标识符(System Identifier,SID)是Oracle数据库实例在指定计算机的唯一标识。SID默认用作定位参数文件的位置,而参数文件中又包含数据库其他文件(如控制文件、数据文件等)的位置。SID对应的环境变量为ORACLE_SID。客户在连接实例时可以在网络服务名中指定要连接的SID,数据库将服务名转换为ORACLE_HOME和ORACLE_SID。

Oracle实例组成结构如图1-1所示。关于图1-1中的系统全局区的介绍参见本章1.3.2节,关于后台进程的详细介绍参见本章1.3.3节。

图1-1 Oracle实例组成结构

注意:只有数据库管理员才可以启动或关闭实例,从而打开或关闭数据库。

如果用户具有管理员权限并连接到数据库,有多种方式可以查询到当前数据库名称和当前实例名称。

1.查询初始化参数值

数据库名和实例名称分别对应着DB_NAME和INSTANCE_NAME两个初始化参数,可以通过显示这两个初始化参数的值来查看当前的数据库名和实例名称。

当连接到数据库时,用SQL * Plus的SHOW显示初始化参数INSTANCE_NAME和DB_NAME的值,如:

2.查询动态性能视图

查询数据库名称或实例名称的另一种方法是查询V$DATABASE和V$PARAMETER动态性能视图。