Oracle數(shù)據(jù)庫基礎(chǔ)知識(華為內(nèi)部培訓資料)_第1頁
Oracle數(shù)據(jù)庫基礎(chǔ)知識(華為內(nèi)部培訓資料)_第2頁
Oracle數(shù)據(jù)庫基礎(chǔ)知識(華為內(nèi)部培訓資料)_第3頁
Oracle數(shù)據(jù)庫基礎(chǔ)知識(華為內(nèi)部培訓資料)_第4頁
Oracle數(shù)據(jù)庫基礎(chǔ)知識(華為內(nèi)部培訓資料)_第5頁
已閱讀5頁,還剩74頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、課程課程 il001100 oracle數(shù)據(jù)庫基礎(chǔ)知識數(shù)據(jù)庫基礎(chǔ)知識 issue1.0 目錄 課程說明.1 課程介紹.1 課程目標.1 相關(guān)資料.1 第 1 章 oracle 數(shù)據(jù)庫概述.2 1.1 產(chǎn)品概述.2 1.1.1 產(chǎn)品簡介 .2 1.1.2 基本概念 .3 1.2 oracle 系統(tǒng)結(jié)構(gòu).4 1.2.2 oracle 物理結(jié)構(gòu) .4 1.2.3 系統(tǒng)全局區(qū).6 1.2.4 進程.8 1.3 存儲管理.9 1.3.2 邏輯結(jié)構(gòu) .10 1.3.3 表(table).14 1.3.4 視圖(view).18 1.3.5 索引(index).18 1.3.6 同義詞(synonym).1

2、9 1.3.7 序列(sequence).19 1.3.8 數(shù)據(jù)庫鏈(database link).20 第 2 章 管理 oracle 數(shù)據(jù)庫.21 2.1 基本概念.21 2.1.1 數(shù)據(jù)字典 .21 2.1.2 事務管理 .23 2.1.3 數(shù)據(jù)庫管理員(dba) .24 2.1.4 oracle 的四種狀態(tài).25 2.2 sql*plus 方式的 oracle 數(shù)據(jù)庫啟動和關(guān)閉 .26 2.2.1 啟動數(shù)據(jù)庫.26 2.2.2 關(guān)閉數(shù)據(jù)庫.26 2.3 svrmgrl 方式的 oracle 數(shù)據(jù)庫啟動和關(guān)閉 .28 2.3.1 啟動數(shù)據(jù)庫.28 2.3.2 關(guān)閉數(shù)據(jù)庫.30 2.4 應

3、用開發(fā)工具(sql * plus).31 2.4.1 sql .32 2.4.2 pl/sql.33 2.4.3 數(shù)據(jù)庫管理工具.36 2.5 oracle 用戶及權(quán)限管理 .36 2.5.1 oracle 的用戶管理.37 2.5.2 oracle 的權(quán)限管理.38 2.6 oracle 數(shù)據(jù)庫的備份與恢復.39 2.6.1 export 轉(zhuǎn)入程序.40 2.6.2 import 轉(zhuǎn)入程序.42 2.6.3 增量卸出/裝入.44 第 3 章 oracle 數(shù)據(jù)庫的網(wǎng)絡(luò)應用.46 3.1 sql*net 產(chǎn)品介紹.46 3.2 配置客戶機/服務器結(jié)構(gòu) .47 3.2.1 配置 listener

4、.ora.47 3.2.2 配置 tnsnames.ora 文件.48 第 4 章 常用任務示例.51 4.1 如何恢復被誤刪的數(shù)據(jù)文件.51 4.2 如何殺掉吊死 session.51 4.3 如何修改字符集.51 4.4 如何追加表空間.51 4.5 如何加大表的 maxextents 值.52 4.6 如何查詢無效對象.52 4.7 怎樣分析 sql 語句是否用到索引.52 4.8 怎樣判斷是否存在回滾段競爭.53 4.9 怎樣手工跟蹤函數(shù)/存儲過程執(zhí)行情況.54 4.10 多種業(yè)務使用同一數(shù)據(jù)庫如何分配回滾段.54 4.11 怎樣倒出、倒入文本數(shù)據(jù).54 4.11.1 倒出.54 4.

5、11.2 倒入.55 4.12 如何更新當前數(shù)據(jù)庫日志備份方式為 archive .56 4.13 unix 環(huán)境下如何實現(xiàn)自動備份 .56 4.13.1 設(shè)置運行環(huán)境.56 4.13.2 倒出數(shù)據(jù) .56 4.13.3 異地備份 .57 4.13.4 啟動備份進程.58 4.14 怎樣分析 oracle 故障.59 小結(jié).61 附錄 a oracle 數(shù)據(jù)字典與視圖.62 附錄 b 動態(tài)性能表.68 附錄 c sql 語言運算符與函數(shù).70 課程說明課程說明 課程介紹 本課程對應的產(chǎn)品版本為:oracle 8.1.7。 課程目標 完成本課程的學習后,您應該能夠: 掌握 oracle 數(shù)據(jù)庫系

6、統(tǒng)結(jié)構(gòu)中物理結(jié)構(gòu)、系統(tǒng)全局區(qū)和進程的概念 掌握 oracle 數(shù)據(jù)庫的存儲管理知識 掌握管理 oracle 數(shù)據(jù)庫的方法 了解 oracle 數(shù)據(jù)庫的網(wǎng)絡(luò)應用 相關(guān)資料 oracle 公司發(fā)布的相關(guān)資料。 第第 1 章章 oracle 數(shù)據(jù)庫概述數(shù)據(jù)庫概述 1.1 產(chǎn)品概述 1.1.1 產(chǎn)品簡介 數(shù)據(jù)庫技術(shù)產(chǎn)生于 60 年代末 70 年代初,到現(xiàn)在比較知名的大型數(shù)據(jù)庫系統(tǒng) 有 oracle、sybase、informix、db2(ibm 公司的)、 ingress、rdb、sql server 等。 oracle 公司于 1979 年,首先推出基于 sql 標準的關(guān)系數(shù)據(jù)庫產(chǎn)品,可 以在 10

7、0 多種硬件平臺上運行(包括微機、工作站、小型機、中型機和大型 機),支持多種操作系統(tǒng)。1986 年,oracle 推出具有分布式結(jié)構(gòu)的版本 5,可將數(shù)據(jù)和應用駐留在多臺計算機上,而相互間的通信是透明的。1988 年,推出版本 6(v6.0)可帶事務處理選項,提高了事務處理的速度。1992 年推出了版本 7,可帶過程數(shù)據(jù)庫選項、分布式數(shù)據(jù)庫選項和并行服務器選 項,稱為 oracle7 數(shù)據(jù)庫管理系統(tǒng),它釋放出了開放的關(guān)系型系統(tǒng)的真正 潛力。目前,新版本為 oracle9i,通用版本為 oracle8i。版本 oracle 8i 是在企業(yè)內(nèi)和因特網(wǎng)上開發(fā)、布署和管理應用高移動性和可伸縮性的數(shù)據(jù)

8、庫。oracle 8i 最主要的新特性是在數(shù)據(jù)庫中包括 j a v a 和因特網(wǎng)能力。 oracle 8i 還包括能夠管理和訪問多媒體(視頻、音頻、圖像、文本、空間) 的 oracle intermedia 。oracle 8i 還包括 oracle we b d b ,這個 we b 開發(fā)環(huán)境使開發(fā)者能建立使用標準的 we b 瀏覽器和 oracle 8i 數(shù)據(jù)庫的動 態(tài)的、數(shù)據(jù)驅(qū)動的 we b 網(wǎng)站。oracle8i 是一種通用叫法,它包括許多更 細版本,如 oracle8.1.5、oracle8.1.6、oracle8.1.7,華為公司 tellin u-nica 產(chǎn)品使用版本 orac

9、le8.1.7 序列。 說明: “i”表示 oracle 數(shù)據(jù)庫與 internet 的結(jié)合。 oracle 用多達 5 個號碼來完全識別一個版本,如“8.1.7.2.3”,命名方法 如下: 序號值含義 第一位8版本號(version),是主要的標識符,表示軟件的主要版本,包 含顯著的新功能,例如:版本 8(也標識為版本 8.0)。 第二位1新特征版本號(new features release number),該位表示新 特征版本級,例如:版本 8.1。 第三位7維護版本號(maintenance release number),該位表示一個維 護版本級。也可能包含一些新特征,例如:版本 8

10、.0.4、8.1.7。 第四位2通用補丁級號(generic patch set number),該位表示一個通 用補丁級。補丁級可以跨越所有操作系統(tǒng)和硬件平臺使用,例如: 補丁級版本 8.1.7.2 第五位3專用平臺補丁級(platform specific patch set number),該位 表示一個只能應用到特定的操作系統(tǒng)和硬件平臺的補丁級,例如: 補丁級 8.1.7.2.3。 可以用如下的 sql 語句得到 oracle 版本信息: sql select * from product_component_version; 1.1.2 基本概念 要了解 oracle 數(shù)據(jù)庫,需要先

11、了解以下基本概念: 數(shù)據(jù)庫:是一個數(shù)據(jù)集合,我們大多數(shù)情況下講的數(shù)據(jù)庫概念不僅是指 物理數(shù)據(jù),還指內(nèi)存、進程對象的組合。oracle 數(shù)據(jù)庫都將數(shù)據(jù)存儲 在文件中,在其內(nèi)部,數(shù)據(jù)庫結(jié)構(gòu)提供了數(shù)據(jù)對文件的邏輯映射,允許 不同類型的數(shù)據(jù)分開存放。這些邏輯劃分稱為表空間。關(guān)于表空間的概 念將在下文中介紹。 表空間(tablespace):是數(shù)據(jù)庫的邏輯劃分,每個數(shù)據(jù)庫至少有一個 表空間(system 表空間)。 數(shù)據(jù)文件(datafile):每個表空間由同一磁盤上的一個或多個文件組 成,這些文件叫數(shù)據(jù)文件。建立新表空間需要建立新的數(shù)據(jù)文件。 實例(instance):也稱為服務器(server),是

12、存取和控制數(shù)據(jù)庫的 軟件機制,它由系統(tǒng)全局區(qū) sga 和后臺進程組成。 oracle 數(shù)據(jù)庫啟動時,實際是啟動 oracle 實例,(安裝并打開數(shù)據(jù)庫) 。一個數(shù)據(jù)庫可以被多個實例訪問(這是 oracle 的并行服務器選項)。 決定實例的大小及組成的參數(shù)存儲在 init.ora 文件中,實例啟動時需要讀這 個文件,并且在運行時可以由數(shù)據(jù)庫管理員修改,但要在下次啟動實例時才 會起作用。 說明: 實例名字可以由環(huán)境變量 oracle_sid 來定義。 實例的 init.ora 文件名通常包含該實例的名字,格式為 initsid.ora:如一個實 例的名字(sid)為 ora817,則 init.o

13、ra 文件名通常為 initora817.ora。 1.2 oracle 系統(tǒng)結(jié)構(gòu) 任何硬件平臺或操作系統(tǒng)下的 oracle 體系結(jié)構(gòu)是相同的,包括如下三個 方面: (1) 物理結(jié)構(gòu):數(shù)據(jù)文件,日志文件,控制文件,參數(shù)文件。 (2) 系統(tǒng)全局區(qū)(sga):共享池,數(shù)據(jù)緩沖區(qū),日志緩沖區(qū),字典緩沖區(qū)。 (3) 進程:用戶進程,服務器進程,后臺進程。 具體結(jié)構(gòu)如圖 1-1 所示。 oracle8 rdbms 圖 1-1 oracle 數(shù)據(jù)庫體系結(jié)構(gòu) 1.2.2 oracle 物理結(jié)構(gòu) 一個 oracle 數(shù)據(jù)庫是數(shù)據(jù)的集合,被處理成一個單位。一個 oracle 數(shù) 據(jù)庫有一個物理結(jié)構(gòu)和一個邏輯結(jié)構(gòu)

14、。數(shù)據(jù)庫物理結(jié)構(gòu)是由構(gòu)成數(shù)據(jù)庫的操 作系統(tǒng)文件所決定。每一個 oracle 數(shù)據(jù)庫是由四種類型的文件組成:數(shù) 據(jù)文件、日志文件、控制文件和參數(shù)文件。數(shù)據(jù)庫的文件為數(shù)據(jù)庫信息提供 真正的物理存儲。 oracle 數(shù)據(jù)庫的物理結(jié)構(gòu)由四類文件組成 1. 數(shù)據(jù)文件 數(shù)據(jù)文件是物理存儲 oracle 數(shù)據(jù)庫數(shù)據(jù)的文件,每一個 oracle 數(shù)據(jù)庫 有一個或多個物理的數(shù)據(jù)文件(data file)。一個數(shù)據(jù)庫的所有數(shù)據(jù)文件包含了 全部數(shù)據(jù)庫數(shù)據(jù)。邏輯數(shù)據(jù)庫結(jié)構(gòu)(如表、索引)的數(shù)據(jù)物理地存儲在數(shù)據(jù) 庫的數(shù)據(jù)文件中。數(shù)據(jù)文件有下列特征: 每一個數(shù)據(jù)文件只與一個數(shù)據(jù)庫聯(lián)系 一個表空間可包含一個或多個數(shù)據(jù)文件 圖

15、 1-2 給出數(shù)據(jù)庫、表空間及數(shù)據(jù)文件之間關(guān)系。 圖 1-2 數(shù)據(jù)庫、表空間及數(shù)據(jù)文件之間關(guān)系 2. 日志文件 每一個數(shù)據(jù)庫有兩個或多個日志文件(redo log file)的組,每一個日志文件組 用于收集數(shù)據(jù)庫日志。日志的主要功能是記錄對數(shù)據(jù)所做的修改,所以對數(shù) 據(jù)庫做的全部修改是記錄在日志中。日志文件的主要作用是保護數(shù)據(jù)庫以防 止故障。為了防止日志文件本身的故障,oracle 允許鏡象日志(mirrored redo log),可以在不同磁盤上維護兩個或多個日志副本。日志文件中的信息 僅在系統(tǒng)故障或介質(zhì)故障時用來恢復數(shù)據(jù)庫。 3. 控制文件 每一個 oracle 數(shù)據(jù)庫有一個控制文件(co

16、ntrol file),它記錄數(shù)據(jù)庫的物理 結(jié)構(gòu),包含下列信息類型: 數(shù)據(jù)庫名。 數(shù)據(jù)庫數(shù)據(jù)文件和日志文件的名字和位置。 數(shù)據(jù)庫建立日期。 為了安全起見,允許控制文件被鏡象。每一個 oracle 數(shù)據(jù)庫的實例啟動 時,它的控制文件用于標識數(shù)據(jù)庫和日志文件,當著手數(shù)據(jù)庫操作時它們被 打開。當數(shù)據(jù)庫的物理組成更改時,oracle 自動更改該數(shù)據(jù)庫的控制文件。 數(shù)據(jù)恢復時,也要使用控制文件。 4. 參數(shù)文件 是一個文本文件,可直接使用文本編輯器對其內(nèi)容進行修改,該文件只在建 立數(shù)據(jù)庫和啟動實例時被訪問,修改該文件后必須重啟實例才生效。 系統(tǒng)初始參數(shù)文件:init .ora 生成的參數(shù)文件為:init

17、sid.ora 參數(shù)文件作用如下: 設(shè)置 sga 的大小。 設(shè)置數(shù)據(jù)庫的全部缺省值。 設(shè)置數(shù)據(jù)庫的范圍。 在數(shù)據(jù)庫建立時定義數(shù)據(jù)庫的物理屬性。 指定控制文件名和路徑。 通過調(diào)整內(nèi)存結(jié)構(gòu),優(yōu)化數(shù)據(jù)庫性能。 說明: oracle8.1.7 版本數(shù)據(jù)庫實例參數(shù)文件“initsid.ora”是在安裝 oracle 數(shù)據(jù)庫過程中產(chǎn)生的,一般情況下不需要手工修改。 1.2.3 系統(tǒng)全局區(qū) sga(system global area)是 oracle 系統(tǒng)為實例分配的一組共享緩沖 存儲區(qū),用于存放數(shù)據(jù)庫數(shù)據(jù)和控制信息,以實現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的管理和操 作,圖 1-3 給出實例與 sga 及數(shù)據(jù)庫關(guān)系。 數(shù)據(jù)庫

18、 實例1 sga+進程 實例2 sga+進程 數(shù)據(jù)文件 數(shù)據(jù)庫 實例1 sga+進程 實例2 sga+進程 數(shù)據(jù)文件 圖 1-3 實例與 sga 及數(shù)據(jù)庫關(guān)系 sga 分為以下幾個部分: (1) 共享池。 (2) 數(shù)據(jù)塊緩沖區(qū)。 (3) 日志緩沖區(qū)。 (4) 字典緩沖區(qū)。 下面分別介紹: 說明: sga 的尺寸應小于物理內(nèi)存的一半。 在 oracle 系統(tǒng)中,所有用戶與 oracle 數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)交換都要經(jīng)過 sga 區(qū)。 1.共享池(shared pool) 由共享 sql 區(qū)和數(shù)據(jù)字典區(qū)組成,參數(shù) shared_pool_size 確定共享池大小, 共享 sql 區(qū)包括: (1) sq

19、l 或 pl/sql 語句的文本。 (1) sql 或 pl/sql 語句的語法分析形式。 (2) sql 或 pl/sql 語句的執(zhí)行方案。 說明: shared_pool_size=物理內(nèi)存(1520)% 對于 ops 取下限。 2.數(shù)據(jù)塊緩沖區(qū) 用于存儲從數(shù)據(jù)文件中讀出的數(shù)據(jù),其大小由以下兩個參數(shù)決定: db_block_size 確定數(shù)據(jù)塊的大小,一般為 2k 或 4k。 db_block_buffers 確定數(shù)據(jù)塊的數(shù)目。 db_buffers=db_block_buffersdb_block_size=物理內(nèi)存 (1525)%, 對于 ops 取上限。該值應盡量大。 3.日志緩沖區(qū)

20、 以記錄項的形式備份數(shù)據(jù)庫緩沖區(qū)中被修改的緩沖塊,這些記錄項將被寫到 日志文件中。日志緩沖區(qū)大小由參數(shù) log_buffer 確定 4.字典緩沖區(qū) 用于存放數(shù)據(jù)字典信息行。 5.sga 設(shè)置大小總原則 在設(shè)置各參數(shù)調(diào)整 sga 大小時,應保證其小于物理內(nèi)存的一半。 sga 的計算方法如下: sga=db_block_buffersdb_block_size+share_pool_size+ sort_area_size+1m+3db_block_size(cpus+2) paralell_max_srevers 說明: ops 才有最后一項。 sort_area_size:排序區(qū),并發(fā)用戶數(shù)較

21、多,需要排序時該值宜大。 paralell_max_srevers:2cpu 個數(shù)4并發(fā)用戶數(shù)。對單 cpu 不能修改此值。 1.2.4 進程 進程是操作系統(tǒng)中的一種機制,它可執(zhí)行一系列的操作步驟(在有些操作系 統(tǒng)中使用作業(yè)(job)或任務(task)的術(shù)語來表示進程)。一個進程通常有它 自己的專用存儲區(qū)。 oracle 實例有兩種類型:單進程實例和多進程實例。通常用的是多進程實 例。 單進程 oracle(又稱單用戶 oracle)是一種數(shù)據(jù)庫系統(tǒng),一個進程執(zhí) 行全部 oracle 代碼。由于 oracle 部分和客戶應用程序不能分別以進程 執(zhí)行,所以 oracle 的代碼和用戶的數(shù)據(jù)庫應用

22、是單個進程執(zhí)行。在單進 程環(huán)境下的 oracle 實例,僅允許一個用戶可存取。例如在 ms-dos 上運 行 oracle 。 多進程 oracle 實例(又稱多用戶 oracle)使用多個進程來執(zhí)行 oracle 的不同部分,對于每一個連接的用戶都有一個進程。在多進程系統(tǒng) 中,進程分為兩類:用戶進程和 oracle 進程。當一用戶運行一應用程序, 如 pro*c 程序(pro*c 是一種開發(fā)工具, 它把過程化語言 c 和非過程化語 言 sql 最完善地結(jié)合起來, 具有完備的過程處理能力,又能完成任何數(shù)據(jù) 庫的處理品任務,使用戶可以通過編程完成各種類型的報表。)或一個 oracle 工具(如

23、sql*plus),為用戶運行的應用建立一個用戶進程。 oracle 系統(tǒng)進程又分為服務器進程和后臺進程。 1. 服務器進程 用于處理用戶請求的進程。處理過程如下: (1) 分析 sql 命令并生成執(zhí)行方案。 (2) 從數(shù)據(jù)緩沖區(qū)或磁盤中讀取數(shù)據(jù)。 (3) 將執(zhí)行結(jié)果返回給用戶。 2. 后臺進程 為所有數(shù)據(jù)庫用戶異步完成各種任務,主要包括如下進程(ora817 表示實例 名): ora_reco_ora817恢復進程:該進程是在具有分布式選項時所使用的一個進程, 自動地解決在分布式事務中的故障。一個結(jié)點 reco 后臺進 程自動地連接到包含有懸而未決的分布式事務的其它數(shù)據(jù)庫中, reco 自動

24、地解決所有的懸而不決的事務。任何相應于已處理 的懸而不決的事務的行將從每一個數(shù)據(jù)庫的懸掛事務表中刪去。 當一數(shù)據(jù)庫服務器的 reco 后臺進程試圖建立同一遠程服務 器的通信,如果遠程服務器是不可用或者網(wǎng)絡(luò)連接不能建立時, reco 自動地在一個時間間隔之后再次連接。 reco 后臺進程僅當在允許分布式事務的系統(tǒng)中出現(xiàn),而且 distributed transactions 參數(shù)是大于 0。 ora_dbw0_ora817數(shù)據(jù)庫寫進程:該進程執(zhí)行將緩沖區(qū)寫入數(shù)據(jù)文件,是負責緩 沖存儲區(qū)管理的一個 oracle 后臺進程。當緩沖區(qū)中的一緩 沖區(qū)被修改,它被標志為“弄臟”,此進程的主要任務是將 “弄

25、臟”的緩沖區(qū)寫入磁盤,使緩沖區(qū)保持“干凈”。 ora_pmon_ora81 7 進程監(jiān)控進程:該進程在用戶進程出現(xiàn)故障時執(zhí)行進程恢復, 負責清理內(nèi)存儲區(qū)和釋放該進程所使用的資源。例:它要重置 活動事務表的狀態(tài),釋放封鎖,將該故障的進程的 id 從活動 進程表中移去。pmon 還周期地檢查調(diào)度進程 (dispatcher)和服務器進程的狀態(tài),如果已死,則重新 啟動(不包括有意刪除的進程)。pmon 有規(guī)律地被呼醒,檢 查是否需要,或者其它進程發(fā)現(xiàn)需要時可以被調(diào)用。 ora_lgwr_ora817日志寫進程:該進程將日志緩沖區(qū)寫入磁盤上的一個日志文件, 它是負責管理日志緩沖區(qū)的一個 oracle

26、后臺進程。 ora_ckpt_ora817檢查點寫進程:該進程在檢查點出現(xiàn)時,對全部數(shù)據(jù)文件的標 題進行修改,指示該檢查點。 ora_smon_ora817系統(tǒng)監(jiān)控進程:該進程實例啟動時執(zhí)行實例恢復,還負責清理 不再使用的臨時段。在具有并行服務器選項的環(huán)境下,smon 對有故障 cpu 或?qū)嵗M行實例恢復。smon 進程有規(guī)律地被 呼醒,檢查是否需要,或者其它進程發(fā)現(xiàn)需要時可以被調(diào)用。 1.3 存儲管理 前面已經(jīng)提到過,oracle 數(shù)據(jù)庫都將數(shù)據(jù)存儲在數(shù)據(jù)文件中,在其內(nèi)部, 數(shù)據(jù)庫結(jié)構(gòu)提供了數(shù)據(jù)對數(shù)據(jù)文件的邏輯映射,允許不同類型的數(shù)據(jù)分開存 放。這些邏輯劃分稱為表空間,圖 1-4 給出了詳細

27、的 oracle 數(shù)據(jù)庫存儲 結(jié)構(gòu)圖。 圖 1-4 oracle 存儲結(jié)構(gòu)圖 對于用戶,通常關(guān)心的是 oracle 的邏輯結(jié)構(gòu),是在邏輯上是如何組成的, 是如何存儲數(shù)據(jù)的,下面詳細介紹。 1.3.2 邏輯結(jié)構(gòu) oracle 的邏輯結(jié)構(gòu)是由一個或多個表空間組成,一個數(shù)據(jù)庫劃分為一個或 多個邏輯單位,該邏輯單位稱為表空間(tablespace)。一個表空間可將相 關(guān)的邏輯結(jié)構(gòu)組合在一起。 一個表空間由一組分類段組成。 一個段由一組范圍組成。 一個范圍由一批數(shù)據(jù)庫塊組成。 一個數(shù)據(jù)庫塊對應一個或多個物理塊。 每一個 oracle 數(shù)據(jù)庫包含有一個名為 system 的表空間,在數(shù)據(jù)庫建立 時自動建立

28、。在該表空間中包含有整個數(shù)據(jù)庫的系統(tǒng)信息數(shù)據(jù),最小的數(shù)據(jù) 庫可只需要 system 表空間。表空間利用增加數(shù)據(jù)文件可擴大表空間,表 空間的大小為組成該表空間的數(shù)據(jù)文件的大小的和。oracle 數(shù)據(jù)庫中一表 空間是由一個或多個物理數(shù)據(jù)文件組成,一個數(shù)據(jù)文件只可與一個表空間相 聯(lián)系。當為一表空間建立一數(shù)據(jù)文件時,oracle 建立該文件,分配指定的 磁盤空間容量。在數(shù)據(jù)文件初始建立后,所分配的磁盤不包含有任何數(shù)據(jù)。 一個模式(schema)為模式對象(schema object)的一個集合,每一個數(shù) 據(jù)庫用戶對應一個模式。模式對象為直接引用數(shù)據(jù)庫數(shù)據(jù)的邏輯結(jié)構(gòu),模式 對象包含如表、視圖、索引、同義

29、詞等結(jié)構(gòu)。模式對象是邏輯數(shù)據(jù)存儲結(jié)構(gòu), 每一種模式對象在磁盤上沒有一個相應文件存儲其信息。一個模式對象邏輯 地存儲在數(shù)據(jù)庫的一個表空間中,每一個對象的數(shù)據(jù)物理地包含在表空間的 一個或多個數(shù)據(jù)文件中。例如:表、索引等模式對象,在指定表空間的數(shù)據(jù) 文件上為該對象分配多少空間。圖 1-5 說明模式對象、表空間和數(shù)據(jù)文件之 間的關(guān)系。 圖 1-5 模式對象、表空間和數(shù)據(jù)文件之間的關(guān)系 模式與表空間之間的關(guān)系為:一個表空間可包含不同模式的對象,而一個模 式中的對象可包含在不同的表空間中。 1. 數(shù)據(jù)庫塊 數(shù)據(jù)庫塊(database block)是 oracle 邏輯分配空間的最底層,又稱邏輯 塊、頁或

30、oracle 塊。 數(shù)據(jù)庫塊是數(shù)據(jù)庫使用和分配空間的最小單元,也可以說是使用的最小 i/o 單元,一個數(shù)據(jù)塊與磁盤上指定的物理空間大小相一致,一個數(shù)據(jù)庫塊對應 一個或多個物理塊,塊的大小由參數(shù) db_block_size 確定。 pctfree 和 pctused 是開發(fā)人員用來控制數(shù)據(jù)塊中可用插入和更新數(shù)據(jù) 的空閑空間大小的參數(shù)。 pctfree:設(shè)置數(shù)據(jù)塊中保持空閑的百分比。 pctused:當數(shù)據(jù)塊空閑空間達到 pctfree 時,此塊不允許插入數(shù) 據(jù),只能修改或刪除塊中的行,更新時可能使數(shù)據(jù)塊空閑空間變大,已 用數(shù)據(jù)空間變小,當已用空間低于 pctused 時,則可以重新插入數(shù)據(jù)。 p

31、ctfree 及 pctused 的選擇: 經(jīng)常做查詢(select)的表,應使 pctfree 小些,盡量減少存儲空間 浪費。 經(jīng)常做插入(insert)的表,應使 pctused 大一些。 經(jīng)常做更新(update)的表,應使 pctfree 大一些,給更新留出更大 的空間,減少行移動。 說明: 這兩個參數(shù)只能在創(chuàng)建、修改表和聚簇(數(shù)據(jù)段)時指定。另外,在創(chuàng)建、 修改索引(索引段)時只能指定 pctfree 參數(shù)。 經(jīng)常做插入的表設(shè)置舉例:經(jīng)常做插入的表設(shè)置舉例: create table comminfor ( serialnumber varchar2(20) not null, en

32、terhistime date not null, acceptbegintime date null , acceptduration number(10) null , accepterno varchar2(4) null , callingphoneno varchar2(20) null , acceptid number(10) null , operationtype varchar2(10) null , appellantname varchar2(16) null , contactid number(10) null , ) pctfree 10 pctused 90 i

33、nitrans 2 maxtrans 255 tablespace service_rpt_dat; 經(jīng)常做查詢的表設(shè)置舉例:經(jīng)常做查詢的表設(shè)置舉例: create table auth ( authid number(10) not null, description varchar2(50) null constraint pk_auth primary key (authid) ) pctfree 10 pctused 40 tablespace service_rpt_dat; 2. 范圍(extent) 數(shù)據(jù)庫存儲空間分配的邏輯單位,一個范圍由一組數(shù)據(jù)塊組成,范圍是由段 分配的,分配

34、的第一個范圍稱初始范圍,以后分配的范圍稱增量范圍。 extent 是段中分配空間的邏輯單元。它有如下特性: 一個或多個范圍構(gòu)成一個段。 當段增長時,范圍自動添加到段中。 dba 可以手工把范圍加到一個段中。 一個范圍不能跨數(shù)據(jù)文件,即一個擴展只屬于一個數(shù)據(jù)文件。 一個范圍由一片連續(xù)的 oracle block 構(gòu)成。 每個段在定義時有許多存儲參數(shù)來控制范圍的分配,主要是 storgae 參數(shù), 主要包括如下幾項: initial :分配給段的第一個范圍的字節(jié)數(shù),缺省為 5 個數(shù)據(jù)塊。 next:分配給段的下一個增量范圍的字節(jié)數(shù),缺省為 5 個數(shù)據(jù)塊。 maxextents :最大擴展次數(shù)。 p

35、ctincrease:每一個增量范圍都在最新分配的增量范圍上增長,這 個百分數(shù)缺省為 50,建表時通常設(shè)置為 0,建表空間時為 1%。 范圍在分配時,遵循如下分配方式: 初始創(chuàng)建時,分配 initial 指定大小的區(qū)。 空間不夠時,按 next 大小分配第二個區(qū)。 再不夠時,按 next + next *pctincrease 分配。 可以對表、聚集、索引、回滾段、表空間等實體設(shè)置存儲參數(shù)。 3. 段 是表空間中一個指定類型的邏輯存儲結(jié)構(gòu),它由一個或多個 extent 組成,段 將占用并增長存儲空間,但是一個段不能跨越表空間,oracle 中有數(shù)據(jù)段、 索引段、臨時段、回滾段和自舉段(包含打開

36、數(shù)據(jù)庫時要裝入的數(shù)據(jù)字典表) 。 當執(zhí)行建表命令時,系統(tǒng)將自動創(chuàng)建一個段,若沒有指定存儲參數(shù)子句 storage,則系統(tǒng)會用相應表空間的 storage,當初始區(qū)用完后,系統(tǒng)會按 next 和 pctincrease 的值分配新的區(qū)。 在這里要講一個比較重要的概念:回滾段。回滾段是當某事務修改一個數(shù)據(jù) 塊時,用以存放數(shù)據(jù)以前映像信息的數(shù)據(jù)段?;貪L段中的信息用以保存讀連 續(xù)性,并進行事務回滾和事務恢復。例如,如果事務通過把一列的關(guān)鍵值從 10 改為 20 來修改數(shù)據(jù)塊,則原值 10 要存放于回滾段中,而數(shù)據(jù)塊將具有 新值 20。如果事務被回滾,則值 10 從回滾段拷回數(shù)據(jù)塊。事務產(chǎn)生的重做 記錄保證在事務提交或回滾之前保持在回滾段中,而一個事務只能用一個回 滾段存放其所有的重做記錄,因此,如果回滾段大小配置不恰當,當 oracle 執(zhí)行一個大的事

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論