概述mysql
只有具有sysdba和sysoper系統特權的用戶才能啓動和關閉數據庫。sql
在啓動數據庫以前應該啓動監聽程序,不然就不能利用命令方式來管理數據庫,包括啓動和關閉數據庫。數據庫
雖然數據庫正常運行,但若是沒有啓動監聽程序,客戶端就不能鏈接到數據庫。緩存
在oracle用戶下: 啓動監聽程序 lsnrctl start 關閉監聽程序lsnrctl stopsession
查詢監聽程序狀態lsnrctl statusoracle
startup.net
支持參數rest
STARTUP options | upgrade_options日誌
options爲:[FORCE] [RESTRICT] [PFILE=filename] [QUIET] [ MOUNT [dbname]對象
| [ OPEN [open_options] [dbname] ] | NOMOUNT ],
NOMOUNT、MOUNT、OPEN爲startup的三個階段,不能在命令中同時存在。其中,open_options爲:READ {ONLY
| WRITE [RECOVER]} | RECOVER。
upgrade_options爲:[PFILE=filename] {UPGRADE | DOWNGRADE} [QUIET]
簡單地說,就是:啓動實例-->加載數據庫-->打開數據庫.
------------------------------------------------------------------------------------------------------------------
1.建立並啓動與數據庫對應的實例。
在啓動實例時,將爲實例建立一系列後臺進程和服務進程,而且在內存中建立SGA區等內存結構。在實例啓動的過程當中只會使用到初始化參數文件,數據庫是否存在對實例的啓動沒有影響。若是初化參數設置有誤,實例將沒法啓動。
2.爲實例加載數據庫。
加載數據庫時實例將打開數據庫的控制文件,從控制文件中獲取數據庫名稱、數據文件的位置和名稱等有關數據庫物理結構的信息,爲打開數據庫作好準備。若是控制文件損壞,則實例將沒法加載數據庫。在加載數據庫階段,實例並不會打開數據庫的物理文件----數據文件和重作日誌文件。
3.將數據庫設置爲打開狀態。
打開數據庫時,實例將打開全部處於聯機狀態的數據文件和重作日誌文件。控制文件中的任何一個數據文件或重作日誌文件沒法正常打開,數據庫都將返回錯誤信息,這時須要進行數據庫恢復。
只有將數據庫設置爲打開狀態後,數據庫才處於正常狀態,這時普通用戶纔可以訪問數據庫。在不少狀況下,啓動數據庫時並非直接完成上述3個步驟,而是逐步完成的,而後執行必要的管理操做,最後才使數據庫進入正常運行狀態。因此,纔有了各類不一樣的啓動模式用於不一樣的數據庫維護操做。
由於Oracle數據庫啓動過程當中不一樣的階段能夠對數據庫進行不一樣的維護操做,對應咱們不一樣的需求,因此就需不一樣的模式啓動數據庫。
小白:在啓動實例以前,須要先啓動SQL*Plus,並以一個用戶身份鏈接到Oracle。
啓動模式詳解
1.NoMount 模式(啓動實例不加載數據庫)
命令:startup nomount
講解:這種啓動模式只會建立實例,並不加載數據庫,Oracle僅爲實例建立各類內存結構和服務進程,不會打開任何數據文件。在NoMount模式下,只能訪問那些與SGA區相關的數據字典視圖,包括V$PARAMETER、V$SGA、V$PROCESS 和 V$SESSION等,這些視圖中的信息都是從SGA區中獲取的,與數據庫無關。非安裝啓動,這種方式啓動下可執行:重建控制文件、重建數據庫、讀取init.ora文件,啓動instance,即啓動SGA和後臺進程,這種啓動只須要init.ora文件。
模式用途:
(1)建立新數據庫;
(2)重建控制文件。
2.Mount模式(加載數據庫但不打開數據庫)
命令:startup mount
講解:這種啓動模式將爲實例加載數據庫,但保持數據庫爲關閉狀態。由於加載數據庫時須要打開數據庫控制文件,但數據文件和重作日誌文件都都沒法進行讀寫,因此用戶還沒法對數據庫進行操做。 在Mount模式下,只能訪問那些與控制文件相關的數據字典視圖,包括V$THREAD、V$CONTROLFILE、V$DATABASE、V$DATAFILE 和 V$LOGFILE等,這些視圖都是從控制文件中獲取的。
模式用途:
(1)重命名數據文件;
(2)添加、刪除或重命名重作日誌文件;
(3)執行數據庫徹底恢復操做;
(4)改變數據庫的歸檔模式。
3.Open模式(正常打開數據庫)
命令:startup [open]
講解:正常按3個步驟啓動數據庫。
模式用途:平時不對數據庫作什麼維護,像只作應用開發,用這個模式就行了。
4.強制啓動模式
命令:startup force
用途&講解:在某些狀況下,使用前面的各類模式都沒法成功啓動數據庫時,能夠嘗試強制啓動模式。
使用Alter Database語句,還能夠在各啓動模式間切換。而且,還能夠對數據庫設置不一樣的狀態用於不一樣的操做,如受/非受限抽狀態、只讀。
使用Alter Database語句,在各啓動模式間切換。
(1)從NoMount模式切換到Mount模式(沒有從mount切換到nomount的):
命令:ALTER DATABASE MOUNT;
(2)當數據庫狀態爲關閉時,切換到Open模式
命令:ALTER DATABASE OPEN;
(3)在Open模式下,還能夠選擇將數據庫設置爲非受限狀態和受限狀態。
命令:
在啓動Open模式時,添加restrict關鍵字:startup restrict
設置或取消受限狀態:alter system enable\disable restricted session;
講解:
非受限狀態,就是咱們平時應用程序開發用到的狀態。
受限狀態,當打開的數據庫被設置爲受限狀態時,只有Create Session 和 Restricted Session系統權限 或者 具備SYSDBA 和 SYSPORE 系統權限的用戶才能鏈接到數據庫。但進入受限狀態後,系統中仍然可能會存在活動的普通用戶會話。
受限狀態用途:
(1)執行數據導入或導出操做;
(2)暫時拒絕普通用戶訪問數據庫;
(3)進行數據庫移植或升級操做。
(4) 只讀狀態
設置只讀命令:alter database open read only;
取消只讀命令:alter database open read write;
用途&講解:當一個正常打開的數據庫被設置爲只讀狀態時,用戶只能查詢數據,但不能以任何方式對數據庫對象進行修改。處於只讀狀態,可能保證數據文件和重作日誌文件中的內容不被修改,可是並不限制那些不會寫入數據文件與重作日誌文件的操做。
關閉數據庫與實例
與數據庫啓動一下,關閉數據庫與實例也分爲3步:關閉數據庫-->實例卸載數據庫--->終止實例。
(1)關閉數據庫,oracle將重作日誌高速緩存中的內容寫入重作日誌文件,而且將數據庫高速緩存中被改動過的數據寫入數據文件,而後再關閉全部的數據文件和重作日誌文件,這時數據庫的控制文件仍然處於打開狀態,可是因爲數據庫處於關閉狀態,因此用戶沒法訪問數據庫。
(2)卸載數據庫,關閉數據庫後,例程才能被卸載,控制文件再這個時候被關閉,但例程仍然存在 。
(3)終止例程,進程終止,分配給例程的內存sga區被回收。
1.Nomal(正常關閉方式)
命令:shutdown nomal
講解:正常方式關閉數據時,Oracle執行以下操做:
(1)阻止任何用戶創建新的鏈接。
(2)等待當前全部正在鏈接的用戶主動斷開鏈接(此方式下Oracle不會當即斷掉當前用戶的鏈接,這些用戶仍然操做相關的操做)
(3)一旦全部的用戶都斷開鏈接,則當即關閉、卸載數據庫,並終止實例。(因此,通常以正常方式關閉數據庫時,應該通知全部在線的用戶儘快斷開鏈接)
2.Immediate(當即關閉方式)
命令:shutdown immediate
講解:
(1)阻止任何用戶創建新的鏈接,同時阻止當前鏈接的用戶開始任何新的事務。
(2)Oracle不等待在線用戶主動斷開鏈接,強制終止用戶的當前事務,將任何未提交的事務回退。(若是存在太多未提交的事務,此方式將會耗費很長時間終止和回退事務)
(3)直接關閉、卸載數據庫,並終止實例。
3.Transactional(事務關閉方式)
命令:shutdown transactional
講解:這種方式介於正常關閉方式跟當即關閉方式之間,響應時間會比較快,處理也將比較得當。執行過程以下:
(1)阻止任何用戶創建新的鏈接,同時阻止當前鏈接的用戶開始任何新的事務。
(2)等待全部未提交的活動事務提交完畢,而後當即斷開用戶的鏈接。
(3)直接關閉、卸載數據庫,並終止實例。
4.Abort(終止關閉方式)
命令:shutdown abort
講解:這是比較粗暴的一種關閉方式,當前面3種方式都沒法關閉時,能夠嘗試使用終止方式來關閉數據庫。可是以這種方式關閉數據庫將會丟失一部份數據信息,當從新啓動實例並打開數據庫時,後臺進程SMON會執行實例恢復操做。通常狀況下,應當儘可能避免使用這種方式來關閉數據庫。執行過程以下:
(1)阻止任何用戶創建新的鏈接,同時阻止當前鏈接的用戶開始任何新的事務。
(2)當即終止當前正在執行的SQL語句。
(3)任何未提交的事務均不被退名。
(4)直接斷開全部用戶的鏈接,關閉、卸載數據庫,並終止實例。