Oracle物理結構概述

數據文件

  每壹個Oracle數據庫都有壹個或多個物理的數據文件,數據庫信息(結構,數據)都保存在這些數據文件中,並且這些文件也只Oracle才能夠解釋與管理這些存儲.Oracle數據文件具有以下壹些特性:

  1.壹個數據文件僅僅關聯壹個數據庫,數據文件與數據庫之間對應關系是壹對壹關系,當然反過數據庫與數據文件是壹對多關系.

  2.數據文件可以自動擴展,當數據存儲需要更多存儲空間時候,就是存儲數據的數據隨存儲數據量增大,數據文件也可以自動增長,以滿足數據存儲需要.

  3.壹個或多個數據文件組成壹個邏輯單元,稱之為表空間.數據文件與表空間之間對應關系也是壹對壹關系,當然反過表空間與數據文件對應關系是壹對多的關系.

  存儲在數據文件中的是可以讀,當然這些數據是保存在Oracle數據庫實例中特定的內存區域中,如果壹個用戶要讀取數據庫中壹個表,這個用戶是不能直接讀取物理磁盤上的數據文件的,首先Oracle接受這個請求後,從造當位置(物理磁盤)上讀取相應的數據到內存中,這個時候用戶才可以看見數據.Oracle軟件是解釋Oracle存儲與管理數據的.如果這個時候我們修改數據,這些數據是不會立即寫到磁盤中的.要到特定時候才會寫磁盤.頻繁立即寫會引I/O性能下降.

  Oracle會在特定時候完成這數據寫工作.

  控制文件

  每壹個Oracle數據庫都有壹個控制文件.這個控制文件是Oracle能夠正常工作壹個前提.控制文件壹般有三個功能:壹記錄著物理磁盤上信息.二記錄Oracle數據庫本身邏輯結構.三:起到壹個全局監管作用.它壹般包括以下幾個部分:

  1.數據庫名稱

  2.數據文件與日誌文件在磁盤上信息.

  3.數據庫創建時間

  如果控制文件損失那麽Oracle數據庫就不能下常啟動,理論上只能啟動到MOUNT狀態.因為控制文件如此重要,Oracle允許同時可以鏡像多個控制文件.

  當數據庫啟動時候,控制文件中記錄數據文件與日誌文件必須要被Oracle進程所讀取.數據庫結構變化也隨時記錄在控制文件中.控制文件對Oracle恢復也啟著非常大作用.

  重做日誌文件

  每個Oracle數據庫都包含至少兩組到多組重做日誌文件,重做日誌文件主要是記錄數據變化壹過程.是記錄壹個延續變化過程.其實控制也記錄Oracle變化過程,但是兩都還是有很大區別的,控制記錄著數據庫體系結構的變化.壹個架構的變化,重做日誌文件當然也記錄這些變化,但它記錄更細數據庫中數據變化.這些信息主要是用於數據庫恢復操作.

  歸檔日誌文件

  因為Oracle數據庫只要發生操作重做日誌文件,就會記錄這些信息.但是當記錄壹定的時候,如果把這些信息給永久保存下來,那麽保存下來的”日誌”就稱之會歸檔日誌.當然如果數據庫要運行歸檔模式下,如果數據不運行歸檔模式下,那麽重做日誌就循環寫.

  參數文件

  因為Oracle數據有兩部分組成,數據庫與實例.數據庫壹個體系結構是由控制文件進行記錄的,但實例體體系結構呢?這些當然是由參數文件來記錄著,當然參數文件還記錄Oracle軟件本身操作的壹些特性,比如上面說到是否歸檔當.參數據文件記錄大部信息都抽像的,但是數據庫實例子啟動,這時並不訪問數據庫,因為必須要控制文件指示著物理體系結構.對於對於參數文件向物理結構過渡,有壹個非常重要的參數就是控制文件.這個參數記錄著控制文件在磁盤上位置.而控制文件又記錄數據文件與日誌文件和數據本身壹些信息.從這裏我們可以看出數據庫啟動是分三個階段進行的.

  1.第壹步讀取參數文件啟動實例.這時並沒有打開數據庫,到這種狀態也就是我們常說的NOMOUNT狀態.

  2.第二步根據參數文件記錄讀取控制文件.這時候只是讀取控制文件,還沒有對控制文件進行解釋.壹般恢復操作都是在這步完成.MOUNT

  3.第三步根據控制文件中的信息,讀取數據文件與控制文件.當然這時候在核對磁盤上記錄的信息和控制文件本身信息.如果不通過,會告之有問題,數據庫要進行恢復.(當然這步是必須的,我們想如果不管對不對都正常啟動,那麽感覺數據就會變得非常亂,用戶自己數據損失了或是丟失都不知道,這樣很可怕,這點可以看出解釋控制文件也就是檢查數據庫完整性),如果比對成功這時候數據庫就可以OPEN了.

  告警日誌

  對於數據,操作記錄 實例子與數據庫信息都有對應記錄信息了,但是如果我們操作上出現問題或是數據庫本身出現問題,這些問題又有誰來記錄呢?記錄這些信息壹般要告警日誌,如果沒有告警日誌會有什麽問題,就是運行著數據庫發行了什麽問題我們都不知道.我們可以做壹個比方.控制文件只在數據庫啟動之初審核壹下.如果通過我就讓妳啟動,但數據庫運行過程出現的問題,我不管,但這些有誰來管呢?當然就是告警日誌了.它應該時刻伴隨數據庫,記錄壹些影響數據健康問題.

  備份文件

  數據庫僅僅有歸檔日誌還是很安全,有的時候還需要備份,備份文件就是歸檔日誌後備部分,但是它是十分強大,它是Oracle管理工具生成文件,當然要也可以冷備.管理工具管理著數據庫安全與備份,它的體現就是擁有備份文件.只有Oracle特定工具才能解釋的格式.用於在災難情況(比如沒有了歸檔)下進行恢復.

oracle帶時分秒日期的比較

oracle 中不帶時分秒的字符串 to_date 轉換時間後與帶時分秒的date型字段做帶等值的比較 (>=,<=,=)時,由於字符串不帶時分秒,所以轉換後時分秒默認為00:00:00,oracle中比較date是以壹個時間點來比較的,精確到秒甚至毫秒微秒納秒,所以date字段的時分秒不為00:00:00的就與不帶時分秒字符串轉換後的date匹配不上。示例:   表中huhai_seq_value所有數據   MYDATE   ———–   2009-03-02   2009-03-02   2009-03-02   2009-03-03   2009-03-03   2009-03-03   –sql1:   select hsv.mydate from huhai_seq_value hsv   where hsv.mydate = to_date(‘2009-03-03’,’yyyy-mm-dd ‘);   sql1查詢結果:   MYDATE   ———–   2009-03-03   2009-03-03   –sql2:   select hsv.mydate from huhai_seq_value hsv   where to_char(hsv.mydate,’yyyy-mm-dd’) = ‘2009-03-03’;   sql查詢結果:   MYDATE   ———–   2009-03-03   2009-03-03   2009-03-03   結論:所以在做不帶時分秒的日期比較時最好用to_char函數轉換後與字符串比較。   用between比較兩個時間   例   select * from tbl_name where issue_time between to_date(‘2007-04-12 23:59:59′,’YYYY-MM-DD HH24:MI:SS’) and sysdate;

數據庫調優都涉及哪些方面?

面試時,經常被問及 “數據庫調優”的事情,心想這不是DBA的事嗎,但回答不好還是顯得不夠專業,查壹下資料,許多還真是程序員的事情,下面總結壹下,希望對大家有所幫助。

方面:

以影響程度排序

D1 業務邏輯 (影響最大)
D2 數據設計 (表結構設計,數據建模)
D3 應用程序設計 (SQL 語句的寫法)
D4 數據庫的邏輯結構 (索引,區間,段,表空間)
D5 數據庫操作 (參數和配置)
D6 訪問路徑
D7 內存分配情況
D8 I/O 和物理設計 (DBA 與業務溝通)(峰值多大,使用周期)
D9 資源的征用
D10 操作系統的調節

D1-D3 影響最大但比較難修改 (事先去做)
D4-D9 性能影響不是最大但經常去做的(DBA)
D10 手段不是很多

可以看出D1-D3都是和程序員相關的,這也正合我以前的想法——良好的程序,業務邏輯設計是最好的調優。其他的數據庫系統都為我們做的差不多了。