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