融會(huì )貫通Oracle數據庫的25條基本知識: 1。
一個(gè)表空間只能屬于一個(gè)數據庫。 2。
每個(gè)數據庫最少有一個(gè)控制文件(建議3個(gè),分別放在不同的磁盤(pán)上)。 3。
每個(gè)數據庫最少有一個(gè)表空間(SYSTEM表空間)。 4。
建立SYSTEM表空間的目的是盡量將目的相同的表存放在一起,以提高使用效率,只應存放數據字典。 5。
每個(gè)數據庫最少有兩個(gè)聯(lián)機日志組,每組最少一個(gè)聯(lián)機日志文件。 6。
一個(gè)數據文件只能屬于一個(gè)表空間。 7。
一個(gè)數據文件一旦被加入到一個(gè)表空間中,就不能再從這個(gè)表空間中移走,也不能再加入到其他表空間中。 8。
建立新的表空間需要建立新的數據文件。 9。
數據文件被ORACLE格式化為ORACLE塊,Oracle9i以前版本中,ORACLE塊的大小是在第一次創(chuàng )建數據庫時(shí)設定的。 10。
并且以后不能改變,要想改變,只能重建數據庫。 11。
一個(gè)段segment只能屬于一個(gè)表空間,但可以屬于多個(gè)數據文件。 12。
一個(gè)區extent只能屬于一個(gè)數據文件,即區間(extent)不能跨越數據文件。 13。
PCTFREE和PCTUSED總和不能大于等于100。 14。
單獨一個(gè)事務(wù)不能跨越多個(gè)回滾段。 15。
索引表不含ROWID值。 16。
擁有不同大小的回滾段沒(méi)有任何益處。 17。
COMMIT后,數據不一定立即寫(xiě)盤(pán)(數據文件)。 18。
一個(gè)事務(wù)即使不被提交,也會(huì )被寫(xiě)入到重做日志中。 19。
Oracle 8。0。
4中,在初始安裝時(shí)建立的缺省數據庫,實(shí)例名為ORCL 。 20。
一個(gè)塊的最大長(cháng)度為16KB(有2K、4K、8K、16K)。 每個(gè)數據庫最大文件數(按塊大小) 2K塊 20000個(gè)文件 4K塊 40000個(gè)文件 8K塊或以上 65536個(gè)文件 21。
oracle server可以同時(shí)啟動(dòng)多個(gè)數據庫 。 22。
一套操作系統上可以安裝多個(gè)版本的ORACLE數據庫系統(UNIX可以,NT不可以)。 23。
一套ORACLE數據庫系統中可以有多個(gè)ORACLE數據庫及其相對應的實(shí)例 。 24。
每個(gè)Oracle數據庫擁有一個(gè)數據庫實(shí)例(INSTANCE)(OPS除外)。 25。
所以,一套操作系統上同時(shí)可以有多個(gè)Oracle數據庫實(shí)例啟動(dòng)。
1。
Oracle所包含的組件: 在 Oracle,數據庫是指整個(gè) Oracle RDBMS 環(huán)境,它包括以下組件: ·Oracle 數據庫進(jìn)程和緩沖(實(shí)例)。 ·SYSTEM 表空間包含一個(gè)集中系統類(lèi)目,它可以由一個(gè)或多個(gè)數據文件構成。
·其它由數據庫管理員 (DBA)(可選)定義的表空間,每個(gè)都由一個(gè)或多個(gè)數據文件構成。 ·兩個(gè)以上的聯(lián)機恢復日志。
·歸檔恢復日志(可選)。 ·其它文件(控制文件、Init。
ora、Config。ora 等)。
每個(gè) Oracle 數據庫都在一個(gè)中央系統類(lèi)目和數據字典上運行,它位于SYSTEM 表空間。 2。
關(guān)于“日志” Oracle數據庫使用幾種結構來(lái)保護數據:數據庫后備、日志、回滾段和控制文件。下面我們將大體上了解一下作為主要結構之一的“日志”: 每一個(gè)Oracle數據庫實(shí)例都提供日志,記錄數據庫中所作的全部修改。
每一個(gè)運行的Oracle數據庫實(shí)例相應地有一個(gè)在線(xiàn)日志,它與Oracle后臺進(jìn)程LGWR一起工作,立即記錄該實(shí)例所作的全部修改。 歸檔(離線(xiàn))日志是可選擇的,一個(gè)Oracle數據庫實(shí)例一旦在線(xiàn)日志填滿(mǎn)后,可形成在線(xiàn)日志歸檔文件。
歸檔的在線(xiàn)日志文件被唯一標識并合并成歸檔日志。
基本知識 1、表空間對于數據庫是唯一性的,且要求每個(gè)數據庫最少有一個(gè)表空間。
表空間可以分為系統表空間和非系統表空間、回滾段表空間;也可以分為用戶(hù)表空間和非用戶(hù)表空間,他們只是分類(lèi)方式不同,其實(shí)實(shí)質(zhì)差不多; 臨時(shí)表空間:臨時(shí)表空間并不包含真正的數據,恢復的方法是刪除臨時(shí)表空間并重建即可。 。
系統表空間:如果備份不可用,則只能采用重建數據庫的方法 。 表空間的大小可以根據需要和設備的情況進(jìn)行設置 表空間可以簡(jiǎn)單的理解為存放信息的空間,我們一般按如下順序進(jìn)行數據庫系統的創(chuàng )建:創(chuàng )建表空間---》修改表空間---》創(chuàng )建回滾段---》創(chuàng )建用戶(hù)和授權---》創(chuàng )建用戶(hù)表---》創(chuàng )建表索引,用戶(hù)只要按這個(gè)順序就可以建立自己的數據庫系統了,至于創(chuàng )建的數據庫是否有最佳的性能,我會(huì )在以后的文章中做專(zhuān)門(mén)的討論。
表空間的建立可以用圖形用戶(hù)界面的方式很方便的建立,相信大家都會(huì ),在這里我不進(jìn)行詳細的介紹。 2、控制文件在每個(gè)數據庫中必不可少,為了使數據庫的性能提高建議多建幾個(gè)控制文件,求要求放在不同的磁盤(pán)上。
ORACLE數據庫由數據文件,控制文件和聯(lián)機日志文件三種文件組成。 由于磁盤(pán)空間的變化,或者基于數據庫磁盤(pán)I/O性能的調整等,數據庫管理員可能會(huì )考慮移動(dòng)數據庫文件。
下面以UNIX平臺為例,分別討論三種數據庫文件的移動(dòng)方法 不能被忽視的數據庫日志文件 請注意日志文件在恢復數據庫時(shí)非常重要 日志可分為在線(xiàn)日志和離線(xiàn)日志,在線(xiàn)日志能記錄每一個(gè)Oracle數據庫中所作的全部修改。 一個(gè)在線(xiàn)日志由多個(gè)在線(xiàn)日志文件組成,每一個(gè)運行的Oracle數據庫實(shí)例相應地有一個(gè)在線(xiàn)日志,它與Oracle后臺進(jìn)程LGWR一起工作,立即記錄該實(shí)例所作的全部修改。
離線(xiàn)日志是可選擇的·當ORACLE填滿(mǎn)了在線(xiàn)日志文件后,就要進(jìn)行歸檔了。
我剛走過(guò)來(lái),說(shuō)一些. 首先,Oracle 不像一般的數據庫系統那么好學(xué)的,我認為如果要學(xué)好 SQL的話(huà)只需要一本書(shū)做學(xué)習資料就可以了.而Oracle 需要三本,為什么那,東西太多.Oracle 最開(kāi)始不能學(xué)習什么編程,首先要學(xué)會(huì )如何應用工具,也就是所提供各種支持和服務(wù).很多人就連安裝Oracle 都不會(huì ). 我說(shuō)三本書(shū)不是說(shuō)你一天看這么一本,一天看那么一本.那樣我估計你很廠(chǎng)時(shí)間什么也都學(xué)習不到的.三本書(shū):一本是學(xué)習基本使用工具的.一本可以學(xué)習Oracle如何部署目錄的配屬數據并懂得編程思想.最后需要一本PL/SQL的指導書(shū)籍來(lái)完成各種SQL編程. 個(gè)人認為不需要太過(guò)分的去學(xué)習那些東西,學(xué)習是一個(gè)重復的過(guò)程,理論和時(shí)間交替來(lái)完成,不要看書(shū)看不明白非要看明白,到機器上試一下就明白了;不要機器上反復弄不通的東西還弄,懂得像書(shū)上和旁邊的人求救.。
第一步:學(xué)習數據庫基礎知識,數據庫模型以及SQL語(yǔ)言基礎知識。
第二步:學(xué)習oracle安裝、啟動(dòng)、關(guān)閉等基礎知識。
第三步:學(xué)習oracle數據庫體系結構。
第四步:實(shí)際操作基礎語(yǔ)法指令。
第五步:學(xué)習存儲過(guò)程、function、sequence(序列)等高級知識。
第六步:學(xué)習oracle表空間、用戶(hù)管理、角色管理等。
第七步:學(xué)習Oracle的RMAN備份與恢復等。
參考書(shū)籍:《Oracle11gR2 DBA 操作指南》,非常全面講解Oracle數據庫系統管理的圖書(shū)。
一、數據庫備份所使用的結構 Oracle數據庫使用幾種結構來(lái)保護數據:數據庫后備、日志、回滾段和控制文件。
1.數據庫后備是由構成Oracle數據庫的物理文件的操作系統后備所組成。當介質(zhì)故障時(shí)進(jìn)行數據庫恢復,利用后備文件恢復毀壞的數據文件或控制文件。
2.每一個(gè)Oracle數據庫實(shí)例都提供日志,記錄數據庫中所作的全部修改。每一個(gè)運行的Oracle數據庫實(shí)例相應地有一個(gè)在線(xiàn)日志,它與Oracle后臺進(jìn)程LGWR一起工作,立即記錄該實(shí)例所作的全部修改。
歸檔(離線(xiàn))日志是可選擇的,一個(gè)Oracle數據庫實(shí)例一旦在線(xiàn)日志填滿(mǎn)后,可形成在線(xiàn)日志歸檔文件。 歸檔的在線(xiàn)日志文件被唯一標識并合并成歸檔日志。
3.回滾段用于存儲正在進(jìn)行的事務(wù)(為未提交的事務(wù))所修改值的老值,該信息在數據庫恢復過(guò)程中用于撤消任何非提交的修改。 4.控制文件,一般用于存儲數據庫的物理結構的狀態(tài)。
控制文件中某些狀態(tài)信息在實(shí)例恢復和介質(zhì)恢復期間用于引導Oracle。 二、在線(xiàn)日志 一個(gè)Oracle數據庫的每一實(shí)例有一個(gè)相關(guān)聯(lián)的在線(xiàn)日志。
一個(gè)在線(xiàn)日志由多個(gè)在線(xiàn)日志文件組成。在線(xiàn)日志文件(online redo log file)填入日志項(redo entry),日志項記錄的數據用于重構對數據庫所作的全部修改。
三、歸檔日志 Oracle要將填滿(mǎn)的在線(xiàn)日志文件組歸檔時(shí),則要建立歸檔日志(archived redo log)。其對數據庫備份和恢復有下列用處: 1.數據庫后備以及在線(xiàn)和歸檔日志文件,在操作系統和磁盤(pán)故障中可保證全部提交的事物可被恢復。
2.在數據庫打開(kāi)和正常系統使用下,如果歸檔日志是永久保存,在線(xiàn)后備可以進(jìn)行和使用。 數據庫可運行在兩種不同方式下:NOARCHIVELOG方式或ARCHIVELOG 方式。
數據庫在NOARCHIVELOG方式下使用時(shí),不能進(jìn)行在線(xiàn)日志的歸檔。 如果數據庫在A(yíng)RCHIVELOG方式下運行,可實(shí)施在線(xiàn)日志的歸檔。
四、Oracle的備份特性 Oracle備份包括邏輯備份和物理備份。 1.邏輯備份 數據庫的邏輯備份包含讀一個(gè)數據庫記錄集和將記錄集寫(xiě)入文件。
(1)輸出(Export)輸出可以是整個(gè)數據庫、指定用戶(hù)或指定表。 (2)輸入(Import)輸入將輸出建立的二進(jìn)制轉儲文件讀入并執行其命令。
2.物理備份 物理備份包含拷貝構成數據庫的文件而不管其邏輯內容。 Oracle支持兩種不同類(lèi)型的物理文件備份:脫機備份(offline backup)和聯(lián)機備份(online backup)。
(1) 脫機備份 脫機備份用在當數據庫已正常關(guān)閉,數據庫處于"offline"時(shí),要備份下列文件: 所有數據文件 所有控制文件 所有聯(lián)機日志 init。ora(可選的) (2) 聯(lián)機備份聯(lián)機備份可用來(lái)備份任何運作在A(yíng)RCHIVELOG方式下的數據庫。
在這種方式下,聯(lián)機日志被歸檔,在數據庫內部建立一個(gè)所有作業(yè)的完整記錄。 聯(lián)機備份過(guò)程具備強有力的功能。
第一,提供了完全的時(shí)間點(diǎn)(point-in-time)恢復。第二,在文件系統備份時(shí)允許數據庫保持打開(kāi)狀態(tài)。
備份方式特性比較 方式 類(lèi)型 恢復特性 Export 邏輯 可以將任何數據庫對象恢復到輸出時(shí)的狀態(tài) Offline Backups 物理 可把數據庫恢復到關(guān)閉的狀態(tài):若數據庫運行在A(yíng)RCHIVELOG方式,就可恢復到任何時(shí)間點(diǎn)的狀態(tài)。 Online Backups 物理 可把數據庫恢復到任何時(shí)間點(diǎn) 五、Oracle數據庫的角色管理 Oracle數據庫系統在利用角色管理數據庫安全性方面采取的基本措施有:通過(guò)驗證用戶(hù)名稱(chēng)和口令,防止非Oracle用戶(hù)注冊到Oracle數據庫,對數據庫進(jìn)行非法存取操作。
一 事務(wù)處理介紹 事務(wù)是這樣一種機制,它確保多個(gè)SQL語(yǔ)句被當作單個(gè)工作單 元來(lái)處理。
事務(wù)具有以下的作用: * 一致性:同時(shí)進(jìn)行的查詢(xún)和更新彼此不會(huì )發(fā)生沖突,其他 用戶(hù)不會(huì )看到發(fā)生了變化但尚未提交的數據。 * 可恢復性:一旦系統故障,數據庫會(huì )自動(dòng)地完全恢復未完 成的事務(wù)。
二 事務(wù)與一致性 事務(wù)是完整性的單位,一個(gè)事務(wù)的執行是把數據庫從一個(gè)一 致的狀態(tài)轉換成另一個(gè)一致的狀態(tài)。因此,如果事務(wù)孤立執行時(shí) 是正確的,但如果多個(gè)事務(wù)并發(fā)交錯地執行,就可能相互干擾, 造成數據庫狀態(tài)的不一致。
在多用戶(hù)環(huán)境中,數據庫必須避免同 時(shí)進(jìn)行的查詢(xún)和更新發(fā)生沖突。這一點(diǎn)是很重要的,如果正在被 處理的數據能夠在該處理正在運行時(shí)被另一用戶(hù)的修改所改變, 那么該處理結果是不明確的。
不加控制的并發(fā)存取會(huì )產(chǎn)生以下幾種錯誤: 1 丟失修改(lost updates) 當多個(gè)事務(wù)并發(fā)修改一個(gè)數據時(shí),不加控制會(huì )得出錯誤的結 果,一個(gè)修改會(huì )覆蓋掉另一個(gè)修改。 2 讀的不可重復性 當多個(gè)事務(wù)按某種時(shí)間順序存取若干數據時(shí),如果對并發(fā)存 取不加控制,也會(huì )產(chǎn)生錯誤。
3 臟讀(DIRDY DATA),讀的不一致性 4 光標帶來(lái)的當前值的混亂 事務(wù)在執行過(guò)程中它在某個(gè)表上的當前查找位置是由光標表 示的。光標指向當前正處理的記錄。
當處理完該條記錄后,則指 向下一條記錄。在多個(gè)事務(wù)并發(fā)執行時(shí),某一事務(wù)的修改可能產(chǎn) 生負作用,使與這些光標有關(guān)的事務(wù)出錯。
5 未釋放修改造成連鎖退出 一個(gè)事務(wù)在進(jìn)行修改操作的過(guò)程中可能會(huì )發(fā)生故障,這時(shí)需 要將已做的修改回退(Rollback)。如果在已進(jìn)行過(guò)或已發(fā)現錯 誤尚未復原之前允許其它事務(wù)讀已做過(guò)修改(臟讀),則會(huì )導致 連鎖退出。
6 一事務(wù)在對一表更新時(shí),另外的事務(wù)卻修改或刪除此表的 定義。 數據庫會(huì )為每個(gè)事務(wù)自動(dòng)地設置適當級別的鎖定。
對于前面 講述的問(wèn)題:臟讀、未釋放修改造成的連鎖退出、一事務(wù)在對一 表更新時(shí)另外的事務(wù)卻修改或刪除此表的定義,數據庫都會(huì )自動(dòng) 解決。而另外的三個(gè)問(wèn)題則需要在編程過(guò)程中人為地定義事務(wù)或 加鎖來(lái)解決。
三 事務(wù)和恢復 數據庫本身肩負著(zhù)管理事務(wù)的責任。事務(wù)是最小的邏輯工作 單元,在這個(gè)工作單元中,對數據庫的所有更新工作,要么必須 全部成功,要么必須全部失敗(回退)。
只要應用程序指定了某 段程序為一個(gè)事務(wù)并做了相應的處理(提交或回退),數據庫系 統會(huì )自動(dòng)維護事務(wù)本身的特性。 四 ORACLE數據庫的事務(wù)定義 ORACLE事務(wù)從COMMIT、ROLLBACK、連接到數據庫或開(kāi)始第一 條可執行的SQL語(yǔ)句時(shí)開(kāi)始,到一條COMMIT、ROLLBACK語(yǔ)句或退出 數據庫時(shí)結束。
如果在一個(gè)事務(wù)中包含DDL語(yǔ)句,則在DDL語(yǔ)句的 前后都會(huì )隱含地執行COMMIT語(yǔ)句,從而開(kāi)始或結束一個(gè)事務(wù)。 如果一個(gè)事務(wù)由于某些故障或者由于用戶(hù)改變主意而必須在 提交前取消它,則數據庫被恢復到這些語(yǔ)句和過(guò)程執行之前的狀 態(tài)。
利用ROLLBACK語(yǔ)句可以在COMMIT命令前隨時(shí)撤消或回退一個(gè) 事務(wù)。可以回退整個(gè)事務(wù),也可以會(huì )退部分事務(wù),但是不能回退 一個(gè)已經(jīng)被提交的事務(wù)。
回退部分事務(wù)的ROLLBACK命令為: ROLLBACK to savepoint 存儲點(diǎn)名 存儲點(diǎn)是用戶(hù)放入事務(wù)中的標記,用來(lái)表示一個(gè)可被回退的 位置。存儲點(diǎn)通過(guò)在事務(wù)中放入一個(gè)SAVEPOINT命令而被插入。
該 命令的語(yǔ)法是: SAVEPOINT 存儲點(diǎn)名 如果在ROLLBACK語(yǔ)句中沒(méi)有給出存儲點(diǎn)名,則整個(gè)事務(wù)被回 退。 五 SYBASE數據庫的事務(wù)定義 SYBASE通過(guò)使用BEGIN TRANsaction和COMMIT TRANsaction命令指 示SQL將任意數目的語(yǔ)句作為一個(gè)單元來(lái)處理。
ROLLBACK TRANsaction 命令則允許用戶(hù)恢復到事務(wù)的開(kāi)始,或恢復到事務(wù)內部已經(jīng)被用SAVE TRANsaction命令定義的存儲點(diǎn)上。 BEGIN TRANsaction和COMMIT TRANsaction能夠包含任意數目的SQL 語(yǔ)句和存儲過(guò)程,方法很簡(jiǎn)單: BEGIN TRANsaction [事務(wù)名稱(chēng)] COMMIT TRANsaction 如果一個(gè)事務(wù)由于某些故障或者由于用戶(hù)改變主意而必須在提交 前取消它,則數據庫被恢復到這些語(yǔ)句和過(guò)程執行之前的狀態(tài)。
利用ROLLBACK TRANsaction命令可以在COMMIT TRANsaction命令 前隨時(shí)回退一個(gè)事務(wù)。可以回退整個(gè)事務(wù),也可以回退部分事務(wù),但 是不能回退一個(gè)已經(jīng)被提交的事務(wù)。
ROLLBACK TRANsaction命令為: ROLLBACK TRANsaction [事務(wù)名|存儲點(diǎn)名] 存儲點(diǎn)名是用戶(hù)放入事務(wù)中的標記,用來(lái)表示一個(gè)可以被回退的 位置。存儲點(diǎn)名通過(guò)在事務(wù)中放入一個(gè)SAVE TRANsaction命令而被插 入。
該命令的句法是: SAVE TRANsaction 存儲點(diǎn)名 如果在ROLLBACK TRANsaction中沒(méi)有給出存儲點(diǎn)名或事務(wù)名,則 事務(wù)被回退到批處理中的第一個(gè)BEGIN TRANsaction語(yǔ)句處。
如何學(xué)習Oracle?
經(jīng)常有一些Oracle的初學(xué)者問(wèn)到這個(gè)問(wèn)題,這里算是一個(gè)統一答復。
1、如果有一定的數據庫基礎,知道SQL是怎么回事,即使寫(xiě)不出來(lái)簡(jiǎn)單的SQL,但可以看動(dòng)它們,你就可以跳到2。否則請先看一下數據庫基礎和SQL語(yǔ)言,不需要很深,更不需要去記憶那些復雜的SQL命令,這些可以留在以后邊應用邊學(xué)習、記憶。
2、要想學(xué)好ORACLE,首先要學(xué)習ORACLE的體系結構,現在你不需要深入理解它們,但要分清幾個(gè)關(guān)鍵的概念:
instance & database,
memory structure , process & those files ,such as data file, control file, init parameter file etc
以及database , tablespace , data file和tablespace, segmnet, extent & block它們之間的關(guān)系。
當然還要分清undo tablespace & redo log file等,
對于很多初學(xué)者來(lái)說(shuō),能夠對這些概念有個(gè)較為清晰的認識并不是一件容易的事,而這些并非Oracle的全部。
3、2是有關(guān)ORACLE的一些基本概念,下面要學(xué)習的是一些簡(jiǎn)單的的實(shí)際操作,就是如何去管理ORACLE數據庫,當然不是管理全部的ORACLE。在此過(guò)程中你將對SQL和ORACLE體系結構有個(gè)更深入的了解。
4、到了這一步你基本上算是初步掌握了ORACLE,下面將要根據你的方向來(lái)具體學(xué)習其它的ORACLE知識了。如果你是開(kāi)發(fā)人員,則需要更多地去學(xué)習PL/SQL以及DEVELOPER,而這將是一門(mén)新的課程。如果你是一名DBA,請繼續。
5、現在你可以根據自己的實(shí)際情況,進(jìn)行有選擇的學(xué)習,也就是說(shuō)下面的內容沒(méi)有特別順序要求。可以選擇深入學(xué)習ORACLE的管理、備份與恢復、性能調整、網(wǎng)絡(luò )等。當然在學(xué)習這些知識的過(guò)程中,如果有實(shí)際的工作更好,這樣你可以在實(shí)際中成長(cháng),學(xué)會(huì )TROUBLE SHOOTING。
6、當然在學(xué)習的過(guò)程中,你可以在網(wǎng)站或論壇中與他人進(jìn)行交流,可以看別人的一些經(jīng)驗文章,也可以自己寫(xiě)一些心得體會(huì )。
在此也希望你能早日好學(xué)好你的oracle!
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據《信息網(wǎng)絡(luò )傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個(gè)月內通知我們,我們會(huì )及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習?shū)B(niǎo). 頁(yè)面生成時(shí)間:3.096秒