Oracle-nomount/mount/open
通常所说的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的更多相关文章
- oracle startup mount nomount 区别
看oracle入门书,其中一句话说,使用startup nomount 命令启动例程,不可以和mount open 和exclusive一起使用,这个命令适用于建立数据库或是维护数据库时使用. 于是查 ...
- 数据库nomount mount open阶段走向
先来简要了解一下Oracle数据库体系架构以便于后面深入理解,Oracle Server主要由实例(instance)和数据库(database)组成.实例(instance)由共享内存(SGA)和后 ...
- Oracle第一步
Oracle 启动数据库 Startup [NOMOUNT|MOUNT|OPEN|FORCE] [restrict] [pfile=filename] 启动实例,加载数据库,启动数据库 oRACLE关 ...
- Oracle 第一天
Oracle 第一天 1.oracle数据库下载.安装和配置 1.1 下载压缩包后解压并将压缩包2里面的文件覆盖至压缩包1中 1.2 按照步骤逐步安装 1.3 设置管理员密码时,默认情况下四个管理员是 ...
- Oracle数据库——基本操作
一.涉及内容 1.掌握Oracle 10g 相关服务的启动.停止. 2.熟练掌握数据库配置助手(DBA).企业管理器(OEM).SQL*Plus等工具的使用. 3.掌握使用STARTUP和SHUTDO ...
- Oracle 启动状态解说
oracle 启动状态由nomount-mount-open 一. nomount状态下操作 08:09:49 idle> startup nomount; ORACLE instance st ...
- Oracle Standby Database 实现方案
Oracle Standby Database 实现方案 From: http://wanow.blog.hexun.com/4672755_d.html 字号:大 中 小 版本:V20060328 ...
- centos6 x86 安装 oracle 11g2r 日志
一.安装centos 6.5 二.安装ora所需的库 三.修改centos内核 四.建用户组和目录结构等 五.安装ora11g2r 六.安装sqlplus的翻页程序和help补丁 七.自启动脚本 八. ...
- centos5.2 x86 安装 oracle 11g2r 日志
一.安装centos 二.安装ora所需的库 三.修改centos内核 四.建用户组和目录结构等 五.安装ora11g2r 六.安装sqlplus的翻页程序和help补丁 七.自启动脚本 八.常用命令 ...
- DBA避坑宝典:Oracle运维中的那些事儿
对于Oracle运维中的那些事儿,我的最终目的:不是比谁更惨,而是能够从中吸取经验和教训. 从我的理解来看,我会从下面的几个方面来进行说明DBA运维中的一些事儿. 每个部分都是非常关键的,缺一不可,而 ...
随机推荐
- memcached session共享
http://www.baidu.com/s?wd=memcached%20session%E5%85%B1%E4%BA%AB&rsv_spt=1&issp=1&f=8& ...
- Jquery:Jquery中的事件<一>
由于今天有一个比较重要的面试,所以昨天晚上对以前做的一些项目做了一下总结,直接导致昨天的学习笔记断更了,哎,计划永远赶不上变化啊!今天学习了Jquery中是事件,就此做一个笔记,便于日后复习. 一.加 ...
- oracle 随Linux系统启动自启动设置
本文转自http://www.jb51.net/article/19823.htm 首先,要在RHEL中设置允许ORACLE系统自动启动,因为默认情况下是设置为不允许的.操作如下: 在root账户下修 ...
- .net 判断日期格式yyyy-MM-dd hh:MM:ss的正则表达式
加上引用: using System.Text.RegularExpressions; /// <summary> /// 检查字符串是否是日期格式 /// </sum ...
- poj3264 线段树
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 44121 Accepted: 20715 ...
- 宏定义中使用do{}while(0)的好处 (转载)
宏定义中使用do{}while(0)的好处 #define MACRO_NAME(para) do{macro content}while(0) 的格式,总结了以下几个原因: 1,空的宏定 ...
- C++新式类型转换
C++的四种强制类型转换,所以C++不是类型安全的.分别为:static_cast , dynamic_cast , const_cast , reinterpret_cast 新类型的强制转换可以提 ...
- Opensuse13.2开启ssh
要开启ssh很简单,步骤分为三步 步骤1: 安装ssh zypper install ssh 步骤2:启动ssh daemon网上很多通过 service 命令或者 init.d 目录中的脚本启动ss ...
- [Mugeda HTML5技术教程之13]链接的添加方式
在广告主的需求中,有很多情况下需要在动画中添加一些外部链接.这份文档就在Mugeda动画中添加外部链接的方式,做一下梳理. 1.通过点击触发的链接 就是要用户点击屏幕来触发链接的情况,这是推荐使用的方 ...
- Lua 字符串函数小结
1.求字符串长度 string.len(str) 2.大小写转换 string.upper(str) string.lower(str) 3.字符串查找(非全局) --func_string.lua ...