Oracle數據庫的啟動與關閉


Oracle數據庫的啟動

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

階段一:啟動實例(Start An Instance)--nomount

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

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

1.啟動實例

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

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

③啟動后台進程(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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM