Oracle -- 問題解決

1.數據庫取出一個 Count函數 統計的值

報異常java.math.BigDecimalcannot be cast to java.lang.String

解決方案Count函數統計的值轉換類型to_char(count()得到的數值)

2.執行update卡住不動,但可以執行其他select語句

現象:開發時到一條update時不繼續執行,在plsql中也是顯示正在執行,而且一直沒有執行結果,但是可以執行其他的select語句。

原因:只有update無法執行,其他語句可以執行,是因爲記錄鎖導致的。在Oracle中,執行update或insert語句後都會要求commit。若不commit卻強制關閉連接,Oracle就會將這條提交的記錄鎖住。可能是英文java程序中加了事務,debug時執行一半就強制把工程終止了,所以導致的沒有執行事務提交,所以Oracle將代碼中的update的那一條記錄鎖住了。

解決方案:兩個步驟

1)首先查詢鎖定記錄

select s.sid, s.serial#
  from v$locked_object lo, dba_objects ao, v$session s
 where ao.object_id = lo.object_id
   and lo.session_id = s.sid;

2)刪除

ALTER system KILL session 'SID,serial#';

如:ALTER system kill session '825, 35'; 

3.無法刪除用戶

現象:無法刪除用戶

解決方法:

1)查看用戶的連接

select username,sid,serial# from v$session where username='EQU_FRAMEWORK';

2)找到要刪除用戶的sid,和serial,並kill掉

alter system kill session'23,470' ;

3)查看一下是否被刪除,如果狀態爲killed,則被kill掉

select saddr,sid,serial#,paddr,username,status from v$session where username = 'EQU_FRAMEWORK' ;

4)刪除用戶

4.case用在where條件中

where case when '10000088' in ('10000083','10000087','10000088') and n.fdepartmentid = '10000088' then 1 when '10000088' not in ('10000083', '10000087', '10000088')

            then 1 else 0 end =1
   and to_char(n.fmakedate,'yyyy-mm-dd') between '2016-08-04' and '2016-08-04'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章