




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 每月流量活動(dòng)方案
- 河南銀行集體活動(dòng)方案
- 武漢三醫(yī)院義診活動(dòng)方案
- 民間彩燈活動(dòng)方案
- 每月幾日活動(dòng)策劃方案
- 河南三八活動(dòng)方案
- 汗蒸促銷活動(dòng)方案
- 漢口促銷活動(dòng)方案
- 河道鯽魚(yú)活動(dòng)方案
- 愛(ài)家活動(dòng)主題班會(huì)課件
- 樹(shù)脂瓦施工方案
- 山東省濟(jì)南市歷城區(qū)2024-2025學(xué)年數(shù)學(xué)五下期末調(diào)研試題含答案
- 中國(guó)冰雪運(yùn)動(dòng)產(chǎn)業(yè)趨勢(shì)洞察:雪破新局冰啟華章
- 2025年色紡紗市場(chǎng)前景分析
- 西學(xué)中結(jié)業(yè)考核復(fù)習(xí)試題含答案
- 2025年工會(huì)知識(shí)競(jìng)賽題庫(kù)200題及答案(完整版)
- 北師大版五年級(jí)下冊(cè)數(shù)學(xué)口算題題庫(kù)1200道帶答案可打印
- 完整版高中古詩(shī)文必背72篇【原文+注音+翻譯】
- 反分裂反滲透教育主題班會(huì)
- 電商平臺(tái)供應(yīng)鏈管理的優(yōu)化
- 健康體檢知識(shí)培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論