>select OPEN_MODE from v$database;
oracle not available ------- oracle沒啓動實例
oracle not mounted ------- oracle在nomount階段
oracle mounted ------- oracle在mount階段
oracle read write ------- oracle在open階段
1.sqlplus
啓動實例階段 nomount -------------- >startup [force] [pfile=xxx] nomount;
查參數文件錯誤 spfilesid.ora---spfile.ora---initsid.ora
查看使用的參數文件 >show parameter spfile 不爲空即以spfile啓動,否則是pfile
分配內存
記錄信息到alert文件和跟蹤文件
#tail -f /u01/oracle/admin/orcl/bdump/alert_orcl.log
啓動後臺進程
查看數據庫是否啓動 #ps -ef|grep ora_
【本階段設置參數】
[startup restrict 啓動到受限制會話,不允許別人連接的情況下對數據庫進行操作]
裝載數據庫階段 db mount ------------------ >alter database mount;
關聯數據庫和當前的實例
定位並打開參數文件中指定的控制文件
控制文件 >show parameter control_file;
讀取控制文件獲取數據文件和重做日誌文件的名稱和狀態,但不進行是否存在的檢查
【本階段可以操作數據庫物理操作:alter database,建庫刪庫,恢復數據庫;命名數據文件,啓用禁用日誌】
判斷數據文件和日誌文件是否存在,是否打開,檢查數據庫的一致性
打開聯機數據文件和日誌文件
【本階段對數據庫數據進行操作】
關閉數據庫階段 --------------- >shutdown [normal|transactional|immediate|abort]
將緩衝區告訴緩存中的更改及重做日誌緩衝區高速緩存中的條目寫入數據文件和聯機重做日誌文件
關閉數據文件和重做日誌文件
卸載數據庫
關閉控制文件
關閉實例
alter文件和跟蹤文件關閉
sga回收、後臺進程終止
【shutdown [normal|transactional|immediate|abort]】
a | i | t | n | |
允許建立新連接 | x | x | x | x |
等待到當前會話結束 | x | x | x | v |
等待當前事務處理結束 | x | x | v | v |
強制執行堅持點操作並關閉文件 | x | v | v | v |
abort不是一致性關閉
2.dbstart & dbshut
vi /etc/oratab 中數據庫最後的字段是Y,才能通過dbstart和dbshut控制
vi $ORACLE_HOME/bin/dbstart 中ORACLE_HOME_LISTNER的值爲$ORACLE_HOME時,啓動監聽
附:oracle開機啓動
head -n 6 /etc/init.d/network >/etc/init.d/oracle10g
vi /etc/init.d/oracle10g
ORACLE_HOME=/u01/oracle/10g
if [ !-f $ORACLE_HOME/bin/dbstart ]
then
echo "oracle cannot start"
exit
fi
if [ ! -f $ORACLE_HOME/bin/lsnrctl ]
then
echo "lsnrctl cannot start"
exit
fi
case "$1" in
'start')
echo "starting oracle 10g ...."
su - oracle -c "$ORACLE_HOME/bin/dbstart"
#su - oracle -c "$ORACLE_HOME/bin/emctl start dbconsole" ------>start oem
;;
'stop')
echo "stopping oracle 10g ...."
#su - oracle -c "$ORACLE_HOME/bin/emctl stop dbconsole" ------>stop oem
su - oracle -c "$ORACLE_HOME/bin/dbshut"
;;
*)
echo "usage $0: start|stop"
;;
esac
chmod a+x /etc/init.d/oracle10g
chkconfig oracle10g on