函數與存儲過程是數據庫操作中很重要的一部分,為了更好的理解,我就不做太多的理論講解,下面是我為了把今天的內容融合到一起自己設計的一個需求:用我們現在手上有的兩張表:emp、dept。emp表中有員工工資,獎金等信息,dept表中有部門信息有時候我們會遇到這樣的業務:財務部門將統計出來的工資分發到每個部門,由各個部門自己發工資(個人虛構的),在這個過程中我們就需要將每個部門的總工資算出來,于是就有了今天的代碼:準備部分(復習):①準備表:創建一個存放最終數據
系統 2019-08-29 22:06:21 2092
表空間是oracle數據庫中最大的邏輯組成部分。它在物理上與磁盤上的數據文件相對應(一個表空間由一個或多個數據文件組成,但一個數據文件只能屬于一個表空間)■查看排序段的使用情況SQL>select*fromv$sort_segment;■查看使用排序段的會話和用戶信息SQL>select*fromv$sort_usage;■查詢數據字典視圖得到撤銷表空間中回退段的信息SQL>select*fromdba_rollback_segs;■創建大文件表空間SQL
系統 2019-08-12 01:53:31 2092
SQLServer使用英文字符串的匹配的時候默認是忽略大小寫的,這樣用起來是比較方便的,如果想不忽略大小寫也可以修改配置,但是Oracle好像不能忽略大小寫,在進行字符串匹配的時候就比較麻煩了。那么該怎么解決大小寫敏感的問題,把需要的數據都查詢出來呢?最常見的辦法就是把查詢的參數和字段中的內容都轉化成大寫或者都轉化成小寫,這樣就可匹配了。比如如下的查詢:select*fromhr.EMPLOYEEStwhereupper(first_name)=upper
系統 2019-08-12 01:53:23 2092
CREATEORREPLACEPROCEDUREchange_Zgh(v_oldzghinvarchar2,v_newzghinvarchar2)iscursorcurisselect(selectcolumn_namefromuser_cons_columnsbwhereb.constraint_name=a.constraint_name)cname,a.table_nametnamefromuser_constraintsawhereR_CONSTR
系統 2019-08-12 01:51:51 2092
------------------------2013-5-18------------------------異常raise_application_error:錯誤編號必須介于-20000和-20999之間錯誤消息的長度可長達2048個字節。游標類型靜態游標隱式游標sql%foundsql%rowcount顯式游標cur_xxx%foundref游標游標屬性%notfound%found%rowcount%isopen控制顯示游標openfetchc
系統 2019-08-12 01:53:36 2091
Oracle數據的優化器有兩種優化方法:基于代價/成本的優化器(CBO)和基于規則的優化器(RBO),系統在對SQL進行優化的時候,使用哪種優化決定于初始化參數OPTIMIZER_MODE,該參數值可以設置為:CHOOSE,RULE,ALL_ROWS,FIRST_ROWS。在Oracle9i以后的版本中還引入了新的優化參數命令:FIRST_ROWS_1,FIRST_ROWS_10,FIRST_ROWS_100,FIRST_ROWS_1000。(具體的說明將
系統 2019-08-12 01:53:21 2091
Oracle數據庫:剛做一張5000萬條數據的數據抽取,當前表同時還在繼續insert操作,每分鐘幾百條數據。該表按照時間,以月份為單位做的表分區,沒有任何索引,當前共有14個字段,平均每個字段30個字節。當前表分區從201101到201512每月一個分區測試服務器:xeno5650,32核cpu,win2003操作系統,物理內存16G;測試工具plsql1.最開始的查詢:string.Format(@"select*from(selectr.id,r.c
系統 2019-08-12 01:52:59 2091
我們要做到不但會寫SQL,還要做到寫出性能優良的SQL,以下為筆者學習、摘錄、并匯總部分資料與大家分享!(1)選擇最有效率的表名順序(只在基于規則的優化器中有效):ORACLE的解析器按照從右到左的順序處理FROM子句中的表名,FROM子句中寫在最后的表(基礎表drivingtable)將被最先處理,在FROM子句中包含多個表的情況下,你必須選擇記錄條數最少的表作為基礎表。如果有3個以上的表連接查詢,那就需要選擇交叉表(intersectiontable)
系統 2019-08-12 01:52:42 2091
首先查找目標用戶的當前進程,注意是serial#而不是serial,網上有的介紹漏掉了#:selectsid,serial#fromv$sessionwhereusername='ERP';使用此語句會返回一個進程列表,每行有兩個數字,然后用數字替代下面的sid和serialaltersystemkillsession'sid,serial';例如altersystemkillsession'222,123';通過select語句可能返回多行記錄,所以要多
系統 2019-08-12 01:52:39 2091
Oracle數據導入導出imp/exp就相當于oracle數據還原與備份。exp命令可以把數據從遠程數據庫服務器導出到本地的dmp文件,imp命令可以把dmp文件從本地導入到遠處的數據庫服務器中。利用這個功能可以構建兩個相同的數據庫,一個用來測試,一個用來正式使用。執行環境:可以在SQLPLUS.EXE或者DOS(命令行)中執行,DOS中可以執行時由于在oracle8i中安裝目錄\ora81\BIN被設置為全局路徑,該目錄下有EXP.EXE與IMP.EXE
系統 2019-08-12 01:51:37 2091
導入/導出是ORACLE幸存的最古老的兩個命令行工具,其實我從來不認為Exp/Imp是一種好的備份方式,正確的說法是Exp/Imp只能是一個好的轉儲工具,特別是在小型數據庫的轉儲,表空間的遷移,表的抽取,檢測邏輯和物理沖突等中有不小的功勞。當然,我們也可以把它作為小型數據庫的物理備份后的一個邏輯輔助備份,也是不錯的建議。對于越來越大的數據庫,特別是TB級數據庫和越來越多數據倉庫的出現,EXP/IMP越來越力不從心了,這個時候,數據庫的備份都轉向了RMAN和
系統 2019-08-29 22:37:43 2090
1、解鎖用戶以dba身份登錄sqlplus/assysdbaalteruserscottaccountunlock;2、解鎖表altersystemkillsessionSELECTl.session_idsid,s.serial#,l.locked_mode,l.oracle_username,l.
系統 2019-08-12 01:54:52 2089
第三十七講ifthenifelsethenifelsethenelsifelsifcreateorreplaceprocedurepro1(v_in_enamevarchar2)is--定義工資變量v_salemp.sal%type;beginselectsalintov_salfromempwhereename=發——沁+;ifv_sal<2000thenupdateempsetsal=sal*1.1whereename=v+in+ename;endif
系統 2019-08-12 01:32:20 2089
作者:eygle出處:http://www.eygle.com/blog日期:October28,2005本文鏈接:http://www.eygle.com/archives/2005/10/howto_control_10goem.html?OracleHowTo:如何快速殺死占用過多資源(CPU,內存)的數據庫進程|Blog首頁|SymantecVISION2005China下月召開?從Oracle10g開始,Oracle極大的增強了OEM工具,并通過
系統 2019-08-29 23:28:18 2088
㈠先看兩個來自生產環境的真實案例:案例1案例2㈡原理:Oracle在對于varchar等字符型字段收集統計信息時,并不會對每個值都進行精確的統計而是,對值進行substr(,32)。一般來講,這種方式沒有什么問題但是,如果恰巧列中存儲的數據,前32bytes相同,那么,Oracle的統計就會與實際情況不符㈢測試:hr@ORCL>droptabletpurge;Tabledropped.hr@ORCL>createtablet(idnumber,nameva
系統 2019-08-12 01:54:44 2088