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  //啓動例程

 不出意外的話,這個問題已經解決了,用戶可以登錄了

     

    

 

   

 

 

   

   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章