LoveUnix's Archiver

wind998899 发表于 2010-7-19 08:00

Oracle的启动过程详解

Oracle的启动过程详解

Oracle的启动过程共经历四个阶段:

  shutdown→nomount→mount→open

shutdown→nomount过程:

                      读初始参数文件
                      分配物理内存
                      启动后台进程
                      定位到控制文件
                      打开/写alert文件
   nomount过程可以访问的动态性能视图:v$parameter,v$sga,v$option,v$process,v$version,v$instance
nomount→mount过程:

                      打开控制文件
                   确认 database的结构信息
   mount过程可以访问的动态性能视图: v$thread,v$controlfile,v$database,v$datafile,v$datafile_header,v$logfile
   以下任务必须在mount状态下进行:

                           命名数据文件
                          启用和禁用重作日志归档选项
                          执行完全数据库恢复
mount→open过程:

        打开数据文件
                打开重做日志文件
最后阶段中,oracle服务器验证所有数据文件和重做日志文件是否可以打开,并检查数据库的一致性,如果需要,smon进程会启动例程恢复。

自上而下:

shutdown:

nomount:读取初始化参数,并且分配物理内存,通过初始化参数定位到control file,后台进程启动,写alter文件,如果alter文件不存在将创建它

SQL> startup nomount
ORACLE 例程已经启动。

Total System Global Area 167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              83887460 bytes
Database Buffers           79691776 bytes
Redo Buffers                2945024 bytes

altert文件中内容:

Fri Dec 28 11:34:06 2007
Starting ORACLE instance (normal)
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Picked latch-free SCN scheme 2
Using LOG_ARCHIVE_DEST_10 parameter default value as USE_DB_RECOVERY_FILE_DEST
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       = 75497472
__large_pool_size        = 4194304
__java_pool_size         = 4194304
__streams_pool_size      = 0
spfile                   = E:\ORACLE\PRODUCT\10.2.0\DB_2\DBS\SPFILEORCL.ORA
sga_target               = 167772160
control_files            = E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL, E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL, E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL
db_block_size            = 8192
__db_cache_size          = 79691776
compatible               = 10.2.0.1.0
db_file_multiblock_read_count= 16
db_recovery_file_dest    = E:\oracle\product\10.2.0/flash_recovery_area
db_recovery_file_dest_size= 2147483648
undo_management          = AUTO
undo_tablespace          = UNDOTBS1
remote_login_passwordfile= EXCLUSIVE
db_domain                =
dispatchers              = (PROTOCOL=TCP) (SERVICE=orclXDB)
job_queue_processes      = 10
audit_file_dest          = E:\ORACLE\PRODUCT\10.2.0\ADMIN\ORCL\ADUMP
background_dump_dest     = E:\ORACLE\PRODUCT\10.2.0\ADMIN\ORCL\BDUMP
user_dump_dest           = E:\ORACLE\PRODUCT\10.2.0\ADMIN\ORCL\UDUMP
core_dump_dest           = E:\ORACLE\PRODUCT\10.2.0\ADMIN\ORCL\CDUMP
db_name                  = orcl
open_cursors             = 300
pga_aggregate_target     = 16777216
PMON started with pid=2, OS id=3280
PSP0 started with pid=3, OS id=2972
MMAN started with pid=4, OS id=2280
DBW0 started with pid=5, OS id=828
LGWR started with pid=6, OS id=1936
CKPT started with pid=7, OS id=3844
SMON started with pid=8, OS id=596
RECO started with pid=9, OS id=3252
CJQ0 started with pid=10, OS id=1932
MMON started with pid=11, OS id=3788
Fri Dec 28 11:34:17 2007
starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...
MMNL started with pid=12, OS id=928
Fri Dec 28 11:34:17 2007
starting up 1 shared server(s) ...

在nomount状态:
    可以访问到实例

SQL> select * from v$instance;

INSTANCE_NUMBER              INSTANCE_NAME         HOST_NAME                     
--------------- -------------------------------- -------------------------------
       1                      orcl                 ORACLE10G         

                          

     可以访问到后台进程

select * from v$bgprocess;

     可以访问到内存结构

   SQL> select * from v$sga;

NAME                                          VALUE
---------------------------------------- ----------
Fixed Size                                  1247900
Variable Size                              83887460
Database Buffers                           79691776
Redo Buffers                                2945024      

   但不可以访问database结构

SQL> select * from v$database;
select * from v$database
              *
第 1 行出现错误:
ORA-01507: ??????

mount:读并打开控制文件,并确认到database的结构信息

       SQL> alter database mount
           2 /

       数据库已更改。

       SQL> select * from v$database;

      DBID NAME      CREATED        RESETLOGS_CHANGE# RESETLOGS_TIME PRIOR_RESETLOGS_CHANGE# PRIOR_RESE
---------- --------- -------------- ----------------- --------------
1170053590 ORCL      25-12? -07                534907 25-12? -07                           1 30-8? -05     ARCHIVELOG         

     

可以找到有什么样的表空间

SQL> select * from v$tablespace;

       TS# NAME                           INC BIG FLA ENC
---------- ------------------------------ --- --- --- ---
         0 SYSTEM                         YES NO YES
         1 UNDOTBS1                       YES NO YES
         2 SYSAUX                         YES NO YES
         4 USERS                          YES NO YES
         3 TEMP                           NO NO YES
         6 EXAMPLE                        YES NO YES

已选择6行。

有什么样的数据文件组成:

SQL> select * from v$datafile
2 /


FILE# CREATION_CHANGE# CREATION_TIME         TS#     RFILE# STATUS ENABLED    CHECKPOINT_CHANGE# CHECK
------- ---------------- -------------- ---------- ---------- ------- ---------- ----------------
      1                9 30-8? -05              0          1 SYSTEM READ WRITE             777989 28-12? -07      
      2           532340 30-8? -05              1          2 ONLINE READ WRITE             777989 28-12? -07      
      3             6100 30-8? -05              2          3 ONLINE READ WRITE             777989 28-12? -07      
      4             9769 30-8? -05              4          4 ONLINE READ WRITE             777989 28-12? -07      
      5           559801 25-12? -07              6          5 ONLINE READ WRITE             777989 28-12? -07      

有什么样的日志文件组成:

SQL> select * from v$logfile;
行将被截断


    GROUP# STATUS TYPE    MEMBER
---------- ------- ------- ----------------------------------------------------------
         3         ONLINE E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG
         2         ONLINE E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG
         1         ONLINE E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG

在这个状态用户表还不能打开

open:所有文件被打开,并确认database状态

SQL> alter database open;

数据库已更改。

yangyijun230 发表于 2010-7-19 10:31

沙发:lol:victory:

fenfajinqu 发表于 2010-7-19 10:36

lz很有心呀:)

wind998899 发表于 2010-7-19 11:43

[b]回复 [url=http://www.loveunix.net/redirect.php?goto=findpost&pid=1058592&ptid=116845]3#[/url] [i]fenfajinqu[/i] [/b]


    以前上课时候的笔记整理出来的:)

ppplc830813 发表于 2010-7-26 22:38

还是比较详细的
辛苦

qy02101 发表于 2010-7-27 01:01

写的不错啊!!!!!

jiafan 发表于 2010-9-3 16:26

非常感谢您的细致讲解。。。。

water1997b 发表于 2010-9-5 15:58

路过,学习,进步

newjava 发表于 2010-9-7 17:40

写的很详细 学习一下 支持一下

xujian1988 发表于 2010-9-8 09:48

最近学数据库,学的我晕晕的。感觉东西特繁杂,这个看的很清楚

Newborn 发表于 2010-11-23 16:23

简单明了
。。

soberflowers 发表于 2010-11-23 19:57

感谢楼主分享:D

lizhongholly 发表于 2010-11-25 00:01

新手,刚上路

andyuil_ln 发表于 2010-11-26 21:33

很详细  谢谢LZ分享

一杯清茶 发表于 2010-12-22 14:51

认真学习中,不错不错。

caomeng2010 发表于 2011-3-25 11:02

灌水灌水。。。

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.