oracle启动过程简介

上传人:xiao****1972 文档编号:84085187 上传时间:2019-03-02 格式:DOCX 页数:8 大小:19.85KB
返回 下载 相关 举报
oracle启动过程简介_第1页
第1页 / 共8页
oracle启动过程简介_第2页
第2页 / 共8页
oracle启动过程简介_第3页
第3页 / 共8页
oracle启动过程简介_第4页
第4页 / 共8页
oracle启动过程简介_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《oracle启动过程简介》由会员分享,可在线阅读,更多相关《oracle启动过程简介(8页珍藏版)》请在金锄头文库上搜索。

1、上个邮件讲了下ORACLE_SID、INSTANCE_NAME、DB_NAME、SERVER NAME、TNSNAME的区别,有了这个基础,我们来谈下oracle的一个简要的启动过程(摘录自eygle著作),梳理下几种状态下Oracle的相关特性。方便大家更深入的了解oracle。我们通常所说的Oracle Server主要由两个部分组成:Instance和Database。Instance是指一组后台进程(在Windows上是一组线程)和一块共享内存区域;Database是指存储在磁盘上的一组物理文件。通过Instance与Database协同,Oracle数据库才能形成一个动态的可访问关系

2、型数据库系统。1.1 数据库的启动从表象来看,数据库的启动极其简单,只需要以SYSDBA/SYSOPER身份登陆,敲一条startup命令既可启动数据库。然而在这条命令之后,Oracle需要执行一系列复杂的操作,深入理解这些操作不仅有助于了解Oracle数据库的运行机制,还可以在故障发生时帮助大家快速的定位问题的根源所在,所以接下来让我们一起分析一下数据库的启动过程。Oracle数据库的启动主要包含三个步骤:启动数据库到Nomount状态启动数据库到Mount状态启动数据库到Open状态完成这三个过程,数据库才能进入就绪状态,准备提供数据访问。下面逐个来看看以上各个步骤的具体过程以及含义。1.

3、1.1 启动数据库到Nomount状态在启动的第一步骤,Oracle首先寻找参数文件(pfile/spfile),然后根据参数文件中的设置(如内存分配等设置),创建实例(INSTANCE),分配内存,启动后台进程。Nomount的过程也就是启动数据库实例的过程。这个过程在后台是启动Oracle可执行程序的过程,Windows上是oracle.exe文件的初始化,在Unix/Linux上是oracle可执行文件的初始化。Windows上Oracle11g的执行文件大小约为86M,而Linux下Oracle11g的执行文件达到145M左右:D:oracleproduct11.1.0BINdir o

4、racle.exe2007-10-03 17:42 89,702,400 oracle.exeoraclelocalhost bin$ ls -al $ORACLE_HOME/bin/oracle-rwsr-s-x 1 oracle dba 151901909 Jul 4 15:13 /opt/oracle/product/11.1.0/bin/oracle在Unix/Linux上可以通过file命令查看oracle执行文件来判断Oracle是64位或是32位的,以下是Linux平台的一个示范输出,输出显示Oracle为32位:oraclelocalhost bin$ file $ORACLE

5、_HOME/bin/oracle/opt/oracle/product/11.1.0/bin/oracle: setuid setgid ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), not stripped在Windows上,也有可选的命令增强工具可以提供类似的功能。了解Oracle可执行文件还有另外一个用途,在Unix/Linux上通过strings命令可以将oracle可执行文件中的字符文本转储出来,

6、在转储的文本中可以找到很多有意思的信息,比如一些Oracle未公开的Hints信息、数据库字典基表创建信息等,类似如下一条命令可以完成这样的工作:strings $ORACLE_HOME/bin/oracle oracle.txt在Nomount初始化的过程中,只要拥有了一个参数文件,就可以凭之启动实例(INSTANCE),这一步骤并不需要任何控制文件或数据文件等的参与。1.1.1.1 实例以及进程的创建以下是正常情况下启动到nomount状态的过程:oracleeygle bdump$ sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Producti

7、on on Wed Jun 28 12:42:30 2006Copyright (c) 1982, 2005, Oracle. All rights reserved.SQL connect / as sysdbaConnected to an idle instance.SQL startup nomount;ORACLE instance started.Total System Global Area 1073741824 bytesFixed Size 1223488 bytesVariable Size 264242368 bytesDatabase Buffers 80111206

8、4 bytesRedo Buffers 7163904 bytes注意这里,Oracle根据参数文件的内容,创建了instance,分配了相应的内存区域,启动了相应的后台进程。SGA的分配信息从以上输出中可以看到。观察告警日志文件(alert_.log),可以看到这一阶段的启动过程:读取参数文件,应用参数启动实例。所有在参数文件中定义的非缺省参数都会记录在告警日志文件中,以下是这一过程的日志摘要示例:Wed Jun 28 12:42:40 2006Starting ORACLE instance (normal)LICENSE_MAX_SESSION = 0LICENSE_SESSIONS_W

9、ARNING = 0Picked latch-free SCN scheme 2Autotune of undo retention is turned on. IMODE=BRILAT =18LICENSE_MAX_USERS = 0SYS auditing is disabledksdpec: called for event 13740 prior to event group initializationStarting up ORACLE RDBMS Version: 10.2.0.1.0.System parameters with non-default values:proce

10、sses = 150_shared_pool_size = 255852544_large_pool_size = 0_java_pool_size = 4194304_streams_pool_size = 0sga_target = 1073741824control_files = /opt/oracle/oradata/eygle/control01.ctl, /opt/oracle/oradata/eygle/control02.ctl, /opt/oracle/oradata/eygle/control03.ctldb_block_size = 8192_db_cache_size

11、 = 805306368.background_dump_dest = /opt/oracle/admin/eygle/bdumpuser_dump_dest = /opt/oracle/admin/eygle/udumpdb_name = eygle 应用参数创建实例之后,后台进程依次启动,注意以下输出中包含了PID信息以及OS ID两个信息,PID代表该进程在数据库内部的标识符编号,而OS ID则代表该进程在操作系统上的进程编号:PMON started with pid=2, OS id=6290PSP0 started with pid=3, OS id=6292MMAN starte

12、d with pid=4, OS id=6294DBW0 started with pid=5, OS id=6296LGWR started with pid=6, OS id=6298CKPT started with pid=7, OS id=6300SMON started with pid=8, OS id=6302RECO started with pid=9, OS id=6304CJQ0 started with pid=10, OS id=6306MMON started with pid=11, OS id=6308MMNL started with pid=12, OS

13、id=6310在这里提醒大家注意一下Oracle不同版本告警日志信息的变化,在Oracle9i早期版本中,后台进程启动的日志信息里并不包含OS ID,以下是Oracle 9.2.0.4的日志信息(在Oracle 9.2.0.8中已经包含了OS ID信息):PMON started with pid=2DBW0 started with pid=3LGWR started with pid=4CKPT started with pid=5SMON started with pid=6RECO started with pid=7在Oracle 11g中,这部分信息有了进一步的增强,输出中不仅包含

14、了OS ID,而且每个后台进程的启动都有单独的时间标记(时间标记可以帮助我们判断每个后台进程启动时所消耗的时间,从而辅助进行问题诊断):Sat Jul 05 09:53:55 2008PMON started with pid=2, OS id=13898 Sat Jul 05 09:53:55 2008VKTM started with pid=3, OS id=13900 at elevated priorityVKTM running at (20)ms precisionSat Jul 05 09:53:55 2008DIAG started with pid=4, OS id=139

15、04 Sat Jul 05 09:53:55 2008DBRM started with pid=5, OS id=13906 Sat Jul 05 09:53:55 2008PSP0 started with pid=6, OS id=13908 提示:从Oracle不同版本中的变化来体会Oracle的技术进步、甚至借鉴这些变化是学习Oracle的方法之一。任何细微的变化都值得注意,认真、细致、严谨是对DBA的基本素质要求。细心的读者朋友或许可以注意到,在前面日志里的进程启动信息里,并没有pid=1的进程,那么这个进程是否存在呢?1.1.1.2 V$PROCESS视图通过数据库中的v$process视图,可以找到对应于操作系统的每个进程信息:SQL select addr,pid,spid,username,program from v$process;ADDR PID SPID USERNAME PROGRAM- - - - -5FE162AC 1 PSEUDO5FE16860 2 6290 o

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号