oracle nomount mount open直接的關係

liuhaimiao發表於2014-09-29

Oracle的啟動方式:

  startup nomount

  startup mount

  startup open (startup的預設選項)

  其他常用的引數:read only ,read write ,force,restrict

  這些引數可以一起使用,比如 startup 與 startup open read write 是一樣的效果。

  Oracle的啟動過程:啟動例項  -> 裝載資料庫 -> 開啟資料庫

  與之對應的讀取相應檔案的順序: 引數檔案 -> 控制檔案 -> 資料檔案

  我們驗證一下這些步驟的區別:

  startup nomount

  使用nomount方式啟動資料庫時,表示只啟動資料庫例項,不裝載資料庫,不開啟資料庫

  這時只讀取引數檔案,主要有兩部分工作:一是分配記憶體SGA區,二是啟動Oracle後臺程式

  如下我們修改oracle引數檔案的名稱,並以nomount 的方式啟動資料庫

  這裡需要將pfile,spfile 都進行修改,資料庫預設使用spfile啟動,在找不到spfile時用pfile啟動。

  [oracle@localhost dbs]$ pwd

  /oracle/orc10g/product/10.1.0/db_1/dbs

  [oracle@localhost dbs]$ mv initorcl.ora initorcl1.ora

  [oracle@localhost dbs]$ mv spfileorcl.ora spfileorcl1.ora

  SYS@orcl>shutdown abort

  ORACLE instance shut down.

  SYS@orcl>startup nomount

  ORA-01078: failure in processing system parameters

  LRM-00109: could not open parameter file '/oracle/orc10g/product/10.1.0/db_1/dbs/initorcl.ora'

  SYS@orcl>

  #保持引數檔案正確,修改控制檔名稱

  [oracle@localhost orcl]$ pwd

  /oracle/orc10g/oradata/orcl

  [oracle@localhost orcl]$ mv control01.ctl control01a.ctl

  [oracle@localhost orcl]$ mv control02.ctl control02a.ctl

  [oracle@localhost orcl]$ mv control03.ctl control03a.ctl

  .....

  SYS@orcl>startup nomount

  ORACLE instance started.

  Total System Global Area 167772160 bytes

  Fixed Size 778212 bytes

  Variable Size 61874204 bytes

  Database Buffers 104857600 bytes

  Redo Buffers 262144 bytes

  SYS@orcl>

  在nomount的方式下修改控制檔名稱,並沒有報錯。說明在nomount的方式下,並沒有讀取控制檔案。

  繼續以上的步驟,我們以mount的方式啟動:

  SYS@orcl>alter database mount;

  alter database mount

  *

  ERROR at line 1:

  ORA-00205: error in identifying controlfile, check alert log for more info

  裝載資料庫時,需要讀取控制檔案確定資料檔案的位置。

  繼續上面的例子,我們將控制檔案修改正確,使資料庫可以正確的找到控制檔案,

  我們修改資料檔案的名稱.

  [oracle@localhost orcl]$ mv tp_test.dbf tp_test1.dbf

  .....

  SYS@orcl>startup mount

  ORACLE instance started.

  Total System Global Area  167772160 bytes

  Fixed Size                   778212 bytes

  Variable Size              61874204 bytes

  Database Buffers          104857600 bytes

  Redo Buffers                 262144 bytes

  Database mounted.

  雖然我修改了資料檔案,但是在mount的方式下,並沒有報錯。說明在mount的方式下,啟動過程只讀取了引數檔案和控制檔案。

  下面我們開啟資料庫。

  SYS@orcl>alter database open

  2 ;

  alter database open

  *

  ERROR at line 1:

  ORA-01157: cannot identify/lock data file 5 - see DBWR trace file

  ORA-01110: data file 5: '/oracle/orc10g/oradata/orcl/tp_test.dbf'

  提示我們找不到tp_test.dbf這個檔案了。

  至此我們大概的瞭解了資料庫的啟動過程以及啟動過程中每一步驟的所做的工作和讀取的檔案。

  總結如下:oracle按照如下過程啟動資料庫

  nomount

  ------------

  啟動例項   |  mount

  (引數檔案)  |---------------

  | 裝載資料庫    |  open

  (控制檔案)     |-----------

  | 開啟資料庫

  (資料檔案)

  1.nomount方式下還沒有讀取控制檔案,該選項用於在資料庫的控制檔案全部損壞,需要重新建立資料庫控制檔案或建立一個新的資料庫時使用。

  2.mount 選項下並沒有開啟資料檔案,該選項可以用來修改資料庫的執行模式或進行資料庫恢復。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/223653/viewspace-1284474/,如需轉載,請註明出處,否則將追究法律責任。

相關文章