共计 3683 个字符,预计需要花费 10 分钟才能阅读完成。
1 Oracle 启动选项;
Oracle 数据库在 startup 启动时,Oracle 将在默认位置 $ORACLE_HOME/dbs 中查找初始化参数文件;Oracle 以下面的顺序在其中寻找合适的初始化文件:
Spfile$ORACLE_SID.ora
Spfile.ora
Init$ORACLE_SID.ora
可以用几种方式启动 oracle 数据库,不同方式启动将影响启动数据库的程度,启动状态由 nomount(数据库未装载)——>mount(数据库完成装载)——>open(数据库打开)
1.1 STARTUP NOMOUNT;
SQL> startup nomount
ORACLE instance started.
Total System Global Area 1603411968 bytes
Fixed Size 2253664 bytes
Variable Size 1375734944 bytes
Database Buffers 218103808 bytes
Redo Buffers 7319552 bytes
Oracle 读参数文件,打开实例,启动 Oracle 后台进程, 给 Oracle 分配 SGA。此时数据库状态为未装载。
1.2 ALTER DATABASE MOUNT;
SQL> alter database mount;
Database altered.
Oracle 打开并读取控制文件,获取数据文件和重做日志文件的名称和位置。此时数据库完成装载。
1.3 ALTER DATABASE OPEN;
SQL> alter database open;
Database altered.
Oracle 打开数据文件和重做日志文件,至此 Oracle 可以对外提供服务。
2 通过 10046 事件查看内部启动过程
SQL> startup nomount;
Total System Global Area 1603411968 bytes
Fixed Size 2253664 bytes
Variable Size 1375734944 bytes
Database Buffers 218103808 bytes
Redo Buffers 7319552 bytes
SQL> oradebug setmypid
Statement processed.
SQL> oradebug tracefile_name
/oracle/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_3682.trc
SQL> alter session set events’10046 trace name context forever,level 12′;
Session altered.
SQL> alter database mount;
Database altered.
SQL> alter database open;
Database altered.
查看 udump 文件
[oracle@rhel6 ~]$ more /oracle/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_3682.trc
Trace file /oracle/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_3682.trc
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 – 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORACLE_HOME = /oracle/app/oracle/product/11.2.0
System name: Linux
Node name: rhel6
Release: 2.6.32-431.el6.x86_64
Version: #1 SMP Sun Nov 10 22:19:54 EST 2013
Machine: x86_64
VM name: VMWare Version: 6
Instance name: orcl
Oracle 数据库 mount 启动读取控制文件,写日志文件
…
WAIT #140528657591192: nam=’control file sequential read’ ela= 8 file#=0 block#=1 blocks
=1 obj#=-1 tim=1502627703012561
WAIT #140528657591192: nam=’control file sequential read’ ela= 2 file#=1 block#=1 blocks
=1 obj#=-1 tim=1502627703012583
WAIT #140528657591192: nam=’control file sequential read’ ela= 47 file#=0 block#=3 block
s=8 obj#=-1 tim=1502627703012650
WAIT #140528657591192: nam=’control file sequential read’ ela= 13 file#=1 block#=3 block
s=8 obj#=-1 tim=1502627703012674
…
WAIT #140528657591192: nam=’ADR block file read’ ela= 847 =0 =0 =0 obj#=-1 tim=150262
7707123048
WAIT #140528657591192: nam=’ADR block file read’ ela= 576 =0 =0 =0 obj#=-1 tim=150262
7707124068
WAIT #140528657591192: nam=’ADR block file read’ ela= 562 =0 =0 =0 obj#=-1 tim=150262
7707125013
WAIT #140528657591192: nam=’ADR block file read’ ela= 473 =0 =0 =0 obj#=-1 tim=150262
7707125891
…
Oracle 数据库 open 过程读取控制文件信息,与读取磁盘数据文件头部进行对比
alter database open
END OF STMT
PARSE #140528657591192:c=0,e=274,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,plh=0,tim=1502627713
479605
WAIT #140528657591192: nam=’control file sequential read’ ela= 8 file#=0 block#=1 blocks
=1 obj#=-1 tim=1502627713479904
WAIT #140528657591192: nam=’control file sequential read’ ela= 4 file#=1 block#=1 blocks
=1 obj#=-1 tim=1502627713479922
WAIT #140528657591192: nam=’control file sequential read’ ela= 2 file#=0 block#=15 block
s=1 obj#=-1 tim=1502627713479931
…
WAIT #140528657591192: nam=’Disk file operations I/O’ ela= 11 FileOperation=2 fileno=1 f
iletype=2 obj#=-1 tim=1502627713481300
WAIT #140528657591192: nam=’Disk file operations I/O’ ela= 6 FileOperation=2 fileno=2 fi
letype=2 obj#=-1 tim=1502627713481317
WAIT #140528657591192: nam=’Disk file operations I/O’ ela= 4 FileOperation=2 fileno=3 fi
letype=2 obj#=-1 tim=1502627713481327
WAIT #140528657591192: nam=’Disk file operations I/O’ ela= 4 FileOperation=2 fileno=4 fi
letype=2 obj#=-1 tim=1502627713481338
WAIT #140528657591192: nam=’Disk file operations I/O’ ela= 5 FileOperation=2 fileno=201
filetype=2 obj#=-1 tim=1502627713481351
更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-08/146250.htm