Oracle數據庫的啓動與關閉

Oracle數據庫的啓動

Oracle數據庫的啓動要經歷3個階段。sql

階段一:啓動實例(Start An Instance)--nomount數據庫

階段二:裝載數據庫(Mount The Database)--mount安全

階段三:打開數據庫(Open The Database)--opensession

1.啓動實例

①讀取參數文件(Initialization Parameter File, PFILE或者Server Parameter Files, SPFILE)oracle

②Oracle根據參數文件中的參數,分配系統全局區(System Global Area,SGA)rest

③啓動後臺進程(DBWR:數據庫寫入進程,LGWR:日誌寫入進程,CKPT:檢查點進程,SMON:系統監控進程,PMON:進程監控進程,ARCH歸檔進程等)。日誌

這些內存和後臺進程組合起來組成實例(Oracle Instance)。進程

參數文件(PFILE或者SPFILE)還指定了控制文件(Control File)的位置。事務

2.裝載數據庫

打開控制文件(Control File),從控制文件中得到數據文件(Data File)和聯機日誌文件(Redo Log File)的名字和位置。這時候,Oracle已經把實例和數據庫關聯起來。對於普通用戶,數據庫仍是不可訪問。內存

3.打開數據庫

Oracle打開數據文件(Data Files)和聯機日誌文件(Redo Log File)。這時候,數據庫可使用。普通能夠登陸數據庫,對數據庫進行操做。

4.分步啓動Oracle

STARTUP NOMOUNT;

ALTER DATABASE MOUNT;

ALTER DATABASE OPEN;

5.直接啓動Oracle

STARTUP (至關於上面三個過程依次進行)

6.使用特定初始化參數文件(Initialization Parameter File, FILE)啓動數據庫

STARTUP PFILE='C: \oracle\product\10.2.0\db_1\dbs\PFILEORCL.ORA';

7.把數據庫啓動到限制模式(RESTRICT)

在限制模式下,只有CREATE SESSION和RESTRICTED SESSION權限的用戶能夠訪問數據庫。

①若是數據庫是關閉的

STARTUP RESTRICT;

②若是數據庫是開啓的

ALTER SYSTEM enable restricted session;

8.以只讀模式(Read Only)打開數據庫

①若是數據庫是關閉的

STARTUP open read only;

②若是數據庫是開啓的

ALTER DATABASE OPEN read only;

在直讀模式下,數據文件和日誌文件都禁止寫操做。整個數據庫是隻讀的。

可是容許數據庫恢復(Database Recovery)及其餘不會產生回滾的操做。

9.把數據庫啓動到回覆模式(RECOVER)

STARTUP OPEN RECOVER;

10.重啓數據庫(RESET)

STARTUP FORCE

這個命令先調用SHUTDOWN ABORT來關閉數據庫,而後在用STARTUP命令,按照正常方式啓動數據庫。STARTUP把數據庫的關閉和啓動兩個過程合二爲一。

11.如何知道數據庫處於何種狀態

①若是數據庫處於NOMOUNT狀態

1) SELECT open_mode FROM v$database;

SELECT open_mode FROM v$database

*

第1行出現錯誤:

ORA-01507: ??????

2)SELECT status FROM v$instance;

STATUS

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

STARTED

②若是數據庫處於MOUNT狀態

1)SELECT open_mode FROM v$database;

OPEN_MODE

----------

MOUNTED

2)SELECT status FROM v$instance;

OPEN_MODE

----------

MOUNTED

③若是數據庫處於OPEN狀態

1)SELECT open_mode FROM v$database;

OPEN_MODE

----------

READ WRITE

2)SELECT status FROM v$instance;

STATUS

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

OPEN

數據庫的關閉

Oracle的關閉也要經歷三個階段:

階段1:關閉數據庫(Close The Database)

階段2:卸載數據庫(Unmount The Database)

階段3:關閉實例(Shut Down The Instance)

1.關閉數據庫

Oracle首先把SGA中的數據寫到數據文件和聯機日誌文件中。而後,Oracle關閉全部的數據文件和聯機日誌文件。這時候,數據庫已經不能夠訪問。

這個階段完成後,控制文件仍然處在打開狀態。

2.UNMOUNT數據庫

數據庫完成以後,Oracle將分離數據庫和實例之間的聯繫,這個階段叫作「卸載數據庫」或者叫「UNMOUNT數據庫」。

這個階段僅僅是卸載數據庫,實例仍然存活在內存中。

這個階段完成後,控制文件被關閉。

3.關閉實例

這是關閉數據庫的最後一個階段,這個階段Oracle將從內存中移出SGA和終止正在進行的後臺進程(Background Processes)。至此,數據庫關閉已經完成。

4. SHUTDOWN NORMAL

使用NORMAL方式關閉數據庫時,

(1)容許新的用戶注登陸數據庫。

(2)要等全部的用戶自動退出Oracle之後,Oracle才關閉數據庫。因此,若是數據庫存在一個用戶,那麼,Oracle就一直等待,直到這個用戶退出,Oracle才關閉數據庫。

(3)SHUTDOWN NORMAL是最慢的一種數據庫關閉方式。

5.SHUTDOWN IMMEDIATE

使用IMMEDIATE方式關閉數據庫時,

(1)新的用戶不能登陸數據庫;

(2)未提交的事務將會被回滾(ROLLED BACK)

(3)Oracle不會等待全部的用戶(鏈接)退出數據庫。

特色:

(1) 以IMMEDIATE方式關閉數據庫不須要實例恢復(Instance Recovery);

(2) SHUTDOWN IMMEDIATE是最安全的關閉方式;

注:推薦使用這種方式關閉數據庫。

6. SHUTDOWN TRANSACTIONAL

以TRANSACTIONAL方式關閉數據庫時,會發生下面的事情:

(1)不容許新的用戶登陸數據庫;

(2)不容許創建新的事務(New Transactions);

(3)全部的事務(transactions)完成之後才關閉數據庫;

(4)一個用戶(會話)執行完手裏的事務(transactions)後將被強行斷開與數據庫的聯機。

特色:

(1)這種關閉方式不會使客戶端的數據丟失。

(2)這種關閉方式不須要實例恢復(Instance Recovery);

7. SHUTDOWN ABORT

以ABORT方式關閉數據庫時,

(1)不容許啓動新的鏈接(New Connections)和新的事務(New Transactions);

(2)客戶端的SQL語句(Client SQL Statements)馬上終止;

(3)未提交的事務不被回滾(Rollback);

(4)Oracle馬上終止全部鏈接(會話)。

特色:

(1)只有數據庫出現問題時候,才使用這種方式關閉數據庫;

(2)這是一種最不安全的關閉方式,數據庫重啓時須要實例恢復(Oracle後臺進程);

(3)以ABORT方式關閉數據庫使最快的一種方式。

通常操做

Windows:

(1)cmd->

lsnrctl start ->

net start oracleservice%ORACLE_SID% ->

set ORACLE_SID=%ORACLE_SID%

sqlplus / as sysdba

startup

shutdown immediate

(2)cmd-> lsnrctl start

再到在 「服務」 中啓動 oracleservice%ORACLE_SID% 服務

set ORACLE_SID=%ORACLE_SID%

sqlplus / as sysdba

startup

shutdown immediate

Linux:

su - oracle

lsnrctl start

export ORACLE_SID=$ORACLE_SID

sqlplus / as sysdba

startup

shutdown immediate

相關文章
相關標籤/搜索