通常所说的Oracle Server主要由两个部分组成:Instance和Database。Instance是指一组后台进程(在Windows上是一组线程)和一块共享内存区域;Database是指存储在磁盘上的一组物理文件。通过Instance与Database协同,Oracle数据库才能形成一个动态的可访问关系型数据库系统。
=========
1、Oracle数据库的启动主要包含三个步骤:

启动数据库到Nomount状态

启动数据库到Mount状态

启动数据库到Open状态
完成这三个过程,数据库才能进入就绪状态,准备提供数据访问
=========
2、启动数据库到Nomount状态
在启动的第一步骤,Oracle首先寻找参数文件(pfile/spfile),然后根据参数文件中的设置(如内存分配等设置),创建实例(INSTANCE),分配内存,启动后台进程。Nomount的过程也就是启动数据库实例的过程。这个过程在后台是启动Oracle可执行程序的过程,Windows上是oracle.exe文件的初始化,在Unix/Linux上是oracle可执行文件的初始化。
在Unix/Linux上可以通过file命令查看oracle执行文件来判断Oracle是64位或是32位的。
[oracle@rusky ~]$ file /home/oracle/oracle/product/10.2.0/db_1/bin/oracle
/home/oracle/oracle/product/10.2.0/db_1/bin/oracle: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs),

not stripped
SQL> startup nomount;
3、观察告警日志文件(alert_<ORACLE_SID>.log),可以看到这一阶段的启动过程:读取参数文件,应用参数启动实例。所有在参数文件中定义的非缺省参数都会记录在告警日志文件中
告警日志alert_<ORACLE_SID>.log的存放地点:

SQL> show parameter dump_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest string d:\app\administrator\diag\rdbms\orcl\orcl\trace --alert日志在这个路径下
core_dump_dest string d:\app\administrator\diag\rdbms\orcl\orcl\cdump
user_dump_dest string d:\app\administrator\diag\rdbms\orcl\orcl\trace

4、在Nomount初始化的过程中,只要拥有了一个参数文件,就可以凭之启动实例(INSTANCE),这一步骤并不需要任何控制文件或数据文件等的参与。在参数文件中,通常需要最少的参数是db_name ,设置了这个参数之后,数据库实例就可以启动。应用参数创建实例之后,后台进程依次启动。

5、V$PROCESS视图
通过数据库中的v$process视图,可以找到对应于操作系统的每个进程信息:

SQL> select addr,pid,spid,username,program from v$process;
SQL> select addr,pid,spid,username,program from v$process; ADDR PID SPID USERNAME PROGRAM
---------------- ---------- ------------------------ --------------- ------------------------
000007FF31078C08 1 PSEUDO
000007FF31079C78 2 5748 SYSTEM ORACLE.EXE (PMON)
000007FF3107ACE8 3 6528 SYSTEM ORACLE.EXE (VKTM)
000007FF3107BD58 4 4724 SYSTEM ORACLE.EXE (GEN0)
000007FF3107CDC8 5 6104 SYSTEM ORACLE.EXE (DIAG)
000007FF3107DE38 6 6456 SYSTEM ORACLE.EXE (DBRM)
000007FF3107EEA8 7 7160 SYSTEM ORACLE.EXE (PSP0)
000007FF3107FF18 8 4292 SYSTEM ORACLE.EXE (DIA0)
000007FF31080F88 9 4180 SYSTEM ORACLE.EXE (MMAN)
000007FF31081FF8 10 376 SYSTEM ORACLE.EXE (DBW0)
000007FF31083068 11 6608 SYSTEM ORACLE.EXE (LGWR)
000007FF310840D8 12 5088 SYSTEM ORACLE.EXE (CKPT) ....

=============
6、参数文件的选择
接下来关注一下启动过程中Oracle选择参数文件的顺序。
从Oracle9i开始,spfile被引入Oracle数据库,Oracle首选spfile<ORACLE_SID>.ora文件作为启动参数文件;如果该文件不存在,Oracle选择spfile.ora文件;如果前两者都不存在,Oracle将会选择init<ORACLE_SID>.ora文件;如果以上三个文件都不存在,Oracle将无法创建和启动instance。Oracle在启动过程中,会在特定的路径中寻找参数文件,在Unix/Linux下的路径为

$ORACLE_HOME/dbs目录,在WINDOWS上的路径为$ORACLE_HOME\database目录。
可以在SQL*PLUS中通过show parameter spfile命令来检查数据库是否使用了spfile文件,如果value不为Null,则数据库使用了spfile文件。
在参数文件中,通常需要最少的参数是db_name ,设置了这个参数之后,数据库实例就可以启动。

SQL> show parameter spfile;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string D:\APP\ADMINISTRATOR\PRODUCT\1
1.2.0\DBHOME_1\DATABASE\SPFILE
ORCL.ORA

========================
7、ORACLE SID
SID是System IDentifier的缩写,而ORACLE_SID就是Oracle System IDentifier 的缩写,在Oracle系统中,ORACLE_SID以环境变量的形式出现,当Oracle实例启动时,在操作系统上fork的进程就依据这个ORACLE_SID来创建,这就是SID的作用。

Oracle的实例(instance)是由一块共享内存区域(SGA)和一组后台进程(background processes)共同组成,而后台进程正是数据库和操作系统进行交互的通道,这些进程的名称就是通过ORACLE_SID决定的。
通过前面的讨论可以知道,实例的启动需要一个参数文件,参数文件的名称就是由ORACLE_SID决定的,对于init文件,缺省的文件名称是init<ORACLE_SID>.ora,对于spfile文件,缺省的文件名为spfile<ORACLE_SID>.ora,Oracle依据ORACLE_SID来决定和寻找参数文件启动实例。
在同一个$ORACLE_HOME下,通过参数文件,Oracle能够根据ORACLE_SID将实例区分开来;但是注意如果在不同的$ORACLE_HOME下,即使在同一台主机上,Oracle也是能够创建相同ORACLE_SID的实例的。

8、INSTANCE_NAME的含义
在数据库内部和ORACLE_SID相关联的概念就是INSTANCE_NAME。
Oracle数据库内部存在一个初始化参数INSTANCE_NAME,用于标示数据库实例的名称,其缺省值通常就是ORACLE_SID;但是初始化参数INSTANCE_NAME和ORACLE_SID可以不同,不同实例可以拥有相同的INSTANCE_NAME。
在同一个ORACLE_HOME下,只要ORACLE_SID不同,数据库并不校验INSTANCE_NAME参数;通过简单的参数文件复制,我们就可以在同一台服务器上创建多个具有相同instance_name的实例。
V$INSTANCE视图和数据库实例的生命周期相关,用于显示当前实例的状态,通过这个视图可以获得包括实例的启动时间、运行主机等重要信息.

<FROM:http://www.eygle.com/archives/2008/12/oracle_internals_startup_nomount.html>

Oracle-nomount/mount/open的更多相关文章

  1. oracle startup mount nomount 区别

    看oracle入门书,其中一句话说,使用startup nomount 命令启动例程,不可以和mount open 和exclusive一起使用,这个命令适用于建立数据库或是维护数据库时使用. 于是查 ...

  2. 数据库nomount mount open阶段走向

    先来简要了解一下Oracle数据库体系架构以便于后面深入理解,Oracle Server主要由实例(instance)和数据库(database)组成.实例(instance)由共享内存(SGA)和后 ...

  3. Oracle第一步

    Oracle 启动数据库 Startup [NOMOUNT|MOUNT|OPEN|FORCE] [restrict] [pfile=filename] 启动实例,加载数据库,启动数据库 oRACLE关 ...

  4. Oracle 第一天

    Oracle 第一天 1.oracle数据库下载.安装和配置 1.1 下载压缩包后解压并将压缩包2里面的文件覆盖至压缩包1中 1.2 按照步骤逐步安装 1.3 设置管理员密码时,默认情况下四个管理员是 ...

  5. Oracle数据库——基本操作

    一.涉及内容 1.掌握Oracle 10g 相关服务的启动.停止. 2.熟练掌握数据库配置助手(DBA).企业管理器(OEM).SQL*Plus等工具的使用. 3.掌握使用STARTUP和SHUTDO ...

  6. Oracle 启动状态解说

    oracle 启动状态由nomount-mount-open 一. nomount状态下操作 08:09:49 idle> startup nomount; ORACLE instance st ...

  7. Oracle Standby Database 实现方案

    Oracle Standby Database 实现方案  From: http://wanow.blog.hexun.com/4672755_d.html 字号:大 中 小 版本:V20060328 ...

  8. centos6 x86 安装 oracle 11g2r 日志

    一.安装centos 6.5 二.安装ora所需的库 三.修改centos内核 四.建用户组和目录结构等 五.安装ora11g2r 六.安装sqlplus的翻页程序和help补丁 七.自启动脚本 八. ...

  9. centos5.2 x86 安装 oracle 11g2r 日志

    一.安装centos 二.安装ora所需的库 三.修改centos内核 四.建用户组和目录结构等 五.安装ora11g2r 六.安装sqlplus的翻页程序和help补丁 七.自启动脚本 八.常用命令 ...

  10. DBA避坑宝典:Oracle运维中的那些事儿

    对于Oracle运维中的那些事儿,我的最终目的:不是比谁更惨,而是能够从中吸取经验和教训. 从我的理解来看,我会从下面的几个方面来进行说明DBA运维中的一些事儿. 每个部分都是非常关键的,缺一不可,而 ...

随机推荐

  1. jQuery制作焦点图(轮播图)

    焦点图(轮播图) 案例 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...

  2. js判断浏览器类型以及版本

    你知道世界上有多少种浏览器吗?除了我们熟知的IE, Firefox, Opera, Safari四大浏览器之外,世界上还有近百种浏览器. 几天前,浏览器家族有刚诞生了一位小王子,就是Google推出的 ...

  3. poj1006 孙子定理

    Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 127944   Accepted: 40566 Des ...

  4. 洛谷 P1066 2^k进制数

    P1066 2^k进制数 题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. ( ...

  5. hdfs-over-ftp安装与配置

    hdfs-over-ftp是一个开源,简单易用的实现了对HDFS系统的下载和上传功能的小工具.可以作为管理工具来使用,快捷方便. 1 安装jdk(1.6以上版本)并配置环境变量分别执行java -ve ...

  6. activiti任务TASK

    一.概要 设计TASK的表主要是:ACT_RU_TASK,ACT_HI_TASKINST(见参考-activiti表): 任务主要有:人工任务(usertask),服务任务(servicetask)等 ...

  7. canvas元素大小与绘图表面大小

    原文链接:canvas总结:元素大小与绘图表面大小 前言 我们使用canvas的时候一般在canvas元素中直接设置它的width和height: 1 <canvas id="myCa ...

  8. 距离顶部估计像素,显示div!

    <html> <head> <title>slide</title> <style type="text/css"> # ...

  9. 克隆contos 出现 Error:No suitable device found: no device found for connection &amp;quot;System eth0&amp

    二.问题 这时我复制好的虚拟机,启动登陆进去(用户名和密码跟之前那台是一样的),修改好IPADDR,然后网卡重启出现问题? #service network restart 出现问题:Error:No ...

  10. 如何实现SQL事务的提交,又不对外进行污染

    一.以下是本人的一点思路: 1.在事务方法中,参数运用委托Func,选用Func 的原因是多入参,单一出参2.事务传参运用泛型,选用泛型的原因是可以减少代码量,类型安全 二.说明中涉及4个类:1.Or ...