oracledba常用sql腳本分類文檔_第1頁
oracledba常用sql腳本分類文檔_第2頁
oracledba常用sql腳本分類文檔_第3頁
oracledba常用sql腳本分類文檔_第4頁
oracledba常用sql腳本分類文檔_第5頁
免費預覽已結束,剩余22頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Oracle 正常 SQL監控SQL1.監控事例的等待:selectevent,sum(decode(wait_time,0,0,1)prev,sum(decode(wait_time,0,1,0)curr,count(*)fromv$session_waitgroupbyeventorderby4;2.回滾段的爭用情況:selectname,waits,gets,waits/getsratiofromv$rollstata,v$rollnamebwherea.usn=b.usn;3.監控表空間的I/O比例:selectdf.tablespace_namename,df.file_namefi

2、le,f.phyrdspyr,f.phyblkrdpbr,f.phywrtspyw,f.phyblkwrtpbwfromv$filestatf,dba_data_filesdfwheref.file#=df.file_id4.監空文件系統的I/O比例:selectsubstr(a.file#,1,2)#,substr(,1,30)name,a.status,a.bytes,b.phyrds,b.phywrtsfromv$datafilea,v$filestatbwherea.file#=b.file#5.在某個用戶下找所有的索引:selectuser_indexes.table_n

3、ame,user_indexes.index_name,uniqueness,column_namefromuser_ind_columns,user_indexeswhereuser_ind_columns.index_name=user_indexes.index_nameanduser_ind_columns.table_name=user_indexes.table_nameorderbyuser_indexes.table_type,user_indexes.table_name,user_indexes.index_name,column_position;6.進程監控:selec

4、tdistinctp.spidunix_process,s.terminal,to_char(s.logon_time,YYYY/MON/DDHH24:MI)Logon_Time,s.usernamefromv$processp,v$sessionswherep.addr=s.paddrorderby27 .監控SGA中字典緩沖區的命中率selectparameter,gets,Getmisses,getmisses/(gets+getmisses)*100missratio,(1-(sum(getmisses)/(sum(gets)+sum(getmisses)*100Hitratiofro

5、mv$rowcachewheregets+getmisses0groupbyparameter,gets,getmisses;8 .監控SGA中共享緩存區的命中率,應該小于1%selectsum(pins)TotalPins,sum(reloads)TotalReloads,sum(reloads)/sum(pins)*100libcachefromv$librarycache;selectsum(pinhits-reloads)/sum(pins)hitradio,sum(reloads)/sum(pins)reloadpercentfromv$librarycache;9 .顯示所有數據庫

6、對象的類別和大小selectcount(name)num_instances,type,sum(source_size)source_size,sum(parsed_size)parsed_size,sum(code_size)code_size,sum(error_size)error_size,sum(source_size)+sum(parsed_size)+sum(code_size)+sum(error_size)size_requiredfromdba_object_sizegroupbytypeorderby2;10 .監控SGA中重做日志緩存區的命中率,應該小于1%SELECT

7、name,gets,misses,immediate_gets,immediate_misses,Decode(gets,0,0,misses/gets*100)ratio1,Decode(immediate_gets+immediate_misses,0,0,immediate_misses/(immediate_gets+immediate_misses)*100)ratio2FROMv$latchWHEREnameIN(redoallocation,redocopy);11 .監控內存和硬盤的排序比率,最好使它小于.10,增加sort_area_sizeSELECTname,valueF

8、ROMv$sysstatWHEREnameIN(sorts(memory),sorts(disk);12 .監控當前數據庫誰在運行什么SQL語句SELECTosuser,username,sql_textfromv$sessiona,v$sqltextbwherea.sql_address=b.addressorderbyaddress,piece;13 .監控字典緩沖區SELECT(SUM(PINS-RELOADS)/SUM(PINS)LIBCACHEFROMV$LIBRARYCACHE;SELECT(SUM(GETS-GETMISSES-USAGE-FIXED)/SUM(GETS)ROWC

9、ACHEFROMV$ROWCACHE;SELECTSUM(PINS)EXECUTIONS,SUM(RELOADS)CACHEMISSESWHILEEXECUTINGFROMV$LIBRARYCACHE;后者除以前者,此比率小于1%,接近0%為好。SELECTSUM(GETS)DICTIONARYGETS,SUM(GETMISSES)DICTIONARYCACHEGETMISSESFROMV$ROWCACHE14 .找ORACLE字符集select*ps$wherename=NLS_CHARACTERSET;15 .監控MTSselectbusy/(busy+idle)sh

10、aredserversbusyfromv$dispatcher;此值大于0.5時,參數需加大selectsum(wait)/sum(totalq)dispatcherwaitsfromv$queuewheretype=dispatcher;selectcount(*)fromv$dispatcher;selectservers_highwaterfromv$mts;servers_highwater接近mts_max_servers時,參數需力口大16 .碎片程度selecttablespace_name,count(tablespace_name)fromdba_free_spacegrou

11、pbytablespace_namehavingcount(tablespace_name)10;altertablespacenamecoalesce;altertablenamedeallocateunused;createorreplaceviewts_blocks_vasselecttablespace_name,block_id,bytes,blocks,freespacesegment_namefromdba_free_spaceunionallselecttablespace_name,block_id,bytes,blocks,segment_namefromdba_exten

12、ts;select*fromts_blocks_v;selecttablespace_name,sum(bytes),max(bytes),count(block_id)fromdba_free_spacegroupbytablespace_name;查看碎片程度高的表SELECTsegment_nametable_name,COUNT(*)extentsFROMdba_segmentsWHEREownerNOTIN(SYS,SYSTEM)GROUPBYsegment_nameHAVINGCOUNT(*)=(SELECTMAX(COUNT(*)FROMdba_segmentsGROUPBYse

13、gment_name);17 .表、索引的存儲情況檢查selectsegment_name,sum(bytes),count(*)ext_quanfromdba_extentswheretablespace_name=&tablespace_nameandsegment_type=TABLEgroupbytablespace_name,segment_name;selectsegment_name,count(*)fromdba_extentswheresegment_type=INDEXandowner=&ownergroupbysegment_name;18、找使用CPU多

14、的用戶session19是cpuusedbythissessionselecta.sid,spid,status,substr(gram,1,40)prog,a.terminal,osuser,value/60/100valuefromv$sessiona,v$processb,v$sesstatcwherec.statistic#=12andc.sid=a.sidanda.paddr=b.addrorderbyvaluedesc;20.監控log_buffer的使用情況:(值最好小于1%,否則增加log_buffer的大小),rbar.value,re

15、.name,re.value,(rbar.value*100)/re.value|%radiofromv$sysstatrbar,v$==redoentries;19、查看運行過的SQL語句:SELECTSQL_TEXTFROMV$SQL常用用戶SQL表:select*fromcat;select*fromtab;selecttable_namefromuser_tables;視圖:selecttextfromuser_viewswhereview_name=upper(&a

16、mp;view_name);索引:selectindex_name,table_owner,table_name,tablespace_name,statusfromuser_indexesorderbytable_name;觸發器:selecttrigger_name,trigger_type,table_owner,table_name,statusfromuser_triggers;快照:selectowner,name,master,table_name,last_refresh,nextfromuser_snapshotsorderbyowner,next;同義詞:select*fr

17、omsyn;序列:select*fromseq;數據庫鏈路:select*fromuser_db_links;約束限制:selectTABLE_NAME,CONSTRAINT_NAME,SEARCH_CONDITION,STATUSfromuser_constraintsWHERETABLE_name=upper(&TABLE_Name);本用戶讀取其他用戶對象的權限:select*fromuser_tab_privs;本用戶所擁有的系統權限:select*fromuser_sys_privs;用戶:select*fromall_usersorderbyuser_id;表空間剩余自由空

18、間情況:selecttablespace_name,sum(bytes)總字節數,max(bytes),count(*)fromdba_free_spacegroupbytablespace_name;數據字典:selecttable_namefromdictorderbytable_name;鎖及資源信息:select*fromv$lock;不包括DDL鎖數據庫字符集:selectname,value$fromprops$wherename=NLS_CHARACTERSET;inin.ora參數:selectname,valuefromv$parameterorderbyname;SQL共享

19、池:selectsql_textfromv$sqlarea;數據庫:select*fromv$database控制文件:select*fromV$controlfile;重做日志文件信息:select*fromV$logfile;來自控制文件中的日志文件信息:select*fromV$log;來自控制文件中的數據文件信息:select*fromV$datafile;NLS參數當前值:select*fromV$nls_parameters;ORACLE版本信息:select*fromv$version;描述后臺進程:select*fromv$bgprocess;查看版本信息:select*fro

20、mproduct_component_version;查詢表結構selectsubstr(table_name,1,20)tabname,substr(column_name,1,20)column_name,rtrim(data_type)|(|data_length|)fromsystem.dba_tab_columnswhereowner=username表空間使用狀態selecta.file_idFileNo,a.tablespace_nameTablespace_name,round(a.bytes/1024/1024,4)TotalMB,round(a.bytes-sum(nvl(

21、b.bytes,0)/1024/1024,4)UsedMB,round(sum(nvl(b.bytes,0)/1024/1024,4)FreeMB,round(sum(nvl(b.bytes,0)/a.bytes*100,4)%Freefromdba_data_filesa,dba_free_spacebwherea.file_id=b.file_id(+)groupbya.tablespace_name,a.file_id,a.bytesorderbya.tablespace_name查詢某個模式下面數據不為空的表declareCursorcisselectTNAMEfromtab;vCou

22、ntNumber;table_nmVarchar2(100);sqvarchar2(300);beginforrinclooptable_nm:=r.TNAME;sq:=selectcount(*)from|table_nm;executeimmediatesqintovCount;ifvCount0thendbms_output.put_line(r.tname);endif;endloop;end;客戶端主機信息SELECTSYS_CONTEXT(USERENV,TERMINAL)TERMINAL,SYS_CONTEXT(USERENV,HOST)HOST,SYS_CONTEXT(USER

23、ENV,OS_USER)OS_USER,SYS_CONTEXT(USERENV,IP_ADDRESS)IP_ADDRESSFROMDUAL安裝Oracle后,經常使用的修改表空間的SQL代碼配置:WindowsNT4.0中文版5塊10.2GBSCSI硬盤分:C:盤、D:盤、E:盤、F:盤、G:盤Oracle8.0.4forWindowsNTNT安裝在C:WINNT,Oracle安裝在C:ORANT目標:因系統的回滾段太小,現打算生成新的回滾段,建立大的、新的表空間(數據表空間、索引表空間、回滾表空間、臨時表空間、)建兩個數據表空間、兩個索引表空間,這樣建的目的是根據實際應用,如:現有10個應用

24、用戶,每個用戶是一個獨立子系統(如:商業進銷存款、庫存、MIS系統中的財務、收人事、總經理等)尤其大型商場中收款機眾多,同時訪問進程很多,經常達到50-100個進程同時訪問,這樣,通過建立多個用戶表空間、索引表空間,把各個用戶分別建在不同的表空間里(多個用戶表空間放在不同的物理磁盤上),減少了用戶之間的I/O競爭、讀寫數據與寫讀索引的競爭(用戶表空間、索引表空間也分別放在不同的物理磁盤上)規劃:C:盤、NT系統,Oracle系統D:盤、數據表空間1(3GB、自動擴展)、回滾表空間1(1GB、自動擴展)E:盤、數據表空間2(3GB、自動擴展)、回滾表空間2(1GB、自動擴展)F:盤、索引表空間1

25、(2GB、自動擴展)、臨時表空間1(0.5GB、不自動擴展)G:盤、索引表空間2(2GB、自動擴展)、臨時表空間2(0.5GB、不自動擴展)注:這只是一個簡單的規劃,實際規劃要依系統需求來定,盡量減少I/O競爭實現:1、首先查看系統有哪些回滾段及其狀態。SQLcolownerformata20SQLcolstatusformata10SQLcolsegment_nameformata20SQLcoltablespace_nameformata20SQLSELECTOWNER,SEGMENT_NAME,TABLESPACE_NAME,SUM(BYTES)/1024/1024M2 FROMDBA_

26、SEGMENTS3 WHERESEGMENT_TYPE=ROLLBACK4 GROUPBYOWNER,SEGMENT_NAME,TABLESPACE_NAME5/OWNERSEGMENT_NAMETABLESPACE_NAMEMSYSRB1ROLLBACK_DATA.09765625SYSRB10ROLLBACK_DATA.09765625SYSRB11ROLLBACK_DATA.09765625SYSRB12ROLLBACK_DATA.09765625SYSRB13ROLLBACK_DATA.09765625SYSRB14ROLLBACK_DATA.09765625SYSRB15ROLLBA

27、CK_DATA.09765625SYSRB16ROLLBACK_DATA.09765625SYSRB2ROLLBACK_DATA.09765625SYSRB3ROLLBACK_DATA.09765625SYSRB4ROLLBACK_DATA.09765625SYSRB5ROLLBACK_DATA.09765625SYSRB6ROLLBACK_DATA.09765625SYSRB7ROLLBACK_DATA.09765625SYSRB8ROLLBACK_DATA.09765625SYSRB9ROLLBACK_DATA.09765625SYSRB_TEMPSYSTEM.24414063SYSSYS

28、TEMSYSTEM.1953125查詢到18記錄.SQLSELECTSEGMENT_NAME,OWNER,2 TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS3 FROMDBA_ROLLBACK_SEGS4 /SEGMENT_NAMEOWNERTABLESPACE_NAMESEGMENT_IDFILE_IDSTATUSSYSTEMSYSSYSTEM01ONLINERB_TEMPSYSSYSTEM11OFFLINERB1PUBLICROLLBACK_DATA23ONLINERB2PUBLICROLLBACK_DATA33ONLINERB3PUBLICROLLBA

29、CK_DATA43ONLINERB4PUBLICROLLBACK_DATA53ONLINERB5PUBLICROLLBACK_DATA63ONLINERB6PUBLICROLLBACK_DATA73OFFLINERB7PUBLICROLLBACK_DATA83OFFLINERB8PUBLICROLLBACK_DATA93OFFLINERB9PUBLICROLLBACK_DATA103OFFLINERB10PUBLICROLLBACK_DATA113OFFLINERB11PUBLICROLLBACK_DATA123OFFLINERB12PUBLICROLLBACK_DATA133OFFLINER

30、B13PUBLICROLLBACK_DATA143OFFLINERB14PUBLICROLLBACK_DATA153OFFLINERB15PUBLICROLLBACK_DATA163OFFLINERB16PUBLICROLLBACK_DATA173OFFLINE查詢到18記錄.2、修改代碼如下,可把以下代碼存入一.sql文件,如cg_sys.sql,然后以SQLcg_sys.sql調用執行。-注意:各個硬盤上要事先建好oradata目錄-修改現有回滾段,使之失效,下線alterrollbacksegmentrb1offline;alterrollbacksegmentrb2offline;al

31、terrollbacksegmentrb3offline;alterrollbacksegmentrb4offline;alterrollbacksegmentrb5offline;alterrollbacksegmentrb6offline;alterrollbacksegmentrb7offline;alterrollbacksegmentrb8offline;alterrollbacksegmentrb9offline;alterrollbacksegmentrb10offline;alterrollbacksegmentrb11offline;alterrollbacksegmentr

32、b12offline;alterrollbacksegmentrb13offline;alterrollbacksegmentrb14offline;alterrollbacksegmentrb15offline;alterrollbacksegmentrb16offline;-刪除原有回滾段droprollbacksegmentrb1;droprollbacksegmentrb2;droprollbacksegmentrb3;droprollbacksegmentrb4;droprollbacksegmentrb5;droprollbacksegmentrb6;droprollbackseg

33、mentrb7;droprollbacksegmentrb8;droprollbacksegmentrb9;droprollbacksegmentrb10;droprollbacksegmentrb11;droprollbacksegmentrb12;droprollbacksegmentrb13;droprollbacksegmentrb14;droprollbacksegmentrb15;droprollbacksegmentrb16;-建數據表空間1-收款、庫存、訂貨、遠程通信createtablespaceUSER_DATA1datafiled:oradatauser1_1.orasi

34、ze512M,d:oradatauser1_2.orasize512M,d:oradatauser1_3.orasize512M,d:oradatauser1_4.orasize512M,d:oradatauser1_5.orasize512M,d:oradatauser1_6.orasize512MAUTOEXTENDONNEXT5MMAXSIZEUNLIMITEDdefaultstorage(initial128Knext2Mpctincrease0);-initial128K,因為,用戶建在表空間上,而表建在用戶里,為用戶所擁有,- -用戶繼承數據表空間的存儲參數,表繼承用戶的存儲參數-

35、如果initial設的過大,如:5M,則每建一個空表就要占用5M的空間,即使一條記錄也沒有-AUTOEXTENDONNEXT5MMAXSIZEUNLIMITED,設置數據文件自動擴展,每一次擴展增加5M,最大空間不受限-建數據表空間2- -物價、人事、結算、財務、總經理、合同、統計createtablespaceUSER_DATA2datafilee:oradatauser2_1.orasize512M,e:oradatauser2_2.orasize512M,e:oradatauser2_3.orasize512M,e:oradatauser2_4.orasize512M,e:oradata

36、user2_5.orasize512M,e:oradatauser2_6.orasize512MAUTOEXTENDONNEXT5MMAXSIZEUNLIMITEDdefaultstorage(initial128Knext2Mpctincrease0);-建索引表空間1createtablespaceINDEX_DATA1datafilef:oradataindex1_1.orasize512M,f:oradataindex1_2.orasize512M,f:oradataindex1_3.orasize512M,f:oradataindex1_4.orasize512MAUTOEXTEND

37、ONNEXT5MMAXSIZEUNLIMITEDdefaultstorage(initial128Knext2Mpctincrease0);-建索引表空間2createtablespaceINDEX_DATA2datafileg:oradataindex2_1.orasize512M,g:oradataindex2_2.orasize512M,g:oradataindex2_3.orasize512M,g:oradataindex2_4.orasize512MAUTOEXTENDONNEXT5MMAXSIZEUNLIMITEDdefaultstorage(initial128Knext2Mpc

38、tincrease0);-建回滾表空間1-設置初始值40M(initial40M),則每在這個表空間中建一個回滾段,-此回滾段自動繼承此回滾表空間的存儲參數,也即默認文件為40McreatetablespaceROLLBACK_DATA1datafiled:oradataroll1_1.orasize512M,d:oradataroll1_2.orasize512MAUTOEXTENDONNEXT5MMAXSIZEUNLIMITEDdefaultstorage(initial40Mnext5Mpctincrease0);-建回滾表空間2createtablespaceROLLBACK_DATA

39、2datafilee:oradataroll2_1.orasize512M,e:oradataroll2_2.orasize512MAUTOEXTENDONNEXT5MMAXSIZEUNLIMITEDdefaultstorage(initial40Mnext5Mpctincrease0);-建臨時表空間1createtablespaceTEMPORARY_DATA1datafilef:oradatatemp1_1.orasize512Mdefaultstorage(initial10Mnext3Mpctincrease0);-建臨時表空間2createtablespaceTEMPORARY_D

40、ATA2datafileg:oradatatemp2_1.orasize512Mdefaultstorage(initial10Mnext3Mpctincrease0);- -使其真正成為臨時的altertablespaceTEMPORARY_DATA1temporary;altertablespaceTEMPORARY_DATA2temporary;- -建立新的回滾段,每個都一樣大,不同大小的回滾段沒有什么意義,系統是隨機選擇的。- -建多少個,根據并發訪問用戶的多少,-如果你們公司每天有50-100個人員使用Oracle系統開發的管理軟件,應該20個以上createpublicrollb

41、acksegmentrb01tablespacerollback_data1;createpublicrollbacksegmentrb02tablespacerollback_data1;createpublicrollbacksegmentrb03tablespacerollback_data1;createpublicrollbacksegmentrb04tablespacerollback_data1;createpublicrollbacksegmentrb05tablespacerollback_data1;createpublicrollbacksegmentrb06tables

42、pacerollback_data1;createpublicrollbacksegmentrb07tablespacerollback_data1;createpublicrollbacksegmentrb08tablespacerollback_data1;createpublicrollbacksegmentrb09tablespacerollback_data2;createpublicrollbacksegmentrb10tablespacerollback_data2;-前8個建在回滾表空間1中,后8個在回滾表空間2createpublicrollbacksegmentrb11ta

43、blespacerollback_data2;createpublicrollbacksegmentrb12tablespacerollback_data2;createpublicrollbacksegmentrb13tablespacerollback_data2;createpublicrollbacksegmentrb14tablespacerollback_data2;createpublicrollbacksegmentrb15tablespacerollback_data2;createpublicrollbacksegmentrb16tablespacerollback_dat

44、a2;createpublicrollbacksegmentrb17tablespacerollback_data2;createpublicrollbacksegmentrb18tablespacerollback_data2;createpublicrollbacksegmentrb19tablespacerollback_data2;createpublicrollbacksegmentrb20tablespacerollback_data2;-使回滾段online,即有效alterrollbacksegmentrb01online;alterrollbacksegmentrb02onl

45、ine;alterrollbacksegmentrb03online;alterrollbacksegmentrb04online;alterrollbacksegmentrb05online;alterrollbacksegmentrb06online;alterrollbacksegmentrb07online;alterrollbacksegmentrb08online;alterrollbacksegmentrb09online;alterrollbacksegmentrb10online;alterrollbacksegmentrb11online;alterrollbacksegm

46、entrb12online;alterrollbacksegmentrb13online;alterrollbacksegmentrb14online;alterrollbacksegmentrb15online;alterrollbacksegmentrb16online;alterrollbacksegmentrb17online;alterrollbacksegmentrb18online;alterrollbacksegmentrb19online;alterrollbacksegmentrb20online;- -查看現有回滾段及其狀態colsegmentformata30SELEC

47、TSEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUSFROMDBA_ROLLBACK_SEGS;- -查看數據文件及其所在表空間、大小、狀態colfile_nameformata40coltablespace_nameformata20selectfile_name,file_id,tablespace_name,bytes,statusfromdba_data_files;至此,表空間重新規劃完畢,這里講的比較通俗,還有好多參數值得設置,能夠把Oracle設置到最優的境界,表空間設置完了,下面,就該好好的整理一下Oracl

48、e的內存區了,Oracle很有意思,內存越大,效果越明顯,所以有必要好好調整一下置ininorcl.ora參數文件。查看回滾段名稱及大小COLUMNroll_nameFORMATa13HEADINGRollbackNameCOLUMNtablespaceFORMATa11HEADINGTablspaceCOLUMNin_extentsFORMATa20HEADINGInit/NextExtentsCOLUMNm_extentsFORMATa10HEADINGMin/MaxExtentsCOLUMNstatusFORMATa8HEADINGStatusCOLUMNwrapsFORMAT999HE

49、ADINGWrapsCOLUMNshrinksFORMAT999HEADINGShrinksCOLUMNoptFORMAT999,999,999HEADINGOpt.SizeCOLUMNbytesFORMAT999,999,999HEADINGBytesCOLUMNextentsFORMAT999HEADINGExtentsSELECTa.owner|.|a.segment_nameroll_name,a.tablespace_nametablespace,TO_CHAR(a.initial_extent)|/|TO_CHAR(a.next_extent)in_extents,TO_CHAR(

50、a.min_extents)|/|TO_CHAR(a.max_extents)m_extents,a.statusstatus,b.bytesbytes,b.extentsextents,d.shrinksshrinks,d.wrapswraps,d.optsizeoptFROMdba_rollback_segsaSGA區,也就是主要配,dba_segmentsb,v$rollnamec,v$rollstatdWHEREa.segment_name=b.segment_nameANDa.segment_name=(+)ANDc.usn=d.usn(+)ORDERBYa.segmen

51、t_name;PL/SQL入門教程1.1 PL/SQL簡介PL/SQL是ORACLE的過程化語言,包括一整套的數據類型、條件結構、循環結構和異常處理結構,PL/SQL可以執行SQL語句,SQL語句中也可以使用PL/SQL函數。1.2創建PL/SQL程序塊DECLARE,BEGIN,EXCEPTIONEND;1.3 PL/SQL數據類型名稱類型說明NUMBER數字型能存放整數值和實數值,并且可以定義精度和取值范圍BINARY_INTEGER數字型可存儲帶符號整數,為整數計算優化性能DEC數字型NUMBER的子類型,小數DOUBLEPRECISION數字型NUMBER的子類型,高精度實數INTEG

52、ER數字型NUMBER的子類型,整數INT數字型NUMBER的子類型,整數NUMERIC數字型NUMBER的子類型,與NUMBER等價REAL數字型NUMBER的子類型,與NUMBER等價SMALLINT數字型NUMBER的子類型,取值范圍比INTEGER小VARCHAR2字符型存放可變長字符串,有最大長度CHAR字符型定長字符串LONG字符型變長字符串,最大長度可達32,767DATE日期型以數據庫相同的格式存放日期值BOOLEAN布爾型TRUEORFALSEROWIDROWID存放數據庫的行號例子:DECLAREORDER_NONUMBER(3);CUST_NAMEVARCHAR2(20)

53、;ORDER_DATEDATE;EMP_NOINTEGER:=25;PICONSTANTNUMBER:=3.1416;BEGINNULL;END;1.4處理PL/SQL的異常1.4.1 PL/SQL的異常例如:DECLAREXNUMBER;BEGINX:=yyyy;-ErrorHereEXCEPTIONWHENVALUE_ERRORTHENDBMS_OUTPUT.PUT_LINE(EXCEPTIONHANDED);END;實現技術:EXCEPTIONWHENfirst_exceptionTHEN,WHENsecond_exceptionTHEN,WHENOTHERSTHEN/*THERS異常處

54、理器必須排在最后,它處理所有沒有明確列出的異常。,END;預定義異常*/異常名稱ORACLE錯誤說明CURSOR_ALREADY_OPENORA-6511試圖打開一個已打開的光標DUP_VAL_ON_INDEXORA-0001試圖破壞一個唯一性限制INVALID_CURSORORA-1001試圖使用一個無效的光標INVALID_NUMBERORA-1722試圖對非數字值進行數字操作LOGIN_DENIEDORA-1017無效的用戶名或者口令NO_DATA_FOUNDORA-1403查詢未找到數據NOT_LOGGED_ONORA-1012還未連接就試圖數據庫操作PROGRAM_ERRORORA-

55、6501內部錯誤ROWTYPE_MISMATCHORA-6504主變量和光標的類型不兼容STORAGE_ERRORORA-6500內部錯誤TIMEOUT_ON_RESOURCEORA-0051發生超時TOO_MANY_ROWSORA-1422SELECTINTD命令返回的多行TRANSACTION_BACKED_OUTORA-006由于死鎖提交被退回VALUE_ERRORORA-6502轉換或者裁剪錯誤ZERO_DIVIDEORA-1476試圖被零除自定義異常處理DECLAREBAD_ROWIDEXCEPTION;XROWID;PRAGMAEXCEPTION_INIT(BAD_ROWID,-0

56、1445);BEGINSELECTROWIDINTOXFROMTABWHEREROWNUM=1;EXCEPTIONWHENBAD_ROWIDTHENDBMS_OUTPUT.PUT_LINE(CANNOTQUERYROWIDFROMTHISVIEW);END;注意:-01445因為PRAGMAEXCEPTION_INIT命令把這個變量(-01455)連接到這個ORACLE錯誤,該語句的語法如下:PRAGMAEXCEPTION_INIT(exception_name,error_number);其中error_number是負數,因為錯誤號被認為負數,當定義錯誤時記住使用負號1.4.4自定義異常異常不一定必須是oracle返回的系統錯誤,用戶可以在自己的應用程序中創建

溫馨提示

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

評論

0/150

提交評論