35.Oracle之mount阶段

  通常所说的Oracle server主要由两部分组成:Instance和Database, Instance是指一组后台进程和一块共享内存域Database是指存储在磁盘上的一组物理文件。通过instance和Database协同,Oracle数据库才能形成一个动态的可访问关系型数据库系统。

1.Nomount 阶段

  这是启动的第一步,Oracle首先寻找参数文件,然后感觉参数文件的设置(内存分配等设置),创建instance实例,分配内存后,启动后台进程,也就是启动数据库实例的过程  

SQL> startup nomount;
ORACLE instance started.

Total System Global Area 1653518336 bytes
Fixed Size                  2253784 bytes
Variable Size             486542376 bytes
Database Buffers         1157627904 bytes
Redo Buffers                7094272 bytes
SQL>

后台进程:

oracle     6933      1  0 21:14 ?        00:00:00 ora_pmon_orcl
oracle     6935      1  0 21:14 ?        00:00:00 ora_psp0_orcl
oracle     6937      1  7 21:14 ?        00:00:04 ora_vktm_orcl
oracle     6941      1  0 21:14 ?        00:00:00 ora_gen0_orcl
oracle     6943      1  0 21:14 ?        00:00:00 ora_diag_orcl
oracle     6945      1  0 21:14 ?        00:00:00 ora_dbrm_orcl
oracle     6947      1  0 21:14 ?        00:00:00 ora_dia0_orcl
oracle     6949      1  0 21:14 ?        00:00:00 ora_mman_orcl
oracle     6951      1  0 21:14 ?        00:00:00 ora_dbw0_orcl
oracle     6953      1  0 21:14 ?        00:00:00 ora_lgwr_orcl
oracle     6955      1  0 21:14 ?        00:00:00 ora_ckpt_orcl
oracle     6957      1  0 21:14 ?        00:00:00 ora_smon_orcl
oracle     6959      1  0 21:14 ?        00:00:00 ora_reco_orcl
oracle     6961      1  0 21:14 ?        00:00:00 ora_mmon_orcl
oracle     6963      1  0 21:14 ?        00:00:00 ora_mmnl_orcl
oracle     6965      1  0 21:14 ?        00:00:00 ora_d000_orcl
oracle     6967      1  0 21:14 ?        00:00:00 ora_s000_orcl
o

在nomount节点都已经起来一些后台进程了,如上所示。

这里可以通过视图v$process中pid(数据库中内部的进程号)和spid(操作系统进程号)进行关联,进行诊断分析。

2.实例启动最小参数

  在参数文件中,通常需要最少的参数是DB_NAME,只要有这个参数,数据库实例(nomount)就能起来。

3.ORACLE_SID

  oracle_sid就是oracle system IDentifier的缩写,在oracle系统中,oracle_sid以环境变量的形式出现,当oracle实例启动时,在操作系统上fork的进程就依据这个oracle_sid来创建,这就是它的作用。

4.INTANCE_NAME

  oracle数据库内部存在一个初始化参数instance_name,用于标示数据库实例的名称,其缺省值通常就是oracle_sid,但是初始化参数instance_name和oracle_sid可以不同,不同的实例可以拥有相同的instance_name

  在同一个ORACLE_HONE下,只要ORACLE_SID不同,数据库不校验instance_name参数,通过简单的参数文件复制,就可以在同一台服务器上创建多个具有相同instance_name的实例,因此,在同一台主机上可以启动多个实例,ORCLE_SID不同,但是拥有了相同的instance_name,

5.DB_NAME

  相较于instance_name参数来说,DB_NAME代表了实例即将挂载的数据库名称。关系到具体的物理文件。通常缺省的数据库Instance_name和db_name可以设置相同(在rac下,由于多个实例对应一个数据库,所以instance_name和DB_name不同)

结论:

  1. 一个实例可以mount并打开任何数据库,但是同一时间一个实例只能打开一个数据库

  2.一个数据库可以被多个实例所有mount并打开(rac环境)。

 

posted on 2022-06-17 22:26  太白金星有点烦  阅读(269)  评论(0编辑  收藏  举报

导航