一、oracle的體系結(jié)構(gòu)
1、物理結(jié)構(gòu)(由控制文件、數(shù)據(jù)文件、重做日志文件、參數(shù)文件、歸檔文件、口令文件組成)
一個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù)存儲(chǔ)在磁盤上物理文件,被使用時(shí),調(diào)入內(nèi)存。
其中控制文件、數(shù)據(jù)文件、重做日志文件、跟蹤文件及警告日志(trace files,alert files)屬于數(shù)據(jù)庫(kù)文件;
參數(shù)文件(parameter file)口令文件(password file)是非數(shù)據(jù)庫(kù)文件
1.1數(shù)據(jù)文件:存儲(chǔ)數(shù)據(jù)的文件.數(shù)據(jù)文件典型地代表了根據(jù)他們使用的磁盤空間和數(shù)量所決定的一個(gè)Oracle數(shù)據(jù)庫(kù)的容積。
由于性能原因,每一種類型的數(shù)據(jù)放在相應(yīng)的一個(gè)或一系列文件中,將這些文件放在不同的磁盤中。
types:
.data dictionary .data
.redo data .index
.temporary data 等等
1.2控制文件:包含維護(hù)和驗(yàn)證數(shù)據(jù)庫(kù)完整性的必要信息、例如,控制文件用于識(shí)別數(shù)據(jù)文件和重做日志文件,一個(gè)數(shù)據(jù)庫(kù)至少需要一個(gè)控制文件.
控制文件內(nèi)容
。數(shù)據(jù)庫(kù)名
。表空間信息
。所有數(shù)據(jù)文件的名字和位置
。所有redo日志文件的名字和位置
。當(dāng)前的日志序列號(hào)
。檢查點(diǎn)信息
。關(guān)于redo日志和歸檔的當(dāng)前狀態(tài)信息
控制文件的使用過(guò)程
控制文件把Oracle引導(dǎo)到數(shù)據(jù)庫(kù)文件的其它部分。啟動(dòng)一個(gè)實(shí)例時(shí),Oracle 從參數(shù)文件中讀取控制文件的名字和位置。安裝數(shù)據(jù)庫(kù)時(shí),Oracle 打開控制文件。最終打開數(shù)據(jù)庫(kù)時(shí),Oracle 從控制文件中讀取數(shù)據(jù)文件的列表并打開其中的每個(gè)文件。
1.3重做日志文件:
含對(duì)數(shù)據(jù)庫(kù)所做的更改記錄,這樣萬(wàn)一出現(xiàn)故障可以啟用數(shù)據(jù)恢復(fù)。一個(gè)數(shù)據(jù)庫(kù)至少需要兩個(gè)重做日志文件.
1.4 跟蹤文件及警告日志(Trace Files and Alert Files)
在instance 中運(yùn)行的每一個(gè)后臺(tái)進(jìn)程都有一個(gè)跟蹤文件(trace file)與之相連。Trace file 記載后臺(tái)進(jìn)程所遇到的重大事件的信息。
警告日志( Alert Log)是一種特殊的跟蹤文件,每個(gè)數(shù)據(jù)庫(kù)都有一個(gè)跟蹤文件,同步記載數(shù)據(jù)庫(kù)的消息和錯(cuò)誤.
1.5參數(shù)文件:包括大量影響Oracle數(shù)據(jù)庫(kù)實(shí)例功能的設(shè)定,如以下設(shè)定:
。數(shù)據(jù)庫(kù)控制文件的定位
。Oracle用來(lái)緩存從磁盤上讀取的數(shù)據(jù)的內(nèi)存數(shù)量
。默認(rèn)的優(yōu)化程序的選擇.
和數(shù)據(jù)庫(kù)文件相關(guān),執(zhí)行兩個(gè)重要的功能
1〉為數(shù)據(jù)庫(kù)指出控制文件
2〉為數(shù)據(jù)庫(kù)指出歸檔日志的目標(biāo)
1.6歸檔文件:是重做日志文件的脫機(jī)副本,這些副本可能對(duì)于從介質(zhì)失敗中進(jìn)行恢復(fù)很必要。
1.7口令文件:認(rèn)證哪些用戶有權(quán)限啟動(dòng)和關(guān)閉Oracle例程.
2、邏輯結(jié)構(gòu)(表空間、段、區(qū)、塊)
表空間:是數(shù)據(jù)庫(kù)中的基本邏輯結(jié)構(gòu),一系列數(shù)據(jù)文件的集合。
段:是對(duì)象在數(shù)據(jù)庫(kù)中占用的空間.
區(qū):是為數(shù)據(jù)一次性預(yù)留的一個(gè)較大的存儲(chǔ)空間.
塊:ORACLE最基本的存儲(chǔ)單位,在建立數(shù)據(jù)庫(kù)的時(shí)候指定.
3、內(nèi)存分配(SGA和PGA)
SGA:是用于存儲(chǔ)數(shù)據(jù)庫(kù)信息的內(nèi)存區(qū),該信息為數(shù)據(jù)庫(kù)進(jìn)程所共享。它包含Oracle 服務(wù)器的數(shù)據(jù)和控制信息,它是在Oracle服務(wù)器所駐留的計(jì)算機(jī)的實(shí)際內(nèi)存中得以分配,如果實(shí)際內(nèi)存不夠再往虛擬內(nèi)存中寫。
PGA:包含單個(gè)服務(wù)器進(jìn)程或單個(gè)后臺(tái)進(jìn)程的數(shù)據(jù)和控制信息,與幾個(gè)進(jìn)程共享的SGA 正相反,PGA 是只被一個(gè)進(jìn)程使用的區(qū)域,PGA 在創(chuàng)建進(jìn)程時(shí)分配,在終止進(jìn)程時(shí)回收.
4、后臺(tái)進(jìn)程
包括數(shù)據(jù)寫進(jìn)程(Database Writer,DBWR)、日志寫進(jìn)程(Log Writer,LGWR)、系統(tǒng)監(jiān)控(System Monitor,SMON)、進(jìn)程監(jiān)控(Process Monitor,PMON)、檢查點(diǎn)進(jìn)程(Checkpoint Process,CKPT)、歸檔進(jìn)程、服務(wù)進(jìn)程、用戶進(jìn)程)
數(shù)據(jù)寫進(jìn)程:負(fù)責(zé)將更改的數(shù)據(jù)從數(shù)據(jù)庫(kù)緩沖區(qū)高速緩存寫入數(shù)據(jù)文件
日志寫進(jìn)程:將重做日志緩沖區(qū)中的更改寫入在線重做日志文件
系統(tǒng)監(jiān)控:檢查數(shù)據(jù)庫(kù)的一致性如有必要還會(huì)在數(shù)據(jù)庫(kù)打開時(shí)啟動(dòng)數(shù)據(jù)庫(kù)的恢復(fù)
進(jìn)程監(jiān)控:負(fù)責(zé)在一個(gè)Oracle 進(jìn)程失敗時(shí)清理資源
檢查點(diǎn)進(jìn)程:負(fù)責(zé)在每當(dāng)緩沖區(qū)高速緩存中的更改永久地記錄在數(shù)據(jù)庫(kù)中時(shí),更新控制文件和數(shù)據(jù)文件中的數(shù)據(jù)庫(kù)狀態(tài)信息。該進(jìn)程在檢查點(diǎn)出現(xiàn)時(shí),對(duì)全部數(shù)據(jù)文件的標(biāo)題進(jìn)行修改,指示該檢查點(diǎn)。在通常的情況下,該任務(wù)由LGWR執(zhí)行。然而,如果檢查點(diǎn)明顯地降低系統(tǒng)性能時(shí),可使CKPT進(jìn)程運(yùn)行,將原來(lái)由LGWR進(jìn)程執(zhí)行的檢查點(diǎn)的工作分離出來(lái),由CKPT進(jìn)程實(shí)現(xiàn)。對(duì)于許多應(yīng)用情況,CKPT進(jìn)程是不必要的。只有當(dāng)數(shù)據(jù)庫(kù)有許多數(shù)據(jù)文件,LGWR在檢查點(diǎn)時(shí)明顯地降低性能才使CKPT運(yùn)行。CKPT進(jìn)程不將塊寫入磁盤,該工作是由DBWR完成的。 init.ora文件中 CHECKPOINT_PROCESS 參數(shù)控制CKPT進(jìn)程的使能或使不能。缺省時(shí)為FALSE,即為使不能。
歸檔進(jìn)程:在每次日志切換時(shí)把已滿的日志組進(jìn)行備份或歸檔
服務(wù)進(jìn)程:用戶進(jìn)程服務(wù)。
用戶進(jìn)程:在客戶端,負(fù)責(zé)將用戶的SQL語(yǔ)句傳遞給服務(wù)進(jìn)程,并從服務(wù)器段拿回查詢數(shù)據(jù)。
5、SCN(System ChangeNumber):
系統(tǒng)改變號(hào),一個(gè)由系統(tǒng)內(nèi)部維護(hù)的序列號(hào)。當(dāng)系統(tǒng)需要更新的時(shí)候自動(dòng)增加,他是系統(tǒng)中維持?jǐn)?shù)據(jù)的一致性和順序恢復(fù)的重要標(biāo)志。
小結(jié):
1.一個(gè)表空間只能屬于一個(gè)數(shù)據(jù)庫(kù)。
2.每個(gè)數(shù)據(jù)庫(kù)最少有一個(gè)控制文件(建議3個(gè),分別放在不同的磁盤上)?! ?.每個(gè)數(shù)據(jù)庫(kù)最少有一個(gè)表空間(SYSTEM表空間)。
4.建立SYSTEM表空間的目的是盡量將目的相同的表存放在一起,以提高使用效率,只應(yīng)存放數(shù)據(jù)字典。
5.每個(gè)數(shù)據(jù)庫(kù)最少有兩個(gè)聯(lián)機(jī)日志組,每組最少一個(gè)聯(lián)機(jī)日志文件。
6.一個(gè)數(shù)據(jù)文件只能屬于一個(gè)表空間。
7.一個(gè)數(shù)據(jù)文件一旦被加入到一個(gè)表空間中,就不能再?gòu)倪@個(gè)表空間中移走,也不能再加入到其他表空間中。
8.建立新的表空間需要建立新的數(shù)據(jù)文件。
9.數(shù)據(jù)文件被ORACLE格式化為ORACLE塊,Oracle9i以前版本中,ORACLE塊的大小是在第一次創(chuàng)建數(shù)據(jù)庫(kù)時(shí)設(shè)定的。
10.并且以后不能改變,要想改變,只能重建數(shù)據(jù)庫(kù)。
11.一個(gè)段segment只能屬于一個(gè)表空間,但可以屬于多個(gè)數(shù)據(jù)文件。
12.一個(gè)區(qū)extent只能屬于一個(gè)數(shù)據(jù)文件,即區(qū)間(extent)不能跨越數(shù)據(jù)文件。
13.PCTFREE和PCTUSED總和不能大于等于100。
14.單獨(dú)一個(gè)事務(wù)不能跨越多個(gè)回滾段。
15.索引表不含ROWID值。
16.擁有不同大小的回滾段沒有任何益處。
17.COMMIT后,數(shù)據(jù)不一定立即寫盤(數(shù)據(jù)文件)。
18.一個(gè)事務(wù)即使不被提交,也會(huì)被寫入到重做日志中。
19.Oracle 8.0.4中,在初始安裝時(shí)建立的缺省數(shù)據(jù)庫(kù),實(shí)例名為ORCL 。
20.一個(gè)塊的最大長(zhǎng)度為16KB(有2K、4K、8K、16K)?! ∶總€(gè)數(shù)據(jù)庫(kù)最大文件數(shù)(按塊大?。?div style="height:15px;">
2K塊 20000個(gè)文件
4K塊 40000個(gè)文件
8K塊或以上 65536個(gè)文件
21.oracle server可以同時(shí)啟動(dòng)多個(gè)數(shù)據(jù)庫(kù) 。
22.一套操作系統(tǒng)上可以安裝多個(gè)版本的ORACLE數(shù)據(jù)庫(kù)系統(tǒng)(UNIX可以,NT不可以)。
23.一套ORACLE數(shù)據(jù)庫(kù)系統(tǒng)中可以有多個(gè)ORACLE數(shù)據(jù)庫(kù)及其相對(duì)應(yīng)的實(shí)例 。
24.每個(gè)ORACLE數(shù)據(jù)庫(kù)擁有一個(gè)數(shù)據(jù)庫(kù)實(shí)例(INSTANCE)(OPS除外)。25.所以,一套操作系統(tǒng)上同時(shí)可以有多個(gè)oracle數(shù)據(jù)庫(kù)實(shí)例啟動(dòng)。
二、ORACLE性能調(diào)優(yōu)原則
任何事情都有它的源頭,要解決問題,也得從源頭開始,影響ORACLE性能的源頭非常多,主要包括如下方面:
數(shù)據(jù)庫(kù)的硬件配置:CPU、內(nèi)存、網(wǎng)絡(luò)條件
1. CPU:在任何機(jī)器中CPU的數(shù)據(jù)處理能力往往是衡量計(jì)算機(jī)性能的一個(gè)標(biāo)志,并且ORACLE是一個(gè)提供并行能力的數(shù)據(jù)庫(kù)系統(tǒng),在CPU方面的要求就更高了,如果運(yùn)行隊(duì)列數(shù)目超過(guò)了CPU處理的數(shù)目,性能就會(huì)下降,我們要解決的問題就是要適當(dāng)增加CPU的數(shù)量了,當(dāng)然我們還可以將需要許多資源的進(jìn)程KILL掉;
2. 內(nèi)存:衡量機(jī)器性能的另外一個(gè)指標(biāo)就是內(nèi)存的多少了,在ORACLE中內(nèi)存和我們?cè)诮〝?shù)據(jù)庫(kù)中的交換區(qū)進(jìn)行數(shù)據(jù)的交換,讀數(shù)據(jù)時(shí),磁盤I/O必須等待物理I/O操作完成,在出現(xiàn)ORACLE的內(nèi)存瓶頸時(shí),我們第一個(gè)要考慮的是增加內(nèi)存,由于I/O的響應(yīng)時(shí)間是影響ORACLE性能的主要參數(shù),我將在這方面進(jìn)行詳細(xì)的講解
3. 網(wǎng)絡(luò)條件:NET*SQL負(fù)責(zé)數(shù)據(jù)在網(wǎng)絡(luò)上的來(lái)往,大量的SQL會(huì)令網(wǎng)絡(luò)速度變慢。比如10M的網(wǎng)卡和100的網(wǎng)卡就對(duì)NET*SQL有非常明顯的影響,還有交換機(jī)、集線器等等網(wǎng)絡(luò)設(shè)備的性能對(duì)網(wǎng)絡(luò)的影響很明顯,建議在任何網(wǎng)絡(luò)中不要試圖用3個(gè)集線器來(lái)將網(wǎng)段互聯(lián)。
OS參數(shù)的設(shè)置
下表給出了OS的參數(shù)設(shè)置及說(shuō)明,DBA可以根據(jù)實(shí)際需要對(duì)這些參數(shù)進(jìn)行設(shè)置
內(nèi)核參數(shù)名
說(shuō)明
bufpages
對(duì)buffer空間不按靜態(tài)分配,采用動(dòng)態(tài)分配,使bufpages值隨nbuf一起對(duì)buffer空間進(jìn)行動(dòng)態(tài)分配。
create_fastlinks
對(duì)HFS文件系統(tǒng)允許快速符號(hào)鏈接
dbc_max_pct
加大最大動(dòng)態(tài)buffer空間所占物理內(nèi)存的百分比,以滿足應(yīng)用系統(tǒng)的讀寫命中率的需要。
dbc_min_pct
設(shè)置最小動(dòng)態(tài)buffer空間所占物理內(nèi)存的百分比
desfree
提高開始交換操作的最低空閑內(nèi)存下限,保障系統(tǒng)的穩(wěn)定性,防止出現(xiàn)不可預(yù)見的系統(tǒng)崩潰(Crash)。
fs_async
允許進(jìn)行磁盤異步操作,提高CPU和磁盤的利用率
lotsfree
提高系統(tǒng)解除換頁(yè)操作的空閑內(nèi)存的上限值,保證應(yīng)用程序有足夠的可用內(nèi)存空間。
maxdsiz
針對(duì)系統(tǒng)數(shù)據(jù)量大的特點(diǎn),加大最大數(shù)據(jù)段的大小,保證應(yīng)用的需要。(32位)
maxdsiz_64bit
maximum process data segment size for 64_bit
Maxssiz
加大最大堆棧段的大小。(32_bit)
maxssiz_64bit
加大最大堆棧段的大小。(64_bit)
Maxtsiz
提高最大代碼段大小,滿足應(yīng)用要求
maxtsiz_64bit
原值過(guò)大,應(yīng)調(diào)小
Minfree
提高停止交換操作的自由內(nèi)存的上限
Shmem
允許進(jìn)行內(nèi)存共享,以提高內(nèi)存的利用率
Shmmax
設(shè)置最大共享內(nèi)存段的大小,完全滿足目前的需要
Timeslice
由于系統(tǒng)的瓶頸主要反映在磁盤I/O上,因此 降低時(shí)間片的大小,一方面可避免因磁盤I/O不暢造成CPU的等待,從而提高了CPU的綜合利用率。另一方面減少了進(jìn)程的阻塞量。
unlockable_mem
提高了不可鎖內(nèi)存的大小,使可用于換頁(yè)和交換的內(nèi)存空間擴(kuò)大,用以滿足系統(tǒng)對(duì)內(nèi)存管理的要求。
用戶SQL質(zhì)量
以上講的都是硬件方面的東西,在條件有限的條件下,我們可以調(diào)整應(yīng)用程序的SQL質(zhì)量:
1. 不要進(jìn)行全表掃描(Full Table Scan):全表掃描導(dǎo)致大量的I/O
2. 盡量建好和使用好索引:建索引也是有講究的,在建索引時(shí),也不是索引越多越好,當(dāng)一個(gè)表的索引達(dá)到4個(gè)以上時(shí),ORACLE的性能可能還是改善不了,因?yàn)镺LTP系統(tǒng)每表超過(guò)5個(gè)索引即會(huì)降低性能,而且在一個(gè)sql 中, Oracle 從不能使用超過(guò) 5個(gè)索引;當(dāng)我們用到GROUP BY和ORDER BY時(shí),ORACLE就會(huì)自動(dòng)對(duì)數(shù)據(jù)進(jìn)行排序,而ORACLE在INIT.ORA中決定了sort_area_size區(qū)的大小,當(dāng)排序不能在我們給定的排序區(qū)完成時(shí),ORACLE就會(huì)在磁盤中進(jìn)行排序,也就是我們講的臨時(shí)表空間中排序, 過(guò)多的磁盤排序?qū)?huì)令 free buffer waits 的值變高,而這個(gè)區(qū)間并不只是用于排序的,對(duì)于開發(fā)人員我提出如下忠告:
1)、select,update,delete 語(yǔ)句中的子查詢應(yīng)當(dāng)有規(guī)律地查找少于20%的表行.如果一個(gè)語(yǔ)句查找的行數(shù)超過(guò)總行數(shù)的20%,它將不能通過(guò)使用索引獲得性能上的提高.
2)、索引可能產(chǎn)生碎片,因?yàn)橛涗洀谋碇袆h除時(shí),相應(yīng)也從表的索引中刪除.表釋放的空間可以再用,而索引釋放的空間卻不能再用.頻繁進(jìn)行刪除操作的被索引的表,應(yīng)當(dāng)階段性地重建索引,以避免在索引中造成空間碎片,影響性能.在許可的條件下,也可以階段性地truncate表,truncate命令刪除表中所有記錄,也刪除索引碎片.
3)、在使用索引時(shí)一定要按索引對(duì)應(yīng)字段的順序進(jìn)行引用。
4)、用(+)比用NOT IN更有效率。
降低ORACLE的競(jìng)爭(zhēng):
先講幾個(gè)ORACLE的幾個(gè)參數(shù),這幾個(gè)參數(shù)關(guān)系到ORACLE的競(jìng)爭(zhēng):
1)、freelists 和 freelist 組:他們負(fù)責(zé)ORACLE的處理表和索引的空間管理;
2)、pctfree 及 pctused:該參數(shù)決定了freelists 和 freelist 組的行為,pctfree 和pctused 參數(shù)的唯一目的就是為了控制塊如何在 freelists 中進(jìn)出
設(shè)置好pctfree 及 pctused對(duì)塊在freelists的移走和讀取很重要。
其他參數(shù)的設(shè)置
1)、包括SGA區(qū)(系統(tǒng)全局區(qū)):系統(tǒng)全局區(qū)(SGA)是一個(gè)分配給Oracle 的包含一個(gè) Oracle 實(shí)例的數(shù)據(jù)庫(kù)的控制信息內(nèi)存段。
主要包括數(shù)據(jù)庫(kù)高速緩存(the database buffer cache),
重演日志緩存(the redo log buffer),
共享池(the shared pool),
數(shù)據(jù)字典緩存(the data dictionary cache)以及其它各方面的信息
2)、db_block_buffers(數(shù)據(jù)高速緩沖區(qū))訪問過(guò)的數(shù)據(jù)都放在這一片內(nèi)存區(qū)域,該參數(shù)越大,Oracle在內(nèi)存中找到相同數(shù)據(jù)的可能性就越大,也即加快了查詢速度。
3)、share_pool_size (SQL共享緩沖池):該參數(shù)是庫(kù)高速緩存和數(shù)據(jù)字典的高速緩存。
4)、Log_buffer (重演日志緩沖區(qū))
5)、sort_area_size(排序區(qū))
6)、processes (同時(shí)連接的進(jìn)程數(shù))
7)、db_block_size (數(shù)據(jù)庫(kù)塊大?。篛racle默認(rèn)塊為2KB,太小了,因?yàn)槿绻覀冇幸粋€(gè)8KB的數(shù)據(jù),則2KB塊的數(shù)據(jù)庫(kù)要讀4次盤,才能讀完,而8KB塊的數(shù)據(jù)庫(kù)只要1次就讀完了,大大減少了I/O操作。數(shù)據(jù)庫(kù)安裝完成后,就不能再改變db_block_size的值了,只能重新建立數(shù)據(jù)庫(kù)并且建庫(kù)時(shí),要選擇手工安裝數(shù)據(jù)庫(kù)。
8)、open_links (同時(shí)打開的鏈接數(shù))
9)、dml_locks
10)、open_cursors (打開光標(biāo)數(shù))
11)、dbwr_io_slaves (后臺(tái)寫進(jìn)程數(shù))
三、oracle的備份與恢復(fù)
Oracle數(shù)據(jù)庫(kù)有三種標(biāo)準(zhǔn)的備份方法,它們分別是導(dǎo)出/導(dǎo)入(EXP/IMP)、熱備份和冷備份。導(dǎo)出備件是一種邏輯備份,冷備份和熱備份是物理備份。
導(dǎo)出/導(dǎo)入(Export/Import)
利用Export可將數(shù)據(jù)從數(shù)據(jù)庫(kù)中提取出來(lái),利用Import則可崛〕隼吹氖菟突氐絆racle數(shù)據(jù)庫(kù)中去。
1、 簡(jiǎn)單導(dǎo)出數(shù)據(jù)(Export)和導(dǎo)入數(shù)據(jù)(Import)
Oracle支持三種方式類型的輸出:
(1)、表方式(T方式),將指定表的數(shù)據(jù)導(dǎo)出。
(2)、用戶方式(U方式),將指定用戶的所有對(duì)象及數(shù)據(jù)導(dǎo)出。
(3)、全庫(kù)方式(Full方式),瘵數(shù)據(jù)庫(kù)中的所有對(duì)象導(dǎo)出。
數(shù)據(jù)導(dǎo)入(Import)的過(guò)程是數(shù)據(jù)導(dǎo)出(Export)的逆過(guò)程,分別將數(shù)據(jù)文件導(dǎo)入數(shù)據(jù)庫(kù)和將數(shù)據(jù)庫(kù)數(shù)據(jù)導(dǎo)出到數(shù)據(jù)文件。
2、 增量導(dǎo)出/導(dǎo)入
增量導(dǎo)出是一種常用的數(shù)據(jù)備份方法,它只能對(duì)整個(gè)數(shù)據(jù)庫(kù)來(lái)實(shí)施,并且必須作為SYSTEM來(lái)導(dǎo)出。在進(jìn)行此種導(dǎo)出時(shí),系統(tǒng)不要求回答任何問題。導(dǎo)出文件名缺省為export.dmp,如果不希望自己的輸出文件定名為export.dmp,必須在命令行中指出要用的文件名。
增量導(dǎo)出包括三種類型:
(1)、“完全”增量導(dǎo)出(Complete)
即備份三個(gè)數(shù)據(jù)庫(kù),比如:
exp system/manager inctype=complete file=040731.dmp
(2)、“增量型”增量導(dǎo)出
備份上一次備份后改變的數(shù)據(jù),比如:
exp system/manager inctype=incremental file=040731.dmp
(3)、“累積型”增量導(dǎo)出
累計(jì)型導(dǎo)出方式是導(dǎo)出自上次“完全”導(dǎo)出之后數(shù)據(jù)庫(kù)中變化了的信息。比如:
exp system/manager inctype=cumulative file=040731.dmp
數(shù)據(jù)庫(kù)管理員可以排定一個(gè)備份日程表,用數(shù)據(jù)導(dǎo)出的三個(gè)不同方式合理高效的完成。
比如數(shù)據(jù)庫(kù)的被封任務(wù)可以做如下安排:
星期一:完全備份(A)
星期二:增量導(dǎo)出(B)
星期三:增量導(dǎo)出(C)
星期四:增量導(dǎo)出(D)
星期五:累計(jì)導(dǎo)出(E)
星期六:增量導(dǎo)出(F)
星期日:增量導(dǎo)出(G)
四、常用命令
1.啟動(dòng)Oracle Server.
Startup[nomount|mount|open][force][pfile=filename]
參數(shù)說(shuō)明:
nomount:只啟動(dòng)實(shí)例
mount:?jiǎn)?dòng)實(shí)例,并裝載數(shù)據(jù)庫(kù)
open:?jiǎn)?dòng)實(shí)例,裝載并打開數(shù)據(jù)庫(kù)。
Force:終止實(shí)例,并重新啟動(dòng)數(shù)據(jù)庫(kù)。(默認(rèn)選項(xiàng))
Pfile:指定非默認(rèn)參數(shù)文件名。
2.停止Oracle Server
Shutdown [normal|transactional|immediate|abort]
參數(shù)說(shuō)明:
normal:等待用戶斷開已存在連接,系統(tǒng)發(fā)出檢查點(diǎn),然后在同步數(shù)據(jù)文件、控制文
和重做日志文件之后關(guān)閉(默認(rèn)選項(xiàng))
transactional:等待客戶端結(jié)束事務(wù)之后,自動(dòng)斷開用戶連接,然后再執(zhí)行normal。
Immediate:取消當(dāng)前所有SQL語(yǔ)句,回退所有未完成事務(wù),然后自動(dòng)斷開,再執(zhí)行normal。
Abort:終止所有SQL語(yǔ)句,立即終止實(shí)例。不會(huì)發(fā)出檢查點(diǎn),所以也就不會(huì)去同步數(shù)據(jù)文件、控制文件和重做日志文件。
3. 總結(jié)和相關(guān)的一些腳本
A. 修改數(shù)據(jù)文件名、執(zhí)行完全恢復(fù)、執(zhí)行不完全恢復(fù)、改變?nèi)罩静僮髂J綍r(shí)系統(tǒng)必須在啟動(dòng)實(shí)例并安裝數(shù)據(jù)庫(kù)的情況下startup mount;)
B. 創(chuàng)建數(shù)據(jù)庫(kù)或創(chuàng)建控制文件時(shí)系統(tǒng)只處于啟動(dòng)實(shí)例狀態(tài)(startup nomount;)
C. 顯示SGA尺寸(show sga或select * from v$sga)
D.顯示當(dāng)前正在運(yùn)行的后臺(tái)進(jìn)程(select name from v$bgprocess where paddr != ‘00’)
E. 顯示Oracle Server狀態(tài)(select status from v$instance)
F. 顯示初始化參數(shù)信息(select * from v$parameter);
G.顯示物理文件(select * from v$controfile; select * from v$datafile; select * from v$logfile);
H. 部分?jǐn)?shù)據(jù)字典試圖:
all_objects, user_objects, dba_objects, user_source, user_segments,
user_tab_columns, user_constraints, all_users
I.為了客戶應(yīng)用可以訪問Oracle Server,在服務(wù)器端需要配置listener.ora文件,在客戶端需配置tnsnames.ora文件
第三章 控制文件
1.控制文件主要記載的信息:
數(shù)據(jù)庫(kù)名稱;數(shù)據(jù)庫(kù)文件名稱和位置;重做日志文件名稱和位置;表空間名稱;
當(dāng)前日志序列號(hào); 檢查點(diǎn)信息; 日志歷史信息。
2. 多元化控制文件
1. 關(guān)閉數(shù)據(jù)庫(kù)
sqlplus/nolog;
connect system/admin@lgtest as sysdba;
shutdown immediate;
2. 復(fù)制控制文件
copy source controlfile to dest controlfile
例如:copy E:\oracle\oradata\lgtest\CONTROL01.CTL f:\controltest.ctl
3. 修改初始化參數(shù)control_files
control_files= E:\oracle\oradata\lgtest\CONTROL01.CTL, f:\controltest.ctl
4. 啟動(dòng)數(shù)據(jù)庫(kù)
startup pfile= E:\oracle\admin\lgtest\pfile\ init.ora.108200317263
其作用:多元化控制文件后,只要有一個(gè)控制文件沒有被損壞,把其它損壞的控制文件從初始化參數(shù)文件中去掉重啟之后系統(tǒng)可以繼續(xù)運(yùn)行。
3. 重建控制文件的方法
1. 以nomount方式啟動(dòng)實(shí)例
sqlplus/nolog;
connect system/admin@lgtest as sysdba;
shutdown normal;
startup nomount pfile=%racle_home%\database\init.ora;
2. 建立控制文件
create controlfile reuse database lgtest resetlogs
logfile
group 1 ‘E:\oracle\oradata\lgtest\ REDO01.LOG’ size 20M,
group 2 ‘E:\oracle\oradata\lgtest\ REDO02.LOG’ size 20M
datafile
‘E:\oracle\oradata\lgtest\ SYSTEM01.DBF’,
‘E:\oracle\oradata\lgtest\ UNDOTBS01.DBF’
character set ZHS16GBK;
3. 打開數(shù)據(jù)庫(kù)
alter database open resetlogs;
4. 增加臨時(shí)文件
a lter tablespace temp add tempfile ‘E:\oracle\oradata\lgtest\TEMP01.DBF’ reuse;
起作用:當(dāng)控制文件都被損壞后,只要有全部的數(shù)據(jù)文件和重做日志文件,那么通過(guò)重建控制文件可以使系統(tǒng)繼續(xù)運(yùn)行。