概述
只有具備sysdba和sysoper系統特權的用戶才能啟動和關閉數據庫。
在啟動數據庫之前應該啟動監聽程序,否則就不能利用命令方式來管理數據庫,包括啟動和關閉數據庫。
雖然數據庫正常運行,但如果沒有啟動監聽程序,客戶端就不能連接到數據庫。
在oracle用戶下: 啟動監聽程序 lsnrctl start 關閉監聽程序lsnrctl stop
查詢監聽程序狀態lsnrctl status
startup
支持參數
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,創建並啟動例程,內存和服務進程得到分配,初始化和啟動,初始化參數文件。由參數文件中初始化參數決定如何啟動例程 startup nomount 2,裝載數據庫,打開數據庫控制文件,並從中獲取數據庫名稱,數據文件的位置和名稱等關於數據庫物理結構的信息,由參數文件找到控制文件,以便裝載數據庫startup mount 3,打開數據庫,例程將打開所有處於聯機狀態的數據文件和重作日志文件。如果載控制文件中列出的任何一個數據文件或重作日志文件無法打開,數據庫將返回錯誤信息,這時需要進行數據庫恢復。startup open
啟動數據庫過程中,文件的使用順序是:參數文件,控制文件,數據文件和重做日志文件。這些文件都正常時,數據庫才能正常啟動。
啟動參數解釋
startup nomount
以NOMOUNT方式打開實例
非安裝啟動,這種方式啟動下可執行:重建控制文件、重建數據庫、讀取init.ora文件,啟動instance,即啟動SGA和后台進程,這種啟動只需要init.ora文件。
startup mount dbname
以MOUNT方式打開實例,如果未指定dbname,則打開以參數文件中DB_NAME參數指定的數據庫。
安裝啟動,這種方式啟動下可執行:
數據庫日志歸檔、
數據庫介質恢復、
使數據文件聯機或脫機,
重新定位數據文件、重做日志文件。
執行“nomount”,然后打開控制文件,確認數據文件和聯機日志文件的位置,但此時不對數據文件和日志文件進行校驗檢查。
startup open dbname
先執行“nomount”,
然后執行“mount”,
再打開包括Redo log文件在內的所有數據庫文件,
這種方式下可訪問數據庫中的數據。
startup
以默認參數文件(SPFILE)開啟實例,裝載默認的數據庫,並打開數據庫。
等於以下三個命令
startup nomount
alter database mount
alter database open
STARTUP會分三步開啟數據庫,分別為:
1、Start and instance(NOMOUNT);
2、Mount the database(MOUNT);
3、Open the database(OPEN)
startup restrict
約束方式啟動
以此模式打開的數據庫只有擁有RESTRICTED SESSION系統權限的用戶才能連接。 非特權用戶訪問時,會出現以下提示:
ERROR:
ORA-01035: ORACLE 只允許具有 RESTRICTED SESSION 權限的用戶使用
打開后,可以使用ALTER SYSTEM命令將該狀態設為disable,以關閉restricted將數據庫正常打開。
startup pfile=參數文件名
帶初始化參數文件的啟動方式 先讀取參數文件,再按參數文件中的設置啟動數據庫
使用指定的文件中的參數打開實例。在未使用PFILE的情況下,startup以默認參數文件中的參數打開。
startup force
當不能關閉數據庫時,可以用startup force來完成數據庫的關閉,先關閉數據庫,再執行正常啟動數據庫命令。
強制打開數據庫,在open之前會先執行shutdown,相當於shutdown abort; startup
open。在當前實例正在運行的情況下,如果不使用FORCE的話,startup時會報錯。FORCE可以在調試環境或非生產環境中使用,需慎用。
shutdown
支持參數
shutdown的四個參數:normal、transactional、immediate、abort
缺省不帶任何參數時表示是normal方式
關閉過程
關閉數據庫步驟:
1,關閉數據庫,oracle將重做日志高速緩存中的內容寫入重做日志文件,並且將數據庫高速緩存中被改動過的數據寫入數據文件,然后再關閉所有的數據文件和重做日志文件,這時數據庫的控制文件仍然處於打開狀態,但是由於數據庫處於關閉狀態,所以用戶無法訪問數據庫 2,卸載數據庫,關閉數據庫后,例程才能被卸載,控制文件再這個時候被關閉,但例程仍然存在 3,終止例程,進程終止,分配給例程的內存sga區被回收。
停止參數解釋
shutdown normal
正常方式關閉數據庫。
不允許新的連接、等待會話結束、等待事務結束、做一個檢查點並關閉數據文件。啟動時不需要實例恢復。
shutdown immediate
立即方式關閉數據庫。 在SVRMGRL中執行shutdown immediate,數據庫並不立即關閉, 而是在Oracle執行某些清除工作后才關閉(終止會話、釋放會話資源),
當使用shutdown不能關閉數據庫時,shutdown immediate可以完成數據庫關閉的操作。
不允許新的連接、不等待會話結束、不等待事務結束、做一個檢查點並關閉數據文件。沒有結束的事務是自動ROLLBACK的。啟動時不需要實例恢復。
shutdown abort
直接關閉數據庫,正在訪問數據庫的會話會被突然終止, 如果數據庫中有大量操作正在執行,這時執行shutdown abort后,重新啟動數據庫需要很長時間。
shutdown transactional
不允許新的連接、不等待會話結束、等待事務結束、做一個檢查點並關閉數據文件。啟動時不需要實例恢復。
使用shutdown的時候 normal和immediate可能都因為連接沒有釋放而造成數據庫無法重啟的現象。
SQL>shutdown abort; --這個方法是不等待會話結束就直接關閉掉數據庫,一般情況下事不推薦使用的。實在關不掉的話,一般也沒有什么問題。跟直接KILL進程差不多。
SQL>startup --shutdown abort以后在啟動數據庫。
SQL>startup force; --這個方法是直接關閉掉數據庫然后再重啟數據庫,這個方式也可以達到關閉並重啟的目的。