版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
DB2基礎(chǔ)DB2是IBM一種分布式數(shù)據(jù)庫(kù)解決方案。說(shuō)簡(jiǎn)單點(diǎn):DB2就是IBM開發(fā)的一種大型關(guān)系型數(shù)據(jù)庫(kù)平臺(tái).它支持多用戶或應(yīng)用程序在同一條SQL語(yǔ)句中查詢不同database甚至不同DBMS中的數(shù)據(jù)。目前,DB2有如下一些版本:(比如DB2forUnix,DB2forWindows,DB2forAS/400,DB2forOS/390等)DB2是IBM公司開發(fā)的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),它有多種不同的版本,如:DB2工作組版(DB2WorkgroupEdition)、DB2企業(yè)版(DB2EnterpriseEdition)>DB2個(gè)人版(DB2PersonalEdition)和DB2企業(yè)擴(kuò)展版(DB2Enterprise-ExendedEdition)等,這些產(chǎn)品基本的數(shù)據(jù)管理功能是一樣的,區(qū)別在于支持遠(yuǎn)程客戶能力和分布式處理能力。個(gè)人版適用于單機(jī)使用,即服務(wù)器只能由本地應(yīng)用程序訪問(wèn)。工作組版和企業(yè)版提供了本地和遠(yuǎn)程客戶訪問(wèn)DB2的功能(當(dāng)然遠(yuǎn)程客戶要安裝相應(yīng)客戶應(yīng)用程序開發(fā)部件),企業(yè)版包括工作組版中的所有部件外再增加對(duì)主機(jī)連接的支持。企業(yè)擴(kuò)展版允許將一個(gè)大的數(shù)據(jù)庫(kù)分布到同一類型的多個(gè)不同計(jì)算機(jī)上,這種分布式功能尤其適用于大型數(shù)據(jù)庫(kù)的處理。DB2可運(yùn)行在OS/2、WindowsNT、UNIX操作系統(tǒng)上,通常將運(yùn)行在這些平臺(tái)上的DB2產(chǎn)品統(tǒng)稱為DB2通用數(shù)據(jù)庫(kù),這主要是強(qiáng)調(diào)這些產(chǎn)品運(yùn)行環(huán)境類似,并共享相同的源代碼°DB2通用數(shù)據(jù)庫(kù)主要組件包括數(shù)據(jù)庫(kù)引擎(DalabaseEngine)應(yīng)用程序接口和一組工具。數(shù)據(jù)庫(kù)引擎提供了關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)的基本功能,如管理數(shù)據(jù)、控制數(shù)據(jù)的訪問(wèn)(包括并發(fā)控制)、保證數(shù)據(jù)完整性及數(shù)據(jù)安全。所有數(shù)據(jù)訪問(wèn)都通過(guò)SQL接口進(jìn)行。db2起源于systemr和systemr*。他支持從pc到unix,從中小型機(jī)到大型機(jī);從ibm到非ibm(hp及sununix系統(tǒng)等)各種操作平臺(tái)。他既可以在主機(jī)上以主/從方式獨(dú)立運(yùn)行,也可以在客戶/服務(wù)器環(huán)境中運(yùn)行。其中服務(wù)平臺(tái)可以是os/400,aix,os/2,hp-unix,sun-solaris等操作系統(tǒng),客戶機(jī)平臺(tái)可以是os/2或windows,dos,aix,hp-ux,sunsolaris等操作系統(tǒng)。一、 db2核心數(shù)據(jù)庫(kù)的特色db2數(shù)據(jù)庫(kù)核心又稱作db2公共服務(wù)器,采用多進(jìn)程多線索體系結(jié)構(gòu),可以運(yùn)行于多種操作系統(tǒng)之上,并分別根據(jù)相應(yīng)平臺(tái)環(huán)境作了調(diào)整和優(yōu)化,以便能夠達(dá)到較好的性能。(1) 支持面向?qū)ο蟮木幊蘢b2支持復(fù)雜的數(shù)據(jù)結(jié)構(gòu),如無(wú)結(jié)構(gòu)文本對(duì)象,可以對(duì)無(wú)結(jié)構(gòu)文本對(duì)象進(jìn)行布爾匹配、最接近匹配和任意匹配等搜索??梢越⒂脩魯?shù)據(jù)類型和用戶自定義函數(shù)。(2) 支持多媒體應(yīng)用程序db2支持大二分對(duì)象(blob),允許在數(shù)據(jù)庫(kù)中存取二進(jìn)制大對(duì)象和文本大對(duì)象。其中,二進(jìn)制大對(duì)象可以用來(lái)存儲(chǔ)多媒體對(duì)象。(3) 備份和恢復(fù)能力(4) 支持存儲(chǔ)過(guò)程和觸發(fā)器,用戶可以在建表時(shí)顯示的定義復(fù)雜的完整性規(guī)則(5) 支持的硅sql查詢(6) 支持異構(gòu)分布式數(shù)據(jù)庫(kù)訪問(wèn)(7) 支持?jǐn)?shù)據(jù)復(fù)制二、 開發(fā)工具ibm提供了許多開發(fā)工具,主要有visualizerquery,visualage,visualgen。visualizer是客戶/服務(wù)器環(huán)境中的集成工具軟件,主要包括visualizerquery可視化查詢工具,visualizerultimediaquery可視化多媒體查詢工具,visualizerchart可視化圖標(biāo)工具,visualizerprocedure可視化過(guò)程工具,visualizerstatistics可視化統(tǒng)計(jì)工具,visualizerplans可視化規(guī)劃工具,visualizerdevelopment可視化開發(fā)工具。visualage是一個(gè)功能很強(qiáng)的可視化的面向?qū)ο蟮膽?yīng)用開發(fā)工具,可翼大幅度的提高軟件開發(fā)效率。其主要特征有:(1) 可視化程序設(shè)計(jì)工具。(2) 部件庫(kù)。包括支持圖形用戶接口的預(yù)制不見(jiàn),以及包含數(shù)據(jù)庫(kù)查詢、事務(wù)和本地、遠(yuǎn)程函數(shù)的通用部件。(3) 關(guān)系數(shù)據(jù)庫(kù)支持。(4) 群體程序設(shè)計(jì)。(5) 支持增強(qiáng)的動(dòng)態(tài)連接庫(kù)。支持多媒體。支持?jǐn)?shù)據(jù)共享。visualgen是ibm所提供的高效開發(fā)方案中的重要組成部分。它集成了第四代語(yǔ)言、客戶服務(wù)器與面向?qū)ο蠹夹g(shù),給用戶提供了一個(gè)完整、高效的開發(fā)環(huán)境。三、DB2數(shù)據(jù)庫(kù)的安裝這是在IBMRS6000操作系統(tǒng)為AIX安裝的,HP9000上雷同注冊(cè)為具有超級(jí)用戶權(quán)限的用戶(root)將標(biāo)有“。82通用數(shù)據(jù)庫(kù)企業(yè)版”的軟件光盤插入驅(qū)動(dòng)器輸入如下命令,以創(chuàng)建一個(gè)目錄來(lái)安裝該CD-ROM:#mkdir-p/cdrom其中cdrom表示CD-ROM安裝目錄。輸入如下命令,來(lái)分配CD-ROM文件系統(tǒng):#smittystorage選擇文件系統(tǒng)選擇添加/更改/顯示/刪除文件系統(tǒng)選擇CDROM文件系統(tǒng)選擇添加CDROM文件系統(tǒng)在彈出窗口中,輸入如下項(xiàng)作為安裝點(diǎn): /cdrom通過(guò)輸入以下命令來(lái)安裝CD-ROM文件系統(tǒng):smitmountf在文件系統(tǒng)名稱字段中輸入值。例如,該名稱可能是/dev/cd0。在安裝目錄字段中輸入值。例如,此值可能是/cdrom。將安裝為只讀系統(tǒng)設(shè)置為Yes。單擊確定。cd/cdrom輸入./db2setup命令以啟動(dòng)DB2安裝程序。安裝DB2V6窗口打開。按Tab鍵更改突出顯示的選項(xiàng),按Enter鍵選擇或取消選擇選項(xiàng)。在服務(wù)器上安裝,一般選擇安裝以下三個(gè)產(chǎn)品:注意:要顯示想要安裝的DB2產(chǎn)品的部件,選擇定制。要在任何時(shí)候返回至先前窗口,選擇取消。?DB2AdministrationClient選擇定制安裝這個(gè)產(chǎn)品,?DB2UDBenterpriseedition選擇定制安裝這個(gè)產(chǎn)品,?DB2SoftwareDeveloperKit如果同時(shí)做開發(fā),需要定制安裝此產(chǎn)品。在“DB2產(chǎn)品信息”和“DB2產(chǎn)品庫(kù)”只選擇中國(guó)語(yǔ)言ZH_CN支持。在16步確認(rèn)后,將開始安裝數(shù)據(jù)庫(kù)程序。在安裝過(guò)程中,還需確認(rèn)以下問(wèn)題:是否建立DB2管理帳戶,一般選擇建立:按缺省建立db2管理用戶db2as(使用缺省的UID,GroupId,安裝home路徑),在語(yǔ)言支持上,只選擇中國(guó)語(yǔ)言ZH_CN支持。是否建立DB2的實(shí)例,一般選擇建立:?按缺省建立db2管理用戶db2inst1:db2iadm1(使用缺省的UID,GroupId,安裝home路徑),在語(yǔ)言支持上,只選擇中國(guó)語(yǔ)言ZH_CN支持。?按缺省建立db2用戶db2fenc1:db2fenc1(使用缺省的UID,GroupId,安裝home路徑),在語(yǔ)言支持上,只選擇中國(guó)語(yǔ)言ZH_CN支持。?是否建立sample數(shù)據(jù)庫(kù)(為了檢查數(shù)據(jù)庫(kù)的安裝是否正確,一般選擇建立sample數(shù)據(jù)庫(kù))?是否選擇DB2的實(shí)例進(jìn)程在操作系統(tǒng)啟動(dòng)時(shí),自動(dòng)執(zhí)行初始化如果在獨(dú)立服務(wù)器上安裝使用,可選擇autostart,但在aix+hacmp+db2的雙機(jī)共享環(huán)境中,不要選擇autostart,DB2實(shí)例進(jìn)程的啟動(dòng),由hacmp來(lái)控制。安裝結(jié)果:數(shù)據(jù)庫(kù)程序安裝完成后,DB2的軟件程序安裝在/usr/lpp目錄中,DB2DIR=/usr/lpp/DB2_06_01注意:如果安裝過(guò)程中沒(méi)有指定建立實(shí)例和管理帳戶,在安裝完成后可以使用命令創(chuàng)建實(shí)例(db2icrt)0或者要?jiǎng)?chuàng)建或添加新的實(shí)例、“管理服務(wù)器”或其他DB2產(chǎn)品和部件,輸入如下命令:/usr/lpp/DB2_06_01/install/DB2setup19.驗(yàn)證安裝在安裝時(shí)若沒(méi)有選擇建立sample數(shù)據(jù)庫(kù),在安裝完成后可以通過(guò)命令(db2sampl)創(chuàng)建SAMPLE數(shù)據(jù)庫(kù),并通過(guò)使用命令行處理器與該數(shù)據(jù)庫(kù)相連來(lái)驗(yàn)證安裝:作為具有系統(tǒng)管理(SYSADM)權(quán)限的用戶向系統(tǒng)注冊(cè)。如:db2inst1輸入DB2sampl命令以便創(chuàng)建SAMPLE數(shù)據(jù)庫(kù)。創(chuàng)建SAMPLE數(shù)據(jù)庫(kù)時(shí),用數(shù)據(jù)庫(kù)別名SAMPLE將它自動(dòng)編目。輸入DB2start命令以啟動(dòng)數(shù)據(jù)庫(kù)管理程序。輸入下列命令來(lái)與SAMPLE數(shù)據(jù)庫(kù)相連,檢索在部門20中工作的所有雇員的列表,并重設(shè)數(shù)據(jù)庫(kù)連接:DB2connecttosampleDB2"select*fromstaffwheredept=20"DB2connectreset注意:在驗(yàn)證安裝后,可除去SAMPLE數(shù)據(jù)庫(kù)以釋放磁盤空間。輸入DB2dropdatabasesample命令來(lái)卸下SAMPLE數(shù)據(jù)庫(kù)。若尚未未安裝DB2工具,則您可以通過(guò)創(chuàng)建SAMPLE數(shù)據(jù)庫(kù),并通過(guò)使用命令行處理器與該數(shù)據(jù)庫(kù)相連來(lái)驗(yàn)證安裝,如下所示:步驟1.作為具有系統(tǒng)管理(SYSADM)權(quán)限的用戶向系統(tǒng)注冊(cè)。步驟2,輸入db2sampl命令以便創(chuàng)建SAMPLE數(shù)據(jù)庫(kù)。創(chuàng)建SAMPLE數(shù)據(jù)庫(kù)時(shí),用數(shù)據(jù)庫(kù)別名SAMPLE將它自動(dòng)編目。步驟3,輸入db2start命令以啟動(dòng)數(shù)據(jù)庫(kù)管理程序。步驟4,輸入下列命令來(lái)與SAMPLE數(shù)據(jù)庫(kù)相連,檢索在部門20中工作的所有雇員的列表,并重設(shè)數(shù)據(jù)庫(kù)連接:db2connecttosampledb2"select*fromstaffwheredept=20"db2connectreset如以上命令均正確執(zhí)行,則證明DB2UDB數(shù)據(jù)庫(kù)服務(wù)器的安裝已經(jīng)成功完成.四、 DB2數(shù)據(jù)庫(kù)的備份和恢復(fù)最近,我恢復(fù)了一個(gè)數(shù)據(jù)庫(kù),其中的辛苦不予言表,我想寫出自己用到的一些語(yǔ)句,和遇到相同問(wèn)題的xdjm共勉。首先談db2數(shù)據(jù)庫(kù)的備份,我用的是backup命令。db2backupdatabase數(shù)據(jù)庫(kù)名(我的庫(kù)是jsdb)忘了說(shuō)了,在backup之前需要停止你要備份的數(shù)據(jù)庫(kù),我用了db2stopforce(之所以用force參數(shù)是因?yàn)檫@樣好停懶省事:)和db2start。這樣就保證可以成功backup了。備份完成后db2會(huì)告訴你一個(gè)時(shí)間戳,例如:20040831(之后好幾位)這樣就會(huì)在當(dāng)前目錄下產(chǎn)生一個(gè)與你數(shù)據(jù)庫(kù)名相同的文件夾名例如:jsdb。這個(gè)文件夾目錄層次很重要,如果錯(cuò)了會(huì)在恢復(fù)時(shí)提示找不到文件。備份完成以后就是恢復(fù)了,我用的是restore命令。db2restoredatabase數(shù)據(jù)庫(kù)名(jsdb)takenat時(shí)間戳(20040831)執(zhí)行這個(gè)語(yǔ)句要注意兩點(diǎn):1,要把備份文件夾考到當(dāng)前目錄下(我用了一個(gè)cd。:\命令設(shè)當(dāng)前目錄為c盤,將jsdb文件夾考到c盤根目錄下);2,時(shí)間戳要和jsdb目錄中的一致。這樣,就完成了恢復(fù)數(shù)據(jù)庫(kù)了。五、 DB2編程序技巧1DB2編程1.1建存儲(chǔ)過(guò)程時(shí)Create后一定不要用TAB鍵createprocedure的create后只能用空格,而不可用tab健,否則編譯會(huì)通不過(guò)。切記,切記。1.2使用臨時(shí)表要注意,臨時(shí)表只能建在usertemporytablesspace上,如果database只有systemtemporytablespace是不能建臨時(shí)表的。另外,DB2的臨時(shí)表和sybase及oracle的臨時(shí)表不太一樣,DB2的臨時(shí)表是在一個(gè)session內(nèi)有效的。所以,如果程序有多線程,最好不要用臨時(shí)表,很難控制。建臨時(shí)表時(shí)最好加上withreplace選項(xiàng),這樣就可以不顯示的drop臨時(shí)表,建臨時(shí)表時(shí)如果不加該選項(xiàng)而該臨時(shí)表在該session內(nèi)已創(chuàng)建且沒(méi)有drop,這時(shí)會(huì)發(fā)生錯(cuò)誤。1.3從數(shù)據(jù)表中取指定前幾條記錄select*fromtb_market_codefetchfirst1rowsonly但下面這種方式不允許selectmarket_codeintov_market_codefromtb_market_codefetchfirst1rowsonly;選第一條記錄的字段到一個(gè)變量以以下方式代替declarev_market_codechar(1);declarecursor1cursorforselectmarket_codefromtb_market_codefetchfirst1rowsonlyforupdate;opencursor1;fetchcursor1intov_market_code;closecursor1;1.4游標(biāo)的使用注意commit和rollback使用游標(biāo)時(shí)要特別注意如果沒(méi)有加withhold選項(xiàng),在Commit和Rollback時(shí),該游標(biāo)將被關(guān)閉。Commit和Rollback有很多東西要注意。特別小心游標(biāo)的兩種定義方式一種為declarecontinuehandlerfornotfoundbeginsetv_notfound=1;end;declarecursor1cursorwithholdforselectmarket_codefromtb_market_codeforupdate;opencursor1;setv_notfound=0;fetchcursor1intov_market_code;whilev_notfound=0Do--worksetv_notfound=0;fetchcursor1intov_market_code;endwhile;closecursor1;這種方式使用起來(lái)比較復(fù)雜,但也比較靈活。特別是可以使用withhold選項(xiàng)。如果循環(huán)內(nèi)有commit或rollback而要保持該cursor不被關(guān)閉,只能使用這種方式。另一種為pcursor1:forloopcs1ascousor1cursorasselectmarket_codeasmarket_codefromtb_market_codeforupdatedoDB2基礎(chǔ)知識(shí)endfor;這種方式的優(yōu)點(diǎn)是比較簡(jiǎn)單,不用(也不允許)使用open,fetch,close。但不能使用withhold選項(xiàng)。如果在游標(biāo)循環(huán)內(nèi)要使用commit,rollback則不能使用這種方式。如果沒(méi)有commit或rollback的要求,推薦使用這種方式(看來(lái)For這種方式有問(wèn)題)。修改游標(biāo)的當(dāng)前記錄的方法updatetb_market_codesetmarket_code='0'wherecurrentofcursor!;不過(guò)要注意將cursor!定義為可修改的游標(biāo)declarecursor!cursorforselectmarket_codefromtb_market_codeforupdate;forupdate不能和GROUPBY、DISTINCT>ORDERBY、FORREADONLY及UNION,EXCEPT,orINTERSECT但UNIONALL除外)一起使用。1.5類似decode的轉(zhuǎn)碼操作oracle中有一個(gè)函數(shù)selectdecode(a1,'1','n1','2','n2','n3')aa1fromdb2沒(méi)有該函數(shù),但可以用變通的方法selectcasea1when'1'then'n1'when'2'then'n2'else'n3'endasaa1from1.6類似charindex查找字符在字串中的位置Locate(?y,,,dfdasfay,)查找’y’在’dfdasfay’中的位置。1.7類似datedif計(jì)算兩個(gè)日期的相差天數(shù)days(date(?2001-06-05'))-days(date(?2001-04-0T))days返回的是從0001-01-01開始計(jì)算的天數(shù)1.8寫UDF的例子C寫見(jiàn)sqllib\samples\cli\udfsrv.c1.9創(chuàng)建含identity值(即自動(dòng)生成的ID)的表建這樣的表的寫法CREATETABLEtest(t1SMALLINTNOTNULLGENERATEDALWAYSASIDENTITY(STARTWITH500,INCREMENTBY1),t2CHAR(1));在一個(gè)表中只允許有一個(gè)identity的column.1.10預(yù)防字段空值的處理SELECTDEPTNO,DEPTNAME,COALESCE(MGRNO,'ABSENT'),ADMRDEPTFROMDEPARTMENTCOALESCE函數(shù)返回()中表達(dá)式列表中第一個(gè)不為空的表達(dá)式,可以帶多個(gè)表達(dá)式。和oracle的isnull類似,但isnull好象只能兩個(gè)表達(dá)式。1.11取得處理的記錄數(shù)declarev_countint;updatetb_testsett1='0'wheret2='2';--檢查修改的行數(shù),判斷指定的記錄是否存在getdiagnosticsv_count=ROW_COUNT;只對(duì)update,insert,delete起作用.不對(duì)selectinto有效1.12從存儲(chǔ)過(guò)程返回結(jié)果集(游標(biāo))的用法1、建一sp返回結(jié)果集CREATEPROCEDUREDB2INST1.Proc1()LANGUAGESQLresultsets2(返回兩個(gè)結(jié)果集)--SQL存儲(chǔ)過(guò)程P1:BEGINdeclarec1cursorwithreturntocallerforselectmarket_codefromtb_market_code;--指定該結(jié)果集用于返回給調(diào)用者declarec2cursorwithreturntocallerforselectmarket_codefromtb_market_code;openc1;openc2;ENDP12、建一SP調(diào)該sp且使用它的結(jié)果集CREATEPROCEDUREDB2INST1.Proc2(outout_market_codechar(1))LANGUAGESQL--SQL存儲(chǔ)過(guò)程P1:BEGINdeclareloc1,loc2result_set_locatorvarying;--建立一個(gè)結(jié)果集數(shù)組callproc1;--調(diào)用該SP返回結(jié)果集。associateresultsetlocator(loc1,loc2)withprocedureproc1;--將返回結(jié)果集和結(jié)果集數(shù)組關(guān)聯(lián)allocatecursor1cursorforresultsetloc1;allocatecursor2cursorforresultsetloc2;--將結(jié)果集數(shù)組分配給cursorfetchcursor1intoout_market_code;--直接從結(jié)果集中賦值closecursor1;ENDP13、 動(dòng)態(tài)SQL寫法DECLARECURSORC1FORSTMT1;PREPARESTMT1FROM'ALLOCATEC2CURSORFORRESULTSET?';4、 注意:一、 如果一個(gè)sp調(diào)用好幾次,只能取到最近一次調(diào)用的結(jié)果集。二、 allocate的cursor不能再次open,但可以close,是closesp中的對(duì)應(yīng)cursor。1.13類型轉(zhuǎn)換函數(shù)selectcast(currenttimeaschar(8))fromtb_market_code1.14存儲(chǔ)過(guò)程的互相調(diào)用目前,csp可以互相調(diào)用。Sqlsp可以互相調(diào)用,Sqlsp可以調(diào)用Csp,但Csp不可以調(diào)用Sqlsp(最新的說(shuō)法是可以)C存儲(chǔ)過(guò)程參數(shù)注意createprocedurepr_clear_task_ctrl(ININ_BRANCH_CODEchar(4),ININ_TRADEDATEchar(8),ININ_TASK_IDchar(2),ININ_SUB_TASK_IDchar(4),OUTOUT_SUCCESS_FLAGINTEGER)DYNAMICRESULTSETS0LANGUAGECPARAMETERSTYLEGENERALWITHNULLS(如果不是這樣,sql的sp將不能調(diào)用該用c寫的存儲(chǔ)過(guò)程,產(chǎn)生保護(hù)性錯(cuò)誤)NODBINFOFENCEDMODIFIESSQLDATAEXTERNALNAME'pr_clear_task_ctrl!pr_clear_task_ctrl'@存儲(chǔ)過(guò)程fence及unfencefence的存儲(chǔ)過(guò)程單獨(dú)啟用一個(gè)新的地址空間,而unfence的存儲(chǔ)過(guò)程和調(diào)用它的進(jìn)程使用同一個(gè)地址空間。一般而言,fence的存儲(chǔ)過(guò)程比較安全。但有時(shí)一些特殊的要求,如要取調(diào)用者的pid,則fence的存儲(chǔ)過(guò)程會(huì)取不到,而只有unfence的能取到。SP錯(cuò)誤處理用法如果在SP中調(diào)用其它的有返回值的,包括結(jié)果集、臨時(shí)表和輸出參數(shù)類型的SP,DB2會(huì)自動(dòng)發(fā)出一個(gè)SQLWarningo而在我們?cè)瓉?lái)的處理中對(duì)于SQLWarning都會(huì)插入到日志,這樣子最后會(huì)出現(xiàn)多條SQLCODE=0的警告信息。處理辦法:定義一個(gè)標(biāo)志變量,比如DECLAREV_STATUSINTEGERDEFAULT0,在CALLSPNAME之后,SETV_STATUS=1,DECLARECONTINUEHANDLERFORSQLWARNINGBEGINIFV_STATUS<>1THEN--警告處理,插入日志SETV_STATUS=0;ENDIF;END;import用法db2importfromghl.outofDELmessageserr.txtinsertintodb2inst1.tb_dbf_match_ha注意要加schmavalues的使用如果有多個(gè)set語(yǔ)句給變量付值,最好使用values語(yǔ)句,改寫為一句。這樣可以提高效率。但要注意,values不能將null值付給一個(gè)變量。values(null)intoout_return_code;這個(gè)語(yǔ)句會(huì)報(bào)錯(cuò)的。1.20給select語(yǔ)句指定隔離級(jí)別select*fromtb_head_stock_balancewithur1.21atomic及notatomic區(qū)別atomic是將該部分程序塊指定為一個(gè)整體,其中任何一個(gè)語(yǔ)句失敗,則整個(gè)程序塊都相當(dāng)于沒(méi)做,包括包含在atomic塊內(nèi)的已經(jīng)執(zhí)行成功的語(yǔ)句也相當(dāng)于沒(méi)做,有點(diǎn)類似于transaction0DB2編程性能注意2.1大數(shù)據(jù)的導(dǎo)表應(yīng)該是export后再load性能更好,因?yàn)閘oad不寫日志。比selectinto要好。SQL語(yǔ)句盡量寫復(fù)雜SQL盡量使用大的復(fù)雜的SQL語(yǔ)句,將多而簡(jiǎn)單的語(yǔ)句組合成大的SQL語(yǔ)句對(duì)性能會(huì)有所改善。DB2的SQLEngieer對(duì)復(fù)雜語(yǔ)句的優(yōu)化能力比較強(qiáng),基本上不用當(dāng)心語(yǔ)句的性能問(wèn)題。Oracle則相反,推薦將復(fù)雜的語(yǔ)句簡(jiǎn)單化,SQLEngieer的優(yōu)化能力不是特別好。這是因?yàn)槊恳粋€(gè)SQL語(yǔ)句都會(huì)有resetSQLCODE和SQLSTATE等各種操作,會(huì)對(duì)數(shù)據(jù)庫(kù)性能有所消耗。一個(gè)總的思想就是盡量減少SQL語(yǔ)句的個(gè)數(shù)。SQLSP及CSP的選擇首先,C的sp的性能比sql的sp的要高。一般而言,SQL語(yǔ)句比較復(fù)雜,而邏輯比較簡(jiǎn)單,sqlsp與csp的性能差異會(huì)比較小,這樣從工作量考慮,用SQL寫比較好。而如果邏輯比較復(fù)雜,SQL比較簡(jiǎn)單,用c寫比較好。2.4查詢的優(yōu)化(HASH及RR_TO_RS)db2setDB2_HASH_JOIN=Y(HASH排序優(yōu)化)指定排序時(shí)使用HASH排序,這樣db2在表join時(shí),先對(duì)各表做hash排序,再join,這樣可以大大提高性能。劇沈剛說(shuō)做實(shí)驗(yàn),7個(gè)一千萬(wàn)條記錄表的做join取10000條記錄,再?zèng)]有索引的情況下72秒。db2setDB2_RR_TO_RS=Y該設(shè)置后,不能定義RR隔離級(jí)別,如果定義RR,db2也會(huì)自動(dòng)降為RS.這樣,db2不用管理Nextkey,可以少管理一些東西,這樣可以提高性能。2.5避免使用count(*)及exists的方法1、 首先要避免使用count(*)操作,因?yàn)閏ount(*)基本上要對(duì)表做全部掃描一遍,如果使用很多會(huì)導(dǎo)致很慢。2、 exists比count(*)要快,但總的來(lái)說(shuō)也會(huì)對(duì)表做掃描,它只是碰到第一條符合的記錄就停下來(lái)。如果做這兩中操作的目的是為selectinto服務(wù)的話,就可以省略掉這兩步。直接使用selectinto選擇記錄中的字段。如果是沒(méi)有記錄選擇到的話,db2會(huì)將sqlcode=100和sqlstate=’20000’如果是有多條記錄的話,db2會(huì)產(chǎn)生一個(gè)錯(cuò)誤。程序可以創(chuàng)建continuehandlerforexceptioncontinuehandlerfornotfound來(lái)檢測(cè)。這是最快速的方法。3、如果是判斷是不是一條,可以使用游標(biāo)來(lái)計(jì)算,用一個(gè)計(jì)數(shù)器,累加,達(dá)到預(yù)定值后就離開。這個(gè)速度也比count(*)要快,因?yàn)樗灰獟呙璧筋A(yù)定值就不再掃描了,不用做全表的scan,不過(guò)它寫起來(lái)比較麻煩。DB2表及sp管理3.1看存儲(chǔ)過(guò)程文本selecttextfromcedureswhereprocname='PROC1';3.2看表結(jié)構(gòu)describetableceduresdescribeselect*fromcedures3.3查看各表對(duì)sp的影響(被哪些sp使用)selectPROCNAMEfromSYSCAT.PROCEDURESwhereSPECIFICNAMEin(selectdnamefromsysibm.sysdependencieswherebnamein(selectPKGNAMEfromsyscat.packagedepwherebname='TB_BRANCH'))3.4查看sp使用了哪些表selectbnamefromsyscat.packagedepwherebtype='T'andpkgnamein(selectbnamefromsysibm.sysdependencieswherednamein(selectspecificnamefromcedureswhereprocname='PR_CLEAR_MATCH_DIVIDE_SHA'))3.5查看function被哪些sp使用selectPROCNAMEfromSYSCAT.PROCEDURESwhereSPECIFICNAMEin(selectdnamefromsysibm.sysdependencieswherebnamein(selectPKGNAMEfromsyscat.packagedepwherebnamein(selectSPECIFICNAMEfromSYSCAT.functionswherefuncname='GET_CURRENT_DATE')))使用function時(shí)要注意,如果想drop掉該function必須要先將調(diào)用該function的其它存儲(chǔ)過(guò)程全部drop掉。必須先創(chuàng)建function,調(diào)用該function的sp才可以創(chuàng)建成功。3.6修改表結(jié)構(gòu)一次給一個(gè)表增加多個(gè)字段:db2"altertabletb_testaddcolumnt1char(1)addcolumnt2char(2)addcolumnt3int"4DB2系統(tǒng)管理DB2安裝在Windows98下安裝db27.1或其他版本,如果有Jdbc錯(cuò)誤或者是Windwos98不能啟動(dòng),則將autoexec.bat中的內(nèi)容用如下內(nèi)容替換:C:\PROGRA~1\TRENDP~1\PCSCAN.EXEC:\C:\WINDOWS\COMMAND\/NS/WIN95remC:\WINDOWS\COMMAND.COM/E:32768REM[Header]REM[CD-ROMDrive]REM[Miscellaneous]REM[Display]setPATH=%PATH%;C:\MSSQL\BINN;C:\PROGRA~1\SQLLIB\BIN;C:\PROGRA~1\SQLLIB\FUNCTION;C:\PROGRA?1\SQLLIB\SAMPLES\REPL;C:\PROGRA?1\SQLLIB\HELPIFEXISTC:\PROGRA~1\IBM\IMNNQ\IMQENVBATCALLC:\PROGRA~1\IBM\IMNNQ\IMQENV.BJTIFEXISTC:\PROGRA~1\IBM\IMNNQ\IMNENVBATCALLC:\PROGRA~1\IBM\IMNNQ\IMNENV.BJTsetDB2INSTANCE=DB2setCLASSPATH=.;C:\PROGRA?1\SQLLIB\java\db2java.zip;C:\PROGRA?1\SQLLIB\java\runtime.zip;C:\PROGRA?1\SQLLIB\java\sqlj.zip;C:\PROGRA?1\SQLLIB\binsetMDIS_PROFILE=C:\PROGRA?1\SQLLIB\METADATA\PROFILESsetLC_ALL=ZH_CNsetINCLUDE=C:\PROGRA?1\SQLLIB\INCLUDE;C:\PROGRA?1\SQLLIB\LIB;C:\PROGRA?1\SQLLIB\TEMPLATES\INCLUDEsetLIB=C:\PROGRA?1\SQLLIB\LIBsetDB2PATH=C:\PROGRA?1\SQLLIBsetDB2TEMPDIR=C:\PROGRA?1\SQLLIBsetVWS_TEMPLATES=C:\PROGRA?1\SQLLIB\TEMPLATESsetVWS_LOGGING=C:\PROGRA?1\SQLLIB\LOGGINGsetVWSPATH=C:\PROGRA?1\SQLLIBsetVWS_FOLDER=IBMDB2setICM_FOLDER=>息目錄管理器win創(chuàng)建DatabasecreatedatabaseheadusingcodesetIBM-eucCNterritoryCN;這樣可以支持中文。4.3手工做數(shù)據(jù)庫(kù)遠(yuǎn)程(別名)配置db2catalogtcpipnodenodelremote00server50000db2catalogdbheadastest1atnodenode1然后既可使用:db2connecttotest1user...using...連上head庫(kù)了4.4停止啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例db2start、db2stop(force)4.5連接數(shù)據(jù)庫(kù)及看當(dāng)前連接數(shù)據(jù)庫(kù)連接數(shù)據(jù)庫(kù):db2connecttoheaduserdb2inst1usingdb2inst1當(dāng)前連接數(shù)據(jù)庫(kù):db2connect4.6停止啟動(dòng)數(shù)據(jù)庫(kù)headdb2activatedbheaddb2deactivatedbhead要注意的是,如果有連接,使用deactivatedb不起作用。如果是用activatedb啟動(dòng)的數(shù)據(jù)庫(kù),一定要用deactivatedb才會(huì)停止該數(shù)據(jù)庫(kù)。(當(dāng)然如果是db2stop也會(huì)停止)。使用activatedb,這樣可以減少第一次連接時(shí)的等待時(shí)間。Database如果不是使用activatedb啟動(dòng)而是通過(guò)連接數(shù)據(jù)庫(kù)而啟動(dòng)的話,當(dāng)所有的連接都退出后,db也就自動(dòng)停止。4.7查看及停止數(shù)據(jù)庫(kù)當(dāng)前的應(yīng)用程序查看應(yīng)用程序:db2listapplicationsshowdetail授權(quán)標(biāo)識(shí)|應(yīng)用程序名|應(yīng)用程序句柄|應(yīng)用程序標(biāo)識(shí)|序號(hào)#|代理程序|協(xié)調(diào)程序|狀態(tài)|狀態(tài)更改時(shí)間|DB名|DB路徑| |節(jié)點(diǎn)號(hào)|pid/線程其中:1、 應(yīng)用程序標(biāo)識(shí)的第一部分是應(yīng)用程序的IP地址,不過(guò)是已16進(jìn)制表示的。2、 pid/線程即是在unix下看到的線程號(hào)。停止應(yīng)用程序:db2"forceapplication(236)”db2“forceapplicationall”其中:該236是查看中的應(yīng)用程序句柄。4.8查看本instance下有哪些databasedb2LISTDATABASEDIRECTORY[on/home/db2inst1]4.9查看及更改數(shù)據(jù)庫(kù)head的配置請(qǐng)注意,在大多數(shù)情況下,更改了數(shù)據(jù)的配置后,只有在所有的連接全部斷掉后才會(huì)生效。查看數(shù)據(jù)庫(kù)head的配制db2getdbcfgforhead更改數(shù)據(jù)庫(kù)head的某個(gè)設(shè)置的值4.9.1改排序堆的大小db2updatedbcfgforheadusingSORTHEAP2048將排序堆的大小改為2048個(gè)頁(yè)面,查詢比較多的應(yīng)用最好將該值設(shè)置比較大一些。4.9.2改事物日志的大小db2updatedbcfgforheadusinglogfilsiz40000該項(xiàng)內(nèi)容的大小要和數(shù)據(jù)庫(kù)的事物處理相適應(yīng),如果事物比較大,應(yīng)該要將該值改大一點(diǎn)。否則很容易處理日志文件滿的錯(cuò)誤。4.9.3出現(xiàn)程序堆內(nèi)存不足時(shí)修改程序堆內(nèi)存大小db2updatedbcfgforheadusingapplheapsz40000該值不能太小,否則會(huì)沒(méi)有足夠的內(nèi)存來(lái)運(yùn)行應(yīng)用程序。4.10查看及更改數(shù)據(jù)庫(kù)實(shí)例的配置查看數(shù)據(jù)庫(kù)實(shí)例配置db2getdbmcfg更改數(shù)據(jù)庫(kù)實(shí)例配制4.10.1打開對(duì)鎖定情況的監(jiān)控。db2updatedbmcfgusingdft_mon_lockon4.10.2更改診斷錯(cuò)誤捕捉級(jí)別db2updatedbmcfgusingdiaglevel30為不記錄信息1為僅記錄錯(cuò)誤2記錄服務(wù)和非服務(wù)錯(cuò)誤缺省是3,記錄db2的錯(cuò)誤和警告4是記錄全部信息,包括成功執(zhí)行的信息一般情況下,請(qǐng)不要用4,會(huì)造成db2的運(yùn)行速度非常慢。db2環(huán)境變量db2重裝后用如下方式設(shè)置db2的環(huán)境變量,以保證sp可編譯將set_cpl放到AIX上,chmod+xset_cpl,再運(yùn)行之set_cpl的內(nèi)容db2setDB2_SQLROUTINE_COMPILE_COMMAND="xlc_r-g\-I$HOME/sqllib/includeSQLROUTINE_FILENAME.c\-bE:SQLROUTINE_FILENAME.exp-eSQLROUTINE_ENTRY\-oSQLROUTINE_FILENAME-L$HOME/sqllib/lib-lc-ldb2"db2setDB2_SQLROUTINE_KEEP_FILES=1db2命令環(huán)境設(shè)置db2=>listcommandoptionsdb2=>updatecommandoptionsusingCoff--或on,只是臨時(shí)改變db2=>db2setdb2options=+c--或-c,永久改變4.13改變隔離級(jí)別DB2SETDB2_SQLROUTINE_PREPOPTS=CS|RR|RS|UR交互環(huán)境更改session的隔離級(jí)別,db2changeisolationtoUR請(qǐng)注意只有沒(méi)有連接數(shù)據(jù)庫(kù)時(shí)可以這樣來(lái)改變隔離級(jí)別。4.14管理db\instance的參數(shù)getdbcfgforhead(db)getdbmcfg(instance)4.15升級(jí)后消除版本問(wèn)題db2 bind@db2ubind.lstdb2 bind @db2cli.lst4.16查看數(shù)據(jù)庫(kù)表的死鎖再用命令中心查詢數(shù)據(jù)時(shí)要注意,如果用了交互式查詢數(shù)據(jù),命令中心將會(huì)給所查的記錄加了s鎖.這時(shí)如果要update記錄,由于update要使用x鎖,排它鎖,將會(huì)處于鎖等待.首先,將監(jiān)視開關(guān)打開db2updatedbmcfgusingdft_mon_lockon快照db2getsnapshotforLocksoncleardb>snap.logtablesbufferpoolstablespacesdatabase然后再看snap.log中的內(nèi)容即可。對(duì)Lock可根據(jù)Applicationhandle(應(yīng)用程序句柄)看每個(gè)應(yīng)用程序的鎖的情況。監(jiān)視完畢后,不要忘了將監(jiān)視器關(guān)閉db2updatedbmcfgusingdft_mon_lockoff六、DB2常用知識(shí)以下主要以DB27.X為基礎(chǔ)的.以下的字符為小寫.本文對(duì)DB2高手來(lái)說(shuō)是不用看的.DB2產(chǎn)品的級(jí)別有那些?企業(yè)版的ENTERPRISEEDITION、工作組版WORKGROUPEDITION、企業(yè)擴(kuò)展版ENTERPRISEEXTENDEDTION、個(gè)人版的PERSONALEDITION、衛(wèi)星版的SATELLITEEDITION、微型版的EVERYPLACE可以連接到DB2數(shù)據(jù)庫(kù)的產(chǎn)品有哪些?DB2客戶端、DB2CONNECT、DB2DATAPROPAGATOR、DB2NET.DATA、DB2DATAJOINER、DB2RELATIONALCONNECT.WEBSPHERE應(yīng)用服務(wù)器等DB2支持的通訊協(xié)議有哪些?TCP/IP、NETBIOS、APPG、IPX/SPX、NAMEPIPE等DB2客戶端產(chǎn)品有哪些?DB2運(yùn)行時(shí)間客戶端DB2RUNTIMECLIENTDB2管理客戶端DB2ADMINISTRATIONCLIENTDB2應(yīng)用程序開發(fā)客戶端DB2APPLICATIONDEVELOPMENTCLIENTDB2瘦客戶端DB2THINCLIENT一個(gè)數(shù)據(jù)庫(kù)是否可以安裝在多個(gè)數(shù)據(jù)庫(kù)服務(wù)器上?可以從哪個(gè)版本后存儲(chǔ)過(guò)程可以用SQL語(yǔ)句來(lái)創(chuàng)建?7.1版后DB2提供哪些關(guān)系擴(kuò)展器?文本擴(kuò)展器TEXTEXTENDER圖象擴(kuò)展器IMAGEEXTENDER音頻擴(kuò)展器AUDIOEXTENDER視頻擴(kuò)展器VIDEOEXTENDER空間數(shù)據(jù)擴(kuò)展器SPATIALEXTENDERXML擴(kuò)展器XMLEXTENDER網(wǎng)絡(luò)搜索擴(kuò)展器NET.SEARCHEXTENDERWINDOWS和OS/2環(huán)境下的DB2安裝目錄結(jié)構(gòu)?用SETUP.EXE來(lái)安裝\SQLLIB安裝的根目錄,包括README文件\SQLLIB\ADSM包含ADSTAR分布式存儲(chǔ)管理器文件\SQLLIB\BIN包含DB2工具的可執(zhí)行文件\SQLLIB\BND包含DB2工具的綁定文件\SQLLIB\CC包含運(yùn)行控制中心所需的文件\SQLLIB\CFG包含默認(rèn)的系統(tǒng)配置文件\SQLLIB\CONV包含代碼頁(yè)轉(zhuǎn)換表文件\SQLLIB\DB2默認(rèn)的實(shí)例目錄\SQLLIB\DB2DAS00缺省的DB2管理服務(wù)器目錄\SQLLIB\DOC包含DB2聯(lián)機(jī)手冊(cè)\SQLLIB\FUNCTION默認(rèn)的用戶自定義函數(shù)目錄\SQLLIB\FUNCTION\UNFENCED默認(rèn)的非隔離用戶自定義函授目錄\SQLLIB\HELP聯(lián)機(jī)幫助文件\SQLLIB\JAVADB2所需的JAVA類庫(kù)JAVA12包含JDK1.2的支持程序\SQLLIB\MISC包含HTML搜索服務(wù)器文件\SQLLIB\MSG\PRIME包含信息文件\SQLLIB\QP包含QUERYPATROLLER的客戶端文件\SQLLIB\SAMPLES包含樣例程序和樣例腳本\SQLLIB\SPMLOG包含DB2同步點(diǎn)管理器日志文件\SQLLIB\THNSETUP包含瘦客戶端安裝文件UNIX和LINUX環(huán)境下的DB2安裝目錄結(jié)構(gòu)?用DB2SETUP.EXE來(lái)安裝安裝的根目錄下還將創(chuàng)建以下目錄:README安裝的根目錄,包括README文件ADM包含系統(tǒng)管理工具文件ADSM包含ADSTAR分布式存儲(chǔ)管理器文件BIN包含DB2工具的二進(jìn)制可執(zhí)行文件BND包含DB2工具的綁定文件CC包含運(yùn)行控制中心所需的文件CFG包含默認(rèn)的系統(tǒng)配置文件CONV包含代碼頁(yè)轉(zhuǎn)換表文件DOC包含DB2聯(lián)機(jī)手冊(cè)FUNCTION默認(rèn)的用戶自定義函數(shù)目錄FUNCTION\UNFENCED默認(rèn)的非隔離用。遠(yuǎn)T搴諛柯?lt;BR> INSTALL包含安裝程序INSTANCE包含實(shí)例腳本JAVADB2所需的JAVA類庫(kù)LIBDB2庫(kù)文件MAP包含DB2CONNECT使用的映射文件MISC包含HTML搜索服務(wù)器文件SAMPLES包含樣例程序和樣例腳本MSG\$L包含DB2信息文件AIX下用哪個(gè)命令來(lái)安裝DB2?INSTALLP命令同一操作系統(tǒng)下可以安裝多個(gè)DB2數(shù)據(jù)庫(kù)?可以的如何停止實(shí)例?DB2STOP如何啟動(dòng)實(shí)例?DB2START[page]如何修改注冊(cè)項(xiàng)的值?DB2SET可以修改如:設(shè)定當(dāng)前實(shí)例的一個(gè)參數(shù)DB2SETPARAMETER=VALUE設(shè)定一個(gè)全局級(jí)的參數(shù)DB2SETPARAMETER=VALUE-G(小寫)查看能在配置文件注冊(cè)表中設(shè)置的所有變量的列表DB2SET-LR(小寫)如何在CLP執(zhí)行操作系統(tǒng)的命令?在命令前加"!"作為前綴DB2=>!DIRC:\在CLP中命令過(guò)長(zhǎng)怎么辦?用”\"作為續(xù)行符號(hào)如何獲得DB2的命令的語(yǔ)法相關(guān)信息?DB2?顯示所有DB2命令DB2?COMMAND顯示命令信息DB2?SQLnnnn顯示這個(gè)SQLCODE的解釋信息DB2?DB2nnnn顯示這個(gè)DB2錯(cuò)誤的解釋信息如何查看當(dāng)前CLP的設(shè)置?DB2=>LISTCOMANDOPTIONS如何更新當(dāng)前CLP會(huì)話的特定項(xiàng)設(shè)置?DB2UPDATECOMMANDOPTIONSUSINGOPTIONS...COMMANDWINDOWS可以通過(guò)哪個(gè)命令調(diào)用?DB2CMD命令管理服務(wù)器的默認(rèn)名為?UNIX下為DB2AS、WINDOWS下為DB2DAS00常用管理DB2服務(wù)器實(shí)例的命令?DB2ADMINSTART啟動(dòng)DB2管理服務(wù)器實(shí)例DB2ADMINSTOP停止DB2管理服器實(shí)例DASICRTUNIX下創(chuàng)建DB2管理服務(wù)器實(shí)例DASIDROPUNIX下刪除DB2管理服務(wù)器實(shí)例DB2ADMINCREATEWINDOWSOROS/2下創(chuàng)建DB2管理服務(wù)器實(shí)例DB2ADMINDROPWINDOWSOROS/2下刪除DB2管理服務(wù)器實(shí)例DB2GETADMINCFG顯示DB2管理服務(wù)器的配置參數(shù)DB2UPDATEADMINCFG修改DB2管理服務(wù)器的配置參數(shù)DB2RESETADMINCFG將DB2管理服務(wù)器的配置參數(shù)設(shè)為默認(rèn)值DB2目錄分為哪幾種?系統(tǒng)數(shù)據(jù)庫(kù)目錄、本地?cái)?shù)據(jù)庫(kù)目錄、節(jié)點(diǎn)目錄、DCS目錄、管理節(jié)點(diǎn)目錄如何查看系統(tǒng)數(shù)據(jù)庫(kù)目錄?LISTDBDIRECTORY如何查看數(shù)據(jù)庫(kù)服務(wù)器目錄?LISTNODEDIRECTORYDB2實(shí)例的服務(wù)器的默認(rèn)端口是?50000、服務(wù)器名稱為DB2CDB2DB2UDB服務(wù)器端的認(rèn)證類型有?SERVER、SERVER_ENCRYPT、CLIENT、DCE、DCE_SERVER_ENCRYPT、KERBEROS、KRB_SERVER_ENCRYPTDB2客戶端的認(rèn)證類型有?SERVER、SERVER_ENCRYPT、DCS、DCS_ENCRYPT、CLIENT、DCEDB2中有哪幾種類型的權(quán)限?SYSADM系統(tǒng)管理權(quán)限、SYSCTRL系統(tǒng)控制權(quán)限、SYSMAINT系統(tǒng)維護(hù)權(quán)限、DBADM數(shù)據(jù)庫(kù)管理權(quán)限、LOAD對(duì)表進(jìn)行LOAD操作的權(quán)限不能通過(guò)GRANT授權(quán)的權(quán)限有哪種?SYSAM、SYSCTRL、SYSMAINT要更該上述權(quán)限必須修改數(shù)據(jù)庫(kù)管理器配置參數(shù)表的類型有哪些?永久表(基表)、臨時(shí)表(說(shuō)明表)、臨時(shí)表(派生表)51.安裝DB2默認(rèn)的事例名稱是?在WINDOWS或OS/2中默認(rèn)的是DB2在LINUX或UNIX環(huán)境下默認(rèn)的是DB2INST152.安裝后的默認(rèn)帳戶是?在WINDOWS或OS/2中默認(rèn)的是DB2ADMIN在LINUX或UNIX環(huán)境下默認(rèn)的是DB2AS53.事例的類型有哪些?CLIENT(客戶)、STANDALONE(獨(dú)立的)、SATELLITE(衛(wèi)星)、EEDB2、EEE一個(gè)數(shù)據(jù)庫(kù)至少包括哪些表空間?一個(gè)目錄表空間、一個(gè)或多個(gè)用戶表空間、一個(gè)或多個(gè)臨時(shí)表空間[page]根據(jù)數(shù)據(jù)與存儲(chǔ)空間之間移動(dòng)的控制方式不同,分哪兩種表空間?系統(tǒng)管理的空間(SMS)、數(shù)據(jù)庫(kù)管理的空間(DMS)81.表的類型有哪些?基本表、結(jié)果表、概要表、類型表、子類型、子表、聲明的臨時(shí)表、系統(tǒng)臨時(shí)表DB2數(shù)據(jù)庫(kù)監(jiān)控的兩個(gè)組成部分?快照監(jiān)控(SNAPSHOTMONITOR)W返回特定時(shí)間點(diǎn)的數(shù)據(jù)庫(kù)活動(dòng)的快照.事件監(jiān)控(EVENTMONITOR)記錄事件發(fā)生的數(shù)據(jù).系統(tǒng)監(jiān)控的數(shù)據(jù)元素類型?計(jì)數(shù)器(COUNTER)記錄活動(dòng)發(fā)生的次數(shù).測(cè)量(GAUGE)測(cè)量條目的當(dāng)前值.水線(WATERMARK)從監(jiān)控來(lái)元素達(dá)到的最大或最小數(shù)值.信息(INFORMATION)監(jiān)控活動(dòng)的參照類型細(xì)節(jié).時(shí)間點(diǎn)(TIMESTAMP)活動(dòng)發(fā)生的日期時(shí)間.時(shí)間(TIME)返回一個(gè)活動(dòng)花費(fèi)的時(shí)間.DB2的SQL語(yǔ)句的類別?DCL:數(shù)據(jù)控制語(yǔ)言,提供對(duì)數(shù)據(jù)庫(kù)對(duì)象的訪問(wèn)權(quán)限.DDL:數(shù)據(jù)定義語(yǔ)言,創(chuàng)建,修改,刪除數(shù)據(jù)庫(kù)對(duì)象的.DML:數(shù)據(jù)操縱語(yǔ)言,用來(lái)插入,更新,刪除數(shù)據(jù)的.[page]DCL的權(quán)限有哪些?CONTROL權(quán)限:如果用戶創(chuàng)建一個(gè)對(duì)象,則改用戶能完全訪問(wèn)該對(duì)象.GRANT語(yǔ)句將權(quán)限授予給用戶.REVOKE語(yǔ)句撤銷一個(gè)用戶的權(quán)限.DDL有哪些?CREATE、DECLARE、ALTER、DROP等、DML有哪些?INSERT、SELECT、UPDATE、DELETE等DB2有沒(méi)有布爾類型?沒(méi)有如何查詢DB2的內(nèi)置函數(shù)?自帶文檔ADMINISTION-->SQLREFERENCE-->FUNCTIONS內(nèi)自己寫的DB2常用基本命令1:查詢DB2錯(cuò)誤號(hào)的詳細(xì)解釋windows平臺(tái):db2_?_sql1009(錯(cuò)誤號(hào)是1009)aix平臺(tái):db2_"?"_sql1009(錯(cuò)誤號(hào)是1009,因?yàn)樵贏IX上,問(wèn)號(hào)是系統(tǒng)特殊字符,所以需要通過(guò)雙引號(hào)轉(zhuǎn)義)2:查詢?cè)贒B2CLP中可以試用的命令db2_?3:查詢某一個(gè)表空間所使用的數(shù)據(jù)容器分布第一步:查詢表空間的ID號(hào)db2_list_tablespaces第二步:查詢某一個(gè)表空間所使用的數(shù)據(jù)容器db2_list_tablespace_containers_for_12 ("12"是某一個(gè)表空間的ID號(hào))DB2數(shù)據(jù)庫(kù)設(shè)計(jì)和最高性能原則數(shù)據(jù)壓縮DB2提供了壓縮表空間或分區(qū)內(nèi)數(shù)據(jù)的功能。通過(guò)指定 CREATETABLESPACE(創(chuàng)建表空間)語(yǔ)句中的COMPRESSYES(壓縮許可)選項(xiàng),之后在表空間上同時(shí)執(zhí)行LOAD或REORG實(shí)用工具集,即可完成該功能。數(shù)據(jù)的壓縮是通過(guò)用更短的串來(lái)替換頻繁出現(xiàn)的字符串實(shí)現(xiàn)的。系統(tǒng)還創(chuàng)建了一個(gè)字典,包含了原始字節(jié)串和它們的替代串之間的映射信息。一定數(shù)量的CPU資源被用于在執(zhí)行數(shù)據(jù)存儲(chǔ)對(duì)其進(jìn)行壓縮,之后,當(dāng)外部存儲(chǔ)設(shè)備讀取時(shí),數(shù)據(jù)又被解壓縮。然而,數(shù)據(jù)壓縮也能夠提供性能方面的好處,因?yàn)楦嗟臄?shù)據(jù)存儲(chǔ)在更小的空間內(nèi)(在DASD上和緩沖池中);同未經(jīng)壓縮的數(shù)據(jù)相比,這樣可以產(chǎn)生更少的同時(shí)讀取、更小的I/O等。接下來(lái)是當(dāng)試圖決定是否壓縮一個(gè)表空間或分區(qū)時(shí),需要考慮的一些事情:行的長(zhǎng)度:行越長(zhǎng)(尤其是在接近頁(yè)的尺寸時(shí))壓縮的有效性就越低°DB2的行不能夠跨頁(yè),當(dāng)一頁(yè)上有多于一行的情況時(shí),你也許不能獲得足夠的壓縮。表的尺寸:對(duì)于較大的表,壓縮具有較好的效果。對(duì)于很小的表,壓縮字典的大小8KB到64KB)可能會(huì)抵消壓縮節(jié)省下的所有空間。數(shù)據(jù)中的模式:對(duì)于一個(gè)特定的表空間或分區(qū),數(shù)據(jù)中重復(fù)出現(xiàn)的模式的頻率,決定了壓縮的效果。含有大量重復(fù)字符串的數(shù)據(jù)能夠獲得顯著的壓縮效果。壓縮估計(jì):DB2提供了一個(gè)單獨(dú)的實(shí)用工具集,DSN1COMP,它可以用來(lái)測(cè)定數(shù)據(jù)壓縮將有怎樣的效果。想獲得有關(guān)運(yùn)行該使用工具的額外信息,請(qǐng)參考DB2實(shí)用工具集指南和參考手冊(cè)。處理成本:在壓縮和解壓縮DB2數(shù)據(jù)時(shí),會(huì)消耗一些CPU資源。如果你用IBM的同步數(shù)據(jù)壓縮硬件特征,所消耗的CPU資源將比利用DB2軟件仿真程序低得多(當(dāng)DB2啟動(dòng)時(shí),這決定了硬件壓縮特征是否可用)。更好的字典:當(dāng)用LOAD使用工具集來(lái)建立壓縮字典時(shí),DB2用戶用最初載入的n行(n取決于你能夠壓縮的數(shù)據(jù)量)來(lái)決定字典的內(nèi)容。REORG采用取樣技術(shù)來(lái)建立字典。它不僅使用最初載入的n行,還在實(shí)用工具執(zhí)行UNLOAD(未載入)階段的剩余時(shí)間里繼續(xù)對(duì)數(shù)據(jù)行采樣。通常情況下,我們推薦你在自己的特定環(huán)境下,壓縮那些DB2表空間和分區(qū),這將會(huì)使你的環(huán)境受益;因?yàn)樵诟〉目臻g內(nèi)存儲(chǔ)更多的數(shù)據(jù)的性能優(yōu)勢(shì),幾乎總是在價(jià)值上超過(guò)壓縮和解壓縮數(shù)據(jù)所消耗的CPU資源。載入大表在處理大批量數(shù)據(jù)時(shí),將數(shù)據(jù)初始載入表中可能會(huì)對(duì)系統(tǒng)性能產(chǎn)生挑戰(zhàn)。為了在載入過(guò)程中實(shí)現(xiàn)并行性,你可以手動(dòng)創(chuàng)建多個(gè)LOAD作業(yè),每個(gè)分區(qū)建一個(gè);或者作為另一個(gè)選擇,你可以在一個(gè)LOAD程序中載入多個(gè)分區(qū)。每個(gè)分區(qū)都延伸至I/O子系統(tǒng),這種方式可以更容易地實(shí)現(xiàn)最理想的并行性。為了使性能最優(yōu)化,在LOAD語(yǔ)句中指定SORTKEYS參數(shù)也很重要。這個(gè)參數(shù)指示DB2將索引方法傳遞給內(nèi)存中的分類程序,而不是將關(guān)鍵字寫入或者再次讀取DASD上的排序任務(wù)文件。SORTKEYS也能夠?qū)崿F(xiàn)載入和分類之間的交迭,因?yàn)榉诸愂亲鳛橐粋€(gè)獨(dú)立的任務(wù)運(yùn)行的。還有一些關(guān)于載入大表的額外的建議,如下:一次LOAD一個(gè)表。如果可能的話,為你預(yù)期的任務(wù)賦予較高的優(yōu)先級(jí),來(lái)獲得最高的消耗時(shí)間。在系統(tǒng)綜合體上分配工作。將二級(jí)索引分解為小段,以便獲得并行性(見(jiàn)PIECESIZE內(nèi)的討論)。在數(shù)據(jù)的初始載入過(guò)程中,指定LOGNO(用于防止記錄日志,它耗費(fèi)了相當(dāng)多的資源),在成功載入數(shù)據(jù)之后運(yùn)行一個(gè)圖像復(fù)制。自由空間考慮事項(xiàng)分配自由空間的主要目的,是為了將數(shù)據(jù)行保存在相同的物理序列中作為群集索引,這樣一來(lái)將減少需要重新組織數(shù)據(jù)的頻率。此外,較好的行聚簇將導(dǎo)致更快的讀取訪問(wèn)和更快的行插入。但是,自由空間的過(guò)度分配又將導(dǎo)致DASD空間的浪費(fèi)、每一個(gè)I/O傳輸?shù)臄?shù)據(jù)較少、緩沖池的利用效率較低,以及需要掃描更多的頁(yè)。表空間和索引中的自由空間分配,由CREATE或ALTERTABLESPACE和CREATE或ALTERINDEX語(yǔ)句中的PCTFREE和FREEPAGE選項(xiàng)決定。PCTFREE在載入或者重新組織數(shù)據(jù)時(shí),為DB2指示表空間或索引中有多大的百分比是閑置的。在插入新的行和索引條目時(shí),DB2將利用那些自由空間。如果沒(méi)有足夠的自由空間在正確的頁(yè)(即以正確的聚簇序列)上寫入行或者索引條目,那么DB2必須將多出來(lái)的數(shù)據(jù)放在另外的頁(yè)上作為代替。在越來(lái)越多的記錄放置在物理序列之外的情況下,系統(tǒng)性能將會(huì)受到嚴(yán)重影響。FREEPAGE在載入或者重新組織數(shù)據(jù)時(shí),為DB2指示一個(gè)整頁(yè)成為自由空間的次數(shù)。例如,如果你將FREEPAGE確定為5,在每填滿5頁(yè)的數(shù)據(jù)之后,DB2將分配一整頁(yè)的自由空間。如果你的表中的行大于半頁(yè),F(xiàn)REEPAGE將是很有用的,因?yàn)樵谶@樣的情況下,你不能在這一頁(yè)中插入第二行。是否在你的表空間內(nèi)定義自由空間,分配的數(shù)量又是多少,這些都主要取決于表空間中表的插入特性(刪除活動(dòng)性居于次要程度)。換句話說(shuō),向表中插入行有多大的頻率,并且這些行插入的位置是在哪里?根據(jù)上述標(biāo)準(zhǔn),四種主要的類別如下:只讀表:如果在表上不會(huì)有任何修正,定義時(shí)就可以不分配自由空間。同樣,也就不需要運(yùn)行REORG實(shí)用工具集。隨機(jī)插入:對(duì)于含有相當(dāng)大數(shù)量已有行和相對(duì)較少插入行的動(dòng)作的表,使用默認(rèn)的PCTFREE(表為5,索引為10)是一個(gè)好的起始點(diǎn)。之后,用RUANSTATS來(lái)監(jiān)視數(shù)據(jù)組織破壞的程度,并且結(jié)合你要求的運(yùn)行REORG的頻率,根據(jù)需要上調(diào)或下調(diào)PCTFREEo對(duì)于插入活動(dòng)很頻繁的表,你可能需要使用比默認(rèn)值較高的PCTFREE的值。對(duì)于初始為空或只含有極少數(shù)行的表(例如,在一個(gè)新數(shù)據(jù)庫(kù)部署的過(guò)程中),你也許需要確定一個(gè)非常高的PCTFREE值,并相當(dāng)頻繁地運(yùn)行REORG,直到表中的行數(shù)比較多了。在表的末端插入:如果表中行的長(zhǎng)度不增加,那么就沒(méi)有必要分配自由空間,因?yàn)樗鼈兛梢约釉诒淼哪┒恕6壹热凰鼈兪且晕锢砭鄞匦蛄械男问綄懭氲?,REORG也不需要了。但是如果表含有可修改的VARCHAR類型的列,或是如果表是壓縮過(guò)的,那么行的長(zhǎng)度有可能增加,這將使得一行被擠到另外一頁(yè)上去。通過(guò)在表空間上執(zhí)行RUNSTATS然后核查DB2目錄表SYSIBM.SYSTABLEPART的NEARINDREF和FARINDREF列,你就能夠確定這些。如果你的表變亂了,那么為表空間設(shè)定一個(gè)PCTFREE值,并且用RUNSTATS繼續(xù)監(jiān)視放錯(cuò)位置的行的數(shù)目。根據(jù)你觀察到的數(shù)據(jù)和趨勢(shì),相應(yīng)地調(diào)整你的REORG的頻率和PCTFREE值。通過(guò)設(shè)定REORGTABLESPACE中的INDREFLIMIT和REPORTONLY選項(xiàng),你就能夠在更新后的DB2表中監(jiān)視紊亂的數(shù)量和速度。插入一個(gè)熱點(diǎn):這是表具有很頻繁的插入活動(dòng)的情況,這種插入活動(dòng)集中在一個(gè)位置(或多個(gè)位置)而不是正好處于表的末端。這可能是要應(yīng)付的最困難的種類。試著增加PCTFREE的數(shù)值。如果插入保持在開頭的段,行也不是很長(zhǎng),幾行可以存儲(chǔ)在同一頁(yè)之內(nèi)。FREEPAGE是在這種情形下另外的一個(gè)考慮。有必要嚴(yán)密監(jiān)視表變亂有多么快,這樣就可以在性能顯著下降之前運(yùn)行REORGo索引設(shè)計(jì)考慮事項(xiàng)索引是一個(gè)DB2對(duì)象(獨(dú)立的VSAM數(shù)據(jù)集),它是從相應(yīng)表中的一個(gè)或更多列中摘錄出來(lái)的一系列有規(guī)則的條目。很多DB2專家主張為一個(gè)表空間建立恰當(dāng)?shù)乃饕@也許是將訪問(wèn)DB2數(shù)據(jù)應(yīng)用程序的性能最優(yōu)化的惟一最有效的方法。幾年前,在I/T中DASD的成本和空間是一個(gè)更重要的考慮因素。隨著技術(shù)的發(fā)展,通過(guò)以特大硬盤為代價(jià),加上更多索引(或增加現(xiàn)有索引的列)來(lái)減少I/O的折中方法,在這幾年里越來(lái)越具吸引力。索引主要的性能優(yōu)勢(shì)表現(xiàn)在:為表中被請(qǐng)求的數(shù)據(jù)行提供直接指針消除了排序,如果結(jié)果集的請(qǐng)求順序與索引相匹配的話避免了必須讀取數(shù)據(jù)行,如果被請(qǐng)求的列全部包含在索引條目中的話分區(qū)索引當(dāng)在DB2UDBV7中創(chuàng)建分區(qū)表空間時(shí),DB2依照CREATEINDEX語(yǔ)句中的PART子句將分區(qū)中的數(shù)據(jù)進(jìn)行劃分。那個(gè)索引則成為所謂的分區(qū)索引,這種分區(qū)方法被稱為受控索引分區(qū)。為了對(duì)索引進(jìn)行分區(qū),建議你選擇不易改變的關(guān)鍵列。對(duì)這些列的更改可能使得一個(gè)行從某一分區(qū)移動(dòng)到另外一個(gè)分區(qū),從而導(dǎo)致性能下降。受控表分區(qū)是DB2V8的一個(gè)重要的特征。現(xiàn)在,當(dāng)創(chuàng)建分區(qū)表時(shí),分區(qū)界限的確定由CREATETABLE語(yǔ)句代替了原來(lái)的CREATEINDEXo在受控索引分區(qū)中,分區(qū)表的、分區(qū)索引和聚簇的概念全都結(jié)合在一起。而對(duì)于受控表分區(qū),這三個(gè)概念是獨(dú)立的。這就增加了靈活性,允許你去考慮更有潛力的設(shè)計(jì)方法;并且也因此增加了改善。82數(shù)據(jù)庫(kù)及其應(yīng)用程序性能的可能性。構(gòu)建索引的時(shí)機(jī)CREATEINDEX(創(chuàng)建索引)CREATEINDEX語(yǔ)句使用戶具有了這樣的能力:立即構(gòu)建索引,或者將構(gòu)建推遲到更加方便的時(shí)間。如果你立即構(gòu)建索引,將會(huì)對(duì)表空間進(jìn)行掃描,這會(huì)占用相當(dāng)長(zhǎng)的時(shí)間。通過(guò)設(shè)定DEFER,你可以推遲索引的構(gòu)建。無(wú)論什么時(shí)候,只要可能,在最初載入一個(gè)表之前創(chuàng)建表上的所有索引,因?yàn)長(zhǎng)OAD實(shí)用工具集構(gòu)建索引比CREATEINDEX過(guò)程更加有效。如果你需要在已存在(并且有很多數(shù)據(jù))的表上創(chuàng)建一個(gè)索引,那么可以使用DEFER語(yǔ)句。稍后,你就可以用REBUILDINDEX實(shí)用工具集,它和LOAD實(shí)用工具集一樣,是一種更加有效的填充索引的方法。PIECESIZE(片段尺寸)DB2UDBV5引進(jìn)了一個(gè)新特征,它給了你一定的靈活性,從而可以將非分區(qū)索引NPI)分解為小段,并且控制組成索引空間的多個(gè)數(shù)據(jù)集的大小。分段的這種用法能夠使一個(gè)NPI的索引頁(yè)展開為多個(gè)數(shù)據(jù)集。片段的尺寸由CREATE或ALTERINDEX語(yǔ)句中的關(guān)鍵字PIECESIZE確定。PIECESIZE的值必然是兩個(gè)強(qiáng)制值中的一個(gè),其變動(dòng)范圍為最小256KB到最大64GB。常規(guī)表空間的默認(rèn)值為2GB,大的表空間默認(rèn)值是4GB。如果你的NPI有可能顯著增長(zhǎng),那么選擇相對(duì)較大的表空間。同樣,在確定首要和次要的空間分配數(shù)值CREATEINDEX語(yǔ)句的PRIQTY和SECQTY選項(xiàng))時(shí),記住PIECESIZE的值。利用這一選項(xiàng),可以通過(guò)發(fā)揮并行性來(lái)改善NPI的掃描性能。另一個(gè)優(yōu)勢(shì)是可以減少讀取或更新過(guò)程中的I/O沖突。通過(guò)設(shè)定較小的PIECESIZE值,你可以創(chuàng)建更多的片段,因而對(duì)片段的位置有更好的控制。將片段置于獨(dú)立的I/O路徑,可以減少了訪問(wèn)NPI所需的SQL操作的沖突。理想的索引通過(guò)檢查一個(gè)應(yīng)用程序中的SQL語(yǔ)句,你可以建立一個(gè)假想的完美的索引。首先,索引所包括的所有列都是WHERE子句,這使得索引的審查可以用于將不合格的行拒于結(jié)果集之外。將這些列放在索引的開始。當(dāng)在SQL語(yǔ)句上執(zhí)行EXPLAIN時(shí),這會(huì)使得MATCHCOLS的價(jià)值最大化。其次,確保索引以適當(dāng)?shù)捻樞蚝羞@些列(依照ORDERBY子句),從而可以避免進(jìn)行排序。這可以在執(zhí)行EXPLAIN時(shí),通過(guò)檢查PLAN_TABLE的所有不同的SORT*列來(lái)驗(yàn)證。最后,如果可能的話,將所有的列包含在索引的SELECT中,這樣就不需要訪問(wèn)表中的行了。索引條目可以提供所有的請(qǐng)求數(shù)據(jù)。這將在EXPLAIN中以INDEXONLY=Y的方式表現(xiàn)出來(lái)。在很多情況下,實(shí)現(xiàn)如此理想的索引的代價(jià)太大了,或者說(shuō)是不切合實(shí)際的,甚至是不可能實(shí)現(xiàn)的,因?yàn)樗婕暗牧械臄?shù)量太大了。組成一個(gè)索引的列的數(shù)目在體系結(jié)構(gòu)方面有限制,并且對(duì)于一個(gè)索引條目的總長(zhǎng)也有限制(盡管這些限制實(shí)際上允許相當(dāng)大的索引條目尺寸和靈活性)。此外,這也是出于索引維護(hù)成本的考慮。建立理想的索引可使查詢性能獲得極大提高,但是對(duì)于SQL寫入DB2數(shù)據(jù)庫(kù)(INSERT、UPDATE或DELETE)就有消極的影響。因此,你應(yīng)該經(jīng)常選擇實(shí)現(xiàn)只包含WHERE和ORDERBY語(yǔ)句中涉及的列的索引。并行處理的考慮事項(xiàng)幾年來(lái),通過(guò)實(shí)現(xiàn)了并行處理的各種方法,DB2在數(shù)據(jù)訪問(wèn)方面的性能獲得了改進(jìn)。為了改進(jìn)數(shù)據(jù)密集型只讀查詢的性能,DB2V3引進(jìn)了查詢I/O并行機(jī)制。在這種類型的并行性中,DB2充分利用了可用的I/O帶寬,并使分區(qū)表空間中成為可能。利用這種方法,DB2使得一個(gè)查詢中的多
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度年福建省高校教師資格證之高等教育心理學(xué)自我檢測(cè)試卷A卷附答案
- 2024年度山西省高校教師資格證之高等教育法規(guī)通關(guān)提分題庫(kù)及完整答案
- 2024年合成膠粘劑項(xiàng)目投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- 2024年私人損害賠償自愿協(xié)議
- 高校食品專業(yè)實(shí)驗(yàn)室安全管理探究
- 新形勢(shì)下企業(yè)經(jīng)濟(jì)管理創(chuàng)新思路探究
- 2024年商業(yè)樓宇化糞池建造協(xié)議范例
- 2024年加工區(qū)租賃協(xié)議
- 2024年度工程地質(zhì)勘察協(xié)議范本
- 2024屆安徽省安大附中高三下學(xué)期第一次診斷測(cè)試數(shù)學(xué)試題
- 彈簧壓力、拉力計(jì)算
- 外研版英語(yǔ)九年級(jí)下冊(cè)全冊(cè)教案全冊(cè)
- 敏感節(jié)點(diǎn)維穩(wěn)工作應(yīng)急預(yù)案
- 情景教學(xué)法的相關(guān)研究
- 基于STEM教育理念的高中生物教學(xué)研究
- 2022年普通高中地理課程標(biāo)(完整哦)
- 《腦出血》PPT課件(完整版)
- 大班科學(xué)活動(dòng)《認(rèn)識(shí)牙齒》ppt課件
- T∕CSCB 0005-2021 人誘導(dǎo)多能干細(xì)胞
- 國(guó)家級(jí)燈具檢驗(yàn)報(bào)告路燈
- 溫室大棚、花卉苗圃采暖項(xiàng)目設(shè)計(jì)方案
評(píng)論
0/150
提交評(píng)論