版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1,范式
7大范式:INF,2NF,3NF,BCNF,4NF,5NF,6NF
什么叫normalization?Denormalization?
Normalization是數(shù)據(jù)庫(kù)規(guī)范化,denormalization是數(shù)據(jù)庫(kù)逆規(guī)范化。
在設(shè)計(jì)和操作維護(hù)數(shù)據(jù)庫(kù)時(shí),關(guān)鍵的步驟就是要確保數(shù)據(jù)正確地分布到數(shù)據(jù)庫(kù)的
表中。使用正確的數(shù)據(jù)結(jié)構(gòu),不僅便于對(duì)數(shù)據(jù)庫(kù)進(jìn)行相應(yīng)的存取操作,而且可以
極大地簡(jiǎn)化應(yīng)用程序的其他內(nèi)容(查詢、窗體、報(bào)表、代碼等)。正確進(jìn)行表設(shè)
計(jì)的正式名稱就是“數(shù)據(jù)庫(kù)規(guī)范化”。目的:減少數(shù)據(jù)庫(kù)中數(shù)據(jù)冗余,增進(jìn)數(shù)據(jù)
的一致性。
范式概念:
1)1NF:目標(biāo)就是表中每列都不可分割;
2)2NF:目標(biāo)就是表中的每行都是有標(biāo)識(shí)的。前提是滿足了1NF.當(dāng)關(guān)鍵字為單
field時(shí),一定滿足2NF。當(dāng)關(guān)鍵字為組合field時(shí)(即超過一個(gè)field),不能
存在組合關(guān)鍵字中有某個(gè)字段能夠決定非關(guān)鍵字段的某部分。非主field非部分
依賴于主field,即非關(guān)鍵字段必須完全依賴于一組組合關(guān)鍵字,而不是組合
關(guān)鍵字的某一部分。
3)3NF:目標(biāo)是一個(gè)table里面所有的列不依賴于另外一個(gè)table里面非關(guān)鍵的
列。前提是滿足了2NF,不存在某個(gè)非關(guān)鍵字段決定另外一個(gè)非關(guān)鍵字段。即:
不存在傳遞依賴(關(guān)鍵字x->非關(guān)鍵屬性廠>非關(guān)鍵屬性z)
4)BCNF:前提是滿足了2NF,不存在某個(gè)非關(guān)鍵字段決定另外一個(gè)非關(guān)鍵字段。
也不存在某個(gè)關(guān)鍵字段決定另外一個(gè)關(guān)鍵字段。即:在3NF基礎(chǔ)上,加上約束:
不存在某個(gè)關(guān)鍵字段決定另外一個(gè)關(guān)鍵字段。
1第一范式(1NF)
在任何一個(gè)關(guān)系數(shù)據(jù)庫(kù)中,第一范式(1NF)是對(duì)關(guān)系模式的基本要求,不滿足
第一范式(1NF)的數(shù)據(jù)庫(kù)就不是關(guān)系數(shù)據(jù)庫(kù)。所謂第一范式(1NF)是指數(shù)據(jù)庫(kù)
表的每一列都是不可分割的基本數(shù)據(jù)項(xiàng),同一列中不能有多個(gè)值,即實(shí)體中的某
個(gè)屬性不能有多個(gè)值或者不能有重復(fù)的屬性。如果出現(xiàn)重復(fù)的屬性,就可能需要
定義一個(gè)新的實(shí)體,新的實(shí)體由重復(fù)的屬性構(gòu)成,新實(shí)體與原實(shí)體之間為一對(duì)多
關(guān)系。在第一范式(1NF)中表的每一行只包含一個(gè)實(shí)例的信息。例如,對(duì)于圖
3-2中的員工信息表,不能將員工信息都放在一列中顯示,也不能將其中的兩列
或多列在一列中顯示;員工信息表的每一行只表示一個(gè)員工的信息,一個(gè)員工的
信息在表中只出現(xiàn)一次。簡(jiǎn)而言之,第一范式就是無重復(fù)的列。
2第二范式(2NF)
第二范式(2NF)是在第一范式(1NF)的基礎(chǔ)上建立起來的,即滿足第二范式(2NF)
必須先滿足第一范式(INF)。第二范式(2NF)要求數(shù)據(jù)庫(kù)表中的每個(gè)實(shí)例或行
必須可以被惟一地區(qū)分。為實(shí)現(xiàn)區(qū)分通常需要為表加上一個(gè)列,以存儲(chǔ)各個(gè)實(shí)例
的惟一標(biāo)識(shí)。如圖3-2員工信息表中加上了員工編號(hào)(emp_id)歹山因?yàn)槊總€(gè)
員工的員工編號(hào)是惟一的,因此每個(gè)員工可以被惟一區(qū)分。這個(gè)惟一屬性列被稱
為主關(guān)鍵字或主鍵、主碼。第二范式(2NF)要求實(shí)體的屬性完全依賴于主關(guān)鍵
字。所謂完全依賴是指不能存在僅依賴主關(guān)鍵字一部分的屬性,如果存在,那么
這個(gè)屬性和主關(guān)鍵字的這一部分應(yīng)該分離出來形成一個(gè)新的實(shí)體,新實(shí)體與原實(shí)
體之間是一對(duì)多的關(guān)系。為實(shí)現(xiàn)區(qū)分通常需要為表加上一個(gè)列,以存儲(chǔ)各個(gè)實(shí)例
的惟一標(biāo)識(shí)。簡(jiǎn)而言之,第二范式就是非主屬性非部分依賴于主關(guān)鍵字。
3第三范式(3NF)
滿足第三范式(3NF)必須先滿足第二范式(2NF)。簡(jiǎn)而言之,第三范式(3NF)
要求一個(gè)數(shù)據(jù)庫(kù)表中不包含已在其它表中已包含的非主關(guān)鍵字信息。例如,存在
一個(gè)部門信息表,其中每個(gè)部門有部門編號(hào)(dept_id)、部門名稱、部門簡(jiǎn)介
等信息。那么在圖3-2的員工信息表中列出部門編號(hào)后就不能再將部門名稱、部
門簡(jiǎn)介等與部門有關(guān)的信息再加入員工信息表中。如果不存在部門信息表,則根
據(jù)第三范式(3NF)也應(yīng)該構(gòu)建它,否則就會(huì)有大量的數(shù)據(jù)冗余。簡(jiǎn)而言之,第
三范式就是屬性不依賴于其它非主屬性。
例子:
第一范式(1NF):數(shù)據(jù)庫(kù)表中的字段都是單一屬性的,不可再分。這個(gè)單一屬
性由基本類型構(gòu)成,包括整型、實(shí)數(shù)、字符型、邏輯型、日期型等。
例如,如下的數(shù)據(jù)庫(kù)表是符合第一范式的:字段1字段2字段3字段4
而這樣的數(shù)據(jù)庫(kù)表是不符合第一范式的:字段1字段2字段3字段4字段31
字段32
很顯然,在當(dāng)前的任何關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(S)中,傻瓜也不可能做出不符合
第一范式的數(shù)據(jù)庫(kù),因?yàn)檫@些S不允許你把數(shù)據(jù)庫(kù)表的一列再分成二列或多列。
因此,你想在現(xiàn)有的S中設(shè)計(jì)出不符合第一范式的數(shù)據(jù)庫(kù)都是不可能的。
第二范式(2NF):數(shù)據(jù)庫(kù)表中不存在非關(guān)鍵字段對(duì)任一候選關(guān)鍵字段的部分函
數(shù)依賴(部分函數(shù)依賴指的是存在組合關(guān)鍵字中的某些字段決定非關(guān)鍵字段的情
況),也即所有非關(guān)鍵字段都完全依賴于任意一組候選關(guān)鍵字。
假定選課關(guān)系表為Ss(學(xué)號(hào),姓名,年齡,課程名稱,成績(jī),學(xué)分),關(guān)鍵字為
組合關(guān)鍵字(學(xué)號(hào),課程名稱),因?yàn)榇嬖谌缦聸Q定關(guān)系:
(學(xué)號(hào),課程名稱)一(姓名,年齡,成績(jī),學(xué)分)
這個(gè)數(shù)據(jù)庫(kù)表不滿足第二范式,因?yàn)榇嬖谌缦聸Q定關(guān)系:
(課程名稱)f(學(xué)分)
(學(xué)號(hào))f(姓名,年齡)
即存在組合關(guān)鍵字中的字段決定非關(guān)鍵字的情況。
由于不符合2NF,這個(gè)選課關(guān)系表會(huì)存在如下問題:1)數(shù)據(jù)冗余:同一門課程
由n個(gè)學(xué)生選修,”學(xué)分”就重復(fù)n-l次;同一個(gè)學(xué)生選修了門課程,姓名和年
齡就重復(fù)了T次。2)更新異常:若調(diào)整了某門課程的學(xué)分,數(shù)據(jù)表中所有行的”
學(xué)分”值都要更新,否則會(huì)出現(xiàn)同一門課程學(xué)分不同的情況。3)插入異常:假
設(shè)要開設(shè)一門新的課程,暫時(shí)還沒有人選修。由于還沒有“學(xué)號(hào)"關(guān)鍵字,課程
名稱和學(xué)分也無法記錄入數(shù)據(jù)庫(kù)。4)刪除異常:假設(shè)一批學(xué)生已經(jīng)完成課程的
選修,這些選修記錄就應(yīng)該從數(shù)據(jù)庫(kù)表中刪除。但是,與此同時(shí),課程名稱和學(xué)
分信息也被刪除了。很顯然,這也會(huì)導(dǎo)致插入異常。
把選課關(guān)系表Ss改為如下三個(gè)表:
學(xué)生:Sn(學(xué)號(hào),姓名,年齡);
課程:s(課程名稱,學(xué)分);
選課關(guān)系:Ss(學(xué)號(hào),課程名稱,成績(jī))。
這樣的數(shù)據(jù)庫(kù)表是符合第二范式的,消除了數(shù)據(jù)冗余、更新異常、插入異常和刪
除異常。
另外,所有單關(guān)鍵字的數(shù)據(jù)庫(kù)表都符合第二范式,因?yàn)椴豢赡艽嬖诮M合關(guān)鍵字。
第三范式(3NF):在第二范式的基礎(chǔ)上,數(shù)據(jù)表中如果不存在非關(guān)鍵字段對(duì)任
一候選關(guān)鍵字段的傳遞函數(shù)依賴則符合第三范式。所謂傳遞函數(shù)依賴,指的是如
果存在"A一—“的決定關(guān)系,則傳遞函數(shù)依賴于A。因此,滿足第三范式的
數(shù)據(jù)庫(kù)表應(yīng)該不存在如下依賴關(guān)系:關(guān)鍵字段一非關(guān)鍵字段X—非關(guān)鍵字段
y
假定學(xué)生關(guān)系表為Sn(學(xué)號(hào),姓名,年齡,所在口學(xué)院口,學(xué)院地點(diǎn),學(xué)院電
話),關(guān)鍵字為單一關(guān)鍵字“學(xué)號(hào)”,因?yàn)榇嬖谌缦聸Q定關(guān)系:
(學(xué)號(hào))一(姓名,年齡,所在口學(xué)院口,學(xué)院□地點(diǎn),口學(xué)院口電話)
這個(gè)數(shù)據(jù)庫(kù)是符合2NF的,但是不符合3NF,因?yàn)榇嬖谌缦聸Q定關(guān)系:
(學(xué)號(hào))一(所在口學(xué)院口)一(口學(xué)院□地點(diǎn),口學(xué)院口電話)
即存在非關(guān)鍵字段”口學(xué)院□地點(diǎn)“、“□學(xué)院口電話”對(duì)關(guān)鍵字段“學(xué)號(hào)”的
傳遞函數(shù)依賴。
它也會(huì)存在數(shù)據(jù)冗余、更新異常、插入異常和刪除異常的情況,讀者可自行分析
得知。
把學(xué)生關(guān)系表分為如下兩個(gè)表:
學(xué)生:(學(xué)號(hào),姓名,年齡,所在□學(xué)院□);
□學(xué)院□:(□學(xué)院口,地點(diǎn),電話)。
這樣的數(shù)據(jù)庫(kù)表是符合第三范式的,消除了數(shù)據(jù)冗余、更新異常、插入異常和刪
除異常。
鮑依斯-科得范式(BCNF):在第三范式的基礎(chǔ)上,數(shù)據(jù)庫(kù)表中如果不存在任何
字段對(duì)任一候選關(guān)鍵字段的傳遞函數(shù)依賴則符合BCNF.
假設(shè)倉(cāng)庫(kù)管理關(guān)系表為Ssanag(倉(cāng)庫(kù),存儲(chǔ)物品,管理員,數(shù)量),且有一個(gè)管
理員只在一個(gè)倉(cāng)庫(kù)工作;一個(gè)倉(cāng)庫(kù)可以存儲(chǔ)多種物品。這個(gè)數(shù)據(jù)庫(kù)表中存在如下
決定關(guān)系:
(倉(cāng)庫(kù),存儲(chǔ)物品)一(管理員,數(shù)量)
(管理員,存儲(chǔ)物品)一(倉(cāng)庫(kù),數(shù)量)
所以,(倉(cāng)庫(kù),存儲(chǔ)物品)和(管理員,存儲(chǔ)物品)都是Ssanag的候選關(guān)鍵字,表
中的唯一非關(guān)鍵字段為數(shù)量,它是符合第三范式的。但是,由于存在如下決定關(guān)
系:
(倉(cāng)庫(kù))一(管理員)
(管理員)一(倉(cāng)庫(kù))
即存在關(guān)鍵字段決定關(guān)鍵字段的情況,所以其不符合BCNF范式。它會(huì)出現(xiàn)如下
異常情況:1)刪除異常:當(dāng)倉(cāng)庫(kù)被清空后,所有“存儲(chǔ)物品“和“數(shù)量”信息
被刪除的同時(shí),“倉(cāng)庫(kù)”和“管理員”信息也被刪除了。2)插入異常:當(dāng)倉(cāng)庫(kù)
沒有存儲(chǔ)任何物品時(shí),無法給倉(cāng)庫(kù)分配管理員。3)更新異常:如果倉(cāng)庫(kù)換了管
理員,則表中所有行的管理員都要修改。
把倉(cāng)庫(kù)管理關(guān)系表分解為二個(gè)關(guān)系表:
倉(cāng)庫(kù)管理:Ssanag(倉(cāng)庫(kù),管理員);
倉(cāng)庫(kù):Ss(倉(cāng)庫(kù),存儲(chǔ)物品,數(shù)量)。
這樣的數(shù)據(jù)庫(kù)表是符合BCNF范式的,消除了刪除異常、插入異常和更新異常。
簡(jiǎn)言之?dāng)?shù)據(jù)庫(kù)五大范式:
第一范式:對(duì)于表中的每一行,必須且僅僅有唯i的行值.在一行中的每一列僅
有唯一的值并且具有原子性.
(第一范式是通過把重復(fù)的組放到每個(gè)獨(dú)立的表中,把這些表通過一對(duì)多關(guān)聯(lián)聯(lián)
系起來這種方式來消除重復(fù)組的)
第二范式:第二范式要求非主鍵列是主鍵的子集,非主鍵列活動(dòng)必須完全依賴整
個(gè)主鍵。主鍵必須有唯一性的元素,一個(gè)主鍵可以由一個(gè)或更多的組成唯一值的
列組成。一旦創(chuàng)建,主鍵無法改變,外鍵關(guān)聯(lián)一個(gè)表的主鍵。主外鍵關(guān)聯(lián)意味著
一對(duì)多的關(guān)系.(第二范式處理冗余數(shù)據(jù)的刪除問題。當(dāng)某張表中的信息依賴于
該表中其它的不是主鍵部分的列的時(shí)候,通常會(huì)違反第二范式)
第三范式:第三范式要求非主鍵列互不依賴.(第三范式規(guī)則查找以消除沒有直
接依賴于第一范式和第二范式形成的表的主鍵的屬性。我們?yōu)闆]有與表的主鍵關(guān)
聯(lián)的所有信息建立了一張新表。每張新表保存了來自源表的信息和它們所依賴的
主鍵)
第四范式:第四范式禁止主鍵列和非主鍵列一對(duì)多關(guān)系不受約束
第五范式:第五范式將表分割成盡可能小的塊,為了排除在表中所有的冗余。
2,索引:
什么叫revisedkeyindex?
反鍵索引是B*Tree索引的一個(gè)分支,它的設(shè)計(jì)是為了運(yùn)用在某些特定的環(huán)境下
的。Oracle推出它的主要目的就是為了降低在并行服務(wù)器(OracleParallel
Server)環(huán)境下索引葉塊的爭(zhēng)用。當(dāng)B*Tree索引中有一列是由遞增的序列號(hào)產(chǎn)
生的話,那么這些索引信息基本上分布在同一個(gè)葉塊,當(dāng)用戶修改或訪問相似的
列時(shí),索引塊很容易產(chǎn)生爭(zhēng)用。反向索引中的索引碼將會(huì)被分布到各個(gè)索引塊中,
減少了爭(zhēng)用.
例子:有一個(gè)字段id,他的值落在一個(gè)很小的區(qū)間,比如從9000-9999,如果建
b-tree索引,那么值過于緊密,反鍵的原理是把值取反,那么id的區(qū)間就從
0009-9999,區(qū)間就被放大,這個(gè)時(shí)候通過索引來查找數(shù)據(jù)效率會(huì)比較高(oracle
這么說的)。
好處是:解決了樹的傾斜問題,而且可以解決在大量10操作的情況下,防止硬盤
在某個(gè)區(qū)域操作過于頻繁,引起“熱點(diǎn)”問題。
樹的分支:因?yàn)樗饕话闶前礃溥@個(gè)數(shù)據(jù)結(jié)構(gòu)來組織,所以有很多分支,把不同
類別或范圍的數(shù)據(jù)存放在分支里,在符合條件的分支里查詢比在全表查詢效率高
很多。
樹的傾斜:樹的某個(gè)分支過與龐大,而其他分支內(nèi)容卻很少,這樣的索引非常不
健康的,查詢速度也很慢,如上面的示例數(shù)據(jù),都在10000-20000的分支,而
20000-30000或者以上的分支是空的。反轉(zhuǎn)后把這些數(shù)據(jù)均勻分布到不同的分
支,可以使索引更加健康,也更有效率。
熱點(diǎn)問題:由于系統(tǒng)在表數(shù)據(jù)的增刪改查的同時(shí),同時(shí)要承擔(dān)索引開支,而這主
要是硬盤的10操作,如果樹是傾斜的,而且數(shù)據(jù)的增加是按一定順序增長(zhǎng)的,
這種情況會(huì)導(dǎo)致硬盤對(duì)某一固定區(qū)域操作頻繁,會(huì)出現(xiàn)熱點(diǎn)問題,而且出現(xiàn)瓶頸。
Oracle五種索引:
1)b*treeindex:幾乎所有的關(guān)系型數(shù)據(jù)庫(kù)中都有b*tree類型索引,也是被最
多使用的。其樹結(jié)構(gòu)與二叉樹比較類似,根據(jù)rid快速定位所訪問的行。B-Tree
索引是基于二叉樹的,由分支塊(branchblock)和葉塊(leafblock)組成。
在樹結(jié)構(gòu)中,位于最底層底塊被稱為葉塊,包含每個(gè)被索引列的值和行所對(duì)應(yīng)的
rowido在葉節(jié)點(diǎn)的上面是分支塊,用來導(dǎo)航結(jié)構(gòu),包含了索引列(關(guān)鍵字)范
圍和另一索引塊的地址。
2)反向索引:反轉(zhuǎn)了b*tree索引碼中的字節(jié),是索引條目分配更均勻,多用于
并行服務(wù)器環(huán)境下,用于減少索引葉的競(jìng)爭(zhēng)。反向索引又一個(gè)缺點(diǎn)就是不能在
所有使用常規(guī)索引的地方使用。在范圍搜索中其不能被使用。
3)降序索引:8i中新出現(xiàn)的索引類型,針對(duì)逆向排序的查詢。
4)位圖索引:使用位圖來管理與數(shù)據(jù)行的對(duì)應(yīng)關(guān)系,多用于OLAP系統(tǒng)。位圖
索引最好用于低cardinality列(即列的唯一值除以行數(shù)為一個(gè)很小的值,接近
零),例如又一個(gè)“性別”列,列值有“Male”,“Female”,“Null”等3
種,但一共有300萬條記錄,那么3/3000000約等于0,這種情況下最適合用位
圖索引。位圖以一種壓縮格式存放,因此占用的磁盤空間比B-Tree索引要小得
多。
5)函數(shù)索弓|:這種索引中保存了數(shù)據(jù)列基于function返回的值,在select*from
tablewherefunction(column)=value這種類型的語句中起作用?;诤瘮?shù)的
索引也是8i以來的新產(chǎn)物,它有索引計(jì)算列的能力,它易于使用并且提供計(jì)算
好的值,在不修改應(yīng)用程序的邏輯上提高了查詢性能。使用基于函數(shù)的索引有幾
個(gè)先決條件:
(1)必須擁有QUERYREWRITE(本模式下)或GLOBALQUERYREWRITE(其他模
式下)權(quán)限。
(2)必須使用基于成本的優(yōu)化器,基于規(guī)則的優(yōu)化器將被忽略。
(3)必須設(shè)置以下兩個(gè)系統(tǒng)參數(shù):
QUERY_REWRITE_ENABLED=TRUE
QUERY_REWRITE_INTEGRITY=TRUSTED
可以通過altersystemset,altersessionset在系統(tǒng)級(jí)或線程級(jí)設(shè)置,也可
以通過在init.ora添加實(shí)現(xiàn)。
五種索引的創(chuàng)建:
(1)*Tree索引。
Createindexindexnameontablename(columnname[columnname...1)
(2)反向索引。
Createindexindexnameontablename(columnname[columnname...])reverse
(3)降序索引。
Createindexindexnameontablename(columnnameDESC[columnname...1)
(4)位圖索引。
CreateBITMAPindexindexnameontablename(columnname[columnname...])
(5)函數(shù)索引。
Createindexindexnameontablename(functionname(columnname))
注意:創(chuàng)建索引后分析要索引才能起作用。
五種索引的使用場(chǎng)所:
(1)B*Tree索引。
常規(guī)索引,多用于01tp系統(tǒng),快速定位行,應(yīng)建立于高cardinality列(即列
的唯一值除以行數(shù)為一個(gè)很大的值,存在很少的相同值)。
(2)反向索引。
B*Tree的衍生產(chǎn)物,應(yīng)用于特殊場(chǎng)合,在。ps環(huán)境加序列增加的列上建立,不
適合做區(qū)域掃描。
(3)降序索引。
B*Tree的衍生產(chǎn)物,應(yīng)用于有降序排列的搜索語句中,索引中儲(chǔ)存了降序排列
的索引碼,提供了快速的降序搜索。
(4)位圖索引。
位圖方式管理的索引,適用于OLAP(在線分析)和DSS(決策處理)系統(tǒng),應(yīng)建
立于低cardinality歹U,適合集中讀取,不適合插入和修改,提供比B*Tree索
引更節(jié)省的空間。
(5)函數(shù)索引。
B*Tree的衍生產(chǎn)物,應(yīng)用于查詢語句條件列上包含函數(shù)的情況,索引中儲(chǔ)存了
經(jīng)過函數(shù)計(jì)算的索引碼值??梢栽诓恍薷膽?yīng)用程序的基礎(chǔ)上能提高查詢效率。
索引不管用的時(shí)候:
(1)RBO&CBOo
Oracle有兩種執(zhí)行優(yōu)化器,一種是RB0(RuleBasedOptimizer)基于規(guī)則的優(yōu)
化器,這種優(yōu)化器是基于sql語句寫法選擇執(zhí)行路徑的;另一種是CBO(Cost
BasedOptimizer)基于規(guī)則的優(yōu)化器,這種優(yōu)化器是Oracle根據(jù)統(tǒng)計(jì)分析信息
來選擇執(zhí)行路徑,如果表和索引沒有進(jìn)行分析,Oracle將會(huì)使用RBO代替CBO;
如果表和索引很久未分析,CBO也有可能選擇錯(cuò)誤執(zhí)行路徑,不過CBO是Oracle
發(fā)展的方向,自8i版本來已經(jīng)逐漸取代RBO.
(2)AUTOTRACEo
要看索引是否被使用我們要借助Oracle的一個(gè)叫做AUTOTRACE功能,它顯示了
sql語句的執(zhí)行路徑,我們能看到Oracle內(nèi)部是怎么執(zhí)行sql的,這是一個(gè)非
常好的輔助工具,在sql調(diào)優(yōu)里廣泛被運(yùn)用。我們來看一下怎么運(yùn)用AUTOTRACE:
①由于AUTOTRACE自動(dòng)為用戶指定了ExecutionPlan,因此該用戶使用
AUTOTRACE前必須已經(jīng)建立了PLANJTABLE。如果沒有的話,請(qǐng)運(yùn)行utlxplan.sql
腳本(它在$ORACLE_HOME/rdbms/admin目錄中)。
②AUTOTRACE可以通過運(yùn)行plustrce.sql腳本(它在
$ORACLE_HOME/sqlplus/admin目錄中)來設(shè)置,用sys用戶登陸然后運(yùn)行
plustrce.sql后會(huì)建立一個(gè)PLUSTRACE角色,然后給相關(guān)用戶授予PLUSTRACE
角色,然后這些用戶就可以使用AUTOTRACE功能了。
③AUTOTRACE的默認(rèn)使用方法是setautotraceon,但是這方法不總是適合各
種場(chǎng)合,特別當(dāng)返回行數(shù)很多的時(shí)候。Setautotracetraceonly提供了只查看
統(tǒng)計(jì)信息而不查詢數(shù)據(jù)的功能。
3,死鎖
是指兩個(gè)或兩個(gè)以上的進(jìn)程在執(zhí)行過程中,因爭(zhēng)奪資源而造成的利互相等待的
現(xiàn)象,若無外力作用,它們都將無法推進(jìn)下去.此時(shí)稱系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)
生了死鎖,這些永遠(yuǎn)在互相等待的進(jìn)程稱為死鎖進(jìn)程.由于資源占用是互斥的,當(dāng)
某個(gè)進(jìn)程提出申請(qǐng)資源后,使得有關(guān)進(jìn)程在無外力協(xié)助下,永遠(yuǎn)分配不到必需的
資源而無法繼續(xù)運(yùn)行,這就產(chǎn)生了一種特殊現(xiàn)象死鎖。
產(chǎn)生死鎖的原因主要是:
(1)因?yàn)橄到y(tǒng)資源不足。
(2)進(jìn)程運(yùn)行推進(jìn)的順序不合適。
(3)資源分配不當(dāng)?shù)取?/p>
如果系統(tǒng)資源充足,進(jìn)程的資源請(qǐng)求都能夠得到滿足,死鎖出現(xiàn)的可能性就很低,
否則就會(huì)因爭(zhēng)奪有限的資源而陷入死鎖。其次,進(jìn)程運(yùn)行推進(jìn)順序與速度不同,
也可能產(chǎn)生死鎖。
產(chǎn)生死鎖的四個(gè)必要條件:
(1)互斥條件:一個(gè)資源每次只能被一個(gè)進(jìn)程使用。
(2)請(qǐng)求與保持條件:一個(gè)進(jìn)程因請(qǐng)求資源而阻塞時(shí),對(duì)已獲得的資源保持不
放。
(3)不剝奪條件:進(jìn)程已獲得的資源,在末使用完之前,不能強(qiáng)行剝奪。
(4)循環(huán)等待條件:若干進(jìn)程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系。
這四個(gè)條件是死鎖的必要條件,只要系統(tǒng)發(fā)生死鎖,這些條件必然成立,而只要
上述條件之一不滿足,就不會(huì)發(fā)生死鎖。
例子:
運(yùn)行事務(wù)1的線程T1具有學(xué)生基本信息表上的排它鎖。運(yùn)行事務(wù)2的線程T2
具有系部表上的排它鎖,并且之后需要學(xué)生基本信息表上的鎖。事務(wù)2無法獲
得這一鎖,因?yàn)槭聞?wù)1已擁有它。事務(wù)2被阻塞,等待事務(wù)1。然后,事務(wù)1需
要系部表的鎖,但無法獲得鎖,因?yàn)槭聞?wù)2將它鎖定了。事務(wù)在提交或回滾之
前不能釋放持有的鎖。因?yàn)槭聞?wù)需要對(duì)方控制的鎖才能繼續(xù)操作,所以它們不能
提交或回滾。
4,BYTE口buf=BYTE[1024];in.read(buf);
in是一個(gè)接收?qǐng)D像數(shù)據(jù)的網(wǎng)絡(luò)10流,請(qǐng)指出這段代碼有什么問題,并請(qǐng)用java
代碼改進(jìn)它。
答:流操作都可能會(huì)跑出lOException,應(yīng)該對(duì)該異常進(jìn)行捕獲處理。且當(dāng)buf
沒有被初始化的時(shí)候使用會(huì)拋出NullPointerExceptiono
byte[]buf=newbyte[1024];
try(
System,in.read(buf);
}catch(lOExceptione){
e.printStackTrace();
5,設(shè)計(jì)模式:Facade
你正在分析一個(gè)子系統(tǒng)的接口,發(fā)現(xiàn)接口很多。然后你同事勸你用Fecade,問
你用Fecade有什么好處?
Facade(外觀)模式為子系統(tǒng)中的各類(或結(jié)構(gòu)與方法)提供一個(gè)簡(jiǎn)明一致的界
面,隱藏子系統(tǒng)的復(fù)雜性,使子系統(tǒng)更加容易使用。Facade模式正是這樣一個(gè)
“門面”:我們本來需要與后臺(tái)的多個(gè)類或者接口打交道,而Facade模式是客
戶端和后臺(tái)之間插入一個(gè)中間層——門面,這個(gè)門面跟后臺(tái)的多個(gè)類或接口打交
道,而客戶端只需要跟門面打交道即可一。使用Facade模式可以說是后臺(tái)設(shè)計(jì)和
編碼人員的一個(gè)必備素質(zhì)。我不止碰到過一個(gè)這樣的后臺(tái)開發(fā)人員,他們認(rèn)為只
要把后臺(tái)功能完成了就萬事大吉,而沒有站在后臺(tái)使用者的角度來看一看自己寫
出來的代碼。其實(shí),我們寫出來的后臺(tái)代碼是要給別人使用的,所以我們提供給
使用者的接口要越簡(jiǎn)單越好,這不單是對(duì)使用者好,同時(shí)對(duì)開發(fā)者也是好處多多
的,至少你的接口簡(jiǎn)單了,你和使用者的交流就容易了。
區(qū)分Fa9ade模式、Adapter模式、Bridge模式與Decorator模式。Facade模式
注重簡(jiǎn)化接口,Adapter模式注重轉(zhuǎn)換接口,Bridge模式注重分離接口(抽象)
與其實(shí)現(xiàn),Decorator模式注重穩(wěn)定接口的前提下為對(duì)象擴(kuò)展功能
在遇到以下情況使用Facade模式:
1)當(dāng)你要為一個(gè)復(fù)雜子系統(tǒng)提供一個(gè)簡(jiǎn)單接口時(shí)。子系統(tǒng)往往因?yàn)椴粩嘌莼?/p>
變得越來越復(fù)雜。大多數(shù)模式使用時(shí)都會(huì)產(chǎn)生更多更小的類。這使得子系統(tǒng)更具
可重用性,也更容易對(duì)子系統(tǒng)進(jìn)行定制,但這也給那些不需要定制子系統(tǒng)的用戶
帶來一些使用上的困難。Facade可以提供一個(gè)簡(jiǎn)單的缺省視圖,這一視圖對(duì)
大多數(shù)用戶來說已經(jīng)足夠,而那些需要更多的可定制性的用戶可以越過Facade
層。
2)客戶程序與抽象類的實(shí)現(xiàn)部分之間存在著很大的依賴性。引入Facade將這個(gè)
子系統(tǒng)與客戶以及其他的子系統(tǒng)分離,可以提高子系統(tǒng)的獨(dú)立性和可移植性。
3)當(dāng)你需要構(gòu)建一個(gè)層次結(jié)構(gòu)的子系統(tǒng)時(shí),使用Facade模式定義子系統(tǒng)中每層
的入口點(diǎn),如果子系統(tǒng)之間是相互依賴的,你可以讓它們僅通過Facade進(jìn)行通
訊,從而簡(jiǎn)化了它們之間的依賴關(guān)系。
優(yōu)缺點(diǎn):
1)它對(duì)客戶屏蔽子系統(tǒng)組件,因而減少了客戶處理的對(duì)象的數(shù)目并使得子系統(tǒng)
使用起來更加方便。
2)它實(shí)現(xiàn)了子系統(tǒng)與客戶之間的松耦合關(guān)系,而子系統(tǒng)內(nèi)部的功能組件往往是
緊耦合的。
松耦合關(guān)系使得子系統(tǒng)的組件變化不會(huì)影響到它的客戶。Facade模式有助于建
立層次結(jié)構(gòu)系統(tǒng),也有助于對(duì)對(duì)象之間的依賴關(guān)系分層。Facade模式可以消除
復(fù)雜的循環(huán)依賴關(guān)系。這一點(diǎn)在客戶程序與子系統(tǒng)是分別實(shí)現(xiàn)的時(shí)候尤為重要。
在大型軟件系統(tǒng)中降低編譯依賴性至關(guān)重要。在子系統(tǒng)類改變時(shí),希望盡量減少
重編譯工作以節(jié)省時(shí)間。用Facade可以降低編譯依賴性,限制重要系統(tǒng)中較小
的變化所需的重編譯工作。Facade模式同樣也有利于簡(jiǎn)化系統(tǒng)在不同平臺(tái)之間
的移植過程,因?yàn)榫幾g一個(gè)子系統(tǒng)?般不需要編譯所有其他的子系統(tǒng)。
6,冷備份與熱備份
冷備份:
冷備份發(fā)生在數(shù)據(jù)庫(kù)已經(jīng)正常關(guān)閉的情況下,當(dāng)正常關(guān)閉時(shí)會(huì)提供給我們一個(gè)完
整的數(shù)據(jù)庫(kù)。冷備份是將關(guān)鍵性文件拷貝到另外位置的一種說法。對(duì)于備份
Oracle信息而言,冷備份是最快和最安全的方法。
冷備份的優(yōu)點(diǎn)是:
1.是非常快速的備份方法(只需拷貝文件)
2.容易歸檔(簡(jiǎn)單拷貝即可)
3.容易恢復(fù)到某個(gè)時(shí)間點(diǎn)上(只需將文件再拷貝回去)
4.能與歸檔方法相結(jié)合,作數(shù)據(jù)庫(kù)“最新狀態(tài)”的恢復(fù)。
5.低度維護(hù),高度安全。
冷備份也有如下不足:
1.單獨(dú)使用時(shí),只能提供到“某一時(shí)間點(diǎn)上”的恢復(fù)。
2.在實(shí)施備份的全過程中,數(shù)據(jù)庫(kù)必須要作備份而不能作其它工作。也就是說,
在冷備份過程中,數(shù)據(jù)庫(kù)必須是關(guān)閉狀態(tài)。
3.若磁盤空間有限,只能拷貝到磁帶等其它外部存儲(chǔ)設(shè)備上,速度會(huì)很慢。
4.不能按表或按用戶恢復(fù)。
如果可能的話(主要看效率),應(yīng)將信息備份到磁盤上,然后啟動(dòng)數(shù)據(jù)庫(kù)(使用
戶可以工作)并將所備份的信息拷貝到磁帶上(拷貝的同時(shí),數(shù)據(jù)庫(kù)也可以工作)。
冷備份中必須拷貝的文件包括:
1.所有數(shù)據(jù)文件
2.所有控制文件
3.所有聯(lián)機(jī)REDOLOG文件
4.Init.ora文件(可選)。
下面是做冷備份的完整例子:
(1)關(guān)閉數(shù)據(jù)庫(kù)$sqldbalmode=y
SQLDBA>connectinternal;
SQLDBA>shutdownnormal;
(2)用拷貝命令備份全部的時(shí)間文件、重做日志文件、控制文件、初始化參數(shù)
文件
SQLDBA>!cp<file><backupdirectory>
(3)重啟Oracle數(shù)據(jù)庫(kù)
$sqldbalmode=y
SQLDBA>connectinternal;
SQLDBA>startup;
熱備份
熱備份是在數(shù)據(jù)庫(kù)運(yùn)行的情況下,采用archivelogmode方式備份數(shù)據(jù)的方法。
所以,如果你有昨天夜里的一個(gè)冷備份而且又有今天的熱備份文件,在發(fā)生問題
時(shí),就可以利用這些資料恢復(fù)更多的信息。
熱備份的要求是:
1.熱備份工作必需要求數(shù)據(jù)庫(kù)在Archivelog方式下操作,在SQLDBA狀態(tài)下用
alterdatabasearchivelogInoarchivelog命令可改變備份的模式。
2.熱備份只能在數(shù)據(jù)庫(kù)不使用或使用率低的情況下進(jìn)行。
3.熱備份需要大量的檔案空間。
一般情況,Oracle以循環(huán)的方式寫入Onlineredolog文件,當(dāng)填滿第一個(gè)redo
log文件后寫第二個(gè),直至最后一個(gè),最后一個(gè)被填滿后,后臺(tái)進(jìn)程LGWR就覆
蓋第一個(gè),在Archivelog方式下,后臺(tái)進(jìn)程ARCH在每一個(gè)redolog文件被覆
蓋前,給它作一個(gè)拷貝,一般,這些文檔的redolog文件被寫入磁盤或磁帶中。
如果磁盤空間夠用,建議使用磁盤,這樣可大大減少完成備份所需的時(shí)間。
在作熱備份之前,要將config,ora文件中的log_archive_start設(shè)為true將
log_archive_dest一旦數(shù)據(jù)庫(kù)運(yùn)行在archivelog狀態(tài)下,就可以做備份了。
熱備份的命令文件由三部分組成:
1.數(shù)據(jù)文件?個(gè)表空間一個(gè)表空間地備份。
(1)設(shè)置表空間為備份狀態(tài)
(2)備份表空間的數(shù)據(jù)文件
(3)恢復(fù)表空間為正常狀態(tài)
2.備份歸檔log文件。
(1)臨時(shí)停止歸檔進(jìn)程
(2)log下那些在archiveredolog目標(biāo)目錄中的文件
(3)重新啟動(dòng)archive進(jìn)程
(4)備份歸檔的redolog文件
3.用alterdatabasebackupcontrolfile命令來備份拷貝文件
熱備份的優(yōu)點(diǎn)是:
1.可在表空間或數(shù)據(jù)文件級(jí)備份,備份時(shí)間短。
2.備份時(shí)數(shù)據(jù)庫(kù)仍可使用。
3.可達(dá)到秒級(jí)恢復(fù)(恢復(fù)到某一時(shí)間點(diǎn)上)。
4.可對(duì)幾乎所有數(shù)據(jù)庫(kù)實(shí)體作恢復(fù)。
5.恢復(fù)是快速的,在大多數(shù)情況下在數(shù)據(jù)庫(kù)仍工作時(shí)恢復(fù)。
熱備份的不足是:
1.不能出錯(cuò),否則后果嚴(yán)重。
2.若熱備份不成功,所得結(jié)果不可用于時(shí)間點(diǎn)的恢復(fù)。
3.因難于維護(hù),所以要特別仔細(xì)小心,不允許“以失敗而告終”。
7,你必須利用備份恢復(fù)數(shù)據(jù)庫(kù),但是你沒有控制文件,該如何解決問題呢?
重建控制文件,用帶backupcontrolfile子句的recover命令恢復(fù)數(shù)據(jù)庫(kù)。
recoverdbnameusingbackupcontrolfile;
8,如何轉(zhuǎn)換init.ora到spfile?
createspfilefrompfile=,init.ora/;
9,oracle體系結(jié)構(gòu):
Oracle物理結(jié)構(gòu)
由控制文件、數(shù)據(jù)文件、重做日志文件、參數(shù)文件、歸檔文件、密碼文件組成
控制文件:包含維護(hù)和驗(yàn)證數(shù)據(jù)庫(kù)完整性的必要信息、例如,控制文件用于識(shí)別
數(shù)據(jù)文件和重做日志文件,一個(gè)數(shù)據(jù)庫(kù)至少需要一個(gè)控制文件
數(shù)據(jù)文件:存儲(chǔ)數(shù)據(jù)的文件
重做日志文件:含對(duì)數(shù)據(jù)庫(kù)所做的更改記錄,這樣萬一出現(xiàn)故障可以啟用數(shù)據(jù)恢
復(fù)。一個(gè)數(shù)據(jù)庫(kù)至少需要兩個(gè)重做日志文件
參數(shù)文件:定義Oracle例程的特性,例如它包含調(diào)整SGA中一些內(nèi)存結(jié)構(gòu)大小
的參數(shù)
歸檔文件:是重做日志文件的脫機(jī)副本,這些副本可能對(duì)于從介質(zhì)失敗中進(jìn)行恢
復(fù)很必要。
密碼文件:認(rèn)證哪些用戶有權(quán)限啟動(dòng)和關(guān)閉Oracle例程
oracle邏輯結(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í)候指定
oracle內(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í)回收
oracle后臺(tái)進(jìn)程
(數(shù)據(jù)寫進(jìn)程、日志寫進(jìn)程、系統(tǒng)監(jiān)控、進(jìn)程監(jiān)控、檢查點(diǎn)進(jìn)程、歸檔進(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)程:在每次日志切換時(shí)把已滿的日志組進(jìn)行備份或歸檔
服務(wù)進(jìn)程:用戶進(jìn)程服務(wù)。
用戶進(jìn)程:在客戶端,負(fù)責(zé)將用戶的SQL語句傳遞給服務(wù)進(jìn)程,并從服務(wù)器段
拿回查詢數(shù)據(jù)。
OracleInstance
Oracle例程由SGA內(nèi)存結(jié)構(gòu)和用于管理數(shù)據(jù)庫(kù)的后臺(tái)進(jìn)程組成。例程一次只能
打開和使用一個(gè)數(shù)據(jù)庫(kù)。
SCN(SystemChangeNumber):系統(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)志。
實(shí)例和SID的關(guān)系是什么?
經(jīng)常有人問SID是什么?在Oracle系統(tǒng)中SID是一個(gè)經(jīng)常出現(xiàn)的變量,如環(huán)
境變量ORACLE_SID,初始化文件initSID.ora,那究竟什么是SID呢?其實(shí)SID
就是Oracle實(shí)例的標(biāo)識(shí),不同的SID對(duì)應(yīng)不同的內(nèi)存緩沖(SGA)和不同的后臺(tái)
進(jìn)程。這樣一-來我們就可以得當(dāng)在一臺(tái)物理的服務(wù)器上可以有多個(gè)SID的數(shù)據(jù)
庫(kù)實(shí)例
Oracle數(shù)據(jù)庫(kù)和實(shí)例的關(guān)系是什么?
數(shù)據(jù)庫(kù)是由物理文件和存取數(shù)據(jù)文件的實(shí)例組成,當(dāng)存取數(shù)據(jù)文件的實(shí)例是一個(gè)
的時(shí)候,數(shù)據(jù)庫(kù)被稱做單節(jié)點(diǎn)數(shù)據(jù)庫(kù)。這是我們看到的最多的數(shù)據(jù)庫(kù)形式。當(dāng)然
還有一種多節(jié)點(diǎn)數(shù)據(jù)庫(kù),就是一個(gè)以上的實(shí)例共同訪問一個(gè)數(shù)據(jù)庫(kù)(或者說共同
訪問一組數(shù)據(jù)文件),更好的提供穩(wěn)定性和并行處理能力。這在8i中被稱為
OPS(OracleParallelServer),在0racle9i中被稱為RAC(realapplication
cluster)o在這種數(shù)據(jù)庫(kù)中。兩個(gè)/多個(gè)實(shí)例分別在不同服務(wù)器上,所有Oracle
數(shù)據(jù)文件在共享的磁盤陣列上,多個(gè)服務(wù)器上的實(shí)例可以同時(shí)工作,他們通過一
個(gè)內(nèi)部的網(wǎng)絡(luò)進(jìn)行通信。如果一臺(tái)服務(wù)器不能提供服務(wù)的話,另一臺(tái)會(huì)接管它的
工作,特別是在關(guān)鍵的業(yè)務(wù)有很大的潛力。
在運(yùn)行的數(shù)據(jù)庫(kù)中數(shù)據(jù)文件中是不是可能存在沒有被提交的數(shù)據(jù)?
這是可能存在的,因?yàn)橛脩魯?shù)據(jù)文件的數(shù)據(jù)是由DBWR寫入的,DBWR是一個(gè)很底
層的后臺(tái)進(jìn)程,不負(fù)責(zé)與用戶交互。用戶的交互是由LGWR完成的。
在問題10中,如果存在沒有寫入的數(shù)據(jù),那么機(jī)器突然斷電,數(shù)據(jù)完整性會(huì)不
會(huì)損壞?
不會(huì)的,因?yàn)閿?shù)據(jù)庫(kù)的完整性是LGWR來保證的,而且ORACLE保證了DBWR寫入
數(shù)據(jù)文件的任何修改已經(jīng)被記錄在重做日志文件中。當(dāng)系統(tǒng)再次啟動(dòng)的時(shí)候,通
過讀取重做日志文件就可以知道那些數(shù)據(jù)沒有被提交。這時(shí)候ORACLE會(huì)自動(dòng)回
滾那些數(shù)據(jù)。所以說聯(lián)機(jī)日志的損壞,特別是當(dāng)前聯(lián)機(jī)日志的損壞,對(duì)數(shù)據(jù)庫(kù)的
影響是巨大的,可能會(huì)導(dǎo)致數(shù)據(jù)庫(kù)的不完整。
Oracle安裝完成后的初始用戶名與密碼?
sys/change_on_instal1
system/manager
scott/tiger
sysman/oem_temp
倉(cāng)犍Sequence
createsequencezxkincrementby10startwith10maxvalue
1000cycle;
數(shù)據(jù)字典
數(shù)據(jù)字典是ORACLE數(shù)據(jù)庫(kù)的最重要的部分之一,是由一組只讀的表及其視圖所
組成。這些表和視圖是數(shù)據(jù)庫(kù)被建立同時(shí)由數(shù)據(jù)庫(kù)系統(tǒng)建立起來的,起著系統(tǒng)狀
態(tài)的目錄表的作用。數(shù)據(jù)字典描述表、歹U、索引、用戶、訪問權(quán)以及數(shù)據(jù)庫(kù)中的
其它實(shí)體,當(dāng)其中的一個(gè)實(shí)體被建立、修改或取消時(shí),數(shù)據(jù)庫(kù)將自動(dòng)修改數(shù)據(jù)字
典。因此,數(shù)據(jù)字典總是包含著數(shù)據(jù)庫(kù)的當(dāng)前描述,可用SQL存取數(shù)據(jù)字典,由
于數(shù)據(jù)字典為只讀,只允許查詢。數(shù)據(jù)字典中全部基本表和用戶可存取視圖為
ORACLE用戶SYS所持有,所有對(duì)象包含在SYS模式中。當(dāng)ORACLE數(shù)據(jù)庫(kù)系統(tǒng)啟
動(dòng)后,數(shù)據(jù)字典總是可用,它駐留在SYSTEM表空間中。數(shù)據(jù)字典包含視圖集,
在許多情況下,每一視圖集有三種視圖包含有類似信息,彼此以前綴相區(qū)別,前
綴為USER、ALL和DBA。
10,給出兩個(gè)檢查表結(jié)構(gòu)的方法
1)DESCRIBE命令
sql>descdbnarne;
2)DBMS_METADATA.GET_DDL包
1b怎樣查看數(shù)據(jù)庫(kù)引擎的報(bào)錯(cuò)
alertlog.
12,比較truncate和delete命令
1、在功能上,truncate是清空一個(gè)表的內(nèi)容,它相當(dāng)于deletefromtable_name0
2、delete是dml操作,truncate是ddl操作;因此,用delete刪除整個(gè)表的
數(shù)據(jù)H寸,會(huì)產(chǎn)生大量的roolback,占用很多的rollbacksegments,而truncate
不會(huì)。
3、在內(nèi)存中,用delete刪除數(shù)據(jù),表空間中其被刪除數(shù)據(jù)的表占用的空間還在,
便于以后的使用,另外它是“假相”的刪除,相當(dāng)于windows中用delete刪除
數(shù)據(jù)是把數(shù)據(jù)放到回收站中,還可以恢復(fù),當(dāng)然如果這個(gè)時(shí)候重新啟動(dòng)系統(tǒng)(OS
或者RDBMS),它也就不能恢復(fù)了!而用truncate清除數(shù)據(jù),內(nèi)存中表空間中
其被刪除數(shù)據(jù)的表占用的空間會(huì)被立即釋放,相當(dāng)于windows中用shift+delete
刪除數(shù)據(jù),不能夠恢復(fù)!
4、truncate調(diào)整highwatermark而delete不;truncate之后,TABLE的HWM
退回到INITIAL和NEXT的位置(默認(rèn))delete則不可以。
5、truncate只能對(duì)TABLE,delete可以是table,view,synonym。
6、TRUNCATETABLE的對(duì)象必須是本模式下的,或者有dropanytable的權(quán)限而
DELETE則是對(duì)象必須是本模式下的,或被授予DELETEONSCHEMA.TABLE或
DELETEANYTABLE的權(quán)限。
7、在外層中,truncate或者delete后,其占用的空間都將釋放。
8、truncate和delete只刪除數(shù)據(jù),而drop則刪除整個(gè)表(結(jié)構(gòu)和數(shù)據(jù))。
在刪除大數(shù)據(jù)量時(shí)(一個(gè)表中大部分?jǐn)?shù)據(jù)時(shí)),可以采用以下步驟:
1、先將不需要?jiǎng)h除的數(shù)據(jù)復(fù)制到一個(gè)臨時(shí)表中
2、trunctable表
3、將不需要?jiǎng)h除的數(shù)據(jù)復(fù)制回來。
不同:DELETE語句執(zhí)行刪除的過程是每次從表中刪除一行,并且同時(shí)將該行的
的刪除操作作為事務(wù)記錄在日志中保存以便進(jìn)行進(jìn)行回滾操作。TRUNCATETABLE
則一次性地從表中刪除所有的數(shù)據(jù)頁并不把單獨(dú)的刪除操作記錄記入日志保存,
刪除行是不能恢復(fù)的。并且在刪除的過程中不會(huì)激活與表有關(guān)的刪除觸發(fā)器。執(zhí)
行速度快。
truncate的功能可以拆分為:dropping+re-creatingatable,但truncate
的效率要高。一因?yàn)閠runcate無須考慮表索引、約束、觸發(fā)器等的重建。另外
truncate執(zhí)行后,無法回滾(rollback)
HWM(highwatermark,最高水位線):Thehighwatermarkisdividesasegment
intousedblocksandfreeblockSoBlocksbelowthehighwatermark(used
blocks)haveatleastoncecontaineddata.Thisdatamighthavebeen
deleted.SinceOracleknowsthatblocksbeyondthehighwatermarkdon't
havedata,itonlyreadsblocksuptothehighwatermarkinafulltable
scan(FTS).在oraclelOg中增加了調(diào)整HWM的命令:altertablexxxshrink
spaceo
13,歸檔模式與非歸檔模式:
非歸檔模式:只能做冷備份,并且恢復(fù)時(shí)只能做完全備份.最近一次完全備份到系
統(tǒng)出錯(cuò)期間的數(shù)據(jù)不能恢復(fù)。非歸檔模式只能離線備份,而且必須備份所有的數(shù)
據(jù)文件,控制文件,日志文件!
歸檔模式:可以做熱備份,并且可以做增量備份,可以做部分恢復(fù).歸檔模式,可
以在線或者離線備份數(shù)據(jù)庫(kù),可以是全備份或者是部分備份(單個(gè)表空間,數(shù)據(jù)
文件).歸檔模式能夠做到零數(shù)據(jù)丟失。當(dāng)然歸檔會(huì)消耗一些存儲(chǔ)和性能資源。
歸檔模式,數(shù)據(jù)庫(kù)的日志可以長(zhǎng)時(shí)間保存,有了歸檔日志,可以隨時(shí)恢復(fù)歸檔日
期內(nèi)任何時(shí)間點(diǎn)的數(shù)據(jù),便于數(shù)據(jù)庫(kù)數(shù)據(jù)安全保護(hù)。
RMAN備份:必須使用archivelog,對(duì)于是否使用ARCHIVELOG,得看應(yīng)用具體情況
的.數(shù)據(jù)庫(kù)歸檔模式,可以使用rman或手工在線備份數(shù)據(jù)。
用ARCHIVELOGLIST可以查看期模式狀態(tài)時(shí)歸檔模式還是非歸檔模式.
sql>archiveloglist;
sql>alterdbnamearchivelog;
sql>alterdbnamenoarchivelog;
14,如何建立備份控制文件?
SQL>alterdatabasebackupcontrolfiletotrace;
15,數(shù)據(jù)庫(kù)的狀態(tài):
四種狀態(tài):open,close,mount,nomount
打開數(shù)據(jù)庫(kù):
STARTUPNOMOUNT-啟動(dòng)instance,但是不裝載數(shù)據(jù)庫(kù)
STARTUPMOUNT-啟動(dòng)instance,并裝載數(shù)據(jù)庫(kù),但是不打開數(shù)據(jù)庫(kù)
STARTUPOPEN-啟動(dòng)instance,并裝載數(shù)據(jù)庫(kù),然后打開數(shù)據(jù)庫(kù)
1)啟動(dòng)&裝載&打開&限制僅DBA訪問:STARTUPRESTRICT;
取消:ALTERSYSTEMDISABLERESTRICTEDSESSION;
2)強(qiáng)制啟動(dòng):STARTUPFORCE;
3)只讀方式打開數(shù)據(jù)庫(kù):STARTUPOPENREADONLY;
關(guān)閉數(shù)據(jù)庫(kù):
SHUTDOWNNORMAL;
SHUTDOWNIMMEDIATE;
SHUTDOWNTRANSACTIONAL;
SHUTDOWNABORT;
16,解釋$ORACLE_HOME和$ORACLE_BASE的區(qū)別?
ORACLE_BASE是orac1e的根目錄,ORACLE_HOME是orac1e產(chǎn)品的目錄。
17,如何判斷數(shù)據(jù)庫(kù)的時(shí)區(qū)?
SQL>selectdbtimezonefromdual;
SQL>selectsessiontimezonefromdual;
SQL>selectsysdatefromdual;
SQL>selectsystimestampfromdual;
SQL>selectcurrentdatefromdual;
SQL>selectcurrent_timestampfromdual;
18,解釋GLOBAL_NAMES
GLOBAL_NAME:Globalnameofthedatabase,是數(shù)據(jù)庫(kù)的一個(gè)持久性設(shè)置.
GLOBAL_NAMES:用于設(shè)定數(shù)據(jù)庫(kù)鏈接名稱是否必須與遠(yuǎn)程數(shù)據(jù)庫(kù)的GLOBAL_NAME
匹配,薪認(rèn)為falseo如果這個(gè)參數(shù)設(shè)置為TRUE,在建立數(shù)據(jù)庫(kù)鏈接時(shí)就必須用相
同的名字連結(jié)遠(yuǎn)程數(shù)據(jù)庫(kù)。
19,物化視圖:materializedview
Oracle數(shù)據(jù)庫(kù)中有兩種view,一種是存儲(chǔ)為pureSQL,一種是維護(hù)一張表。是
一種特殊的物理表,“物化"(Materialized)視圖是相對(duì)普通視圖而言的。普通
視圖是虛擬表,應(yīng)用的局限性大,任何對(duì)視圖的查詢,Oracle都實(shí)際上轉(zhuǎn)換為
視圖SQL語句的查詢。這樣對(duì)整體查詢性能的提高,并沒有實(shí)質(zhì)上的好處。物化
視圖是包括一個(gè)查詢結(jié)果的數(shù)據(jù)庫(kù)對(duì)像,它是遠(yuǎn)程數(shù)據(jù)的的本地副本,或者用來
生成基于數(shù)據(jù)表求和的匯總表。物化視圖存儲(chǔ)基于遠(yuǎn)程表的數(shù)據(jù),也可以稱為快
照。
物化視圖對(duì)于前臺(tái)數(shù)據(jù)庫(kù)使用者來說如同一個(gè)實(shí)際的表,具有和表相通的一般
select操作,而其實(shí)際上是一個(gè)視圖,一個(gè)定期刷新數(shù)據(jù)的視圖(具體刷新時(shí)間
在定義物化視圖的時(shí)候已有定義),使用物化視圖可以實(shí)現(xiàn)視圖的所有功能,而物
化視圖確不是在使用時(shí)才讀取,大大提高了讀取速度,特別適用抽取大數(shù)據(jù)量表
某些信息以及數(shù)據(jù)鏈連接表使用.
具體語法如下:
CREATEMATERIALIZEDVIEWan_user_base_fi1e_no_charge
REFRESHCOMPLETESTARTWITHSYSDATE
NEXTTRUNC(SYSDATE+29)+5.5/24
as
selectdistinctuserno
fromcw_arrearaget
where(t.mon=dbms_tianjin.getLastMonthor
t.mon=add_months(dbms_tianjin.getLastMonth,-1))
dropmaterializedviewan_user_base_fi1e_no_charge;
補(bǔ)充:
Oracle的物化視圖提供了強(qiáng)大的功能,可以用于預(yù)先計(jì)算并保存表連接或聚集
等耗時(shí)較多的操作的結(jié)果,這樣,在執(zhí)行查詢時(shí),就可以避免進(jìn)行這些耗時(shí)的操
作,而從快速的得到結(jié)果。物化視圖有很多方面和索引很相似:使用物化視圖的
目的是為了提高查詢性能;物化視圖對(duì)應(yīng)用透明,增加和刪除物化視圖不會(huì)影響
應(yīng)用程序中SQL語句的正確性和有效性;物化視圖需要占用存儲(chǔ)空間;當(dāng)基表發(fā)
生變化時(shí),物化視圖也應(yīng)當(dāng)刷新。
物化視圖可以分為以下三種類型:包含聚集的物化視圖;只包含連接的物化視圖;
嵌套物化視圖。三種物化視圖的快速刷新的限制條件有很大區(qū)別,而對(duì)于其他方
面則區(qū)別不大。創(chuàng)建物化視圖時(shí)可以指定多種選項(xiàng),下面對(duì)幾種主要的選擇進(jìn)行
簡(jiǎn)單說明:
創(chuàng)建方式(BuildMethods):包括BUILDIMMEDIATE和BUILDDEFERRED兩種。
BUILDIMMEDIATE是在創(chuàng)建物化視圖的時(shí)候就生成數(shù)據(jù),而BUILDDEFERRED則
在創(chuàng)建時(shí)不生成數(shù)據(jù),以后根據(jù)需要在生成數(shù)據(jù)。默認(rèn)為BUILDIMMEDIATE0
查詢重寫(QueryRewrite):包括ENABLEQUERYREWRITE和DISABLEQUERY
REWRITE兩種。分別指出創(chuàng)建的物化視圖是否支持查詢重寫。查詢重寫是指當(dāng)對(duì)
物化視圖的基表進(jìn)行查詢時(shí),Oracle會(huì)自動(dòng)判斷能否通過查詢物化視圖來得到
結(jié)果,如果可以,則避免了聚集或連接操作,而直接從已經(jīng)計(jì)算好的物化視圖中
讀取數(shù)據(jù)。默認(rèn)為DISABLEQUERYREWRITEo
刷新(Refresh):指當(dāng)基表發(fā)生了DML操作后,物化視圖何時(shí)采用哪種方式和
基表進(jìn)行同步。刷新的模式有兩種:ONDEMAND和ONCOMMIT0ONDEMAND指物
化視圖在用戶需要的時(shí)候進(jìn)行刷新,可以手工通過DBMS_MVIEW.REFRESH等方法
來進(jìn)行刷新,也可以通過JOB定時(shí)進(jìn)行刷新。ONCOMMIT指出物化視圖在對(duì)基表
的DML操作提交的同時(shí)進(jìn)行刷新。刷新的方法有四種:FAST、COMPLETE>FORCE
和NEVE*°**ST刷新采用增量刷新,只刷新自上次刷新以后進(jìn)行的修改。COMPLETE
刷新對(duì)整個(gè)物化視圖進(jìn)行完全的刷新。如果選擇FORCE方式,則Oracle在刷新
時(shí)會(huì)去判斷是否可以進(jìn)行快速刷新,如果可以則采用FAST方式,否則采用
COMPLETE的方式。NEVER指物化視圖不進(jìn)行任何刷新。默認(rèn)值是FORCEONDEMANDo
在建立物化視圖的時(shí)候可以指定ORDERBY語句,使生成的數(shù)據(jù)按照一定的順序
進(jìn)行保存。不過這個(gè)語句不會(huì)寫入物化視圖的定義中,而且對(duì)以后的刷新也無效。
物化視圖日志:如果需要進(jìn)行快速刷新,則需要建立物化視圖日志。物化視圖日
志根據(jù)不同物化視圖的快速刷新的需要,可以建立為ROWID或PRIMARYKEY類型
的。還可以選擇是否包括SEQUENCE、INCLUDINGNEWVALUES以及指定列的列表。
可以指明ONPREBUILDTABLE語句將物化視圖建立在一個(gè)已經(jīng)存在的表上。這種
情況下,物化視圖和表必須同名。當(dāng)刪除物化視圖時(shí),不會(huì)刪除同名的表。這種
物化視圖的查詢重寫要求參數(shù)QUERY_REWRITE_INTEGERITY必須設(shè)置為trusted
或者stale_toleratedo
物化視圖可以進(jìn)行分區(qū)。而且基于分區(qū)的物化視圖可以支持分區(qū)變化跟蹤(PCT)。
具有這種特性的物化視圖,當(dāng)基表進(jìn)行了分區(qū)維護(hù)操作后,仍然可以進(jìn)行快速刷
新操作。對(duì)于聚集物化視圖,可以在GROUPBY列表中使用CUBE或ROLLUP,來
建立不同等級(jí)的聚集物化視圖。
20,當(dāng)用戶進(jìn)程出錯(cuò),哪個(gè)后臺(tái)進(jìn)程負(fù)責(zé)清理它?PMON:進(jìn)程監(jiān)控進(jìn)程
21,哪個(gè)后臺(tái)進(jìn)程刷新materializedviews?TheJobQueueProcesses:作業(yè)
隊(duì)列進(jìn)程
22,如何判斷哪個(gè)session正在連結(jié)以及它們等待的資源?V$SESSION/
V$SESSION_WAIT
23,如何分辨某個(gè)用戶是從哪臺(tái)機(jī)器登陸ORACLE的:SELECTmachine,terminal
FROMV$SESSION
24,如何查看系統(tǒng)被鎖的事務(wù)時(shí)間:select*fromv$locked_object;
25.如何以archivelog的方式運(yùn)行oracle:在init.Ora中,log_archive_start
=true,重啟。
26.怎么獲取有哪些用戶在使用數(shù)據(jù)庫(kù):selectusernamefromv$session;
27.數(shù)據(jù)表中的字段最大數(shù)是多少:表或視圖中的最大列數(shù)為1000
28.怎樣查得數(shù)據(jù)庫(kù)的SID:selectnamefromv$database;也可以直接查看
init.ora文件
29,倉(cāng)ij建Sequence:createsequencezxkincrementby10
startwith10maxvalue1000cycle;
30,oracle日志
0racle9i中有2種日志,一種稱為RedoLog(重做日志),另一種叫做Archive
Log(歸檔日志)。重做日志redologfile是LGWR進(jìn)程(日志寫入進(jìn)程)從
Oracle實(shí)例中的redologbuffer寫入的,是循環(huán)利用的。就是說一"redolog
file(group)寫滿后,才寫下一?個(gè)。歸檔日志archivelog是當(dāng)數(shù)據(jù)庫(kù)運(yùn)行在歸
檔模式下時(shí),一個(gè)redologfile(group)寫滿后,由ARCn進(jìn)程(歸檔進(jìn)程)將
重做日志的內(nèi)容備份到歸檔日志文件下,然后這個(gè)redologfile(group)才能
被下一次使用。不管數(shù)據(jù)庫(kù)是否是歸檔模式,重做日志是肯定要寫的。而只有數(shù)
據(jù)庫(kù)在歸檔模式下,重做日志才會(huì)備份,形成歸檔日志。歸檔日志結(jié)合全備份,
用于數(shù)據(jù)庫(kù)出現(xiàn)問題后的恢復(fù)使用。
31,如何強(qiáng)制進(jìn)行LogSwitch?
當(dāng)一個(gè)redologfile被寫滿了之后要換另外一個(gè)redologfile,這個(gè)時(shí)候要
用到的操作叫l(wèi)ogswitcho
SQL>ALTERSYSTEMSWITCHLOGFILE;
32,Coalescing做了什么?
Coalescing針對(duì)于字典管理的tablespace進(jìn)行碎片整理,將臨近的小extents
合并成單個(gè)的大extent.
33,oracle表空間
Oracle數(shù)據(jù)庫(kù)(tablespace)是由若干個(gè)表空間構(gòu)成的。任何數(shù)據(jù)庫(kù)對(duì)象在存
儲(chǔ)時(shí)都必須存儲(chǔ)在某個(gè)表空間中。表空間對(duì)應(yīng)于若干個(gè)磁盤文件,即表空間是由
一個(gè)或多個(gè)磁盤文件構(gòu)成的。表空間相當(dāng)于操作系統(tǒng)中的文件夾,也是數(shù)據(jù)庫(kù)邏
輯結(jié)構(gòu)與物理文件之間的一個(gè)映射。每個(gè)數(shù)據(jù)庫(kù)至少有一個(gè)表空間,表空間的大
小等于所有從屬于它的數(shù)據(jù)文件大小的總和。
在Oracle10g中有以下幾種比較特殊的表空間:
(1)系統(tǒng)表空間
系統(tǒng)表空間(systemtablespace)是每個(gè)Oracle數(shù)據(jù)庫(kù)都必須具備的。其功能
是在系統(tǒng)表空間中存放諸如表空間名稱、表空間所含數(shù)據(jù)文件等數(shù)據(jù)庫(kù)管理所需
的信息。系統(tǒng)表空間的名稱是不可更改的。系統(tǒng)表空間必須在任何時(shí)候都可以用,
也是數(shù)據(jù)庫(kù)運(yùn)行的必要條件。因此,系統(tǒng)表空間是不能脫機(jī)的。系統(tǒng)表空間包括
數(shù)據(jù)字典、存儲(chǔ)過程、觸發(fā)器和系統(tǒng)回滾段。為避免系統(tǒng)表空間產(chǎn)生存儲(chǔ)碎片以
及爭(zhēng)用系統(tǒng)資源的問題,應(yīng)創(chuàng)建一個(gè)獨(dú)立的表空間用來單獨(dú)存儲(chǔ)用戶數(shù)據(jù)。
(2)SYSAUX表空間
SYSAUX表空間是隨著數(shù)據(jù)庫(kù)的創(chuàng)建而創(chuàng)建的,它充當(dāng)SYSTEM的輔助表空間,主
要存儲(chǔ)除數(shù)據(jù)字典以外的其他對(duì)象。SYSAUX也是許多Oracle數(shù)據(jù)庫(kù)的默認(rèn)表空
間,它減少了由數(shù)據(jù)庫(kù)和DBA管理的表空間數(shù)量,降低了SYSTEM表空間的負(fù)荷。
(3)臨時(shí)表空間
相對(duì)于其他表空間而言,臨時(shí)表空間(temptablespace)主要用于存儲(chǔ)Oracle
數(shù)據(jù)庫(kù)運(yùn)行期間所產(chǎn)生的臨時(shí)數(shù)據(jù)。數(shù)據(jù)庫(kù)可以建立多個(gè)臨時(shí)表空間。當(dāng)數(shù)據(jù)庫(kù)
關(guān)閉后,臨時(shí)表空間中所有數(shù)據(jù)將全部被清除。除臨時(shí)表空間外,其他表空間都
屬于永久性表空間。
(4)撤銷表空間
用于保存Oracle數(shù)據(jù)庫(kù)撤銷信息,即保存用戶回滾段的表空間稱之為回滾表空
間(或簡(jiǎn)稱為RBS撤銷表空間(undotablespace))□在0racle8i中是rollback
tablespace,從0racle9i開始改為undotablespace。在Oracle10g中初始創(chuàng)
建的只有6個(gè)表空間sysaux、system、temp>undotbsKexample和users。其
中temp是臨時(shí)表空間,undotbsl是undo撤銷表空間。
34,創(chuàng)建用戶時(shí),需要賦予新用戶什么權(quán)限才能使它聯(lián)上數(shù)據(jù)庫(kù)。CONNECT
35,如何在tablespace里增加數(shù)據(jù)文件?ALTERTABLESPACEADDDATAFILESIZE
36,如何變動(dòng)數(shù)據(jù)文件的大?。緼LTERDATABASEDATAFILERESIZE;
37,哪個(gè)VIEW用來檢查數(shù)據(jù)文件的大小?DBA_DATA_FILES
38,哪個(gè)VIEW用來判斷tablespace的剩余空間?DBA_FREE_SPACE
39,如何判斷誰往數(shù)據(jù)庫(kù)里面插入了一條記錄?
三種方法:事先打開審計(jì)功能或者在表上建立觸發(fā)器,事后可以通過logmnr查
看。
1)數(shù)據(jù)庫(kù)審計(jì)功能:
先設(shè)置audit_trail參數(shù),決定審計(jì)結(jié)果保存地點(diǎn);然后執(zhí)行auditinserton
schema.table_namewheneversuccessful;這樣就行了,在有人做insert操作
后,根據(jù)audit_trail參數(shù)到相應(yīng)位置去看審計(jì)結(jié)果就行了。
2)觸發(fā)器:
createorreplacetriggertgname
afterinsert
ontbname->判斷此表是否被插入記錄
for
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度VOC廢氣處理設(shè)施運(yùn)行優(yōu)化與維修服務(wù)合同3篇
- 2025版綠色建筑室內(nèi)環(huán)境凈化與治理承包合同3篇
- 網(wǎng)絡(luò)新聞?wù)n程設(shè)計(jì)優(yōu)缺點(diǎn)
- 二零二五年360借條合同多消費(fèi)分期支付及還款服務(wù)協(xié)議2篇
- 現(xiàn)代控制 課程設(shè)計(jì) pid
- 二零二五年度企業(yè)融資租賃合同范本6篇
- 北京青年政治學(xué)院《生物醫(yī)學(xué)信號(hào)處理技術(shù)及應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年度電梯安裝工人勞務(wù)合同范本3篇
- 2025年度辦公室裝修工程合同范本下載9篇
- 植被修剪課程設(shè)計(jì)
- 《萬以內(nèi)數(shù)的認(rèn)識(shí)》大單元整體設(shè)計(jì)
- 24.教育規(guī)劃綱要(2024-2024)
- 山東省棗莊市滕州市2023-2024學(xué)年八年級(jí)上學(xué)期期末數(shù)學(xué)試題(含答案)
- 我的家鄉(xiāng)隴南
- 2023-2024學(xué)年蘇州市八年級(jí)語文上學(xué)期期末考試卷附答案解析
- 政治忠誠(chéng)、政治定力、政治擔(dān)當(dāng)、政治能力、政治自律情況自我評(píng)價(jià)
- 壓力鋼管安裝施工方案
- 醫(yī)保按病種分值付費(fèi)(DIP)院內(nèi)培訓(xùn)
- 軍人怎樣戰(zhàn)勝挫折
- 學(xué)習(xí)提示及單元任務(wù) 統(tǒng)編版高中語文選擇性必修上冊(cè)
- 大祥區(qū)三八亭小學(xué)2023年春季研學(xué)實(shí)踐活動(dòng)方案
評(píng)論
0/150
提交評(píng)論