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