没有合适的资源?快使用搜索试试~ 我知道了~
oracle在linux的启动、访问、停止整理.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 51 浏览量
2021-11-04
16:23:31
上传
评论
收藏 2.74MB PDF 举报
温馨提示
试读
50页
oracle在linux的启动、访问、停止整理.pdf
资源推荐
资源详情
资源评论
第 1 章 数据库的启动和关闭
通常所说的 Oracle Server 主要由两个部分组成: Instance 和 Database。Instance 是指一组
后台进程(在 Windows 上是一组线程)和一块共享内存区域; Database 是指存储在磁盘上的
一组物理文件。 通过 Instance 与 Database 协同,Oracle 数据库才能形成一个动态的可访问关系
型数据库系统。
本章将由数据库如何启动与关闭入手,开始和大家一起进入 Oracle 数据库的国度。
1.1 数据库的启动
从表象来看,数据库的启动极其简单,只需要以 SYSDBA/SYSOPER 身份登录,敲一条
startup 命令既可启动数据库。 然而在这条命令之后, Oracle 需要执行一系列复杂的操作, 深入
理解这些操作不仅有助于了解 Oracle 数据库的运行机制,还可以在故障发生时帮助大家快速
的定位问题的根源所在,所以接下来将分析一下数据库的启动过程。
Oracle 数据库的启动主要包含 3 个步骤:
z 启动数据库到 NOMOUNT 状态
z 启动数据库到 MOUNT 状态
z 启动数据库到 OPEN 状态
完成这 3 个过程,数据库才能进入就绪状态,准备提供数据访问。图 1-1 描述了一个数据
库从关闭( SHUTDOWN )状态到 OPEN 状态经历的这些步骤(关闭步骤与此相反,是一个逆
向过程):
书名书名书名书名书名书名书名书名书名书名书名书名书名书名
·2·
下面逐个来看看以上各个步骤的具体过程以及含义。
1.1.1 启动数据库到 NOMOUNT 状态
在启动的第一步骤, Oracle 首先寻找参数文件( pfile/spfile ),然后根据参数文件中的设置
(如内存分配等设置) ,创建实例( Instance),分配内存,启动后台进程。 NOMOUNT 的过程
也就是启动数据库实例的过程 。这个过程在后台是启动 Oracle 可执行程序的过程, Windows
上是 oracle.exe 文件的初始化,在 UNIX/Linux 上是 Oracle 可执行文件的初始化。
Windows 上 Oracle 11g 的执行文件大小约为 86MB ,而 Linux 下 Oracle 11g 的执行文件达
到 145MB 左右:
D:\oracle\product\11.1.0\BIN>dir oracle.exe
2007-10-03 17:42 89,702,400 oracle.exe
[oracle@localhost 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 位:
[oracle@localhost bin]$ file $ORACLE_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 可执行文件中的字符文本转储出来, 在转储的文本中可以找到很多有意思的信息, 比如
一些 Oracle 未公开的 Hints 信息、 数据库字典基表创建信息等, 类似如下一条命令可以完成这
样的工作:
strings $ORACLE_HOME/bin/oracle > oracle.txt
在 NOMOUNT 初始化的过程中,只要拥有了一个参数文件,就可以凭之启动实例
(Instance),这一步骤并不需要任何控制文件或数据文件等的参与。
1.实例以及进程的创建
以下是正常情况下启动到 NOMOUNT 状态的过程:
[oracle@eygle bdump]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Wed Jun 28 12:42:30 2006
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> connect / as sysdba
Connected to an idle instance.
第 1 章 数据库的启动和关闭
·3·
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 1073741824 bytes
Fixed Size 1223488 bytes
Variable Size 264242368 bytes
Database Buffers 801112064 bytes
Redo Buffers 7163904 bytes
注意这里, Oracle 根据参数文件的内容,创建了 Instance,分配了相应的内存区域,启动
了相应的后台进程。 SGA 的分配信息从以上输出中可以看到。
观察告警日志文件( alert_<ORACLE_SID>.log ),可以看到这一阶段的启动过程: 读取参
数文件,应用参数启动实例 。所有在参数文件中定义的非缺省参数都会记录在告警日志文件中,
以下是这一过程的日志摘要示例:
Wed Jun 28 12:42:40 2006
Starting ORACLE instance (normal)
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Picked latch-free SCN scheme 2
Autotune of undo retention is turned on.
IMODE=BR
ILAT =18
LICENSE_MAX_USERS = 0
SYS auditing is disabled
ksdpec: called for event 13740 prior to event group initialization
Starting up ORACLE RDBMS Version: 10.2.0.1.0.
System parameters with non-default values:
processes = 150
__shared_pool_size = 255852544
__large_pool_size = 0
__java_pool_size = 4194304
__streams_pool_size = 0
sga_target = 1073741824
control_files = /opt/oracle/oradata/eygle/control01.ctl,
/opt/oracle/oradata/eygle/control02.ctl, /opt/oracle/oradata/eygle/control03.ctl
db_block_size = 8192
__db_cache_size = 805306368
……………
background_dump_dest = /opt/oracle/admin/eygle/bdump
书名书名书名书名书名书名书名书名书名书名书名书名书名书名
·4·
user_dump_dest = /opt/oracle/admin/eygle/udump
db_name = eygle
应用参数创建实例之后, 后台进程依次启动, 注意以下输出中包含了 PID 信息以及 OS ID
两个信息, PID 代表该进程在数据库内部的标识符编号, 而 OS ID 则代表该进程在操作系统上
的进程编号:
PMON started with pid=2, OS id=6290
PSP0 started with pid=3, OS id=6292
MMAN started with pid=4, OS id=6294
DBW0 started with pid=5, OS id=6296
LGWR started with pid=6, OS id=6298
CKPT started with pid=7, OS id=6300
SMON started with pid=8, OS id=6302
RECO started with pid=9, OS id=6304
CJQ0 started with pid=10, OS id=6306
MMON started with pid=11, OS id=6308
MMNL started with pid=12, OS id=6310
在这里提醒大家注意一下 Oracle 不同版本告警日志信息的变化, 在 Oracle 9i 早期版本中,
后台进程启动的日志信息里并不包含 OS ID ,以下是 Oracle 9.2.0.4 的日志信息(在 Oracle 9.2.0.8
中已经包含了 OS ID 信息):
PMON started with pid=2
DBW0 started with pid=3
LGWR started with pid=4
CKPT started with pid=5
SMON started with pid=6
RECO started with pid=7
在 Oracle 11g 中,这部分信息有了进一步的增强,输出中不仅包含了 OS ID,而且每个后
台进程的启动都有单独的时间标记 (时间标记可以帮助用户判断每个后台进程启动时所消耗的
时间,从而辅助进行问题诊断) :
Sat Jul 05 09:53:55 2008
PMON started with pid=2, OS id=13898
Sat Jul 05 09:53:55 2008
VKTM started with pid=3, OS id=13900 at elevated priority
VKTM running at (20)ms precision
Sat Jul 05 09:53:55 2008
DIAG started with pid=4, OS id=13904
Sat Jul 05 09:53:55 2008
DBRM started with pid=5, OS id=13906
第 1 章 数据库的启动和关闭
·5·
Sat Jul 05 09:53:55 2008
PSP0 started with pid=6, OS id=13908
提示:从 Oracle 不同版本中的变化来体会 Oracle 的技术进步、甚至借鉴这些变化是学习
Oracle 的方法之一。任何细微的变化都值得注意, 认真、细致、严谨是对 DBA 的基本素质要
求。
细心的读者朋友或许已经注意到, 在前面日志里的进程启动信息里, 并没有 pid=1 的进程,
那么这个进程是否存在呢?
2. V$PROCESS 视图
通过数据库中的 v$process 视图,可以找到对应于操作系统的每个进程信息:
SQL> select addr,pid,spid,username,program from v$process;
ADDR PID SPID USERNAME PROGRAM
-------- ---------- ---------- -------- ----------------------------------------
5FE162AC 1 PSEUDO
5FE16860 2 6290 oracle oracle@eygle (PMON)
5FE16E14 3 6292 oracle oracle@eygle (PSP0)
5FE173C8 4 6294 oracle oracle@eygle (MMAN)
5FE1797C 5 6296 oracle oracle@eygle (DBW0)
5FE17F30 6 6298 oracle oracle@eygle (LGWR)
5FE184E4 7 6300 oracle oracle@eygle (CKPT)
……
注意以上输出, pid=1 的进程是一个 PSEUDO 进程,这个进程被认为是初始化数据库的
进程,启动其他进程之前即被占用,并在数据库中一直存在。 v$process 的查询输出中, SPID
列代表的就是操作系统上的进程号,通过 SPID 可以将进程从操作系统到数据库关联起来:
[oracle@eygle bdump]$ ps -ef|grep ora_
oracle 6290 1 0 12:42 ? 00:00:00 ora_pmon_eygle
oracle 6292 1 0 12:42 ? 00:00:00 ora_psp0_eygle
oracle 6294 1 0 12:42 ? 00:00:00 ora_mman_eygle
oracle 6296 1 0 12:42 ? 00:00:00 ora_dbw0_eygle
oracle 6298 1 0 12:42 ? 00:00:00 ora_lgwr_eygle
oracle 6300 1 0 12:42 ? 00:00:00 ora_ckpt_eygle
……
如果在操作系统上发现某个进程表现异常 (如占用很高的 CPU 资源),那么 通过操作系统
上的 PID 和 V$PROCESS 视图中的 SPID 关联 ,就可以找到这个 OS 上的进程在数据库内部
的化身,从而可以进行进一步的跟踪诊断。
V$PROCESS 视图包含当前数据库中活动进程的相关信息, 这些进程在操作系统上都存在
剩余49页未读,继续阅读
资源评论
czq131452007
- 粉丝: 2
- 资源: 12万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- MMDF1N05ER2G-VB一款SOP8封装2个N-Channel场效应MOS管
- zipkin-server-3.3.0-exec.jar
- MI9933-VB一款SOP8封装2个P-Channel场效应MOS管
- zipkin-server-2.24.4-exec.jar
- MI4953-VB一款SOP8封装2个P-Channel场效应MOS管
- 基于Akka模拟实现Spark Standalone.pdf
- MI4946-VB一款SOP8封装2个N-Channel场效应MOS管
- 毕业答辩模板(动态模板)苹果IOS星空通用论文答辩模板
- 有效cookie值获取方式汇总
- 基于python实现的英雄联盟知识图谱问答系统源码(期末大作业).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功