oracle的基礎知識對於後續的學習非常重要,這句話很多dba大牛們都這樣忠告初學者。經過自己半年多的oracle學習,確實感覺要想對oracle有個更深的學習,就必須把基礎打好,基礎概念搞熟悉點,這樣對於以後解決問題也很有幫助。
看了些dba面試題,發現也確實如此,很多問題都是很基礎的,但容易被初學者忽略、不重視的。我不由得感慨:從現在起,把基礎打牢才是王道啊。
在此把oracle的啟動過程重新的學習下,並記錄下來以作為自己學習的歷程見證。
每當乙個oracle資料庫啟動時,它都經歷一系列步驟來保證資料庫一致性。當乙個資料庫啟動時,它經歷三個模式:nomount、mount和open。
startup nomount選項:startup nomount選項啟動例項,但不安裝資料庫。當資料庫以這個模式啟動時,引數檔案被讀取;後台程序和記憶體結構被啟動;但它們不被附加或與資料庫的磁碟結構進行通訊。當例項處於這個狀態時,資料庫是不可使用的。
startup mount選項:startup mount選項執行startup nomount選項的所有工作,但另外附加資料庫結構並與這些結構進行互動。這時oracle從它用來查詢和附加到主要資料庫結構的控制檔案中獲得資訊。當處於這個模式時,可以執行一些管理型任務,比如恢復。
startup open選項:如果startup命令列上沒有指定任何模式,startup open選項就是預設的啟動模式。startup open選項執行startup nomount和startup mount選項的所有步驟。這個選項把資料庫變成對所有使用者都時可用的。
其他情況
startup force選項:如果在用正常方式啟動資料庫時遇到了困難,可以使用startup force選項。startup force選項首先異常關閉資料庫,然後重新啟動它。
startup restrict選項:startup restrict選項啟動資料庫並把它置入open模式,但只給擁有restricted session許可權的使用者賦予訪問權。alter system disable restricted session;(禁止限制會話許可權)
最後,可以在多個地方啟動資料庫,像命令列、sqlplus和em database control。
oracle啟動概括可以分為三個步驟:1)在記憶體中建立資料庫例項;2)載入資料庫檔案建立資料庫的連線; 3)開啟資料庫供使用者使用。
這三個步驟對應資料的不同狀態:
(1) nomount
(2) mount
(3) open
nomount(未載入): 在記憶體中建立資料庫例項,(sga建立)根據引數檔案啟動後台程序。oracle的引數檔案有spfile.ora, pfile.ora, init.ora, oracle按照檔案順序查詢引數檔案,查詢到的就忽略其他檔案,如果沒有這三個檔案,例項不能啟動。nomount狀態會使用告警日誌檔案。
例項一旦在nomount狀態,可以通過定位資料庫的控制檔案來進入mount(載入狀態)。資料庫的控制檔案在引數檔案中的control_files存在。如果控制檔案損壞,可以停留在nomount狀態修復這些損壞。
在open狀態,所有資料庫檔案(包括資料檔案,日誌檔案等)都定位和開啟。所有資料檔案和日誌檔案的位置都可以再控制檔案中定位。如果資料庫檔案損壞,可以停留在mount狀態修復這些損壞。
資料庫開啟時:資料檔案 聯機重做日誌檔案 控制檔案必須同步。所以如果防止不同步的情況,某個例項試圖開啟資料庫的時候,smon(系統監視程序)會檢查資料檔案和聯機重做日誌檔案的狀態,如果檢測到無序的關閉,smon程序會啟動例項恢復程序,使之同步。
資料的關閉和啟動順序相反,有序關閉期間,資料庫首先被關閉,後然解除安裝,最終例項被終止。所有會話被終止;活動的事物通過pmon程序回滾,已完成的事物同dbwn程序轉存到磁碟資料檔案,同時資料檔案和日誌檔案關閉。解除安裝階段,控制檔案關閉,然後通過收回分配的sga和後台程序,停止例項。
oracle用startup命令啟動資料庫。
oracle用shutdown名利關閉資料庫。
oracle啟動和關閉資料庫過程詳解
lsnrctl start
啟動的三個步驟,依次為1.建立並啟動例項、2.裝載資料庫、3.開啟資料庫。
可以通過命令startup來實現。
startup 命令格式
startup [ nomount | mount | open | force ] [ restrict ] [ pfile=filename ];
方法1 -- startup nomount ; alter database mount ;alter database open
方法2 -- startup mount ; alter database open
方法3 -- startup 或 startup open
在進入某種模式後,可以通過alter database來提公升到更高的模式。但是無法降低至前面的模式。
書上寫的真磨嘰,就是說你在step2這裡,你可以通過alter database到step3,但是你不能到step 1.
startup force
強制啟動,可用於各種模式。正常的起不來,就試試這個。
startup restrict
restrict模式會將資料庫置於open模式,此時只有restricted session許可權的使用者才能訪問資料庫。
用於維護動作。維護完成後,請禁用restricted session許可權,以便普通使用者的連線。如下:
alter system disable restricted session
1:建立並啟動例項 stratup nomount
此模式下執行維護動作:
a:執行乙個建立新資料庫的指令碼
b:重建控制檔案
2:裝載資料庫 startup mount
此模式下執行維護動作:
a:重新命名資料檔案
b:新增、刪除、重新命名重做日誌檔案
c:執行資料庫完全恢復操作
d:改變資料庫的歸檔模式。
3:開啟資料庫 stratup 等同於 startup open
此模式狀態下。任何具有create session許可權的使用者都可以連線到資料庫。進行常規資料庫操作。
關閉資料庫,通過shutdown命令
shutdown 命令格式
shutdown [ normal | transactional | immediate | abort ];
normal:
a:阻止任何使用者建立新的連線
b:等待連線的使用者主動斷開,正在連線的使用者可以繼續工作,甚至提交新的實務。
c:一旦所有的使用者斷開連線,才進行關閉,解除安裝資料庫,並終止例項。
影響:等很久。
transactional:
a:阻止任何使用者建立新的連線,同時阻止產生新的事務。
b:等待未提交的實務,提交完畢後,切斷使用者的連線。
c:一旦所有的使用者斷開連線,才進行關閉,解除安裝資料庫,並終止例項。
影響:最好的關閉資料庫的方式。
immediate:
a:阻止任何使用者建立新的連線,同時阻止產生新的事務。
b:任何未提交的實務都會被回滾。
c:oracle不再等待使用者主動斷開連線,而是直接關閉、解除安裝資料庫,並終止例項。
影響:有些實務不會提交成功。重啟之後不需要恢復動作。無傷害。
abort:
a:阻止任何使用者建立新的連線,同時阻止產生新的事務。
b:立即結束當前正在執行的sql語句。
c:任何未提交的實務都不會被回滾。
d:立即斷開所有使用者連線,關閉、解除安裝資料庫,並終止例項。
oracle學習總結 oracle的介紹
1 資料庫的三層結構 client 專用於訪問資料庫 dbms database management system db例項 多個 db例項有很多資料物件 例 表,包,檢視,序列,函式,觸發器,索引 2 在專案中如何選擇資料庫 1 標的 2 功能 3 併發性問題 4 安全 穩定 5 作業系統 un...
oracle 2 oracle的使用者
1 dbca oracle的dbca主要用來管理資料庫,包括建立資料庫 刪除資料庫等。注意 建立資料庫的時候,密碼不能全是數字,也不能以數字開頭 2 ofa oracle flexible architecture oracle優化靈活結構 作用 多oracle版本的管理 ora90 資料庫管理工具...
oracle部分 oracle的分頁查詢
oracle的分頁查詢 問題 當乙個表中的資料量特別大的時候,如果一次性全部顯示給使用者,則造成頁面過於龐大,體驗極差。解決 使用分頁查詢 使用 rownum關鍵字 oracle對外提供的自動給查詢結果編號的關鍵字,與每行的資料沒有關係。注意 rownum關鍵字只能做 的判斷,不能進行 的判斷 se...