1、啓動和關閉數據庫實例
sqlplus /nolog
!echo $ORACLE_SID
connect / as sysdba
startup
shutdown immediate
2、靜態參數文件
在Oracle 9i 之前,通過靜態文本存放初始化參數,可通過文本編輯器編輯。
在參數文件中,可以爲相同的參數設置多個條目,對於這樣的重複參數,Oracle會選最後一個。
在Oracle 9i之前,如果在啓動實例時沒有指定參數文件,那麼Oracle會首先在默認的目錄下查找initSID.ora文件,Linux的默認目錄是$ORACLE_HOME/dbs,Windows的默認目錄是$ORACLE\database;如果沒找到,會查找init.ora是否存在;如果沒找到,就會報錯:在處理系統參數時失敗,不能打開參數文件。
在啓動時,也可以直接指定pfile,命令爲:
startup pfile = ’你的路徑/你的pfile文件名.ora‘
3、動態參數文件
從Oracle 9i開始,提供了動態參數,也就是修改了內存中的參數值後,不用重啓,就能使參數生效的機制,同時提供了動態參數文件spfile,這是一個二進制文件,不能用notepa或者vi編輯器編輯,如果希望對參數的修改持久化,那麼也必須修改spfile中的參數值。
另外,rman支持對spfile的自動備份,但不支持pfile的自動備份。
在參數文件中,每個參數都有一個前綴,* 表示對所有實例有效,“實例名稱”表示只對這個實例有效。
由於加了動態參數文件,系統在啓動時,查找參數文件的順序也有所變化:默認路徑下的spfileSID.ora --> spfile.ora - -> initSID.ora --> init.ora,startup pfile ='...'這樣的命令還是有用的,注意不支持這樣的語法:startup spfile = ’...' 。
通過pfile來創建spfile,如果下面的命令不指定路徑,那麼用的都是默認路徑:
create spfile =’/u01/app/oracle‘ from pfile = '/u01/app/oracle/initora10g.ora'
--禁用自動內存管理
alter system set sga_target = 0
--顯示參數的值
show parameter spfile
show parameter shared_pool_size
--另一種方法顯示參數的值
select value from v$parameter where name = 'spfile'
select value from v$spparameter where name = 'shared_pool_size'
--只在內存中修改參數的值,重啓後,還是spfile的值,而不是這裏的100M
alter system set shared_pool_size = 100M scope = memory
--只在spfile文件中修改參數的值,重啓後纔會生效
alter system set shared_pool_size = 100M scope = spfile
--同時修改spfile和內存中的值
alter system set shared_pool_size = 100M scope = both
下面顯示了,如果把spfile中的一個參數設置爲一個無效的值後,如何解決系統再次啓動時,無法啓動的問題:
alter system set sga_target = 1000000M scope = spfile
shutdown immediate
startup
報錯:out of memory
alter system set sga_target = 1000M
報錯:oracle 不可用
create pfile = '/u01/init.ora' from spfile
可以打開pfile文件,手動編輯,也可以直接在文件最後加一行:
!echo '*.sga_target = 1000M' >> /u01/init.ora
create spfile from pfile = '/u01/init.ora'
startup
4、實例的啓動和關閉的具體步驟
nomount階段:找到參數文件,並根據其中的值啓動實例,打開告警日誌 alterSID.log,路徑爲backgroud_dump_dest參數所指定的目錄。
mount階段:根據參數文件中的control_files參數的值,打開所有的控制文件,只要有一個打開失敗,就不能成功進入mount階段。打開文件後,取得所有的數據文件、聯機日誌文件的路徑,但不會驗證這些文件是否存在。
open階段:打開所有的數據文件、聯機日誌文件。
具體的啓動步驟可以是下面的一種:
startup nomount
alter database mount
alter database open
startup mount
alter database open
startup open
實例關閉時,有多個選項:
abort:相當於模擬服務器突然斷電的情況。
immediate:強制回滾當前正在運行的所有事務,把內存中的髒數據寫入數據文件,清空實例的所有內存。一般採用這個選項。
transactional:等待當前正在運行的事務主動提交或回滾,之後中斷所有連接,寫回數據文件,清空實例內存。
normal:等待當前正在運行的事務主動提交或回滾,同時還會等待所有用戶主動中斷連接。
需要注意的是startup force相當於 shutdown abort ,然後再 startup