oracle資料庫總結
⑴ 學習Oracle資料庫的心得體會
學習資料庫對我來說是一直都計劃學的 沒接觸的時候總是覺得它比較深奧或是不可接近的電腦知識 盡管自己對電腦非常感興趣 其實還是有些心理上的陌生感 學習電腦就和我們平時的其它科目學習一樣感覺它有永無止境的知識 在這從初接觸電腦時連個電腦的鍵盤都不敢動到現在連硬碟都也修理 其中的過程是多麼長啊 資料庫是我在高中時候聽過 到了大學漸漸了解了些 但就其原理性的內容還不知道 也就是根本就不清楚什麼是資料庫 只是知道一個所謂的中國字典里的名詞 我認識它是從我接觸網頁製作開始的 初用FrontPage做網頁也就是弄幾個框圖 沒什麼東西但還覺得不錯 後來聽朋友說這是最簡單最普通的東東 朋友告訴我真真的網頁起碼也用到資料庫這些東西了 有什麼前台的後台的 聽我的都暈頭轉向了 感覺自己是一個長不大的菜鳥了 之後我就去查找相關資料發現在資料庫有很多種 這才對它有所了解 大一 大二的時候想學可不知道怎麼學 從什麼地方學起 當時也沒注意選課本上有這類的課程 到了大三正式的課程也輕鬆些了 仔細觀摩了選修課發現有資料庫 有資料庫原理和Oracle資料庫 當時感覺Oracle資料庫既然是單獨一門課程一定會講的比較細 也能學到真正實用的內容 選上了這門課以後發現和我想的基本是一樣的 老師對學生也比較和藹可親 對我們要求也不是很緊 讓每個人都覺得輕輕鬆鬆就能把這門課程學完 沒有多麼緊張的作業 也沒有太苛森銷刻的要求 當老師在最後說這個課程結束了 回顧一下以前老師給我們講過的東西 真的有很多是我們應該去注意的 學習完Oracle資料庫後感覺Oracle可分兩大塊 一塊是開發 一塊是管理 開發主要是寫寫存儲過程 觸發器什麼的 還有就是用Oracle的Develop工具做form 有點類似於程序員 當然我可不是什麼程序員 有幾個程序員朋友他們是我的偶像 開發還需要有較強的邏輯思維和創造能力 自己沒有真正做過 但感覺應該會比較辛苦 是青春飯 管理則需要對Oracle資料庫的原理有深刻的認識 有全局操縱的能力和緊密的思維 責任較大 因為一個小的失誤就會down掉整個資料庫 相對前者來說 後者更看重經驗 這些東西都是從老師哪裡和朋友的討論中得到的心得 也希望其他朋友能多多向老師和朋友請教 如果是個人單獨靠自己來完成一個完美的資料庫我覺得比較困難 現在基本上都是團隊類型的 而且他們的效率高開發的周期也快 在煙台的 NET俱樂部認識幾個比較歷害的人 他襪或們的團隊精神我比較佩服 像我這樣一個大學生和他們說起來此好游太菜了 由於資料庫管理的責任重大 很少公司願意請一個剛剛接觸Oracle的人去管理資料庫 對於我們這些初出茅廬的新手來說 個人認為可以先選擇做開發 有一定經驗後轉型 去做資料庫的管理 當然 這個還是要看人個的實際情況來定 其實在煙台大學里學生中有做的好的也是有 只不過通常象這些兄弟們我覺得很少能發現在 因為我只知道一個 在煙雨樓台的BBS版塊里有個程序版塊 這位版主以前就是學校網路中心的牛人 他曾告訴我學習的方法就是 看書 思考 寫筆記 做實驗 再思考 再寫筆記 我覺得說的很對 對於新手來說就要這樣 不斷的去努力奮斗 最後一定能得到自己想要的成果 對於學習Oracle資料庫從網路上找資料我認為是比較好的 現在的網路又這么的發達應該去充分利用 我知道Oracle的官方網站 這里有Oracle的各種版本的資料庫 應用工具和權威的官方文檔 雖然我是個新手 但是常到哪些相關的資料庫論壇或是網站覺得每次的收獲都不小 網路對我來說可是個重要的東西 除了Oracle資料庫對於其它的一些電腦知識都從網路里學習了不少 我常用的一個搜索網站就是大家都熟悉的網路了() 以前沒接觸過它 現在認識了它才知道Oracle的體系很龐大 要學習它 首先要了解Oracle的框架 它有物理結構(由控制文件 數據文件 重做日誌文件 參數文件 歸檔文件 密碼文件組成) 邏輯結構(表空間 段 區 塊) 內存分配(SGA和PGA)算機的實際內存中得以分配 如果實際內存不夠再往虛擬內存中寫 後台進程(數據寫進程 日誌寫進程 系統監控 進程監控 檢查點進程 歸檔進程 服務進程 用戶進程) SCN(System Change Number) 這些東西感覺都比較專業 我對它們也就是個知道 想要真真去認識我還得努力去做 雖然懂得還不是很多 起碼會了基本的軟體操作 老師說我們用的都是客戶端 服務端看不到 也不知道服務端是什麼樣的 只知道客戶端就挺多東西的 沒有真正的去學習利用是很難掌握的 Oracle資料庫的學習使我對資料庫的有了新的進步 以後再看到也就不至於什麼也不懂 其實那麼多資料庫我覺得學好一門就行 只是他們的語言可能不大一樣 學好一門後就可去認識其它的 這樣應該有事半功倍的效果 就像我學習C語言 當時不能說是學習的棒 但不算差 所以我對以後的語言感覺都不是很困難 了解了VB C++還有網頁中用的Html語言 asp語言都能看懂 起碼可以對別人的東西進行了一下修改 因此 我感謝Oracle資料庫老師給了我有用的知識 以便我在以後學習或認識更多的內容能有新的方法和思維 也能更加有效和快速的去消化吸收新的東西 希望在今後中 Oracle能給我更多幫助 讓我在我熟悉的VB中運用上去 我以前的一個目標是要為學校的選課做一個選課助手來幫助大學 就用我的VB 不過因為種種原因一直沒有完成 也包括我對資料庫的不了解 因為學了Oracle以後知道第一項內容是通過sql查詢後得到的 如果去把它們聯系起來還不是真正明白 不過我相信我的目標能在學習Oracle後得到進展 lishixin/Article/program/Oracle/201311/18934
⑵ Oracle資料庫視圖管理經驗技巧
視圖 對於資料庫來說 是一個最基本的 也是最重要的功能之一 資料庫視圖設計的好壞 直接跟資料庫的性能相關 而且 在大型資料庫設計中 大家分工合作 基礎表的設計與報表視圖的設陸和計往往由不同的人負責 所以 視圖的設計管理跟基礎表的設計管理一樣 都有很大的學問 在這篇文章中 筆者將結合自己在視圖設計管理方面的工作經驗 談談在這方面的一些鮮為人知的技巧
技巧一 把基礎表與視圖脫離開來
一般來說 視圖都是在基礎表的上面建立起來的 也就是說 要先有基礎表 而後有視圖 但是 在大型資料庫的設計過程中 出於項目時間的考慮 往往基礎表與視圖的設計是同時進行的 如一些人負責基礎表的建立 另一些人則負責視圖的設計與建立等等 在這個過程中 往往基礎表不存在的時候 就需要建立一些視圖 以加快項目的進度
為了使得基礎表的創建和修改與視圖的創建於修改沒有必然的聯系 以便於員工之間工作的同步 提高工作效率 所以 在Oracle資料庫中提出了信宏一個 強制創建視圖 的概念 也就是說 正常情況下 如果基本表不存在 則創建視圖就會失敗 但是 我們可以在創建視圖的過程中 加入一個參數 只要創建視圖的語法沒有錯誤的話 即使基礎表不存在 仍然可以建立這張表格 這個有用的參數就是force選項 如我們建立視圖時 CREATE FORCE VIEW TEXT 只需要在關鍵字VIEW之前加入FORCE參數即可 如此的話 系統在編譯視圖的時候 就不會去考慮基礎表是否存在
不過這里要注意一點 若基礎表不存在的話 則編譯後該視圖的狀態為 無效 不能再這個視圖的基礎上執行一些操作 如查詢操作等等 當下次訪問這個視圖的時候 則資料庫會對這個視圖進行重新編譯 若此時基礎表存在了 則該基礎表就會變為有效;若基礎表不存在 則這視圖就會失效
Oracle資料庫之所以如此設置 主要是出於在資料庫設計過程中協同辦公的需要 有了這個功能之後 則在資料庫建立的過程中 只要把資料庫基礎表與視圖設計好之後 大家就可以分工合作 在資料庫中建立相關的對象 不然的話 要等基礎表建立好之後再建立視圖 如此就會明顯的影響資料庫建立的進度 所以 在資料庫建立的過程中 特別是中大型的資料庫系統 這是一個很實用的功能
技巧二 創建視圖的理想步驟
無論是簡單視圖 還是比較復雜的視圖 筆者覺得資料庫管理員在創建視圖的時候 最好能夠遵循一定的步驟 這一方面是因為視圖的更改相對來說 是一件比較麻煩的工作 所以 我們在建立視圖的時候 要確保視圖的准確性 另一方面 視圖是基礎表的一個體現形式 若不按步驟來做的話 有可能就不能夠達到我們預計的需求
當然這個步驟沒有官方的版本 完全是資料庫管理員根據實際的經驗總結出來的 這個步驟不僅對Oracle資料庫有效 對於其他資料庫來說 也是類似的道理
一般來說 視圖創建可以分為五步走
第一步 先考慮Select語句的編寫 我們知道 視圖其實就是一個Select語句的集合 所以 我們建立視圖的第一步 就是考慮這個Select語句該如何編寫 這個Select語句編寫的是否合理 執行效率的高低直接影響著這個視圖的性能 另外 在Select語句中 可能還會有格式的控制 內容的編排等等 如在Select語句中 可以把一些欄位合並成一個欄位;也可以把相關的內容進行倒置等等 這些功能都是Select語句完成的 所以可以這么說 Select語句的編寫是視圖建立的基礎
第二步 對這個Select語句進行測試 當我們編寫好Select語句之後 就需要在資料庫中執行這條語句 看其能否查詢到我們想要的值 在對Select語句進行測試的時候 需要注意一個問題 有時候Select查詢語句可以查到准確的數據 但是在以這條語滑悉冊句建立視圖的時候 可能就會通不過 如在一些表之間的連接查詢的時候 如果兩個表中有個欄位名相同 是可以的 因為他們除了欄位名字之外 還有表名一起來定義這個欄位 如A name與B name 這是不算重名的 但是 若在建立視圖的時候 這就會被認為是重復的列明 需要對其中的一個列名進行重定義 這一點在資料庫視圖建立的時候 要特別的注意
第三步 考慮查詢結果的准確性 通過查詢語句把我們想要的結果查詢出來後 我們就需要看看這個結果是否滿足我們的需要 在這個過程中 我們主要注意兩點 一是形式欄位是否齊全 在一些應用系統中 若資料庫的視圖要能夠被前台的應用程序調用的話 則必須包含一些形式欄位 如筆者以前在設計一個ERP系統的時候 若前台系統要調用資料庫中的視圖的時候 必須包含記錄更新時間 更新者 記錄創建時間 創建者等相關信息 若缺乏這些信息的話 則前台調用這張視圖的時候 就會出現錯誤 故在考慮查詢結果准確性的問題的時候 就要考慮到前台應用程序的需要 看看這些形式欄位是否齊全 二是實體內容的完整性 我們到底需要顯示表中的哪些欄位呢 這個我們在這里要確認清楚 若顯示內容太多的話 則會影響視圖的執行效率 而且也會降低視圖的安全性作用;但是 若欄位內容顯示不足的話 則以後要添加欄位的話 會比較麻煩 有一定的工作量 所以在這個檢驗的時候 需要根據視圖的實際功用 確定視圖需要顯示的內容
第四步 視圖的修飾 有時候 為了閱讀的方便 我們需要對查詢結果進行一些修飾 如現在有兩張表 一張是員工基本信息表 這表中有員工姓名 員工職位編號等等;另一張表是職位基本信息表 在這表中有職位編號 職位名稱 我們希望在視圖中能夠如下顯示 職位 員工名字 如資料庫工程師 Victor 也就是說 把兩個欄位合並起來 並且在中間加入一個冒號 這些格式性的內容都是在查詢的時候實現的 所以 我們確認查詢的結果沒有錯誤之後 接下來就要確認格式問題 若能夠在視圖中規范這些格式問題 則前台的程序設計就會相對來說比較簡單
lishixin/Article/program/Oracle/201311/17034
⑶ Oracle資料庫概述及特點
Oracle資料庫概述及特點
Oracle Database,又名Oracle RDBMS,或簡稱Oracle。是甲骨文公司的一款關系資料庫管理系統。到目前仍在資料庫市場上佔有主要份額。勞倫斯·埃里森和他的朋友,之前的同事Bob Miner和Ed Oates在1977年建立了軟體開發實驗室咨詢公司(SDL,Software Development Laboratories)。
ORACLE資料庫概論
ORACLE資料庫系統是美國ORACLE公司(甲骨文)提供的以分布式資料庫為核心的一組軟體產品,是目前最流行的客戶/伺服器(CLIENT/SERVER)或B/S體系結構的資料庫之一。比如SilverStream就是基於資料庫的`一種中間件。
ORACLE資料庫是目前世界上使用最為廣泛的資料庫管理系統,作為一個通用的資料庫系統,它具有完整的數據管理功能;作為一個關系資料庫,它是一個完備關系的產品;作為分布式資料庫它實現了分布式處理功能。但它的所有知識,只要在一種機型上學習了ORACLE知識,便能在各種類型的機器上使用它。
Oracle資料庫最新版本為Oracle Database 12c。Oracle資料庫12c 引入了一個新的多承租方架構,使用該架構可輕松部署和管理資料庫雲。此外,一些創新特性可最大限度地提高資源使用率和靈活性,如Oracle Multitenant可快速整合多個資料庫,而Automatic Data Optimization和Heat Map能以更高的密度壓縮數據和對數據分層。這些獨一無二的技術進步再加上在可用性、安全性和大數據支持方面的主要增強,使得Oracle資料庫12c 成為私有雲和公有雲部署的理想平台。
ORACLE資料庫特點
1、完整的數據管理功能:
1)數據的大量性
2)數據的保存的持久性
3)數據的共享性
4)數據的可靠性
2、完備關系的產品:
1)信息准則---關系型DBMS的所有信息都應在邏輯上用一種方法,即表中的值顯式地表示;
2)保證訪問的准則
3)視圖更新准則---只要形成視圖的表中的數據變化了,相應的視圖中的數據同時變化
4)數據物理性和邏輯性獨立准則
3、分布式處理功能:
ORACLE資料庫自第5版起就提供了分布式處理能力,到第7版就有比較完善的分布式資料庫功能了,一個ORACLE分布式資料庫由oraclerdbms、sql*Net、SQL*CONNECT和其他非ORACLE的關系型產品構成。
4、用ORACLE能輕松的實現數據倉庫的操作。
這是一個技術發展的趨勢,不在這里討論。
優點
■ 可用性強
■ 可擴展性強
■ 數據安全性強
■ 穩定性強
;⑷ oracle 資料庫 是什麼結構
Oracle資料庫的體系結構包括四個方面:資料庫的物理結構、邏輯結構、內存結構及進程。
1. 物理結構
物理資料庫結構是由構成資料庫肢掘的操作系統文件所決定,Oracle資料庫文件包括:
數據文件(Data File)
數據文件用來存儲資料庫中的全部數據,例如資料庫表中的數據和索引數據.通常以為*.dbf格式,例如:userCIMS.dbf 。
日誌文件(Redo Log File)
日誌文件用於記錄資料庫所做的全部變更(如增加、刪除、修改)、以便在系統發生故障時,用它對資料庫進行恢復。名字通常為Log*.dbf格式,如:Log1CIMS.dbf,Log2CIMS.dbf 。
控制文件(Control File)
每個Oracle資料庫都有相應的控制文件,它們是較小的二進制文件,用於記錄資料庫的物理結構,如:資料庫名、資料庫的數據文件和日誌文件的名字和位置等信息。用於打開、存取資料庫。名字通常為Ctrl*ctl 格式,如Ctrl1CIMS.ctl。
配置文件
配置文件記錄Oracle資料庫運行時的一些重要參數,如:數據塊的大小,內存結構的配置等。名字通常為init*.ora 格式,如:initCIMS.ora 。
2 邏輯結構
Oracle資料庫的邏輯結構描述了資料庫從邏輯上如何來存儲資料庫中的數據。邏輯結構包括表空間、段、區、數據塊和模式對象。資料庫的邏輯結構將支配一個資料庫如何使用系統的物理空間.模式對象及其之間的聯系則描述了關系資料庫之間的設計.
一個資料庫從邏輯上說是由一個或多個表空間所組成,表空間是資料庫中物理編組的數據倉庫,每一個表空間是由段(segment)組成,一個段是由一組區(extent)所組成,一個區是由一組連續的資料庫塊(database block)組成,而一個歷顫核資料庫塊對應硬碟上的一個或多個物理塊。一個表空間存放一個或多個資料庫的物理文件(即數據文件).一個資料庫中的數據被邏輯地存儲在表空間上。
表空間(tablespace)
Oracle資料庫被劃分為一個或多個稱為表空間的邏輯結構,它包括兩類表空間,System表空間和非System表空間,其中,System表空間是安裝資料庫時自動建立的,它包含資料庫的全部數據字典,存儲過程、包、函數和觸洞兆發器的定義以及系統回滾段。除此之外,還能包含用戶數據。。
一個表空間包含許多段,每個段有一些可以不連續的區組成,每個區由一組連續的數據塊組成,數據塊是資料庫進行操作的最小單位。
每個表空間對應一個或多個數據文件,每個數據文件只能屬於一個表空間。
資料庫塊(database block)
資料庫塊也稱邏輯塊或ORACLE塊,它對應磁碟上一個或多個物理塊,它的大小由初始化參數db-block-size(在文件init.ora中)決定,典型的大小是2k。Pckfree 和pctused 兩個參數用來優化數據塊空間的使用。
區(extent)
區是由一組連續的數據塊所組成的資料庫存儲空間分配的邏輯單位。
段(segment)
段是一個或多個不連續的區的集合,它包括一個表空間內特定邏輯結構的所有數據,段不能跨表空間存放。Oracle資料庫包括數據段、索引段、臨時段、回滾段等。
模式對象(schema object)
Oracle資料庫的模式對象包括表、視圖、序列、同意詞、索引、觸發器、存儲.過程等,關於它們將重點在後面章節介紹。
3.Oracle Server系統進程與內存結構
當在計算機伺服器上啟動Oracle資料庫後,稱伺服器上啟動了一個Oracle實例(Instance)。ORACLE 實例(Instance)是存取和控制資料庫的軟體機制,它包含系統全局區(SGA)和ORACLE進程兩部分。SGA是系統為實例分配的一組共享內存緩沖區,用於存放資料庫實例和控制信息,以實現對資料庫中數據的治理和操作。
進程是操作系統中一個極為重要的概念。一個進程執行一組操作,完成一個特定的任務.對ORACLE資料庫治理系統來說,進程由用戶進程、伺服器進程和後台進程所組成。
當用戶運行一個應用程序時,系統就為它建立一個用戶進程。伺服器進程處理與之相連的用戶進程的請求,它與用戶進程相通訊,為相連的用戶進程的ORACLE請求服務。
為了提高系統性能,更好地實現多用戶功能,ORACLE還在系統後台啟動一些後台進程,用於資料庫數據操作。
系統進程的後台進程主要包括:
SMON 系統監控進程:(system monitor)負責完成自動實例恢復和回收分類(sort)表空間。
PMON 進程監控進程:(PRocess monitor)實現用戶進程故障恢復、清理內存區和釋放該進程所需資源等。
DBWR 資料庫寫進程:資料庫緩沖區的治理進程。
在它的治理下,資料庫緩沖區中總保持有一定數量的自由緩沖塊,以確保用戶進程總能找到供其使用的自由緩沖塊。
LGWR 日誌文件寫進程:是日誌緩沖區的治理進程,負責把日誌緩沖區中的日誌項寫入磁碟中的日誌文件上。每個實例只有一個LGWR進程。
ARCH 歸檔進程:(archiver process)把已經填滿的在線日誌文件拷貝到一個指定的存儲設備上。僅當日誌文件組開關(switch)出現時,才進行ARCH操作。ARCH不是必須的,而只有當自動歸檔可使用或者當手工歸檔請求時才發出。
RECO 恢復進程:是在具有分布式選項時使用的一個進程,主要用於解決引用分布式事務時所出現的故障。它只能在答應分布式事務的系統中出現。
LCKn 封鎖進程:用於並行伺服器系統,主要完成實例之間的封鎖。
內存結構(SGA)
SGA是Oracle為一個實例分配的一組共享內存緩沖區,它包含該實例的數據和控制信息。SGA在實例啟動時被自動分配,當實例關閉時被收回。資料庫的所有數據操作都要通過SGA來進行。
SGA中內存根據存放信息的不同,可以分為如下幾個區域:Buffer Cache:存放資料庫中資料庫塊的拷貝。它是由一組緩沖塊所組成,這些緩沖塊為所有與該實例相鏈接的用戶進程所共享。緩沖塊的數目由初始化參數DB_BLOCK_BUFFERS確定,緩沖塊的大小由初始化參數DB_BLOCK_SIZE確定。大的數據塊可提高查詢速度。它由DBWR操作。
b. 日誌緩沖區Redo Log Buffer:存放數據操作的更改信息。它們以日誌項(redo entry)的形式存放在日誌緩沖區中。當需要進行資料庫恢復時,日誌項用於重構或回滾對資料庫所做的變更。日誌緩沖區的大小由初始化參數LOG_BUFFER確定。大的日誌緩沖區可減少日誌文件I/O的次數。後台進程LGWR將日誌緩沖區中的信息寫入磁碟的日誌文件中,可啟動ARCH後台進程進行日誌信息歸檔。
c. 共享池Shared Pool:包含用來處理的SQL語句信息。它包含共享SQL區和數據字典存儲區。共享SQL區包含執行特定的SQL語句所用的信息。數據字典區用於存放數據字典,它為所有用戶進程所共享。
Cursors:一些內存指針,執行待處理的SQL語句
其他信息區:除了上述幾個信息區外,還包括一些進程之間的通訊信息(如封鎖信息);在多線索伺服器配置下,還有一些程序全局區的信息,請求隊列和響應隊列等。 本文來自: http://hi..com/ipbun/blog/item/3f75d7230a7f5ee698250a7c.html