Oracle - 解析启动的全过程

    之前对Oracle也没有什么了解,只是DBA给我们一个用户,然后我们连上去就OK,总是搞不明白。今天有空来看看Oracle的启动过程,还是有很多东西值得我们来仔细研究的:

    Oracle的启动过程总共分三步:

    1 启动Oracle的实例;

    2 挂载Oracle数据库;

    3 打开数据库;

启动Oracle实例到nomount状态:

  1. SQL> startup nomount 
  2. ORACLE 例程已经启动。 
  3.  
  4. Total System Global Area  293601280 bytes 
  5. Fixed Size                  1248600 bytes 
  6. Variable Size             109052584 bytes 
  7. Database Buffers          176160768 bytes 
  8. Redo Buffers                7139328 bytes 
  9. SQL>

在这个情况下,Oracle都做了哪些工作呢:只是去寻找一个叫做spfile,或者是pfile的文件,然后根据这个文件去创建实例,分配内存;那么你肯定是要问,那我如何才可以知道我载入的那个文件呢:

  1. SQL> show parameter spfile; 
  2.  
  3. NAME                                 TYPE 
  4. ------------------------------------ ---------------------- 
  5. VALUE 
  6. ------------------------------ 
  7. spfile                               string 
  8. D:\ORACLE\PRODUCT\10.2.0\DB_1\ 
  9. DATABASE\SPFILEGJSID.ORA 
  10. SQL> 

看到了吧,Oracle载入的就是在这个目录下的SPFILE<sid>.ora。那pfile和spfile之间有什么区别呢:pfile其实和spfile是一样的内容,只不过spfile在文件头的时候,有些我也不太明白的东西。

可以用以下的命令来实现pfile和spfile的转换:

  1. SQL> create pfile from spfile; 
  2.  
  3. 文件已创建。 
  4.  
  5. SQL> 

 

接下来呢,就到了挂载Oracle数据库的时候:

  1. SQL> alter database mount; 
  2.  
  3. 数据库已更改。 

那这个过程中,Oracle做了哪些工作,其实是根据刚刚spfile里面的内容来寻找一个叫做控制文件的东东control file,你能搞明白么,在Oracle中,共有三个一模一样的控制文件,就是为了防止有控制文件损坏。

这个时候你可以通过以下的命令来查看加载的控制文件:

  1. SQL> select * from v$controlfile; 
  2.  
  3. STATUS  NAME                                     IS_ BLOCK_SIZE FILE_SIZE_BLKS 
  4. ------- ---------------------------------------- --- ---------- -------------- 
  5.         D:\ORACLE\DATA\GJSID\CONTROL01.CTL       NO       16384            430 
  6.         D:\ORACLE\DATA\GJSID\CONTROL02.CTL       NO       16384            430 
  7.         D:\ORACLE\DATA\GJSID\CONTROL03.CTL       NO       16384            430 
  8.  
  9. SQL> show  parameter control_file; 
  10.  
  11. NAME                                 TYPE        VALUE 
  12. ------------------------------------ ----------- ------------------------------ 
  13. control_file_record_keep_time        integer     7 
  14. control_files                        string      D:\ORACLE\DATA\GJSID\CONTROL01 
  15.                                                  .CTL, D:\ORACLE\DATA\GJSID\CON 
  16.                                                  TROL02.CTL, D:\ORACLE\DATA\GJS 
  17.                                                  ID\CONTROL03.CTL 
  18. SQL> 

看到了吧,这个时候,控制文件就加载到系统视图里了,在没有mount之前,v$controlfile里是没有内容的。

打开数据库,

SQL> alter database open

这个时候,Oracle会去数据文件头和控制文件头里去检查数据库版本的一致性,和数据的连续性,检查SCN - system changing number。

至此,Oracle就算是启动完成了。如果其中有报错的话,可以去查看在alter_<sid>.log. 在其中有比较完整的信息。

全当自己学习Oracle的笔记吧。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章