Oracle數(shù)據(jù)庫的啟動(dòng)實(shí)現(xiàn)過程
1、Oracle 數(shù)據(jù)庫的啟動(dòng)分為三個(gè)階段
shutdown —> nomount —> mount —> open
2、啟動(dòng)數(shù)據(jù)庫到 nomount 階段
數(shù)據(jù)庫啟動(dòng)到 nomount 階段時(shí),將啟動(dòng)數(shù)據(jù)庫實(shí)例, 讀取參數(shù)文件,寫審計(jì)文件和警報(bào)日志,不加載數(shù)據(jù)庫。
因此,數(shù)據(jù)庫啟動(dòng)到 nomount 階段需要有正確的參數(shù)文件,需要正確的審計(jì)目錄(由參數(shù) audit_file_dest 指定)和跟蹤文件目錄(由 BACKGROUND_DUMP_DEST 參數(shù)指定)。
2.1 數(shù)據(jù)庫從關(guān)閉狀態(tài)啟動(dòng)到 nomount 狀態(tài)會(huì)執(zhí)行如下操作:
- (1)按如下順序讀取初始化參數(shù)文件:spfile.ora —> spfile.ora —> init.ora
- (2)分配SGA、啟動(dòng)后臺(tái)進(jìn)程;
- (3)啟動(dòng)警報(bào)日志文件(alert_.log)和跟蹤文件。
2.2 在 nomount 階段可以進(jìn)行如下操作
- (1)可以修改參數(shù);
- (2)可以查看內(nèi)存和后臺(tái)進(jìn)程的信息;
- (3)可以創(chuàng)建數(shù)據(jù)庫;
- (4)可以重建控制文件。
2.3 啟動(dòng)數(shù)據(jù)庫到 nomount 階段的方法如下
shutdown --> nomount
SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup nomount ORACLE instance started. Total System Global Area 9395237080 bytes Fixed Size 12685528 bytes Variable Size 1543503872 bytes Database Buffers 7818182656 bytes Redo Buffers 20865024 bytes SQL> select status from v$instance; STATUS ------------------------------------ STARTED
2.4 查看警告日志關(guān)于 startup nomount 的信息
SQL> SELECT * FROM v$diag_info a WHERE a.name = 'Diag Trace';
INST_ID NAME VALUE CON_ID
---------- ---------------------------------------------------------------- -------------------------------------------------------------------------------- ----------
1 Diag Trace /app/oracle/diag/rdbms/orcl/orcl/trace 0
[oracle@node1 ~]$ cd /app/oracle/diag/rdbms/orcl/orcl/trace
[oracle@node1 trace]$ cat alert_orcl.log由于 nomount 狀態(tài)下數(shù)據(jù)庫沒有加載,因此無法訪問數(shù)據(jù)字典。
nomount 狀態(tài)下參數(shù)文件已經(jīng)加載,可以查看參數(shù)。
SQL> select name from v$datafile; select name from v$datafile * ERROR at line 1: ORA-01507: database not mounted
數(shù)據(jù)庫參數(shù)已經(jīng)加載
SQL> show parameter open_cursor NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ open_cursors integer 300
3、啟動(dòng)數(shù)據(jù)庫到 mount 階段
數(shù)據(jù)庫啟動(dòng)到 mount 階段時(shí),將啟動(dòng)數(shù)據(jù)庫實(shí)例,加載控制文件的信息到內(nèi)存,加載數(shù)據(jù)庫并保持?jǐn)?shù)據(jù)庫關(guān)閉狀態(tài)。
數(shù)據(jù)庫啟動(dòng)到 mount4 階段需要有正確的控制文件。
3.1 數(shù)據(jù)庫從nomount狀態(tài)啟動(dòng)到mount狀態(tài)
會(huì)執(zhí)行如下操作:
- (1)將先前啟動(dòng)的實(shí)例與數(shù)據(jù)庫相關(guān)聯(lián);
- (2)根據(jù)參數(shù)文件中保存的控制文件的位置找到控制文件并打開;
- (3)從控制文件中讀取數(shù)據(jù)文件及聯(lián)機(jī)日志文件的位置與名稱。(此時(shí)并不檢查數(shù)據(jù)文件與聯(lián)機(jī)日志文件是否存在)。
3.2 數(shù)據(jù)庫啟動(dòng)到mount狀態(tài)
數(shù)據(jù)庫可以進(jìn)行如下操作:
- (1)可以備份、還原、恢復(fù);
- (2)可以查看所有的動(dòng)態(tài)視圖;
- (3)可以移動(dòng)數(shù)據(jù)庫文件;
- (4)可以進(jìn)行數(shù)據(jù)庫文件的offline;
- (5)可以打開和關(guān)閉歸檔模式;
- (6)可以打開和關(guān)閉閃回?cái)?shù)據(jù)庫的功能。
3.3 啟動(dòng)數(shù)據(jù)庫到mount階段的方法如下
3.3.1 數(shù)據(jù)庫處于關(guān)閉狀態(tài)(shutdown --> mount)
startup mount;
SQL> shutdown ORA-01507: database not mounted ORACLE instance shut down. SQL> sas SP2-0042: unknown command "sas" - rest of line ignored. SQL> select status from v$instance; select status from v$instance * ERROR at line 1: ORA-01034: ORACLE not available Process ID: 0 Session ID: 0 Serial number: 0 SQL> startup mount ORACLE instance started. Total System Global Area 8002730448 bytes Fixed Size 8915408 bytes Variable Size 1308622848 bytes Database Buffers 6677331968 bytes Redo Buffers 7860224 bytes Database mounted. SQL> select status from v$instance; STATUS ------------------------------------ MOUNTED
3.3.2 數(shù)據(jù)庫處于 nomount 狀態(tài)(nomount --> mount)
alter database mount
SQL> select status from v$instance; STATUS ------------------------------------ STARTED SQL> alter database mount; Database altered. SQL> select status from v$instance; STATUS ------------------------------------ MOUNTED
數(shù)據(jù)庫啟動(dòng)到 mount 階段可以訪問所有的動(dòng)態(tài)視圖:
SQL> select name from v$datafile; NAME /app/oracle/oradata/ORCL/system01.dbf /app/oracle/oradata/ORCL/test01.DBF /app/oracle/oradata/ORCL/sysaux01.dbf /app/oracle/oradata/ORCL/undotbs01.dbf /app/oracle/oradata/ORCL/wms01.DBF /app/oracle/oradata/ORCL/users01.dbf 6 rows selected.
4、啟動(dòng)數(shù)據(jù)庫到 open 階段
- 數(shù)據(jù)庫啟動(dòng)到 open 階段時(shí),將啟動(dòng)數(shù)據(jù)庫實(shí)例,加載聯(lián)機(jī)日志和數(shù)據(jù)文件并打開數(shù)據(jù)庫。
- 數(shù)據(jù)庫啟動(dòng)到 open 階段需要有正確的數(shù)據(jù)文件和聯(lián)機(jī)日志文件。
- 數(shù)據(jù)庫處于 open 狀態(tài)時(shí)可以對(duì)數(shù)據(jù)庫進(jìn)行所有正常的操作。
4.1 數(shù)據(jù)庫從 mount 狀態(tài)啟動(dòng)到 open 狀態(tài)會(huì)執(zhí)行如下操作:
- (1)打開數(shù)據(jù)文件;
- (2)打開聯(lián)機(jī)日志文件(打開數(shù)據(jù)庫時(shí)如果數(shù)據(jù)文件或聯(lián)機(jī)日志文件中的任何一個(gè)不存在,會(huì)出現(xiàn)錯(cuò)誤);
- (3)Oracle 數(shù)據(jù)庫驗(yàn)證數(shù)據(jù)文件和聯(lián)機(jī)日志文件是否能夠打開,并檢驗(yàn)數(shù)據(jù)庫的一致性。如果不一致,SMON 后臺(tái)進(jìn)程將啟動(dòng)實(shí)例恢復(fù)。
4.2 啟動(dòng)數(shù)據(jù)庫到 open 階段的方法如下:
4.2.1 數(shù)據(jù)庫處于關(guān)閉狀態(tài)(shutdown --> open)
startup
SQL> startup ORACLE instance started. Total System Global Area 8002730448 bytes Fixed Size 8915408 bytes Variable Size 1308622848 bytes Database Buffers 6677331968 bytes Redo Buffers 7860224 bytes Database mounted. Database opened. SQL> select status from v$instance; STATUS ------------------------------------ OPEN
4.2.2 數(shù)據(jù)庫處于 nomount 狀態(tài)(nomount --> mount)
alter database mount;
alter database open;
SQL> select status from v$instance; STATUS ------------------------------------ STARTED SQL> alter database mount; Database altered. SQL> alter database open; Database altered. SQL> select status from v$instance; STATUS ------------------------------------ OPEN
4.2.3 數(shù)據(jù)庫處于 mount 狀態(tài)(mount --> mount)
alter database open;
SQL> select status from v$instance; STATUS ------------------------------------ MOUNTED SQL> alter database open; Database altered. SQL> select status from v$instance; STATUS ------------------------------------ OPEN
5、數(shù)據(jù)庫的停止
5.1停庫與啟動(dòng)數(shù)據(jù)庫順序相反,也分三個(gè)步驟:
- (1)關(guān)閉數(shù)據(jù)庫(關(guān)閉數(shù)據(jù)文件);
- (2)卸載數(shù)據(jù)庫(關(guān)閉控制文件, DISMOUNT);
- (3)關(guān)閉 Oracle 實(shí)例(SHUTDOWN)。
5.2 關(guān)閉的方式有四種
5.2.1 正常停庫
數(shù)據(jù)庫正常的關(guān)閉方式,以正常停庫方式關(guān)閉數(shù)據(jù)庫,Oracle 將執(zhí)行如下操作:
- (1)阻止任何用戶建立新的連接;
- (2)等待查詢結(jié)束;
- (3)等待事務(wù)結(jié)束;
- (4)產(chǎn)生檢查點(diǎn)(數(shù)據(jù)同步);
- (5)關(guān)閉聯(lián)機(jī)日志和數(shù)據(jù)文件;
- (6)關(guān)閉控制文件;
- (7)關(guān)閉數(shù)據(jù)庫實(shí)例。
5.2.1.1 正常停庫語法
shutdown normalshutdown
5.2.1.2 正常停庫操作
SQL> shutdown Database closed. Database dismounted. ORACLE instance shut down. SQL> shutdown normal Database closed. Database dismounted. ORACLE instance shut down.
5.2.2 事務(wù)級(jí)停庫
以事務(wù)級(jí)停庫方式關(guān)閉數(shù)據(jù)庫,Oracle 將執(zhí)行如下操作:
- (1)阻止任何用戶建立新的連接;
- (2)查詢直接終止;(正常停庫等待查詢結(jié)束)
- (3)等待事務(wù)結(jié)束;
- (4)產(chǎn)生檢查點(diǎn)(數(shù)據(jù)同步);
- (5)關(guān)閉聯(lián)機(jī)日志和數(shù)據(jù)文件;
- (6)關(guān)閉控制文件;
- (7)關(guān)閉數(shù)據(jù)庫實(shí)例。
5.2.2.1 事務(wù)級(jí)停庫的語法如下:
shutdown transactional
5.2.2.1 事務(wù)級(jí)停庫的操作
SQL> shutdown transactional Database closed. Database dismounted. ORACLE instance shut down.
5.2.3 立即停庫
以立即停庫方式關(guān)閉數(shù)據(jù)庫,Oracle 將執(zhí)行如下操作:
- (1)阻止任何用戶建立新的連接;
- (2)查詢直接終止;
- (3)中斷當(dāng)前事務(wù),回滾未提交事務(wù);
- (4)產(chǎn)生檢查點(diǎn)(數(shù)據(jù)同步);
- (5)關(guān)閉聯(lián)機(jī)日志和數(shù)據(jù)文件;
- (6)關(guān)閉控制文件;
- (7)關(guān)閉數(shù)據(jù)庫實(shí)例。
5.2.3.1 立即停庫的語法如下:
生產(chǎn)庫最常用的停庫方式
shutdown immediate
5.2.3.2 立即停庫的操作
SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down.
5.2.4 強(qiáng)制停庫
當(dāng)數(shù)據(jù)庫出現(xiàn)故障時(shí),如果以上三種方式都無法正常關(guān)閉數(shù)據(jù)庫,則使用強(qiáng)制停庫。以這種方法停庫,Oracle 將執(zhí)行如下操作:
- (1)強(qiáng)制結(jié)束當(dāng)前正在執(zhí)行的SQL語句;
- (2)任何未遞交的事務(wù)都不被回退!
以強(qiáng)制停庫方式停止數(shù)據(jù)庫之后,數(shù)據(jù)庫可能存在臟數(shù)據(jù)。重啟數(shù)據(jù)庫實(shí)例時(shí)會(huì)自動(dòng)做實(shí)例恢復(fù)。
5.2.4.1 立即停庫的語法如下(生產(chǎn)庫不建議操作)
shutdown abort startup force = shutdown abort + startup startup force nomount = shutdown abort + startup nomount startup force mount = shutdown abort + startup mount
5.2.4.1 立即停庫的操作
SQL> startup force nomount ORACLE instance started. Total System Global Area 8002730448 bytes Fixed Size 8915408 bytes Variable Size 1308622848 bytes Database Buffers 6677331968 bytes Redo Buffers 7860224 bytes SQL> select status from v$instance; STATUS ------------------------------------ STARTED SQL> alter database mount; Database altered. SQL> alter database open; Database altered. SQL> shutdown abort ORACLE instance shut down.
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Oracle還原恢復(fù)啟動(dòng)時(shí)數(shù)據(jù)庫報(bào)ORA-00704、 ORA-00604,、ORA-00904的問題解決
- Oracle?數(shù)據(jù)庫啟動(dòng)過程的三階段、停庫四種模式詳解
- Oracle數(shù)據(jù)庫新裝之后出現(xiàn)的監(jiān)聽程序無法正常啟動(dòng)和運(yùn)行(Oracle-12514)問題
- oracle 數(shù)據(jù)庫啟動(dòng)階段分析
- oracle、mysql數(shù)據(jù)庫停止與啟動(dòng)的批處理文件
- oracle 11g配置 解決啟動(dòng)連接數(shù)據(jù)庫出現(xiàn)的ora錯(cuò)誤
相關(guān)文章
Oracle中dblink的實(shí)際應(yīng)用示例詳解
DBLink的作用是在局域網(wǎng)內(nèi),通過一臺(tái)服務(wù)器上面的數(shù)據(jù)庫訪問另外一臺(tái)服務(wù)器上面數(shù)據(jù)庫的功能。下面這篇文章主要給大家介紹了關(guān)于Oracle中dblink實(shí)際應(yīng)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面來一起看看吧。2017-09-09
通過PLSQL Developer創(chuàng)建Database link,DBMS_Job,Procedure,實(shí)現(xiàn)Oracle
這篇文章主要介紹了通過PLSQL Developer創(chuàng)建Database link,DBMS_Job,Procedure,實(shí)現(xiàn)Oracle跨庫傳輸數(shù)據(jù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
oracle中add_months()函數(shù)及用法總結(jié)
這篇文章主要介紹了oracle中add_months()函數(shù)及用法總結(jié),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08
Oracle12c的數(shù)據(jù)庫向11g導(dǎo)進(jìn)的方法
這篇文章主要介紹了 Oracle12c的數(shù)據(jù)庫向11g導(dǎo)進(jìn)的方法的相關(guān)資料,需要的朋友可以參考下2016-03-03

