對于Oracle數據庫的開發,我們可能有時候會遇到一些奇怪的問題,與其它數據庫存在不同的差異的問題,在這里我列舉了一些比較有趣
對于Oracle數據庫的開發,我們可能有時候會遇到一些奇怪的問題,與其它數據庫存在不同的差異的問題,在這里我列舉了一些比較有趣的問題
問題一:解決Oracle中時間問題
Oracle默認date類型為21/8月/2011 或者21/8月//11的格式,如果想修改date類型:需要修改注冊表
Regedit 進入注冊表找到HKEY_LOCAL_MACHINE 再進入software 然后進入Oracle,找尋帶HOME的文件夾,進入之后右擊鼠標,新建字符串值,再值名為“NLS_DATE_FORMAT”,在“鍵值”中輸入“YYYY-MM-DD hh:mm:ss(可以根據需要填寫格式)”
修改完之后進入 sqlplus 鍵入 select sysdate from dual 查看修改之后
問題二:在Oracle中char(2)類型,在Hibernate查詢出來的時候會自動截取字符,只留下一個字符:如Oracle中01,查詢出來就是0
問題三:Oracle中number類型
如果Oracle中Number類型不指定大小,那么Hibernate進行反轉的時候,生成的類型會根據Hibernate默認配置好的類型生成,我這里假設反轉之后的類型是Bigdecimal類型,如果我們想修改反轉之后的類型:
新建一個類 MyOracleDialect extends org.hibernate.dialect.OracleDialect并在里面補充注冊的類型映射如下:
public class MyOracleDialect extends OracleDialect{
public MyOracleDialect(){
super();
registerHibernateType(java.sql.Types.Decimal,Hibernate.Big_DECIMAL.getName());
registerHibernateType(java.sql.Types.Number,Hibernate.Integer.getName());//注冊Number的映射類型為Integer
}
}
問題四:在Oracle中,千萬不要忘記了一張表只允許有一個long類型,所說這是基本問題,但是我還是想在這里提一下
問題五:刪除表空間錯誤、
第一種解解決方案:
解決方案先以用戶sys登陸
寫如下代碼:
alter database open;//執行完這句代碼觀看異常類型,錯誤代號
alter database datafile 9(錯誤代號) offline drop;//直接刪除
alter database open;//如果沒有保存,則成功
第二種解決方案:
用sys登陸
鍵入步驟如下:
connect sys/change_on_install as sysdba //是否提示已成功
shutdown normal //提示數據庫以關閉,已經卸載數據庫
startup mount //提示oracle已經啟動的一些信息
alter database open; //出現錯誤 注意第一行,錯誤信息類似于 無法標示/鎖定數據文件 19(錯誤代號) 其它信息
alter database datafile 19 drop; //提示數據庫以更改
alter database open ;// 執行這行代碼如果還有問題,那么就在繼續執行上面代碼
shutdown normal ;//數據庫以及關閉,已經卸載數據庫,Oracle例程已經關閉
startup //啟動例程
不出意外的話,這個問題已經解決了,,用戶可以登錄了
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com