oracle數(shù)據(jù)庫(kù)基本知識(shí)_第1頁
oracle數(shù)據(jù)庫(kù)基本知識(shí)_第2頁
oracle數(shù)據(jù)庫(kù)基本知識(shí)_第3頁
免費(fèi)預(yù)覽已結(jié)束,剩余22頁可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù)據(jù)庫(kù)基本知識(shí)目錄一、幾種常見數(shù)據(jù)庫(kù)介紹及比較二、Oracle安裝及注意事項(xiàng):三、數(shù)據(jù)庫(kù)的基本元素四、數(shù)據(jù)庫(kù)的基本維護(hù)一、幾種常見數(shù)據(jù)庫(kù)介紹及比較1幾種常見關(guān)系性數(shù)據(jù)庫(kù):IBMDB2,ORACLE.MSSQL,SYBASE,Informix.MySQL2來自互聯(lián)網(wǎng)方面的幾種評(píng)價(jià):MSSQL:秀才-把別人寫的書看懂成為自己的東西,衣飾一般都比較考究,但是只懂一國(guó)語言,而且喜歡貶低別人。SYBASE:農(nóng)夫-干活不要命,大有拼命三郎的氣勢(shì),但是感覺總是差點(diǎn)文化涵養(yǎng)。養(yǎng)魚,養(yǎng)豬都可以但是卻忘了打打廣告。ORACLE:將軍-有大家風(fēng)范,對(duì)秀才和農(nóng)夫的爭(zhēng)論不屑一顧。凡是有了戰(zhàn)役舍我其誰。但是別忘了還有的士

2、兵也想當(dāng)將軍的。Informix:宰相-管你誰對(duì)誰錯(cuò),反正我就是只顧一個(gè)皇帝UNIX,我的地位別人休想輕易替代。MySQL:韋小寶-我就是要在你們中間搗蛋,雖然年紀(jì)小,但是發(fā)育也很完善。大家都喜歡。3.2001年度全球數(shù)據(jù)庫(kù)市場(chǎng)的份額:DB2占到了34.6%(受收購(gòu)Informix市場(chǎng)份額影響),Oracle占32%、微軟占16.4%、Sybase占2.6%、其他為14.4%)二、Oracle安裝及注意事項(xiàng):作為數(shù)據(jù)庫(kù)服務(wù)器堅(jiān)決不要安裝金山毒霸和KV3000等防毒軟件,可以使用NU20001. oracle常見版本:7.34,8.05,8l,9l,10g安裝,不同版本會(huì)略有不同注要以7.34和

3、8I為例,并且在不同的操作系統(tǒng)上8I以后的安裝和在NT/W2K上類似,在UNIX系統(tǒng)上安裝前需要配置相應(yīng)的環(huán)境變量,NT、W2K下(1)運(yùn)行安裝程序進(jìn)行安裝,7.34不能在W2K下安裝,需要用第二種方式(2)導(dǎo)入注冊(cè)表,復(fù)制相應(yīng)的目錄注意:如果同時(shí)在一個(gè)操作系統(tǒng)上同時(shí)安裝7.34和8I需要現(xiàn)安裝7.34在安裝8I安裝過程:略安裝注意事項(xiàng):安裝語言選擇:ENGLISHDEFAULT_HOME:DEFAULT_HOME默認(rèn)8I和7.34同時(shí)安裝需要修改8I的此項(xiàng)選項(xiàng)為一個(gè)其他的名字不能相同如叫8I等,8I安裝后需要修改相應(yīng)的注冊(cè)表的字符集HKEY_LOCAL_MACHINESOFTWAREORAC

4、LE的NLS_LANG的值為:AMERICAN_AMERICA.WE8ISO8859P1,否則sql語句查詢的結(jié)果為亂碼。安裝過程一般選擇自定義安裝,不要在建立相應(yīng)的系統(tǒng)默認(rèn)的數(shù)據(jù)庫(kù)。2. 創(chuàng)建數(shù)據(jù)庫(kù)7.34(實(shí)例管理器NTInstaneeManager),81(數(shù)據(jù)庫(kù)助手DatabaseConfigurationAssistant)5.書寫相應(yīng)的參數(shù)后選擇advaneed(高級(jí))進(jìn)入高級(jí)設(shè)置,選擇OK進(jìn)入數(shù)據(jù)庫(kù)創(chuàng)建過程設(shè)置相應(yīng)的參數(shù)后選擇0K返回6. 選擇0K進(jìn)行創(chuàng)建數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)庫(kù)注意事項(xiàng):7.34初始化文件一定要在制定的目錄下存在并且相應(yīng)的文件路徑一定要存在。并且初始化文件的回滾段一定要

5、注釋掉,等建立晚回滾段后在放開并且重新啟動(dòng)數(shù)據(jù)庫(kù)后生效。81可以一切都不存在,并且自動(dòng)創(chuàng)建30個(gè)回滾段SYSTEM和RBS0-RBS28,安裝完成后運(yùn)行CATALOG.SQL和CATPROC.SQL進(jìn)行重新創(chuàng)建系統(tǒng)的同義詞和過程函數(shù)等三、數(shù)據(jù)庫(kù)的基本元素表空間:相當(dāng)于其他數(shù)據(jù)庫(kù)的數(shù)據(jù)設(shè)備,用來存放數(shù)據(jù)庫(kù)中其他存儲(chǔ)元素如:表、索引、回滾段等常用的表空間:system(系統(tǒng)表空間,用于存儲(chǔ)系統(tǒng)表、用戶信息、過程、包、用戶自定義函數(shù)、同義詞、序列等,只要定義和創(chuàng)建將不再變化)、temp_spc(臨時(shí)表空間,在進(jìn)行數(shù)據(jù)查詢時(shí)使用,尤其是使用子查詢)、data_spc(數(shù)據(jù)表空間,用于存儲(chǔ)用戶表等數(shù)據(jù)信

6、息)、indx_spc(索引表空間,用于存儲(chǔ)用戶表索引)、rbsg_spc(回滾表空間,用于存放回滾段)可以想象為:用戶數(shù)據(jù)存儲(chǔ)的物理載體(1)倉(cāng)U建表空間createtablespacetemp_spcdatafile'd:mchtdatatempmcht.odb'size100MAUTOEXTENDOFF|ON(可以依次有多個(gè)數(shù)據(jù)文件,文件名最好用1,2,3,等劃分以便容易識(shí)別,中間用逗號(hào)分割)DEFAULTSTORAGE(INITIAL64KNEXT64Kpctincrease0)online;如果沒有制定數(shù)據(jù)文件的擴(kuò)展名將使用.ORA,81默認(rèn)為.DBF注意:數(shù)據(jù)文件的

7、大小AIX系統(tǒng)不能大一1G,NT/2K的FAT32分區(qū)格式不能大于4G,NTFS分區(qū)不受限制。(2)為表空間增加數(shù)據(jù)文件ALTERTABLESPACEtemp_spcadddatafile'd:mchtdatatempmcht2.odb'size100Monline;建議:將表空間存放在不同的磁盤上,平衡I/O用戶:數(shù)據(jù)庫(kù)在使用的過程中,都要以某用戶身份進(jìn)行登陸,然后在進(jìn)行此用戶下的工作,相當(dāng)于數(shù)據(jù)庫(kù)管理員,擁有不同的權(quán)限:創(chuàng)建數(shù)據(jù)庫(kù)后默認(rèn)的三個(gè)用戶:internal(超級(jí)用戶,在用戶管理中不可見)密碼為建庫(kù)時(shí)的密碼,system密碼為manager,sys用戶密碼為chang

8、e_onnstall,可以想象為:用戶數(shù)據(jù)存儲(chǔ)的邏輯載體(1)刪除用戶dropuserdbauserpszxcascade;刪除用戶后,屬于該用戶的所有數(shù)據(jù)均被刪除女口:表、索引、序列、過程、函數(shù)、包等一定要注意另加小心(2)創(chuàng)建用戶createuserdbauserpszxidentifiedbyfuturepszxDEFAULTTABLESPACEdata_spcTEMPORARYTABLESPACEtemp_spcQUOTAUNLIMITEDONsystem(oracle8以后不再用)QUOTAUNLIMITEDONtemp_spcQUOTAUNLIMITEDONrbsg_spcQUOT

9、AUNLIMITEDONdata_spcQUOTAUNLIMITEDONindx_spcQUOTAUNLIMITEDONpers_spc;(3)分配權(quán)限角色GRANTDBAtodbauserpszx;GRANTSELECTANYTABLETOdbauserpszx;GRANTINSERTANYTABLETOdbauserpszx;GRANTDELETEANYTABLETOdbauserpszx;GRANTUPDATEANYTABLETOdbauserpszx;GRANTSELECTANYSEQUENCETOdbauserpszx;GRANTCREATEUSERTOdbauserpszx;GRA

10、NTCREATEANYTABLETOdbauserpszx;GRANTCREATEANYSEQUENCETOdbauserpszx;GRANTCREATEANYINDEXTOdbauserpszx;GRANTDROPUSERTOdbauserpszx;GRANTDROPANYTABLETOdbauserpszx;GRANTDROPANYSEQUENCETOdbauserpszx;GRANTDROPANYINDEXTOdbauserpszx;GRANTGRANTANYROLETOdbauserpszx;GRANTEXECUTEANYPROCEDURETOdbauserpszx;回滾段(1) 創(chuàng)建

11、回滾段createpublicrollbacksegmentfpos_rs2tablespacerbsg_spcstorage(initial1Mnext1Moptimal10Mminextents2maxextents500);注意:optimal回滾斷最佳的大小為減少系統(tǒng)資源競(jìng)爭(zhēng),改善系統(tǒng)性能一般采用多個(gè)回滾段,當(dāng)多個(gè)事務(wù)并發(fā)進(jìn)行時(shí)將產(chǎn)生多個(gè)回滾信息,系統(tǒng)事務(wù)對(duì)回滾段的調(diào)用是系統(tǒng)隨機(jī)的除非特殊制定SETTRANSACTIONUSEROLLBACKSEGMENTfpos_rsl;(2) 回滾段狀態(tài)(在線online,不在線offline)只有在線的回滾段段系統(tǒng)事務(wù)方可調(diào)用ALTERROLLB

12、ACKfpos_rslONLINE|OFLINE;修改初始化文件INITPFILE.ORA文件rollback_segments=(fpos_rs2,fpos_rs3,fpos_rs4,fpos_rs5,fpos_rs6,fpos_rs7,fpos_rs8,fpos_rs9,fpos_rs10,fpos_rs11,fpos_rs12,fpos_rs13,fpos_rs14,fpos_rs15,fpos_rs16,fpos_rsl)1. 數(shù)據(jù)庫(kù)連接(DB_LINK)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的互聯(lián)(1) 數(shù)據(jù)庫(kù)的被連接端必須有相應(yīng)的用戶存在(2) 數(shù)據(jù)庫(kù)的主聯(lián)接端建立相應(yīng)的連接對(duì)象CREATEPUBLICDAT

13、ABASELINKpszx_db.worldCONNECTTOdblinkusrIDENTIFIEDBYfuture*19990501USING'pszx_db'刪除數(shù)據(jù)庫(kù)連接DROPPUBLICDATABASELINKpszx_db.world;數(shù)據(jù)庫(kù)連接建立之后可以對(duì)連接里的內(nèi)容進(jìn)行訪問了SELECT*FROMSYS_GLJGFROMDBAUSETPSZX.SYS_GLJGPSZX_DB如要屏蔽訪問的負(fù)雜性可以創(chuàng)建同義詞表:數(shù)據(jù)庫(kù)存放用戶數(shù)據(jù)的最主要的方式(1)創(chuàng)建表CREATETABLEAPP_BINARY(APPCHAR(2)NOTNULL,MODULEVARCHAR2

14、(12)NOTNULL,SEQNONUMBERNOTNULL,LENGTHNUMBER,BINLONGRAW,CONSTRAINTPK_APP_BINARYPRIMARYKEY(APP,MODULE,SEQNO)TABLESPACEDATA_SPCPCTFREE10PCTUSED40INITRANS1MAXTRANS255STORAGE(INITIAL24MNEXT64KMINEXTENTS1MAXEXTENTS505PCTINCREASE0)ENABLECONSTRAINTPK_APP_BINARYUSINGINDEXPCTFREE10INITRANS2MAXTRANS255TABLESPA

15、CEINDX_SPCSTORAGE(INITIAL80KNEXT64KMINEXTENTS1MAXEXTENTS505PCTINCREASE0);說明:PCTFREE10當(dāng)表的數(shù)據(jù)塊的使用超過90%是自動(dòng)使用下一個(gè)數(shù)據(jù)塊PCTUSED40當(dāng)表的數(shù)據(jù)塊的使用小于40時(shí)系統(tǒng)不會(huì)分配新的數(shù)據(jù)塊(大將會(huì)節(jié)省空間,增大insert和upate的系統(tǒng)消耗)INITIAL初始空間大小NEXT下一擴(kuò)展空間的大小MINEXTENTS初始分配的區(qū)域數(shù)目MAXEXTENTS最大可分配的區(qū)域數(shù)目PCTINCREASE數(shù)據(jù)段每個(gè)區(qū)域大小的增大比率(2)刪除表DROPTABLE表名;(3)表改名RENAME表名TO新表名

16、(也可以修改索引)(4)增加列ALTERTABLE表名ADD字段名類型);(5)刪除例ALTERTABLE表名DROP字段名;7.34不能刪除列,8I的初始化參數(shù)compatible=時(shí)才可刪除列(6)增加主鍵ALTERTABLE表名ADDCONSTRAINT主鍵名PRIMARY(字段,);(7)分區(qū)建表(8的新功能)分區(qū)是將一個(gè)對(duì)象的數(shù)據(jù)分開存儲(chǔ)的一種機(jī)制,減少磁盤I/O將一個(gè)較大的表中數(shù)據(jù)分成一些較小的表CREATETABLEPERSONS(NONUMBERPRIMARKKEY,NAMEVARCHAR2(20),SEXCHAR(1),BIRDAYDATE)小于NO98010時(shí)用PART1小

17、于NO98020時(shí)用PART2小于NO98030時(shí)用PART3PARTITIONBYRANGE(NO)(PARTTIONPART1VALUESLESSTHEN(98010)TABLESPACESZJ1,PARTTIONPART2VALUESLESSTHEN(98020)TABLESPACESZJ2,PARTTIONPART3VALUESLESSTHEN(98020)TABLESPACESZJ3,小于NO98030時(shí)用小于NO98030時(shí)用PARTTIONPART4VALUESLESSTHEN(MAXVALUE)PART4);查詢SELECT*FROMPERSONS(PART2,PART3)WH

18、ERENOBETWEEN98015AND98025一般分區(qū)的表空間建立在不同的磁盤上(8) 常用字段數(shù)據(jù)類型CHAR最長(zhǎng)2000BVARCHAR2(8I、91將采用VARCHAR)4000B(7.342000B)LONG變長(zhǎng)字符2GBNUMBER(s,d)數(shù)字最長(zhǎng)38位DATE日期BLOB二進(jìn)制大集4GB(RAW丄ONGRAW將在未來版本中淘汰)ROWID物理地址類型(9) 回滾(回退)COMMIT和提交ROLLBACK:我們對(duì)數(shù)據(jù)庫(kù)的操作是由事務(wù)來控制管理的,在一個(gè)事務(wù)中,應(yīng)該及時(shí)對(duì)所作的操作進(jìn)行提交,以方式操作無效,也可取消非法的操作數(shù)據(jù)庫(kù)事務(wù):是一個(gè)邏輯的工作單元回滾和提交到上次回滾或提

19、交點(diǎn)的事務(wù)操作注意事項(xiàng):有一些特殊的事務(wù)是回自動(dòng)提交(隱式提交),在操作的過程種一定注意:QUIT、EXIT、CREATETABLE、ALTERTABLE、DROPTABLE、CREATEVIEW、ALTERVIEW、DROPVIEW、GRANT、REVOKE、CONNECT、DISCONNECT、AUDIT(審計(jì))、NOAUDIT.(10) 清空表:TRUNCATETABLE表名;注意事項(xiàng):清空表的操作不能回滾,所要清空的表不能被其他事務(wù)鎖定,不能清空試圖和同義詞,清空表不觸發(fā)觸發(fā)器。2. 索引,為增加查詢的速度,會(huì)影響數(shù)據(jù)的更新負(fù)荷(要適度的建立索引)創(chuàng)建索引CREATEINDEXINDE

20、X_JXC_COM_DAY_TRANSIDONJXC_COM_DAY(TRANS_ID)TABLESPACEINDX_SPCPCTFREE10INITRANS2MAXTRANS255STORAGE(INITIAL20MNEXT5MMINEXTENTS1MAXEXTENTS505PCTINCREASE0);創(chuàng)建索引PARALLEL(DEGREE5)并行的5個(gè)進(jìn)程共同創(chuàng)建索引(不使用于創(chuàng)建主健)NOLOGGING參數(shù)可選Oracle8l支持函數(shù)索引Oracle8I支持聯(lián)機(jī)索引online參數(shù)創(chuàng)建索引(因?yàn)閯?chuàng)建索引時(shí)表自動(dòng)加鎖不允許更新而使用ONLINE參數(shù)則可以聯(lián)機(jī)創(chuàng)建索引了)(1) 查詢中使用索

21、引,oracle自動(dòng)分析語句使用最佳的索引,主要依據(jù)sql查詢語句的WHERE條件,也可強(qiáng)制使用索引如:select-+INDEX(IDX_JMD_MFDATE)也可/*+INDEX(IDX_JMD_MFDATE)*/JMDMFIDGZ,ROUND(SUM(JCHSJJJE),2)HSJE,ROUND(SUM(JCBHSJJJE),2)BHSJEFROMJXCMFRAMEDAYWHEREJMDWMIDIN('1','2','3')ANDJMDDATE=TO_DATE('HSJSRQ','YYYYMMDD')GROU

22、PBYJMDMFID具體的查詢語句用PL/SQL的EXPLANPLANWINDOW進(jìn)行查詢索引的使用情況,大數(shù)據(jù)量的表一定注意索引的使用情況強(qiáng)制使用索引時(shí)盡量使用/*+INDEX(JXCMFRAMEDAYIDX_JMD_MFDATE)*/避免所選擇的語句被注釋并且多表聯(lián)立(或通過同義詞訪問)時(shí)盡量強(qiáng)制使用索引多個(gè)表的索引使用格式/*+INDEX(表1索引1)INDEX(表2索引2)*/(2) 分區(qū)局部索引CREATEINDEXPERSONS_NOONPERSONS(NO)LOCAL(PARTIONPART1TABLESPACESZJ1,PARTIONPART2TABLESPACESZJ2,PA

23、RTIONPART3TABLESPACESZJ3,PARTIONPART4TABLESPACESZJ4);分區(qū)全局索引CREATEINDEXPERSONS_NOONPERSONS(NO)GLOBALPARTIONBYRANGE(NO)(PARTIONPART1VALUESLESSTHEN(98010)TABLESPACESZJ_INDEX1,PARTIONPART2VALUESLESSTHEN(98020)TABLESPACESZJ_INDEX2,PARTIONPART3VALUESLESSTHEN(98030)TABLESPACESZJ_INDEX3,PARTIONPART4VALUESLE

24、SSTHEN(MAXVALUE)TABLESPACESZJ_INDEX4);(3) 創(chuàng)建索引注意事項(xiàng):索引的表不能被其他事務(wù)鎖定,8I支持ORACLE系統(tǒng)函數(shù)的結(jié)果當(dāng)成字段進(jìn)行索引。7.34不支持3. 視圖:是包含一個(gè)或多個(gè)表(視圖)中數(shù)據(jù)的簡(jiǎn)化描述執(zhí)行一個(gè)查詢結(jié)果,并將它看成一個(gè)表(虛擬表)例:CREATEVIEWSYS_GZASSelectCODE,NAME,SJCODE,ISSPB,ISWSFB,FLAG,TYPE,GDFL,BDFL,JHLRL,JHZZTS,YYMJ,SEQNO,STATUS,ISZG,ZGGYS,GYSSEQ,SYSREG,SUBJECT,ISXH,ISCS,ISM

25、GYSFROMsys_gljgWHEREflag='Y'ANDfgljgjcbm(code,1)=fgetmc;Oracle8I支持實(shí)例化視圖CREATEMATERIALIZEDVIEW*TABLESPACEDATA_SPCPCTFREE10INITRANS2MAXTRANS255STORAGE(INITIAL20MNEXT5MMINEXTENTS1MAXEXTENTS505PCTINCREASE0);materializedview還需要另外的寫盤時(shí)間同義詞:減少不同用戶間數(shù)據(jù)訪問的復(fù)雜性,增加遠(yuǎn)程分布數(shù)據(jù)的透明度和安全層沒有創(chuàng)建同義詞時(shí)FUTUREPOS用戶在對(duì)DBAUSE

26、RMCHT用戶中的表SYS_GLJG進(jìn)行訪問的時(shí)候SELECT*FROMDBAUSERMCHT.SYS_GLJG;建立同義詞之后可以自由訪問CREATE【PUBLIC】SYNONYMPSZX_SYS_GLJGFORSYS_GIJGPSZX_DBWORID;創(chuàng)建了一個(gè)全局同義詞。那些可以建立同義詞:表,視圖,序列,過程,函數(shù),建立了數(shù)據(jù)庫(kù)鏈接之后的以上內(nèi)容均可序列:多用戶產(chǎn)生的唯一整數(shù)的數(shù)據(jù)庫(kù)對(duì)象,用戶可用序列自動(dòng)產(chǎn)生主關(guān)鍵字的值。CREATESEQUENCESEQ_JXC_COM_DAY序列名稱INCREMENTBY1步長(zhǎng)MINVALUE1最小值NOCYCLE沒有周期CACHE20高速緩存OR

27、DER;序列的訪問selectseq_jxc_com_day.nextvalintol_jxcseqfromdual;語句運(yùn)行后自動(dòng)加一seq_jxc_com_day.CURRVAL返回剛才的值不加1自定義函數(shù),編譯后可想ORACLE自己的函數(shù)一樣使用,函數(shù)必須有返回值,函數(shù)不能更新數(shù)據(jù)表的內(nèi)容例:CREATEORREPLACEFUNCTIONfONull(n1INNUMBER)RETURNNumberASBEGINIFn1=0THENReturnNULL;ELSEReturnn1;ENDIF;END;/過程:用來完成用戶一系列的操作,過程可以調(diào)用其他的過程、函數(shù)、包等。CREATEORREP

28、LACEPROCEDUREsp_cmd_com_sc(v_codeinchar)ASlbzchar(1);lnnumber;BEGIN-調(diào)用刪除編碼過程deletefromqt_commodwherecode=v_code;commit;-是否日終處理命令SELECTRTRIM(LTRIM(VALUE)INTOlbzFROMsys_paraWHEREcode='29'iflbz='Y'thenbeginselectseqnointolnfrompszx_command_rzwherecomm='SCCOM'andpara=""

29、|v_code|""exceptionwhenno_data_foundthenINSERTINTOpszx_command_rzVALUES(seq_pszx_command_rz.NEXTVAL,SYSDATE,'SCCOM',”|v_code”');commit;return;end;endif;sp_scspbm(v_code);commit;EXCEPTIONWHENOTHERSTHENsp_ht_error('r','sp_cmd_com_sc',v_code,sqlcode,sqlerrm);raise;

30、ENDsp_cmd_com_sc;/12包:數(shù)據(jù)庫(kù)中的實(shí)體,包含一系列的公共常量、變量、數(shù)據(jù)類型、光標(biāo)(游標(biāo))過程及函數(shù)的定義,具有模塊化的優(yōu)點(diǎn),包包括:包頭和包體13.JOB:為系統(tǒng)設(shè)定定時(shí)執(zhí)行的過程建立JOBvariablejobnonumber;BEGINdbms_job.submit(:jobno,'sp_pszx_rz_job;',TRUNC(sysdate)+1.21,'TRUNC(SYSDATE+1)+0.21');END;/printjobno;/手工執(zhí)行JOB:EXECUTEDBMS_JOB.RUN(JOB號(hào));刪除JOB:EXECUTEDBM

31、S_JOB.REMOVE(JOB號(hào));查詢JOB號(hào)及其實(shí)行情況SELECT*FROMUSER_JOBS;當(dāng)自動(dòng)執(zhí)行的作業(yè)錯(cuò)誤超過16次,系統(tǒng)將該作業(yè)標(biāo)記為壞,14觸發(fā)器:是一一個(gè)PL/SQL過程,與一個(gè)表相關(guān)聯(lián),當(dāng)向一個(gè)表發(fā)出SQL語句滿足某一觸發(fā)器的觸發(fā)條件時(shí),系統(tǒng)便自動(dòng)執(zhí)行觸發(fā)器的觸發(fā)體。一個(gè)表可以有多個(gè)觸發(fā)器建立觸發(fā)器:CREATEORREPLACETRIGGER<觸發(fā)器名>觸發(fā)條件觸發(fā)體CREATEORREPLACETRIGGERdelete_commod_xstm1afterdeleteoncommod_xstm1foreachrowbegindeletefromqt_c

32、ommodwherecode=:old.xstmanddptm=:old.dptm;deletefromcommod_xstm2wherexstm=:old.xstm;end;/(1)觸發(fā)時(shí)間BEFORE、AFTER(2)觸發(fā)事件INSERT、UPDATE、DELETE(3)觸發(fā)子類型行觸發(fā)(ROW)和語句觸發(fā)(STATEMENT),行觸發(fā)的UPDATE觸發(fā)器可以指定更新的字段,當(dāng)對(duì)制定的字段進(jìn)行更新時(shí)觸發(fā)該觸發(fā)器,例:CREATEORREPLACETRIGGER"UPDATE_COMMOD_XSTM1"AFTERUPDATEOF"DPTM","

33、;GZ","HL"ON"DBAUSERMCHT"."COMMOD_XSTM1"REFERENCINGOLDASOLDNEWASNEWFOREACHROWdeclarevcodevarchar2(13);vdzxlvarchar2(15);vppvarchar2(15);vppnamevarchar2(30);begin過程體end;/(4) 觸發(fā)器關(guān)鍵值有兩個(gè)關(guān)鍵值分別對(duì)應(yīng)被觸發(fā)行中的老表值和新表值用OLD和NEW來表示,insert老表值為NULL,delete新表值為NULL,只有update才同時(shí)存在新老表值。15游標(biāo)

34、:大型數(shù)據(jù)庫(kù)沒有記錄的的概念,要想實(shí)現(xiàn)對(duì)符合條件的指定數(shù)量的數(shù)據(jù)記錄進(jìn)行操作,需要用到游標(biāo)CREATEORREPLACEPROCEDUREsp_cwzzpz_rowno(V_FTransIDINvarchar2)ASCURSORcur_cwzz_fnumISSELECTdistinetfnumFROMCWZZ_pzWHEREFTranslD=V_FTransIDorderbyfnum;CURSORcur_cwzz(V_FNUMvarchar2)ISSELECT*FROMCWZZ_PZWHEREFTranslD=V_FTransIDandFnum=V_FNUMorderbyfdcdesc,fac

35、ctid,fobjid1forupdate;Irowinteger;Ifnuminteger;row_cwzzcwzz_pz%rowtype;BEGINOPENcur_cwzz_fnum;LOOPFETCHcur_cwzz_fnumINTOIfnum;EXITWHENcur_cwzz_fnum%NOTFOUNDORcur_cwzz_fnum%NOTFOUNDISNULL;lrow:=0;OPENcur_cwzz(lfnum);LOOPFETCHcur_cwzzINTOrow_cwzz;EXITWHENcur_cwzz%NOTFOUNDORcur_cwzz%NOTFOUNDISNULL;upda

36、tecwzz_pzsetFENTRYID=lrowwherecurrentofcur_cwzz;lrow:=lrow+1;ENDLOOP;closecur_cwzz;ENDLOOP;closecur_cwzz_fnum;COMMIT;END;/四、數(shù)據(jù)庫(kù)的基本維護(hù)是SGA(系統(tǒng)全局區(qū)):是一個(gè)分配給oracle的包含一個(gè)oracle實(shí)例的數(shù)據(jù)庫(kù)的控制信息的內(nèi)存斷,它主要包括:數(shù)據(jù)庫(kù)高速緩存、重演日志緩存、共享池、數(shù)據(jù)字典緩存等SGA=(db_block_buffers*blocksize)+(shared_pool_size+large_pool_size+java_pool_size+log

37、_buffers)+1MB理論上SGA可占OS系統(tǒng)物理內(nèi)存的1/21/3,我們可以根據(jù)需求調(diào)整我推薦SGA=0.45*(OSRAM)假設(shè)服務(wù)器運(yùn)行ORACLB1.X版本,OS系統(tǒng)內(nèi)存為2GMEM,db_block_size是8192bytes,除了運(yùn)行ORACLED據(jù)庫(kù)外,沒有其它的應(yīng)用程序或服務(wù)器軟件.這樣SGA合計(jì)約為921M(0.45*2048M),設(shè)shared_pool_size250M(250*1024*1024bytes)設(shè)databasebuffercache620M(79360*8192bytes)log_buffer=524288large_pool_size=314572

38、8030Mjava_pool_size=2097152020Msort_area_size=524288512k(65k-2M)sort_area_retained_size=524288MTS時(shí)sort_area_retained_size=sort_area_size1. 初始化參數(shù)的說明db_name="hdqt_db"數(shù)據(jù)庫(kù)的名字instance_name=hdqt實(shí)例名service_names=hdqt_db服務(wù)名db_files=1024數(shù)據(jù)庫(kù)文件的最大允許數(shù)目control_files=("d:hdqtctrlfilecontrol01.ctl&q

39、uot;,"d:hdqtctrlfilecontrol02.ctl","d:hdqtctrlfilecontrol03.ctl")控制文件存放路徑從oracle8開始,控制文件還存儲(chǔ)數(shù)據(jù)庫(kù)恢復(fù)信息。open_cursors=100(1)打開光標(biāo)數(shù)(2)這個(gè)參數(shù)可以同時(shí)被每個(gè)用戶進(jìn)程擁有,這個(gè)參數(shù)的最大值依操作系統(tǒng)不同而不同。(3)在創(chuàng)建一個(gè)包含很多表的合成視圖時(shí),如果此參數(shù)很小,則視圖創(chuàng)建會(huì)不成功。max_enabled_roles=30最大允許的角色數(shù)db_file_multiblock_read_count=8數(shù)據(jù)文件每次讀取的塊數(shù)db_block_

40、buffers=3000(1)數(shù)據(jù)高速緩沖區(qū)(2)訪問過的數(shù)據(jù)都放在這一片內(nèi)存區(qū)域,該參數(shù)越大,Oracle在內(nèi)存中找到相同數(shù)據(jù)的可能性就越大,也即加快了查詢速度。(3)db_block_buffers以塊為單位,假如DB_BL0CK_SIZE=2K,db_block_buffers=3200,則占用內(nèi)存=3200*2K=6400K。(4)該參數(shù)越大越好但不要超過系統(tǒng)內(nèi)存的一半以下的語句用于查詢數(shù)據(jù)緩沖區(qū)的命中率(0-1)1是最理想的至少要在0.95以上,如較低應(yīng)該增加數(shù)據(jù)緩沖區(qū)的大小SELECTROUND(1-(SUM(DECODE(NAME'physicalreads',v

41、alue,0)/(sum(decode(NAME,'dbblockgets',value,0)+sum(decode(name,'consistentget',value,0),2)fromv$sysstatshared_pool_size=8780992(1)SQL共享緩沖池(2)該參數(shù)是庫(kù)高速緩存和數(shù)據(jù)字典的高速緩存。(3)該參數(shù)設(shè)置的太小回嚴(yán)重影響數(shù)據(jù)庫(kù)的性能,出現(xiàn)無效的單元被調(diào)用提示(4)單位為字節(jié),大小不要超過系統(tǒng)內(nèi)存的一半。large_pool_size=614400大池分配堆的大小java_pool_size=0log_checkpoint_int

42、erval=10000log_checkpoint_timeout=1800processes=50同時(shí)連接的進(jìn)程數(shù),并發(fā)連接到ORACLE上操作系統(tǒng)進(jìn)程的的最大數(shù)量最大值4322parallel_max_servers=5用戶事例的查詢服務(wù)器的最大數(shù)量log_buffer=32768重演日志緩沖區(qū)(128K*CPU個(gè)數(shù))db_domain=:指明數(shù)據(jù)庫(kù)的域名(默認(rèn)的是WORLD),這里可以用您公司的域名。global_names=true如果"數(shù)據(jù)庫(kù)鏈路名”和它所要連接的"數(shù)據(jù)庫(kù)”擁有相同的名字,則設(shè)置global_names=TRUE,否則,設(shè)置global_names

43、=FALSE,設(shè)置成true時(shí)據(jù)庫(kù)名:db_name+"."+db_domainoracle_trace_collection_name=""user_dump_dest=d:hdqtudump服務(wù)器跟蹤日志文件存放路徑db_block_size=8192(1)數(shù)據(jù)庫(kù)塊大?。?)Oracle默認(rèn)塊為2KB,太小了,因?yàn)槿绻覀冇幸粋€(gè)8KB的數(shù)據(jù),則2KB塊的數(shù)據(jù)庫(kù)要讀4次盤,才能讀完,而8KB塊的數(shù)據(jù)庫(kù)只要1次就讀完了,大大減少了I/O操作。(3)數(shù)據(jù)庫(kù)安裝完成后,就不能再改變db_block_size的值了,只能重新建立數(shù)據(jù)庫(kù)并且建庫(kù)時(shí),要選擇手工安裝

44、數(shù)據(jù)庫(kù)。remote_login_passwordfile=exclusive密碼文件的檢查方式:none:導(dǎo)致好像oracle的密碼文件不存在,即不安全的連接,不允許授權(quán)的連接,該選項(xiàng)為默認(rèn)值。Exclusive:密碼文件只用于一個(gè)數(shù)據(jù)庫(kù)Shared:密碼文件用于多個(gè)數(shù)據(jù)庫(kù)os_authent_prefix=""外部身份驗(yàn)證distributed_transactions=10數(shù)據(jù)庫(kù)服務(wù)版本(要?jiǎng)?chuàng)建函數(shù)索引該參數(shù)參數(shù)必須選中)Query_rewrite_enabled=true(要?jiǎng)?chuàng)建函數(shù)索引該參數(shù)參數(shù)必須選中)Query_rewrite_integrity=truste

45、d(要?jiǎng)?chuàng)建函數(shù)索引該參數(shù)參數(shù)必須選中)sort_area_size=65536排序區(qū),當(dāng)創(chuàng)建已經(jīng)有數(shù)據(jù)的表的索引時(shí)必須使用排序空間,在專用服務(wù)器環(huán)境中,由SORT_AREA_SIZE參數(shù)決定的排序區(qū)域是進(jìn)程全局區(qū)ProcessGlobalArea(PGA)內(nèi)UGA的一部分。在一個(gè)共享的服務(wù)器環(huán)境中,排序區(qū)域位于共享池內(nèi)sort_area_retained_size=65536參數(shù)決定排序區(qū)域最終縮小到的大小,以便將內(nèi)存釋放回Oracle服務(wù)器處理的用戶全局區(qū)(UserGlobalArea,UGA)。如果排序區(qū)域太小以至于滿足不了排序操作要求,那么數(shù)據(jù)就會(huì)被分成更小的塊,叫做排序分段(sortr

46、uns),并且被存儲(chǔ)在位于硬盤上的臨時(shí)排序段中。這種折衷辦法會(huì)影響硬盤的整體I/Ojob_queue_processes=7數(shù)據(jù)庫(kù)實(shí)例中作業(yè)隊(duì)列進(jìn)程的數(shù)量,系統(tǒng)缺省值為0,正常定義范圍為036,根據(jù)任務(wù)的多少,可以配置不同的數(shù)值job_queue_interval=60單位:秒定義系統(tǒng)每隔N秒喚醒該進(jìn)程一次。系統(tǒng)缺省值為60秒,正常范圍為13600秒。事實(shí)上,該進(jìn)程執(zhí)行完當(dāng)前任務(wù)后,就進(jìn)入睡眠狀態(tài),睡眠一段時(shí)間后,由系統(tǒng)的總控負(fù)責(zé)將其喚醒。open_links同時(shí)打開的鏈接數(shù)dml_locks(1)用戶一次可對(duì)表設(shè)定鎖的最大數(shù)目2) 如果有三個(gè)用戶修改6個(gè)表,則需18個(gè)DML鎖來實(shí)現(xiàn)并行操作,

47、如果設(shè)定DML_LOCKS不夠大,操作時(shí)執(zhí)行將中斷,你可以通過你的應(yīng)用程序的操作規(guī)模和最大的并行使用的用戶數(shù)來估算系統(tǒng)所需要的DML_LOCKS的值,但該值的大小對(duì)數(shù)據(jù)庫(kù)的其他性能沒有影響,所以一般都把它設(shè)得很大,遠(yuǎn)超過實(shí)際中可能達(dá)到的值,如果在系統(tǒng)運(yùn)行中經(jīng)常發(fā)生表鎖死的現(xiàn)象,就應(yīng)該考慮加大該值。dbwr_io_slaves后臺(tái)寫進(jìn)程數(shù)log_archive_start=true開啟自動(dòng)歸檔數(shù)據(jù)庫(kù)的手工啟動(dòng)7.34運(yùn)行程序SVRMGR23,8I運(yùn)行SVRMGRLSQL>CONNECTINTERNAL/*MCHT_DB;ORACLE9i用sqlplus連接CONNECT/ASSYSDBA;

48、SQL>STARTUPPFILE=D:MCHTPFILEINITMCHT.ORAOPEN前提條件:在系統(tǒng)的服務(wù)中相應(yīng)的數(shù)據(jù)庫(kù)的實(shí)例一定要啟動(dòng),服務(wù)不一定啟動(dòng)。啟動(dòng)的過程中會(huì)有數(shù)據(jù)庫(kù)啟動(dòng)的相應(yīng)的提示,如果數(shù)據(jù)庫(kù)在啟動(dòng)的過程中存在啟動(dòng)不起來的情況也會(huì)有相應(yīng)的提示,口:日志文件錯(cuò)誤、數(shù)據(jù)文件錯(cuò)誤、參數(shù)配置錯(cuò)誤、控制文件錯(cuò)誤等由于系統(tǒng)參數(shù)配置、數(shù)據(jù)庫(kù)日志文件損壞、控制文件損壞、數(shù)據(jù)庫(kù)數(shù)據(jù)文件損壞等原因造成的數(shù)據(jù)庫(kù)不能啟動(dòng)需要用手工啟動(dòng)的方式進(jìn)行啟動(dòng)數(shù)據(jù)庫(kù),查看出錯(cuò)的原因并修復(fù)。2. 數(shù)據(jù)備份方式(1)導(dǎo)出備份,將數(shù)據(jù)庫(kù)中的內(nèi)容全部導(dǎo)出來形成數(shù)據(jù)文件進(jìn)行工作站備份可以查看幫助EXP73HELP=Y

49、EXP73(EXP)DBAUSERMCHT/FUTUREMCHTMCHT_DBFULL=Y|NBUFFERS=10000OWNER=DBAUSERMCHTFILE=MCHT.DMPTABLES=表名ROW=Y|NLOG=MCHT丄0G導(dǎo)入IMP73(IMP)可以查看幫助IMP73HELP=YIMP73(IMP)DBAUSERMCHT/FUTUREMCHTMCHT_DBFULL=Y|NBUFFERS=10000FROMUSER=用戶名TOUSER=用戶名FILE=MCHT.DMPTABLES=表名ROW=Y|NLOG=MCHT.LOGIGNORE=Y|NCONSISTENT=Y(默認(rèn)N)按一致方

50、式導(dǎo)出(不能在增量導(dǎo)出中使用)INCTYPE導(dǎo)出類型INCREMENTAL(增量)CUMULATIVE(積累)COMPLETE(完全)不能導(dǎo)出包含LOBBFILEREF,但是oracle8l已經(jīng)支持了)直接路徑大大提高導(dǎo)出速度Filesize(8I新下特性)=2G規(guī)定導(dǎo)出文件的大小(2)停止服務(wù)后,將數(shù)據(jù)庫(kù)的整個(gè)目錄進(jìn)行復(fù)制備份停止啟動(dòng)備份的過程可以寫一個(gè)批處理BF.CMDc:winntsystem32netstoporacleservicemcht/yc:winntsystem32netstoporacleservicemcqt/yc:winntsystem32netstoporacleTN

51、SlistenerXcopyd:pszxd:backuppszx/SNXcopyd:mchtd:backupmcht/S/VXcopyd:mcqtd:backupmcqt/S/Vrem磁帶備份REMc:winntsystem32ntbackup.exebackupd:pszxd:mchtd:mcqt/d"BACKUP"/hc:on/tcopy/l"c:logbackup.log"/tape:0c:winntsystem32netstartoracleTNSlistenerc:winntsystem32netstartoraclestartmcqtc:wi

52、nntsystem32netstartoraclestartmchtat03:00/interactive/every:M,T,W,Th,F,S,Sud:bfbf.cmd在每天的凌晨3點(diǎn)執(zhí)行bf.cmd中的備份內(nèi)容atid/delete刪除計(jì)劃調(diào)度隊(duì)列中的指定的事務(wù)NT需要啟動(dòng)SCHEDUCLE計(jì)劃任務(wù)調(diào)度服務(wù)。W2K不需要,NT下的AT命令所執(zhí)行的批處理文件中不能訪問網(wǎng)絡(luò)盤,W2K下可以。3. 過程加密ORACLE提供數(shù)據(jù)加密技術(shù),能夠?qū)τ脩舻淖远x函數(shù)、過程、包的原始數(shù)據(jù)文件進(jìn)行加密處理,從而有效的保證軟件的版權(quán),但是不能對(duì)觸發(fā)器進(jìn)行加密,已經(jīng)加密的文件不能解密WRAP23(WRAP)IN

53、AME=輸入的文件名.SQLONAME=輸出的文件名.BSQ用輸出的文件名.BSQ文件中的語句所建立的過程、包、函數(shù)等在數(shù)據(jù)庫(kù)中均是加密的。4. 數(shù)據(jù)庫(kù)的偵聽(Listener.oraj)和網(wǎng)絡(luò)連接配置文件(Tnsnamesor0)偵聽:安裝數(shù)據(jù)庫(kù)實(shí)例的服務(wù)器上必須配置偵聽數(shù)據(jù)庫(kù)安裝目錄下的NETWORKADMINListener.ora提供對(duì)外服務(wù)的數(shù)據(jù)庫(kù)接口,內(nèi)容如下:LISTENER=(ADDRESS_LIST=(ADDRESS=(COMMUNITY=TCP.world)(Host=192.168.0.2)(PROTOCOL=TCP)(Port=1521)(ADDRESS=(COMMUN

54、ITY=TCP.world)(Host=192.168.0.2)(PROTOCOL=TCP)(Port=1526)STARTUP_WAIT_TIME_LISTENER=0CONNECT_TIMEOUT_LISTENER=10TRACE_LEVEL_LISTENER=OFFSID_LIST_LISTENER=(SID_LIST=(SID_DESC=(SID_NAME=PSZX)(SID_DESC=(SID_NAME=MCHT)#PASSWORDS_LISTENER=(oracle)7.34只能有一個(gè)偵聽,8I可以有多個(gè)偵聽,服務(wù)器每增加一個(gè)數(shù)據(jù)庫(kù)都需要手工修改配置將數(shù)據(jù)庫(kù)的內(nèi)容填入,并重新啟動(dòng)偵

55、聽服務(wù)。Host(主機(jī)地址)可以為主機(jī)的名字,也可以為IP地址,特殊的IP:也可,一般W2K在沒用連通網(wǎng)絡(luò)的時(shí)候不能獲得本級(jí)制定的IP地址(NT沒有此問題)它會(huì)造成偵聽不能啟動(dòng),數(shù)據(jù)庫(kù)不能進(jìn)行正常的訪問。一般在數(shù)據(jù)庫(kù)安裝完成之后系統(tǒng)會(huì)自動(dòng)創(chuàng)建偵聽服務(wù),如果是W2K沒有進(jìn)行安裝直接導(dǎo)入的注冊(cè)表可運(yùn)行ORACLE安裝目錄下的BIN目錄下的LSNRCTL.EXE文件后運(yùn)行START回車后自動(dòng)建立并啟動(dòng)偵聽服務(wù),如果偵聽服務(wù)已經(jīng)存在,它會(huì)啟動(dòng)該服務(wù)。網(wǎng)絡(luò)連接配置文件:用戶工作站要訪問指定地址的ORACLE數(shù)據(jù)庫(kù)服務(wù)器需要配置相應(yīng)的配置文件,可通過ORACLE本身的配置工具也可通過直接修改配置文件的辦法

56、,內(nèi)容:pszx_db.world=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(COMMUNITY=tcp.world)(PROTOCOL=TCP)(Host=192.168.0.2)(Port=1521)(ADDRESS=(COMMUNITY=tcp.world)(PROTOCOL=TCP)(Host=192.168.0.2)(Port=1526)(CONNECT_DATA=(SID=pszx)檢查連接的命令TNSPINGPSZX_DB相應(yīng)的每天啟動(dòng)的日志信息存放在數(shù)據(jù)庫(kù)系統(tǒng)的安裝目錄下的NETWORK'LOG目錄下的listener.log和sqlne

57、t.log文件記載,它會(huì)隨著時(shí)間的增加而增長(zhǎng),注意刪除,以保留可用空間6.數(shù)據(jù)庫(kù)典型數(shù)據(jù)維護(hù)方案數(shù)據(jù)文件改名(當(dāng)然包括日值文件的改名)SVRMGR>connectinternalSVRMGR>shartupmountORCL;SVRMGR>alterdatabaserenamefile'e:test.dbfto'd:test.dbf;注意:一定要加單引號(hào)Alterdatabaserenamefiledld_file_name1',old_file_name2'tonew_file_name1new_file_name2'(這是同時(shí)修改多

58、個(gè)數(shù)據(jù)文件的標(biāo)準(zhǔn)格式,修改完成之后再打開數(shù)據(jù)庫(kù)alterdatabaseopen;)查看數(shù)據(jù)文件狀態(tài)SQL>selectfile_name,file_id,tablespace_name,bytes,statusfromdba_data_files;1) ORACLE表空間恢復(fù)方案Selectfile#,online,errorfromv$recover_file查找需要恢復(fù)的文件IDSelectname,file#fromv$datafile;根據(jù)相應(yīng)的ID查找相應(yīng)的文件名RECOVERDATABASE執(zhí)行整個(gè)數(shù)據(jù)庫(kù)恢復(fù)RECOVERDATAFILE執(zhí)行特定數(shù)據(jù)文件恢復(fù)RECOVERTABLESPACE表空間名恢復(fù)指定表空間在SVRMGRL中前面不用ALTERDATABASE而在sql/pus中用臨時(shí)表空間并不包含真正的數(shù)據(jù),將該表空間置為OFFLINE后刪掉重建即可(1)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論