Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7593126
  • 博文数量: 368
  • 博客积分: 9600
  • 博客等级: 上校
  • 技术积分: 18875
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-01 00:00
文章分类

全部博文(368)

文章存档

2017年(9)

2016年(19)

2015年(3)

2014年(6)

2013年(8)

2012年(78)

2011年(66)

2010年(135)

2009年(44)

分类: LINUX

2010-05-24 15:02:28

Oracle的启动过程详解

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

  shutdownnomountmountopen

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;

数据库已更改。

阅读(2114) | 评论(0) | 转发(4) |
给主人留下些什么吧!~~