數(shù)據(jù)庫(kù)筆試題面試題集_第1頁
數(shù)據(jù)庫(kù)筆試題面試題集_第2頁
數(shù)據(jù)庫(kù)筆試題面試題集_第3頁
數(shù)據(jù)庫(kù)筆試題面試題集_第4頁
數(shù)據(jù)庫(kù)筆試題面試題集_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論