2023年oracle開(kāi)發(fā)人員面試題_第1頁(yè)
2023年oracle開(kāi)發(fā)人員面試題_第2頁(yè)
2023年oracle開(kāi)發(fā)人員面試題_第3頁(yè)
2023年oracle開(kāi)發(fā)人員面試題_第4頁(yè)
2023年oracle開(kāi)發(fā)人員面試題_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

一、基礎(chǔ)概念

1.列舉幾種表連接方式

Answer:等連接(內(nèi)連接)、非等連接、自連接、外連接(左、右、全)

Orhashjoin/mergejoin/nestloop(clusterjoin)/indexjoin??

ORACLE8i,9i表連接方法。

一般的相等連接:select*froma,bwherea.id=b.id;這個(gè)就屬于內(nèi)連

接。

對(duì)于外連接:

Oracle中可以使用“(+)”來(lái)表達(dá),9i可以使用LEFT/RIGHT/FULLOUTERJOIN

LEFTOUTERJOIN:左外關(guān)聯(lián)

SELECTe.last_name,e.department_id,d.department_name

FROMemployeese

LEFTOUTERJOINdepartmentsd

ON(e.department_id=d.department_id);

等價(jià)于

SELECTe.last_name,e.department_id,d.department_name

FROMemployeese,departmentsd

WHEREe.department_id=d.department_id(+)

結(jié)果為:所有員工及相應(yīng)部門的記錄,涉及沒(méi)有相應(yīng)部門編號(hào)department_id

的員工記錄。

RIGHTOUTERJOIN:右外關(guān)聯(lián)

SELECTe.last_name,e.department_id,d.department_name

FROMemployeese

RIGHTOUTERJOINdepartmentsd

ON(e.department_id=d.department_id);

等價(jià)于

SELECTe.last_name,e.department_id,d.department_name

FROMemployeese,departmentsd

WHEREe.department_id(+)=d.department_id

結(jié)果為:所有員工及相應(yīng)部門的記錄,涉及沒(méi)有任何員工的部門記錄。

FULLOUTERJOIN:全外關(guān)聯(lián)

SELECTe.last_name,e.department_id,d.department_name

FROMemployeese

FULLOUTERJOINdepartmentsd

ON(e.department_id=d.department_id);

結(jié)果為:所有員工及相應(yīng)部門的記錄,涉及沒(méi)有相應(yīng)部門編號(hào)department_id

的員工記錄和沒(méi)有任何員工的部門記錄。

0RACLE8i是不直接支持完全外連接的語(yǔ)法,也就是說(shuō)不能在左右兩個(gè)表上同時(shí)

加上(+),下面是在ORACLE81可以參考的完全外連接語(yǔ)法

selecttl.id,t2.idfromtableltl,tablet2wheretl.id=t2.id(+)

union

selecttl.id,t2.idfromtableltl,tablet2wheretl.id(+)=t2.id

連接類型

定義圖示例子

內(nèi)連接只連接匹配的行selectA.cl,B.c2fromAjoinBonA.c3=B.c3;

左外連接包含左邊表的所有行(不管右邊的表中是否存在與它們匹配的行)以

及右邊表中所有匹配的行selectA.cl,B.c2fromAleftjoinBonA.c3=B.c3;

右外連接包含右邊表的所有行(不管左邊的表中是否存在與它們匹配的行)以

及左邊表中所有匹配的行selectA.cl,B.c2fromArightjoinBonA.c3=B.c3;

全外連接包含左、右兩個(gè)表的所有行,不管在另一邊的表中是否存在與它們匹

配的行selectA.cl,B.c2fromAfulljoinBonA.c3=B.c3;

(theta)連接使用等值以外的條件來(lái)匹配左、右兩個(gè)表中的行select

A.cl,B.c2fromAjoinBonA.c3!=B.c3;

交叉連接生成笛卡爾積一一它不使用任何匹配或者選取條件,而是直接將一個(gè)

數(shù)據(jù)源中的每個(gè)行與另一個(gè)數(shù)據(jù)源的每個(gè)行一一匹配selectA.cl,B.c2

fromA,B;

2.不借助第三方工具,如何查看sql的執(zhí)行計(jì)劃

I)使用ExplainPlan,查詢PLAN_TABLE;

EXPLAINPLAN

SETSTATEMENT,ID=,QUERY1'

FOR

SELECT*

FROMa

WHEREaa=l;

SELECToperation,options,object_name,object_type,ID,parent_id

FROMplan_table

WHERESTATEMENT_ID=*QUERYP

ORDERBYID;

IDSQLPLUS中的SETTRACE即可看到ExecutionPlanStatistics

SETAUTOTRACEON;

3.如何使用CBO,CBO與RULE的區(qū)別

IF初始化參數(shù)0PTIMIZERJ10DE=CHOOSETHEN-(81DEFAULT)

IF做過(guò)表分析

THEN優(yōu)化器Optimizer=CBO(COST);/*高效*/

ELSE

優(yōu)化器Optimizer=RBO(RULE);/*高效*/

ENDIF;

ENDIF;

區(qū)別:

RBO根據(jù)規(guī)則選擇最佳執(zhí)行途徑來(lái)運(yùn)營(yíng)查詢。

CBO根據(jù)表記錄找到最低成本的訪問(wèn)數(shù)據(jù)的方法擬定執(zhí)行計(jì)劃。

使用CBO需要注意:

I)需要經(jīng)常對(duì)表進(jìn)行ANALYZE命令進(jìn)行分析記錄;

II)需要穩(wěn)定執(zhí)行計(jì)劃;

HI)需要使用提醒(Hint);

使用RULE需要注意:

I)選擇最有效率的表名順序

H)優(yōu)化SQL的寫(xiě)法;

在optimizer_mode=choose時(shí),假如表有記錄信息(分區(qū)表外),優(yōu)化器將選擇

CBO,否則選RBOo

RBO遵循簡(jiǎn)樸的分級(jí)方法學(xué),使用15種級(jí)別要點(diǎn),當(dāng)接受到查詢,優(yōu)化器將評(píng)估

使用到的要點(diǎn)數(shù)目,然后選擇最佳級(jí)別(最少的數(shù)量)的執(zhí)行途徑來(lái)運(yùn)營(yíng)查詢。

CBO嘗試找到最低成本的訪問(wèn)數(shù)據(jù)的方法,為了最大的吞吐量或最快的初始響應(yīng)

時(shí)間,計(jì)算使用不同的執(zhí)行計(jì)劃的成本,并選擇成本最低的一個(gè),關(guān)于表的數(shù)據(jù)內(nèi)

容的記錄被用于擬定執(zhí)行計(jì)劃。

4.如何定位重要(消耗資源多)的SQL

使用CPU多的用戶session

SELECTa.SID,spid,status,SUBSTR(a.program,1,40)prog,

a.terminal,a.SQL_TEXT,osuser,VALUE/60/100VALUE

FROMv$sessiona,v$processb,v$sesstatc

WHEREc.statistic#=12ANDc.SID=a.SIDANDa.paddr=b.addr

ORDERBYVALUEDESC;

selectsql_textfromv$sql

wheredisk_reads>1000or(executions>0andbuffer_gets/executions>

30000);

5.如何跟蹤某個(gè)session的SQL

運(yùn)用TRACE跟蹤

ALTERSESSIONSETSQLTRACEON;

COLUMNSQLformata200;

SELECTmachine,sql_textSQL

FROMv$sqltexta,v$sessionb

WHEREaddress=sql_address

ANDmachine='&A'

ORDERBYhash_value,piece;

execdbms_system.set_sql_trace_in_session(sid,serial#,&sql_trace);

selectsid,serial#fromv$sessionwheresid=(selectsidfromv$mystat

whererownum=1);

execdbms_system.set_ev(&sid,&serial#,&event_10046,&level_12,;

6.SQL調(diào)整最關(guān)注的是什么

檢查系統(tǒng)的1/0問(wèn)題

sar—d能檢查整個(gè)系統(tǒng)的iostat(10statistics)

查看該SQL的responsetime(dbblockgets/consistentgets/physical

reads/sorts(disk))

7.說(shuō)說(shuō)你對(duì)索引的結(jié)識(shí)(索引的結(jié)構(gòu)、對(duì)dml影響、對(duì)查詢影響、為什么提高

查詢性能)

索引有B-TREE、BIT、CLUSTER等類型。ORACLE使用了一個(gè)復(fù)雜的自平衡B-tree

結(jié)構(gòu);通常來(lái)說(shuō),在表上建立恰當(dāng)?shù)乃饕?,查詢時(shí)會(huì)改善查詢性能。但在進(jìn)行插

入、刪除、修改時(shí),同時(shí)會(huì)進(jìn)行索引的修改,在性能上有一定的影響。有索引且

查詢條件能使用索引時(shí),數(shù)據(jù)庫(kù)會(huì)先度取索引,根據(jù)索引內(nèi)容和查詢條件,查詢

出ROWID,再根據(jù)R0WID取出需要的數(shù)據(jù)。由于索引內(nèi)容通常比全表內(nèi)容要少很

多,因此通過(guò)先讀索引,能減少I/O,提高查詢性能。

b-treeindex/bitmapindex/functionindex/patitionalindex(local/global)

索引通常能提高select/update/delete的性能,會(huì)減少insert的速度,

8.使用索引查詢一定能提高查詢的性能嗎?為什么

通常,通過(guò)索引查詢數(shù)據(jù)比全表掃描要快.但是我們也必須注意到它的代價(jià).

索引需要空間來(lái)存儲(chǔ),也需要定期維護(hù),每當(dāng)有記錄在表中增減或索引列被修改

時(shí),索引自身也會(huì)被修改.這意味著每條記錄的INSERT,DELETE,UPDATE將為此

多付出4,5次的磁盤I/O.由于索引需要額外的存儲(chǔ)空間和解決,那些不必要的

索引反而會(huì)使查詢反映時(shí)間變慢.使用索引查詢不一定能提高查詢性能,索引范

圍查詢(INDEXRANGESCAN)合用于兩種情況:

基于一個(gè)范圍的檢索,一般查詢返回結(jié)果集小于表中記錄數(shù)的30%宜采用;

基于非唯一性索引的檢索

索引就是為了提高查詢性能而存在的,假如在查詢中索引沒(méi)有提高性能,只能說(shuō)

是用錯(cuò)了索引,或者講是場(chǎng)合不同

9.綁定變量是什么?綁定變量有什么優(yōu)缺陷?

綁定變量是指在SQL語(yǔ)句中使用變量,改變變量的值來(lái)改變SQL語(yǔ)句的執(zhí)行結(jié)果。

優(yōu)點(diǎn):使用綁定變量,可以減少SQL語(yǔ)句的解析,能減少數(shù)據(jù)庫(kù)引擎消耗在SQL

語(yǔ)句解析上的資源。提高了編程效率和可靠性。減少訪問(wèn)數(shù)據(jù)庫(kù)的次數(shù),就能事

實(shí)上減少ORACLE的工作量。

缺陷:經(jīng)常需要使用動(dòng)態(tài)SQL的寫(xiě)法,由于參數(shù)的不同,也許SQL的執(zhí)行效率不

同;

綁定變量是相對(duì)文本變量來(lái)講的,所謂文本變量是指在SQL直接書(shū)寫(xiě)查詢條件,

這樣的SQL在不同條件下需要反復(fù)解析,綁定變量是指使用變量來(lái)代替直接書(shū)寫(xiě)

條件,查詢bindvalue在運(yùn)營(yíng)時(shí)傳遞,然后綁定執(zhí)行。

優(yōu)點(diǎn)是減少硬解析,減少CPU的爭(zhēng)用,節(jié)省shared_pool

缺陷是不能使用histogram,sql優(yōu)化比較困難

10.如何穩(wěn)定(固定)執(zhí)行計(jì)劃

可以在SQL語(yǔ)句中指定執(zhí)行計(jì)劃。使用HINTS;

query_rewrite_enabled=true

star_transformation_enabled=true

optimizer_features_enable=9.2.0

創(chuàng)建并使用storedoutline

11.和排序相關(guān)的內(nèi)存在8i和9i分別如何調(diào)整,臨時(shí)表空間的作用是什么

SORT_AREA_SIZE在進(jìn)行排序操作時(shí),假如排序的內(nèi)容太多,內(nèi)存里不能所有放

下,則需要進(jìn)行外部排序,

此時(shí)需要運(yùn)用臨時(shí)表空間來(lái)存放排序的中間結(jié)果。

8i中sort_area_size/sort_area_retained_size決定了排序所需要的內(nèi)存,假

如排序操作不能在sort_area_size中完畢,就會(huì)用到temp表空間

9i中假如workarea_size_policy=auto時(shí),

排序在pga內(nèi)進(jìn)行,通常pga_aggregate_target的1/20可以用來(lái)進(jìn)行disksort;

假如workarea_size_policy=manual時(shí),排序需要的內(nèi)存由sort_area_size決

定,在執(zhí)行orderby/groupby/distinct/union/createindex/index

rebuild/minus等操作時(shí),假如在pga或sort_area_size中不能完畢,排序?qū)⒃?/p>

臨時(shí)表空間進(jìn)行(disksort),臨時(shí)表空間重要作用就是完畢系統(tǒng)中的disksort.

12.存在表T(a,b,c,d),要根據(jù)字段c排序后取第21—30條記錄顯示,請(qǐng)給出

sql

SELECT*

FROM(SELECTROWNUMASrow_num,tmp_tab.*

FROM(SELECTa,b,c,d

FROMT

ORDERBYc)tmp_tab

WHEREROWNUM<=30)

WHERErow_num>=20

ORDERBYrownum;

createtablet(anumber(,bnumber(,cnumber(,dnumber();

/

begin

foriin1..300loop

insertintotvalues(mod(i,2),i/2,dbms_random.valued,300),i/4);

endloop;

end;

/

select*from(selectc.*,rownumasrnfrom(select*fromtorderbyc

desc)c)wherernbetween21and30;

select*from(select*fromtestorderbycdesc)xwhererownum<30

minus

select*from(select*fromtestorderbycdesc)ywhererownum<20

orderby3desc

相比之minus性能較差

二:數(shù)據(jù)庫(kù)基本概念類

1Pctusedandpctfree表達(dá)什么含義有什么作用

pctused與pctfree控制數(shù)據(jù)塊是否出現(xiàn)在freelist中,pctfree控制數(shù)據(jù)塊中

保存用于update的空間,當(dāng)數(shù)據(jù)塊中的freespace小于pctfree設(shè)立的空間時(shí),

該數(shù)據(jù)塊從freelist中去掉,當(dāng)塊由于dml操作freespace大于pct_used設(shè)立

的空間時(shí),該數(shù)據(jù)庫(kù)塊將被添加在freelist鏈表中。

2簡(jiǎn)樸描述tablespace/segment/extent/block之間的關(guān)系

tablespace:一個(gè)數(shù)據(jù)庫(kù)劃分為一個(gè)或多個(gè)邏輯單位,該邏輯單位成為表空間;

每一個(gè)表空間也許包含一個(gè)或多個(gè)Segment;

Segments:Segment指在tablespace中為特定邏輯存儲(chǔ)結(jié)構(gòu)分派的空間。每一

個(gè)段是由一個(gè)或多個(gè)extent組成。涉及數(shù)據(jù)段、索引段、回滾段和臨時(shí)段。

Extents:一個(gè)extent由一系列連續(xù)的Oracleblocks組成.ORACLE為通過(guò)

extent來(lái)給segment分派空間。

DataBlocks:Oracle數(shù)據(jù)庫(kù)最小的I/O存儲(chǔ)單位,一個(gè)datablock相應(yīng)一個(gè)

或多個(gè)分派給datafile的操作系統(tǒng)塊。

table創(chuàng)建時(shí),默認(rèn)創(chuàng)建了一個(gè)datasegment,每個(gè)datasegment具有min

extents指定的extents數(shù),每個(gè)extent據(jù)據(jù)表空間的存儲(chǔ)參數(shù)分派一定數(shù)量的

blocks

3描述tablespace和datafile之間的關(guān)系

一個(gè)表空間可包含一個(gè)或多個(gè)數(shù)據(jù)文獻(xiàn)。表空間運(yùn)用增長(zhǎng)或擴(kuò)展數(shù)據(jù)文獻(xiàn)擴(kuò)大表

空間,表空間的大小為組成該表空間的數(shù)據(jù)文獻(xiàn)大小的和。一個(gè)datafile只能

屬于一個(gè)表空間;

一個(gè)tablespace可以有一個(gè)或多個(gè)datafile,每個(gè)datafile只能在一個(gè)

tablespace內(nèi),table中的數(shù)據(jù),通過(guò)hash算法分布在tablespace中的各個(gè)

datafile中,tablespace是邏輯上的概念,datafile則在物理上儲(chǔ)存了數(shù)據(jù)庫(kù)的

種種對(duì)象。

4本地管理表空間和字典管理表空間的特點(diǎn),ASSM有什么特點(diǎn)

本地管理表空間:(9i默認(rèn))空閑塊列表存儲(chǔ)在表空間的數(shù)據(jù)文獻(xiàn)頭。

特點(diǎn):減少數(shù)據(jù)字典表的競(jìng)爭(zhēng),當(dāng)分派和收縮空間時(shí)會(huì)產(chǎn)生回滾,不需要合并。

字典管理表空間:(8i默認(rèn))空閑塊列表存儲(chǔ)在數(shù)據(jù)庫(kù)中的字典表里.

特點(diǎn):片由數(shù)據(jù)字典管理,也許導(dǎo)致字典表的爭(zhēng)用。存儲(chǔ)在表空間的每一個(gè)段都

會(huì)有不同的存儲(chǔ)字句,需要合并相鄰的塊;

本地管理表空間(LocallyManagedTablespace簡(jiǎn)稱LMT)

8i以后出現(xiàn)的一種新的表空間的管理模式,通過(guò)位圖來(lái)管理表空間的空間使用。

字典管理表空間(Dictionary-ManagedTablespace簡(jiǎn)稱DMT)

8i以前涉及以后都還可以使用的一種表空間管理模式,通過(guò)數(shù)據(jù)字典管理表空

間的空間使用。動(dòng)段空間管理(ASSM),它初次出現(xiàn)在0racle920里有了ASSM,

鏈接列表freelist被位圖所取代,它是一個(gè)二進(jìn)制的數(shù)組,

可以迅速有效地管理存儲(chǔ)擴(kuò)展和剩余區(qū)塊(freeblock),因此可以改善分段存

儲(chǔ)本質(zhì),ASSM表空間上創(chuàng)建的段尚有此外一個(gè)稱呼喊BitmapManagedSegments

(BMB段)。

5回滾段的作用是什么

回滾段用于保存數(shù)據(jù)修改前的映象,這些信息用于生成讀一致性數(shù)據(jù)庫(kù)信息、在

數(shù)據(jù)庫(kù)恢復(fù)和Rollback時(shí)使用。一個(gè)事務(wù)只能使用一個(gè)回滾段。

事務(wù)回滾:當(dāng)事務(wù)修改表中數(shù)據(jù)的時(shí)候,該數(shù)據(jù)修改前的值(即前影像)會(huì)存放

在回滾段中,當(dāng)用戶回滾事務(wù)(ROLLBACK)時(shí),ORACLE將會(huì)運(yùn)用回滾段中的數(shù)

據(jù)前影像來(lái)將修改的數(shù)據(jù)恢復(fù)到本來(lái)的值。

事務(wù)恢復(fù):當(dāng)事務(wù)正在解決的時(shí)候,例程失敗,回滾段的信息保存在undo表空

間中,ORACLE將在下次打開(kāi)數(shù)據(jù)庫(kù)時(shí)運(yùn)用回滾來(lái)恢復(fù)未提交的數(shù)據(jù)。

讀一致性:當(dāng)一個(gè)會(huì)話正在修改數(shù)據(jù)時(shí),其他的會(huì)話將看不到該會(huì)話未提交的修

改。當(dāng)一個(gè)語(yǔ)句正在執(zhí)行時(shí),該語(yǔ)句將看不到從該語(yǔ)句開(kāi)始執(zhí)行后的未提交的

修改(語(yǔ)句級(jí)讀一致性)

當(dāng)ORACLE執(zhí)行SELECT語(yǔ)句時(shí),ORACLE依照當(dāng)前的系統(tǒng)改變號(hào)(SYSTEMCHANGE

NUMBER-SCN)來(lái)保證任何前于當(dāng)前SCN的未提交的改變不被該語(yǔ)句解決??梢?/p>

想象:當(dāng)一個(gè)長(zhǎng)時(shí)間的查詢正在執(zhí)行時(shí),若其他會(huì)話改變了該查詢要查詢的某

個(gè)數(shù)據(jù)塊,ORACLE將運(yùn)用回滾段的數(shù)據(jù)前影像來(lái)構(gòu)造一個(gè)讀一致性視圖

6日記的作用是什么

日記文獻(xiàn)(LogFile)記錄所有對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的修改,重要是保護(hù)數(shù)據(jù)庫(kù)以防止

故障,以及恢復(fù)數(shù)據(jù)時(shí)使用。其特點(diǎn)如下:

a)每一個(gè)數(shù)據(jù)庫(kù)至少包含兩個(gè)日記文獻(xiàn)組。每個(gè)日記文獻(xiàn)組至少包含兩個(gè)日記文

獻(xiàn)成員。

b)日記文獻(xiàn)組以循環(huán)方式進(jìn)行寫(xiě)操作。

c)每一個(gè)日記文獻(xiàn)成員相應(yīng)一個(gè)物理文獻(xiàn)。

記錄數(shù)據(jù)庫(kù)事務(wù),最大限度地保證數(shù)據(jù)的一致性與安全性

重做日記文獻(xiàn):含對(duì)數(shù)據(jù)庫(kù)所做的更改記錄,這樣萬(wàn)一出現(xiàn)故障可以啟用數(shù)據(jù)恢

復(fù),一個(gè)數(shù)據(jù)庫(kù)至少需要兩個(gè)重做日記文獻(xiàn)

歸檔日記文獻(xiàn):是重做日記文獻(xiàn)的脫機(jī)副本,這些副本也許對(duì)于從介質(zhì)失敗中進(jìn)

行恢復(fù)很必要。

7SGA重要有那些部分,重要作用是什么

系統(tǒng)全局區(qū)(SGA):是ORACLE為實(shí)例分派的一組共享緩沖存儲(chǔ)區(qū),用于存放數(shù)

據(jù)庫(kù)數(shù)據(jù)和控制信息,以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的管理和操作。

SGA重要涉及:

a)共享池(sharedpool):用來(lái)存儲(chǔ)最近執(zhí)行的SQL語(yǔ)句和最近使用的數(shù)據(jù)字典

的數(shù)據(jù)。

b)數(shù)據(jù)緩沖區(qū)(databasebuffercache):用來(lái)存儲(chǔ)最近從數(shù)據(jù)文獻(xiàn)中讀寫(xiě)過(guò)的

數(shù)據(jù)。

c)重作日記緩沖區(qū)(red。logbuffer):用來(lái)記錄服務(wù)或后臺(tái)進(jìn)程對(duì)數(shù)據(jù)庫(kù)的

操作。

此外在SGA中尚有兩個(gè)可選的內(nèi)存結(jié)構(gòu):

d)Javapool:用來(lái)存儲(chǔ)Java代碼。

e)Largepool:用來(lái)存儲(chǔ)不與SQL直接相關(guān)的大型內(nèi)存結(jié)構(gòu)。備份、恢復(fù)使用。

GA:db_cache/shared_pool/large_pool/java_pool

db_cache:數(shù)據(jù)庫(kù)緩存(BlockBuffer)對(duì)于Oracle數(shù)據(jù)庫(kù)的運(yùn)轉(zhuǎn)和性能起著

非常關(guān)鍵的作用,它占據(jù)Oracle數(shù)據(jù)庫(kù)SGA(系統(tǒng)共享內(nèi)存區(qū))的重要部分。

Oracle數(shù)據(jù)庫(kù)通過(guò)使用LRU算法,將最近訪問(wèn)的數(shù)據(jù)塊存放到緩存中,從而優(yōu)

化對(duì)磁盤數(shù)據(jù)的訪問(wèn).

shared_pool:共享池的大小對(duì)于Oracle性能來(lái)說(shuō)都是很重要的。共享池中保

存數(shù)據(jù)字典高速緩沖和完全解析或編譯的的PL/SQL塊和SQL語(yǔ)句及控制結(jié)構(gòu)

large_pool:使用MTS配置時(shí),由于要在SGA中分派UGA來(lái)保持用戶的會(huì)話,就

是用Large_pool來(lái)保持這個(gè)會(huì)話內(nèi)存使用RMAN做備份的時(shí)候,要使用

Large_pool這個(gè)內(nèi)存結(jié)構(gòu)來(lái)做磁盤I/O緩存器

java_pool:為javaprocedure預(yù)備的內(nèi)存區(qū)域,假如沒(méi)有使用java

proc,java_pool不是必須的

8Oracle系統(tǒng)進(jìn)程重要有哪些,作用是什么

數(shù)據(jù)寫(xiě)進(jìn)程(DBWR):負(fù)責(zé)將更改的數(shù)據(jù)從數(shù)據(jù)庫(kù)緩沖區(qū)高速緩存寫(xiě)入數(shù)據(jù)文獻(xiàn)

日記寫(xiě)進(jìn)程(LGWR):將重做日記緩沖區(qū)中的更改寫(xiě)入在線重做日記文獻(xiàn)

系統(tǒng)監(jiān)控(SMON):檢查數(shù)據(jù)庫(kù)的一致性如有必要還會(huì)在數(shù)據(jù)庫(kù)打開(kāi)時(shí)啟動(dòng)數(shù)據(jù)

庫(kù)的恢復(fù)

進(jìn)程監(jiān)控(PMON):負(fù)責(zé)在一個(gè)Oracle進(jìn)程失敗時(shí)清理資源

檢查點(diǎn)進(jìn)程(CKPT):負(fù)責(zé)在每當(dāng)緩沖區(qū)高速緩存中的更改永久地記錄在數(shù)據(jù)庫(kù)中

時(shí),更新控制文獻(xiàn)和數(shù)據(jù)文獻(xiàn)中的數(shù)據(jù)庫(kù)狀態(tài)信息。

歸檔進(jìn)程(ARCH):在每次日記切換時(shí)把已滿的日記組進(jìn)行備份或歸檔

恢復(fù)進(jìn)程(RECO):保證分布式事務(wù)的一致性,在分布式事務(wù)中,要么同時(shí)

commit,要么同時(shí)rollback;

作業(yè)調(diào)度器(CJQ):負(fù)責(zé)將調(diào)度與執(zhí)行系統(tǒng)中已定義好的job,完畢一些預(yù)定義

的工作.

三:備份恢復(fù)類

1備份如何分類

邏輯備份:exp/imp指定表的邏輯備份

物理備份:

熱備份:altertablespacebegin/endbackup;

冷備份:脫機(jī)備份(databaseshutdown)

RMAN備份

fullbackup/incrementalbackup(累積/差異)

物理備份

物理備份是最重要的備份方式。用于保證數(shù)據(jù)庫(kù)在最小的數(shù)據(jù)庫(kù)丟失或沒(méi)有數(shù)據(jù)

丟失的情況下得到恢復(fù)。

冷物理

冷物理備份提供了最簡(jiǎn)樸和最直接的方法保護(hù)數(shù)據(jù)庫(kù)因物理?yè)p壞丟失。建議在以

下幾種情況中使用。

對(duì)一個(gè)已經(jīng)存在大最數(shù)據(jù)量的數(shù)據(jù)庫(kù),在晚間數(shù)據(jù)庫(kù)可以關(guān)閉,此時(shí)應(yīng)用冷物理

備份。

對(duì)需對(duì)數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行升級(jí),(如更換硬盤),此時(shí)需要備份數(shù)據(jù)庫(kù)信息,并

在新的硬盤中恢復(fù)這些數(shù)據(jù)信息,建議采用冷物理備份。

熱物理

重要是指?jìng)浞葸^(guò)程在數(shù)據(jù)庫(kù)打開(kāi)并且用戶可以使用的情況下進(jìn)行。需要執(zhí)行熱物

理備份的情況有:

由于數(shù)據(jù)庫(kù)性質(zhì)規(guī)定不間斷工作,因而此時(shí)只能采用熱物理備份。

由于備份的規(guī)定的時(shí)間過(guò)長(zhǎng),而數(shù)據(jù)庫(kù)只能短時(shí)間關(guān)閉時(shí)。

邏輯備份(EXP/IMP)

邏輯備份用于實(shí)現(xiàn)數(shù)據(jù)庫(kù)對(duì)象的恢復(fù)。但不是基于時(shí)間點(diǎn)可完全恢復(fù)的備份策

略。只能作為聯(lián)機(jī)備份和脫機(jī)備份的一種補(bǔ)充。

完全邏輯備份

完全邏輯備份是將整個(gè)數(shù)據(jù)庫(kù)導(dǎo)出到一個(gè)數(shù)據(jù)庫(kù)的格式文獻(xiàn)中,該文獻(xiàn)可以在不

同的數(shù)據(jù)庫(kù)版本、操作系統(tǒng)和硬件平臺(tái)之間進(jìn)行移植。

指定表的邏輯備份

通過(guò)備份工具,可以將指定的數(shù)據(jù)庫(kù)表備份出來(lái),這可以避免完全邏輯備份所帶

來(lái)的時(shí)間和財(cái)力上的浪費(fèi)。

2歸檔是什么含義

關(guān)于歸檔日記:Oracle要將填滿的在線日記文獻(xiàn)組歸檔時(shí),則要建立歸檔日記

(archivedredolog)o其對(duì)數(shù)據(jù)庫(kù)備份和恢復(fù)有下列用處:

數(shù)據(jù)庫(kù)后備以及在線和歸檔日記文獻(xiàn),在操作系統(tǒng)和磁盤故障中可保證所有提交

的事物可被恢復(fù)。

在數(shù)據(jù)庫(kù)打開(kāi)和正常系統(tǒng)使用下,假如歸檔日記是永久保存,在線后備可以進(jìn)行

和使用。

數(shù)據(jù)庫(kù)可運(yùn)營(yíng)在兩種不同方式下:NOARCHIVELOG方式或ARCHIVELOG方式

數(shù)據(jù)庫(kù)在NOARCHIVELOG方式下使用時(shí),不能進(jìn)行在線日記的歸檔,

數(shù)據(jù)庫(kù)在ARCHIVELOG方式下運(yùn)營(yíng),可實(shí)行在線日記的歸檔

歸檔是歸檔當(dāng)前的聯(lián)機(jī)redo日記文獻(xiàn)。

SVRMGR>altersystemarchivelogcurrent;

數(shù)據(jù)庫(kù)只有運(yùn)營(yíng)在ARCHIVELOG模式下,并且可以進(jìn)行自動(dòng)歸檔,才可以進(jìn)行聯(lián)

機(jī)備份。有了聯(lián)機(jī)備份才有也許進(jìn)行完全恢復(fù)。

3假如一個(gè)表在2023-08-0410:30:00被drop,在有完善的歸檔和備份的情況

下,如何恢復(fù)

9i新增的FLASHBACK應(yīng)當(dāng)可以;

Logminer應(yīng)當(dāng)可以找出DML。

有完善的歸檔和備份,先歸檔當(dāng)前數(shù)據(jù),然后可以先恢復(fù)到刪除的時(shí)間點(diǎn)之前,

把DROP的表導(dǎo)出來(lái),然后再恢復(fù)到最后歸檔時(shí)間;

手工拷貝回所有備份的數(shù)據(jù)文獻(xiàn)

Sql)startupmount;

sql)alterdatabaserecoverautomaticuntiltime'2023-08-04:10:30:00(;

sql)alterdatabaseopenresetlogs;

4rman是什么,有何特點(diǎn)

RMAN(RecoveryManager)是DBA的一個(gè)重要工具,用于備份、還原和恢復(fù)oracle

數(shù)據(jù)庫(kù),RMAN可以用來(lái)備份和恢復(fù)數(shù)據(jù)庫(kù)文獻(xiàn)、歸檔日記、控制文獻(xiàn)、系統(tǒng)參

數(shù)文獻(xiàn),也可以用來(lái)執(zhí)行完全或不完全的數(shù)據(jù)庫(kù)恢復(fù)。

RMAN有三種不同的用戶接口:COMMANDLINE方式、GUI方式(集成在OEM中的

備份管理器)、API方式(用于集成到第三方的備份軟件中)。

具有如下特點(diǎn):

1)功能類似物理備份,但比物理備份強(qiáng)大N倍;

2)可以壓縮空塊;

3)可以在塊水平上實(shí)現(xiàn)增量;

4)可以把備份的輸出打包成備份集,也可以按固定大小分割備份集;

5)備份與恢復(fù)的過(guò)程可以自動(dòng)管理;

6)可以使用腳本(存在Recoverycatalog中)

7)可以做壞塊監(jiān)測(cè)

5standby的特點(diǎn)

備用數(shù)據(jù)庫(kù)(standbydatabase):ORACLE推出的一種高可用性(HIGHAVAILABLE)

數(shù)據(jù)庫(kù)方案,在主節(jié)點(diǎn)與備用節(jié)點(diǎn)間通過(guò)日記同步來(lái)保證數(shù)據(jù)的同步,備用節(jié)點(diǎn)

作為主節(jié)點(diǎn)的備份,可以實(shí)現(xiàn)快速切換與劫難性恢復(fù),從920開(kāi)始,還開(kāi)始支持

物理與邏輯備用服務(wù)器。

9i中的三種數(shù)據(jù)保護(hù)模式分別是:

1)、MAXIMIZEPROTECTION:最大數(shù)據(jù)保護(hù)與無(wú)數(shù)據(jù)分歧,LGWR將同時(shí)傳送到

備用節(jié)點(diǎn),在主節(jié)點(diǎn)事務(wù)確認(rèn)之前,備用節(jié)點(diǎn)也必須完全收到日記數(shù)據(jù)。假如網(wǎng)

絡(luò)不好,引起LGWR不能傳送數(shù)據(jù),將引起嚴(yán)重的性能問(wèn)題,導(dǎo)致主節(jié)點(diǎn)DOWN

機(jī)。

2),MAXIMIZEAVAILABILITY:無(wú)數(shù)據(jù)丟失模式,允許數(shù)據(jù)分歧,允許異步傳送。

正常情況下運(yùn)營(yíng)在最大保護(hù)模式,在主節(jié)點(diǎn)與備用節(jié)點(diǎn)的網(wǎng)絡(luò)斷開(kāi)或連接不正常

時(shí),自動(dòng)切換到最大性能模式,主節(jié)點(diǎn)的操作還是可以繼續(xù)的。在網(wǎng)絡(luò)不好的情

況下有較大的性能影響。

3)、MAXIMIZEPERFORMANCE:這種模式應(yīng)當(dāng)可以說(shuō)是從8i繼承過(guò)來(lái)的備用服務(wù)

器模式,異步傳送,無(wú)數(shù)據(jù)同步檢查,也許丟失數(shù)據(jù),但是能獲得主節(jié)點(diǎn)的最大

性能。9i在配置DATAGUARD的時(shí)候默認(rèn)就是MAXIMIZEPERFORMANCE

6對(duì)于一個(gè)規(guī)定恢復(fù)時(shí)間比較短的系統(tǒng)(數(shù)據(jù)庫(kù)50G,天天歸檔5G),你如何設(shè)計(jì)

備份策略

數(shù)據(jù)庫(kù)比較大邏輯備份沒(méi)什么必要,天天歸檔5G,每周三/周六自動(dòng)歸檔10G,

每月RMAN歸檔全庫(kù)。應(yīng)當(dāng)有standbyo

rman/每月一號(hào)level0每周末/周三level1其它天天level2

四:系統(tǒng)管理類

1.對(duì)于一個(gè)存在系統(tǒng)性能的系統(tǒng),說(shuō)出你的診斷解決思緒

1做statspack收集系統(tǒng)相關(guān)信息了解系統(tǒng)大體情況/擬定是否存在參數(shù)設(shè)立

不合適的地方/查看top5event/查看topsql等

〕查v$system_event/v$session_event/v$session_wait從v$system_event開(kāi)

始,擬定需要什么資源(dbfilesequentialread)等,進(jìn)一步研究

v$session_event,擬定等待事件涉及的會(huì)話,從v$session_wait擬定具體的資

源爭(zhēng)用情況(pl-p3的值:file_id/block_id/blocks等)

〕通過(guò)v$sql/v$sqltext/v$sqlarea表擬定diskjreads、

(buffer_gets/executions)值較大的SQL

2.列舉幾種診斷10、CPU、性能狀況的方法

topuptimevmstatiostatstatspacksql_trace/tkprof

查v$system_event/v$session_event/v$session_wait

查v$sqlarea(disk_reads或buffer_gets/executions較大的SQL)

或者第三方的監(jiān)視工具,TOAD就不錯(cuò)。

3.對(duì)statspack有何結(jié)識(shí)

結(jié)識(shí)不深。僅限了解。StapSpack是Oracle公司提供的一個(gè)收集數(shù)據(jù)庫(kù)運(yùn)營(yíng)性

能指標(biāo)的軟件包??梢宰鰯?shù)據(jù)庫(kù)健康檢查報(bào)告。

StapSpack是Oracle公司提供的一個(gè)收集數(shù)據(jù)庫(kù)運(yùn)營(yíng)性能指標(biāo)的軟件包,該軟

件包從8i起,在9i、10g都有顯著的增強(qiáng)

該軟件包的輔助表(存儲(chǔ)相關(guān)參數(shù)與收集的性能指標(biāo)的表)由最初的25個(gè)增長(zhǎng)

到43個(gè)

收集級(jí)別參數(shù)由本來(lái)的3個(gè)(0、5、10)增長(zhǎng)到5個(gè)(0、5、6、7、10)

通過(guò)度析收集的性能指標(biāo),數(shù)據(jù)庫(kù)管理員可以具體地了解數(shù)據(jù)庫(kù)目前的運(yùn)營(yíng)情

況,對(duì)數(shù)據(jù)庫(kù)實(shí)例、等待事件、SQL等進(jìn)行優(yōu)化調(diào)整

運(yùn)用statspack收集的snapshot,可以記錄制作數(shù)據(jù)庫(kù)的各種性能指標(biāo)的記錄趨

勢(shì)圖表。

4.假如系統(tǒng)現(xiàn)在需要在一個(gè)很大的表上創(chuàng)建一個(gè)索引,你會(huì)考慮那些因素,如

何做以盡量減小相應(yīng)用的影響

可以先表分析一下,然后測(cè)試創(chuàng)建索引前后相應(yīng)用的性能影響;

需要考慮的是該索引列不經(jīng)常更新,不是有很多反復(fù)值的情況時(shí),在大表中使用

索引特別有效.創(chuàng)建的索引可以跟數(shù)據(jù)表分不同表空間存儲(chǔ)。

在系統(tǒng)比較空閑時(shí)nologging選項(xiàng)(假如有dataguard則不可以使用nologging)

大的sort_ared_size或pga_aggregate_target較大

5.對(duì)raidlO和raid5有何結(jié)識(shí)

RAID10(或稱RAID1+0)與RAID0+1不同,它是用硬盤驅(qū)動(dòng)器先組成RAID1

陣列,然后在RAID1陣列之間再組成RAID0陣列。

RAID10模式同RAID0+1模式同樣具有良好的數(shù)據(jù)傳輸性能,但卻比RAID0+1

具有更高的可靠性。RAID10陣列的實(shí)際容量為MXn/2,磁盤運(yùn)用率為50%。

RAID10也需要至少4個(gè)硬盤驅(qū)動(dòng)器構(gòu)成,因而價(jià)格昂貴。

RAID10的可靠性同RAID1同樣,但由于RAID10硬盤驅(qū)動(dòng)器之間有數(shù)據(jù)分割,

因而數(shù)據(jù)傳輸性能優(yōu)良。

RAID5與RAID3很相似,不同之處在于RAID5的奇偶校驗(yàn)信息也同數(shù)據(jù)同樣

被分割保存到所有的硬盤驅(qū)動(dòng)器,而不是寫(xiě)入一個(gè)指定的硬盤驅(qū)動(dòng)器,從而消除

了單個(gè)奇偶校驗(yàn)硬盤驅(qū)動(dòng)器的瓶頸問(wèn)題。RAID5磁盤陣列的性能比RAID3有所

提高,但仍然需要至少3塊硬盤驅(qū)動(dòng)器。其實(shí)際容量為MX(nT),磁盤運(yùn)用率

為(nT)/no

五:綜合隨意類

1.你最擅長(zhǎng)的是oracle哪部分?

pl/sql及sql優(yōu)化

2.喜歡oracle嗎?喜歡上論壇嗎?或者偏好oracle的哪一部分?

喜歡。PL/SQL比較得心應(yīng)手。

3.隨意說(shuō)說(shuō)你覺(jué)得oracle最故意思的部分或者最困難的部分

我對(duì)數(shù)據(jù)庫(kù)的備份/恢復(fù)和性能調(diào)優(yōu)經(jīng)驗(yàn)明顯局限性,自然覺(jué)得有些困難。

基于ORACLE的研究應(yīng)當(dāng)是個(gè)寬廣的領(lǐng)域,所以我覺(jué)得還是故意思的。

4.為什么要選擇做DBA呢?

我對(duì)數(shù)據(jù)庫(kù)的備份/恢復(fù)和性能調(diào)優(yōu)經(jīng)驗(yàn)明顯局限性,重要是缺少環(huán)境和交流。

因此,算不上什么DBAo但是因此我更需要這樣的機(jī)會(huì)。

但是就整個(gè)ORACLE來(lái)說(shuō),一直從事與它相關(guān)的工作,感情還是頗深的。放棄可

惜。并且就技術(shù)自身而言我覺(jué)得自己還是有學(xué)習(xí)和創(chuàng)新的能力,它的諸如數(shù)據(jù)倉(cāng)

庫(kù),數(shù)據(jù)挖掘之類的領(lǐng)域也很廣。

六:DatabasesQuestions&Answers

1.WhataretwomethodsofretrievingSQL?

2.Whatcursortypedoyouusetoretrievemultiplerecordsets?

3.Whatactiondoyouhavetoperformbeforeretrievingdatafromthenext

resultsetofastoredprocedure?

Movethecursordownonerowfromitscurrentposition.AResultSetcursor

isinitiallypositionedbeforethefirstrow.Beforeyoucangettothe

firstrow,youwouldneedtoMovethecursordownbyonerow(Forex:

injavathefirstcalltonextmakesthefirstrowthecurrentrow;the

secondcallmakesthesecondrowthecurrentrow,andsoon).

4.WhatisthebasicformofaSQLstatementtoreaddataoutofatable?

SELECT*FROMtable_name;

5.Whatstructurecanyouhavethedatabasemaketospeeduptablereads?

Thequestionisnotcorrect.Whatstructurecanyouhavethedatabase

maketospeeduptablereads?”Itisnotclearwhatexactlytheterm

“structure”meansinthiscase.FollowtherulesofDBtuningwehave

to:

1)properlyuseindexes(differenttypesofindexes)

2)properlylocatedifferentDBobjectsacrossdifferenttablespaces,

filesandsoon.

3)Createaspecialspace(tablespace)tolocatesomeofthedatawith

specialdatatypes(forexampleCLOB,LOBand…)

6.Whatisa“join”?

Joinsmergethedataoftworelatedtablesintoasingleresultset,

presentingadenormalizedviewofthedata.

7.Whatisa“constraint”?

Aconstraintallowsyoutoapplysimplereferentialintegritychecks

toatable.Thereare5primarytypesofconstraintsthatarecurrently

supportedbySQLServer:

PRIMARY/UNIQUE-enforcesuniquenessofaparticulartablecolumn.

DEFAULT-specifiesadefaultvalueforacolumnincaseaninsert

operationdoesnotprovideone.

FOREIGNKEY-validatesthateveryvalueinacolumnexistsina

columnofanothertable.

CHECK-checksthateveryvaluestoredinacolumnisinsome

specifiedlist

NOTNULL-isaconstraintwhichdoesnotallowvaluesinthespecific

columntobenull.Andalsoitistheonlyconstraintwhichisnotatable

levelconstraint.

8.Whatisa“primarykey”?

PrimaryKeyisatypeofaconstraintenforcinguniquenessanddata

integrityforeachrowofatable.Allcolumnsparticipatinginaprimary

keyconstraintmustpossesstheNOTNULLproperty.

9.Whatisafunctionaldependency"?Howdoesitrelatetodatabase

tabledesign?

Whatfunctionaldependenceinthecontextofadatabasemeansisthat:

AssumethatatableexistsinthedatabasecalledTABLEwithacomposite

primarykey(A,B)andothernon-keyattributes(C,D,E).Functional

dependencyingeneral,wouldmeanthatanynon-keyattribute-CDor

Ebeingdependentontheprimarykey(AandB)inourtablehere.

Partialfunctionaldependency,ontheotherhand,isanother

corollaryoftheabove,whichstatesthatallnon-keyattributes-CD

orE-ifdependentonthesubsetoftheprimarykey(AandB)andnot

onitasawhole.

Example:

FullyFunctionalDependent:CDE->AB

PartialFunctionaldependency:C->A,DE->B

Hopethathelps!

10.Whatisa“trigger”?

Atriggerisadatabaseobjectdirectlyassociatedwithaparticulartable.

Itfireswheneveraspecificstatement/typeofstatementisissuedagainst

thattable.Thetypesofstatementsareinsert,update,deleteandquery

statements.Basically,triggerisasetofSQLstatementsthatexecute

inresponsetoadatamodification/retrievaleventonatable.

Otherthantabletriggerstherearealsoschemaanddatabasetriggers.

Thesecanbemadetofirewhennewobjectsarecreated,whenauserlogs

in,whenthedatabaseshutdownetc.Tableleveltriggerscanbeclassified

intorowandstatementleveltriggersandthosecanbefurtherbrokendown

intobeforeandaftertriggers.Beforetriggerscanmodifydata.

11.Whatis“indexcoveringnofaquery?

Anonclusteredindexthatincludes(orcovers)allcolumnsusedinaquery

iscalledacoveringindex.WhenSQLservercanuseanonclusteredindex

toresolvethequery,itwillprefertoscantheindexratherthanthe

table,whichtypicallytakesfewerdatapages.Ifyourqueryusesonly

columnsincludedintheindex,thenSQLservermayscanthisindexto

producethedesiredoutput.

12.WhatisaSQLview?

ViewisaprecompliedSQLquerywhichisusedtoselectdatafromoneor

moretables.Aviewislikeatablebutitdoesn,tphysicallytakeany

space.Viewisagoodwaytopresentdatainaparticularformatifyou

usethatqueryquiteoften.

Viewcanalsobeusedtorestrictusersfromaccessingthetablesdirectly.

Aviewotherwiseknownasavirtualtableisamerewindowoverthebase

tablesinthedatabase.Thishelpsusgainacoupleofadvantages:

1)Inherentsecurityexposingonlythedatathatisneededtobeshown

totheenduser

2)Viewsareupdateablebasedoncertainconditions.Forexample,updates

canonlybedirectedtooneunderlyingtableoftheview.After

modificationiftherowsorcolumnsdon'tcomplywiththeconditionsthat

theviewwascreatedwith,thoserowsdisappearfromtheview.Youcould

usetheCHECKOPTIONwiththeviewdefinition,tomakesurethatany

updatestomaketherowsinvalidwillnotbepermittedtorun.

3)Viewsarenotmaterialized(givenaphysicalstructure)inadatabase.

Eachtimeaviewisqueriedthedefinitionstoredinthedatabaseisrun

againstthebasetablestoretrievethedata.Oneexceptiontothisis

tocreateaclusteredindexontheviewtomakeitpersistentinthe

database.Onceyoucreateaclusteredindexontheview,youcancreate

anynumberofnon-clusteredindexesontheview.

13.存儲(chǔ)過(guò)程和函數(shù)的區(qū)別

存儲(chǔ)過(guò)程是用戶定義的一系列sql語(yǔ)句的集合,涉及特定表或其它對(duì)象的任務(wù),

用戶可以調(diào)用存儲(chǔ)過(guò)程,而函數(shù)通常是數(shù)據(jù)庫(kù)已定義的方法,它接受參數(shù)并返回

某種類型的值并且不涉及特定用戶表。

14.事務(wù)是什么?

事務(wù)是作為一個(gè)邏輯單元執(zhí)行的一系列操作,一個(gè)邏輯工作單元必須有四個(gè)屬

性,稱為ACID(原子性、一致性、隔離性和持久性)屬性,只有這樣才干成為一

個(gè)事務(wù):

原子性:事務(wù)必須是原子工作單元;對(duì)于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全都

不執(zhí)行。

一致性:事務(wù)在完畢時(shí),必須使所有的數(shù)據(jù)都保持一致?tīng)顟B(tài)。在相關(guān)數(shù)據(jù)庫(kù)中,

所有規(guī)則都必須應(yīng)用于事務(wù)的修改,以保持所有數(shù)據(jù)的完整性。事務(wù)結(jié)束時(shí),所

有的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(如B樹(shù)索引或雙向鏈表)都必須是對(duì)的的。

隔離性:由并發(fā)事務(wù)所作的修改必須與任何其它并發(fā)事務(wù)所作的修改隔離。事務(wù)

查看數(shù)據(jù)時(shí)數(shù)據(jù)所處的狀態(tài),要么是另一并發(fā)事務(wù)修改它之前的狀態(tài),要么是另

一事務(wù)修改它之后的狀態(tài),事務(wù)不會(huì)查看中間狀態(tài)的數(shù)據(jù)。這稱為可串行性,由

于它可以重新裝載起始數(shù)據(jù),并且重播一系列事務(wù),以使數(shù)據(jù)結(jié)束時(shí)的狀態(tài)與原

始事務(wù)執(zhí)行的狀態(tài)相同。

持久性:事務(wù)完畢之后,它對(duì)于系統(tǒng)的影響是永久性的。該修改即使出現(xiàn)系統(tǒng)故

障也將一直保持。

15.游標(biāo)的作用?如何知道游標(biāo)已經(jīng)到了最后?

游標(biāo)用于定位結(jié)果集的行,通過(guò)判斷全局變量@@FETCH_STATUS可以判斷是否到

了最后,通常此變量不等于0表達(dá)犯錯(cuò)或到了最后。

16.觸發(fā)器分為事前觸發(fā)和事后觸發(fā),這兩種觸發(fā)有和區(qū)別。語(yǔ)句級(jí)觸發(fā)和行級(jí)

觸發(fā)有何區(qū)別。

事前觸發(fā)器運(yùn)營(yíng)于觸發(fā)事件發(fā)生之前,而事后觸發(fā)器運(yùn)營(yíng)于觸發(fā)事件發(fā)生之后。

通常事前觸發(fā)器可以獲取事件之前和新的字段值。

語(yǔ)句級(jí)觸發(fā)器可以在語(yǔ)句執(zhí)行前或后執(zhí)行,而行級(jí)觸發(fā)在觸發(fā)器所影響的每一行

觸發(fā)一次。

17.SQLServer常用測(cè)試題(1)

問(wèn)題描述:

為管理崗位業(yè)務(wù)培訓(xùn)信息,建立3個(gè)表:

S(S#,SN,SD,SA)S#,SN,SD,SA分別代表學(xué)號(hào)、學(xué)員姓名、所屬單位、學(xué)員年齡

C(C#,CN)C#,CN分別代表課程編號(hào)、課程名稱

SC(S#,C#,G)S#,C#,G分別代表學(xué)號(hào)、所選修的課程編號(hào)、學(xué)習(xí)成績(jī)

1.使用標(biāo)準(zhǔn)SQL嵌套語(yǔ)句查詢選修課程名稱為‘稅收基礎(chǔ)’的學(xué)員學(xué)號(hào)和姓名

-實(shí)現(xiàn)代碼:

SELECTSN,SDFROMS

WHERE[S#]IN(SELECT[S#]FROMC,SCWHEREC.[C#]=SC.[C#]ANDCN=N'稅

收基礎(chǔ)')

2.使用標(biāo)準(zhǔn)SQL嵌套語(yǔ)句查詢選修課程編號(hào)為‘C2'的學(xué)員姓名和所屬單位

-實(shí)現(xiàn)代碼:

SELECTS.SN,S.SDFROMS,SC

WHERES.[S#]=SC.[S#]ANDSC.[C#]='C2'

3.使用標(biāo)準(zhǔn)SQL嵌套語(yǔ)句查詢不選修課程編號(hào)為‘C5’的學(xué)員姓名和所屬單位

-實(shí)現(xiàn)代碼:

SELECTSN,SDFROMS

WHERE[S#]NOTIN(SELECT[S#]FROMSCWHERE[C#]=‘C5')

4.使用標(biāo)準(zhǔn)SQL嵌套語(yǔ)句查詢選修所有課程的學(xué)員姓名和所屬單位

-實(shí)現(xiàn)代碼:

SELECTSN,SDFROMS

WHERE[S#]IN(SELECT[S#]FROMSCRIGHTJOIN

CONSC.[C#]=C.[C#]GROUPBY[S#]

HAVINGCOUNT(*)=COUNT([S#]))

5.查詢選修了課程的學(xué)員人數(shù)

-實(shí)現(xiàn)代碼:

SELECT學(xué)員人數(shù)=COUNT(DISTINCT[Sit])FROMSC

6.查詢選修課程超過(guò)5門的學(xué)員學(xué)號(hào)和所屬單位

-實(shí)現(xiàn)代碼:

SELECTSN,SDFROMS

WHERE[S#]IN(

SELECT[S#]FROMSC

GROUPBY[S#]

HAVINGCOUNT(DISTINCT[C#])>5)

18.SQLServer常用測(cè)試題(2)

問(wèn)題描述:

已知關(guān)系模式:

S(SNO,SNAME)學(xué)生關(guān)系。SNO為學(xué)號(hào),SNAME為姓名

C(CNO,CNAME,CTEACHER)課程關(guān)系。CNO為課程號(hào),CNAME為課程名,CTEACHER

為任課教師

SC(SNO,CNO,SCGRADE)選課關(guān)系。SCGRADE為成績(jī)

1.找出沒(méi)有選修過(guò)“李明”老師講授課程的所有學(xué)生姓名

-實(shí)現(xiàn)代碼:

SELECTSNAMEFROMS

WHERENOTEXISTS(

SELECT*FROMSC,CWHERESC.CNO=C.CNOANDCNAME='李明'AND

SC.SNO=S.SNO)

2.列出有二門以上(含兩門)不及格課程的學(xué)生姓名及其平均成績(jī)

-實(shí)現(xiàn)代碼:

SELECTS.SNO,S.SNAME,AVG_SCGRADE=AVG(SC.SCGRADE)

FROMS,SC,(

SELECTSNOFROMSCWHERESCGRADE<60GROUPBYSNO

HAVINGCOUNT(DISTINCTCNO)>=2)AWHERES.SNO=A.SNOANDSC.SNO=A.SNO

GROUPBYS.SNO,S.SNAME

3.列出既學(xué)過(guò)“1”號(hào)課程,又學(xué)過(guò)“2”號(hào)課程的所有學(xué)生姓名

-實(shí)現(xiàn)代碼:

SELECTS.SNO,S.SNAME

FROMS,(SELECTSC.SNOFROMSC,C

WHERESC.CNO=C.CNOANDC.CNAMEIN('I'2,)

GROUPBYSNO

HAVINGCOUNT(DISTINCTCNO)=2

)SCWHERES.SNO=SC.SNO

4.列出“1”號(hào)課成績(jī)比“2”號(hào)同學(xué)該門課成績(jī)高的所有學(xué)生的學(xué)號(hào)

-實(shí)現(xiàn)代碼:

SELECTS.SNO,S.SNAME

FROMS,(

SELECTSCI.SNO

FROMSCSCl.CCl,SCSC2,CC2

WHERESCI.CNO=C1.CNOANDCl.NAME='1'

ANDSC2.CN0=C2.CNOANDC2.NAME=,2'

ANDSCI.SCGRADE>SC2.SCGRADE

)SCWHERES.SNO=SC.SNO

5.列出“1”號(hào)課成績(jī)比“2”號(hào)課成績(jī)高的所有學(xué)生的學(xué)號(hào)及其“1”號(hào)課和

“2”號(hào)課的成績(jī)

-實(shí)現(xiàn)代碼:

SELECTS.SNO,S.SNAME,SC.[1號(hào)課成績(jī)],SC.[2號(hào)課成績(jī)]

FROMS,(

SELECTSCI.SNO,[1號(hào)課成績(jī)]=SC1.SCGRADE,[2號(hào)課成績(jī)]=SC2.SCGRADE

FROMSCSCl.CCl,SCSC2,CC2

WHERESCI.CNO=C1.CNOANDCl.NAME='1'

ANDSC2.CN0=C2.CNOANDC2.NAME=,2'

ANDSCI.SCGRADE>SC2.SCGRADE

)SCWHERES.SNO=SC.SNO

19.Question1:CanyouuseabatchSQLorstoreproceduretocalculating

theNumberofDaysinaMonth

找出當(dāng)月的天數(shù)

select

datepart(dd,dateadd(dd,-1,dateadd(mm,1,cast(cast(year(getdate())as

varchar)+cast(month(getdate0)asvarchar)+,-01'asdatetime))))

20.Question2:CanyouuseaSQLstatementtocalculatingit!

HowcanIprinta10to20"forbooksthatsellforbetween$10and

$20,“unknown”forbookswhosepriceisnull,and“other“forallother

prices?

selectbookid,bookname,price=casewhenpriceisnullthen'unknown'

whenpricebetween10and20then'10to20'elsepriceend

frombooks

21.Questions:CanyouuseaSQLstatementtofindingduplicatevalues!

HowcanIfindauthorswiththesamelastname?

Youcanusethetableauthorsindatatabasepubs.Iwanttogettheresult

asbelow:

Output:

au_lnamenumber_dups

Ringer2

(1row(s)affected)

Answer3

sele

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論