天天看點

Oracle問題小記五:服務啟動-索引-子查詢-分頁存儲過程

1:服務啟動問題

這個問題發生多次了,那個毛網管沒事又讓人改計算名稱,oracle久沒開了也沒在意,oracle服務啟動總失敗,折騰後才發現,于是把計算機名稱改回去,重新開機電腦,再啟用服務,正常。

2:索引問題

Oracle問題小記五:服務啟動-索引-子查詢-分頁存儲過程

資料導到oracle後,發現一些簡單的查詢變的相當的慢如:

select id,username,title from blog_content where userid=111 order by id desc

後來經網頁點拔,給title加上索引就快了:“select中的放在包含索引(oracle中稱覆寫索引)”

後來其它查詢慢的,全給加索引,速度才上去,看來搞oracle不搞索引,是沒法玩的。

Oracle問題小記五:服務啟動-索引-子查詢-分頁存儲過程

3:子查詢語句問題

正常代碼:

select count(*) as usercount,

(select count(*)  from blog_content where typeid=0) as articlecount

from blog_user

此語句在access、mssql、sqlite、mysql下皆正常,唯獨 oracle不成,加個函數解決如下:

min((select count(*)  from blog_content where typeid=0)) as articlecount

4:存儲過程調用問題

問題:

存儲過程的參數varchar2,如果代碼中參數為空,會報異常:ora-01084: invalid argument in oci call view

如果在pl/sql中執行,而不會錯。

解決方法是為空時,傳遞dbnull.value。

6:修改字段順序

增加列,又不想放在最後面,拉不上去,隻好寫代碼更改順序号。

select object_id from all_objects where  object_name='blog_comment'--查表id

select col#,name from sys.col$ where obj#=49244--看一下字段順序序号

update sys.col$ set col#=8 where obj#=49244 and name='createtime'--把序号更新了

7:更新序列初始值

資料庫共用一個序列為自增id,導完資料後序列值沒變,需要調整值。

alter sequence 序列名稱 increment by 新的數字;

版權聲明:本文原創發表于部落格園,作者為路過秋天,原文連結:

http://www.cnblogs.com/cyq1162/archive/2011/05/10/2042295.html