斷點

          每天進步一點點!
          posts - 174, comments - 56, trackbacks - 0, articles - 21

          1、SELECT nvl(C_REMARK,chr(0)) into :sRate
                 from T_COMM_CODE
                 where c_cde = trim(:sText2) and rownum = 1;

          nvl是個函數(shù),作用是如果第一個參數(shù)為空值,則返回第二個參數(shù)的值,否則返回第一個參數(shù)的值。

          chr(0)將數(shù)字0轉(zhuǎn)化為字符0。

          2、Y.YJKSBH=X.ZXKSBH(+) AND Y.ZLXMID=X.ZLXMID(+)
          (+)表示左連接,就是在做關(guān)聯(lián)之后,y表中存在而x表中不存在的數(shù)據(jù)也能查出來。


          posted @ 2009-06-13 17:46 斷點 閱讀(72) | 評論 (0)

          posted @ 2010-01-14 21:53 斷點 閱讀(260) | 評論 (0)編輯 收藏

          原因:出現(xiàn)這個問題,可能有人move過表,或者disable 過索引。
          1、alter table xxxxxx move tablespace xxxxxxx 命令后,索引就會失效。
          2、alter index index_name  unusable,命令使索引失效。

          解決辦法:
          1、重建索引才是解決這類問題的完全的方法。
          alter index index_name rebuild (online);
          2、如果是分區(qū)索引只需要重建那個失效的分區(qū) 。
          alter index index_name rebuild partition partition_name (online);

          說明:
          1. alter session set skip_unusable_indexes=true;就可以在session級別跳過無效索引作查詢。
          2.分區(qū)索引應(yīng)適用user_ind_partitions。
          3.狀態(tài)分4種:
          N/A說明這個是分區(qū)索引需要查user_ind_partitions或者user_ind_subpartitions來確定每個分區(qū)是否可用;
          VAILD說明這個索引可用;
          UNUSABLE說明這個索引不可用;
          USABLE 說明這個索引的分區(qū)是可用的。

          http://www.sudu.cn/info/html/edu/20071225/20526.html
          http://blog.oracle.com.cn/html/65/t-122265.html



          posted @ 2009-05-19 19:16 斷點 閱讀(369) | 評論 (0)

          posted @ 2010-01-14 21:52 斷點 閱讀(1062) | 評論 (0)編輯 收藏

          比如定義為number(4,2),卻要插入一個值200.12的話,就會出錯啊,原因是number(p,s)的問題。

          number(p,s),其中p表示該number的總長度,s為小數(shù)位。
          如果s為負數(shù),則會取相應(yīng)位數(shù)的取整。
          例如,如果number(4,-3),則數(shù)字1234的存儲值為1000;如果number(4,-2),則數(shù)字1234的存儲值為1200。

          在對數(shù)據(jù)庫表中的字段設(shè)定類型時,要注意:
          NUMBER(10,6)  Double   帶有小數(shù)
          NUMBER(4)     Long     為整數(shù)


          posted @ 2009-05-16 17:31 斷點 閱讀(363) | 評論 (0)

          posted @ 2010-01-14 21:51 斷點 閱讀(7381) | 評論 (0)編輯 收藏

          Blob是指二進制大對象也就是英文Binary Large Object的所寫;
          Clob是指大字符對象也就是英文Character Large Object的所寫。
          因此這兩個類型都是用來存儲大量數(shù)據(jù)而設(shè)計的,其中BLOB是用來存儲大量二進制數(shù)據(jù)的;CLOB用來存儲大量文本數(shù)據(jù)。

          在JDBC中有兩個接口對應(yīng)數(shù)據(jù)庫中的BLOB和CLOB類型,java.sql.Blob和java.sql.Clob。和你平常使用數(shù)據(jù)庫一樣你可以直接通過ResultSet.getBlob()方法來獲取該接口的對象。與平時的查找唯一不同的是得到Blob或Clob的對象后,我們并沒有得到任何數(shù)據(jù),但是我們可以這兩個接口中的方法得到數(shù)據(jù)。
          例如:
          Blob b=resultSet.getBlob(1);
          InputStream bin=b.getBinaryStream();
          Clob c=resultSet.getClob(2);
          Reader cReader=c.getCharacterStream():
           
          另外還有一種獲取方法,不使用數(shù)據(jù)流,而是使用數(shù)據(jù)塊。
          例如
          Blob b=resultSet.getBlob(1);
          byte data=b.getByte(0,b.length());
          Clob c=resultSet.getClob(2);
          String str=c.getSubString(0,c.length());
          在這里要說明一下,這個方法其實并不安全,如果你很細心的話,那很容易就能發(fā)現(xiàn)getByte()和getSubString()兩個方法中的第二個參數(shù)都是int類型的,而BLOB和CLOB是用來存儲大量數(shù)據(jù)的。而且Bolb.length()和Clob.length()的返回值都是long類型的,所以很不安全。


          那么有人肯定要問既然已經(jīng)有VARCHAR和VARBINARY兩中類型,為什么還要再使用另外的兩種類型呢?
          原因:VARCHAR和VARBINARY兩種類型是有自己的局限性的。首先說這兩種類型的長度還是有限的不可以超過一定的限額,以VARCHAR在ORA中為例長度不可以超過4000;而LONGVARCHAR類型的一個重要缺陷就是不可以使用LIKE這樣的條件檢索。

          另外就是在數(shù)據(jù)庫中VARCHAR和VARBINARY的存取是將全部內(nèi)容從全部讀取或?qū)懭耄瑢τ?00K或者說更大數(shù)據(jù)來說這樣的讀寫方式,遠不如用流進行讀寫來得更現(xiàn)實一些。


          posted @ 2009-05-16 19:26 斷點 閱讀(166) | 評論 (0)

          posted @ 2010-01-14 21:51 斷點 閱讀(353) | 評論 (0)編輯 收藏

          在oracle中建有date類型的字段,插入可以采取如下方法:

          如果是小時為:1-12 采取如下格式:yyyy-mm-dd HH:MI:SS
          insert into test values(to_date('2009-5-7 07:09:37','yyyy-mm-dd HH:MI:SS'));


          如果是小時為:1-24 采取如下格式:yyyy-mm-dd HH24:MI:SS
          insert into test values(to_date('2009-5-7 17:09:37','yyyy-mm-dd HH24:MI:SS'));


          posted @ 2009-05-07 20:14 斷點 閱讀(145) | 評論 (0)

          posted @ 2010-01-14 21:49 斷點 閱讀(369) | 評論 (0)編輯 收藏

          Caused by: java.sql.BatchUpdateException: ORA-01461: 僅可以為插入 LONG 列的 LONG 值賦值
          我在系統(tǒng)的一個頁面上加載一個.xml文件時,出現(xiàn)了這個錯誤。

          原因:

          當(dāng)插入數(shù)據(jù)的長度在1000、2000內(nèi),就會拋出這樣的錯誤。


          解決方法:

          思路:將存儲的字符串補上空格,讓其超過2000的長度即可,但僅限與緊急解決問題。
          1、首先在.java文件中引入import org.apache.commons.lang.StringUtils;
          2、在此.java文件的相應(yīng)的方法里添加如下判斷:

              // 處理ora-1461問題(clob長度在1000-2000之間會出錯)
                  if (xml.length() >= 1000 && xml.length() <= 2000) {
                      xml = StringUtils.rightPad(xml, 2008);
                  }

           

          相關(guān)知識:

          LONG: 可變長的字符串?dāng)?shù)據(jù),最長2G,LONG具有VARCHAR2列的特性,可以存儲長文本一個表中最多一個LONG列
          LONG RAW: 可變長二進制數(shù)據(jù),最長2G
          CLOB:  字符大對象Clob 用來存儲單字節(jié)的字符數(shù)據(jù)
          NCLOB: 用來存儲多字節(jié)的字符數(shù)據(jù)
          BLOB: 用于存儲二進制數(shù)據(jù)
          BFILE: 存儲在文件中的二進制數(shù)據(jù),這個文件中的數(shù)據(jù)只能被只讀訪。但該文件不包含在數(shù)據(jù)庫內(nèi)。bfile字段實際的文件存儲在文件系統(tǒng)中,字段中存儲的是文件定位指針.bfile對oracle來說是只讀的,也不參與事務(wù)性控制和數(shù)據(jù)恢復(fù)。
          其中CLOB,NCLOB,BLOB都是內(nèi)部的LOB(Large Object)類型,最長4G,沒有LONG只能有一列的限制。要保存圖片、文本文件、Word文件各自最好采用那種數(shù)據(jù)類型呢?BLOB最好,LONG RAW也不錯,但Long是oracle將要廢棄的類型,因此建議用BLOB。

          相關(guān)鏈接:http://www.aygfsteel.com/allen-zhe/archive/2008/05/06/198627.html


          posted @ 2009-04-18 13:01 斷點 閱讀(676) | 評論 (0)

          posted @ 2010-01-14 21:48 斷點 閱讀(403) | 評論 (0)編輯 收藏

          今天跟新人安裝oracle后,打開數(shù)據(jù)庫查看表里面的數(shù)據(jù),發(fā)現(xiàn)里面的數(shù)據(jù)全是“靠”字。
          這可是以前沒有出現(xiàn)過的。因此就查了一下,了解到是注冊表的字符級問題。現(xiàn)解決如下:
           
          在注冊表里進行修改:
          開始-->運行里面輸入regedit-->我的電腦\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0 里NLS_LANG的值
          以前是:American_America.ZHS16GBK
          現(xiàn)改為:SIMPLIFIED CHINESE_CHINA.ZHS16GBK

          再一次打開oracle時,數(shù)據(jù)顯示一切正常。


          posted @ 2009-04-09 15:08 斷點 閱讀(118) | 評論 (0)

          posted @ 2010-01-14 21:47 斷點 閱讀(273) | 評論 (0)編輯 收藏

          現(xiàn)在在企業(yè)中,操作oracle數(shù)據(jù)庫的客戶端,除了PL/SQL外,使用的較多的就是TOAD了!

          為此,我在網(wǎng)上搜索了下,整理了些簡單TOAD的使用技巧,現(xiàn)分享給大家。


          常用快捷鍵:

          F8 調(diào)出以前執(zhí)行的sql命令
          F9 執(zhí)行全部sql
          Ctrl+t 補全table_name
          Ctrl+. 補全table_name
          alt+ 箭頭上下 看sql history
          Ctrl+Enter 直接執(zhí)行當(dāng)前sql
          Ctrl+Shift+F  格式化sql語句。

          如果還覺得不夠用的話,可以在系統(tǒng)菜單空白處點擊右鍵,進入menu shortcuts,自行定義快捷鍵。

           

          toad下修改表中字段的值:
          首先在schema Browser下查找到相應(yīng)的表,在右邊點擊Data欄,然后選中一條記錄,再點擊Data欄下面的▲(Edit Record),即可修改字段里的值,然后點擊√(Post edit),最后就是Commit了。


          posted @ 2009-04-08 20:50 斷點 閱讀(637) | 評論 (0)

          posted @ 2010-01-14 21:46 斷點 閱讀(1833) | 評論 (0)編輯 收藏

          前序:關(guān)于Oracle9i數(shù)據(jù)的導(dǎo)出與導(dǎo)入問題,折騰我好長時間了,尤其是導(dǎo)入。今天在一位同事的指導(dǎo)下,算是終于成功了,為了記住這位同事的幫助,在此僅以“坤”作為記號。

          正文:

          Oracle數(shù)據(jù)導(dǎo)出:
          如果是導(dǎo)出本機的Oracle數(shù)據(jù)庫:
          exp pcisv62/11@ORCL  file="d:\pcisv62081226.dmp"  full=y   
          (ORCL為本地數(shù)據(jù)庫監(jiān)聽)

          如果是導(dǎo)出服務(wù)器端的Oracle數(shù)據(jù):
          exp pcisv62/11@tnsname  file="d:\pcisv62081226.dmp" full=y
          (tnsname為COREV6_DBSERVER,SID為COREV6,主機為DBSERVER。)
          exp pcisv6_ab/11@COREV6_DBSERVER file=d:\v6100210.dmp rows=y buffer=1024000

          注意:必須是 DBA 才能執(zhí)行完整數(shù)據(jù)庫或表空間導(dǎo)出操作。


          Oracle數(shù)據(jù)導(dǎo)入,分以下步驟:
          1.先在Oracle9i的Enterprise Manager Console下,以sys/sys及sysdba身份登陸,在“存儲”-->“表空間”下創(chuàng)建表空間COREV6,同時給其分配合適的空間。
          2.在“安全性”-->“用戶”下創(chuàng)建用戶pcisv62,使用戶默認的表空間為COREV6,同時在“角色”里授予CONNECT、DBA、EXP_FULL_DATABASE、IMP_FULL_DATABASE、RESOURCE。
          3.導(dǎo)入.dmp文件,開始-->運行cmd,導(dǎo)入命令:
          imp pcisv6_ab/11@ORCL file=d:\v6100210.dmp  full=y ignore=y

          注意:如果備份的.dmp文件是以用戶pcisv62導(dǎo)出COREV6空間的數(shù)據(jù),那么
          1.新建的用戶最好是pcisv62,否則命令為:
            imp pcisv62/11@ORCL file=d:\v6100210.dmp   fromuser=pcisv62  touser=pcisv6_ab   full=y  ignore=y  rows=y  tablespaces=corev6
          2.與新建用戶關(guān)聯(lián)的新建空間名必須為COREV6,否則Oracle報找不到COREV6空間的錯誤。

           

          數(shù)據(jù)成功導(dǎo)入以后,下一步就是配置Tomcat的server.xml文件:
          1.如果用到的是本機上的數(shù)據(jù),本地數(shù)據(jù)源里的部分配置為: username="pcisv62" password="11"

          url="jdbc:oracle:thin:@localhost:1521:orcl"
          2.如果用到的是服務(wù)器上的數(shù)據(jù),則數(shù)據(jù)源里的部分配置為: username="pcisv62" password="11"

          url="jdbc:oracle:thin:@dbserver:1521:corev6"(dbserver為服務(wù)器的名字,corev6為服務(wù)器上Oracle的SID)

           

          oracle的安裝目錄E:\oracle\ora92\network\admin下的tnsnames.ora:
          本地配置:
          ORCL =
            (DESCRIPTION =
              (ADDRESS_LIST =
                (ADDRESS = (PROTOCOL = TCP)(HOST = 主機名)(PORT = 1521))
              )
              (CONNECT_DATA =
                (SERVER = DEDICATED)
                (SERVICE_NAME = ORCL)
              )
            )
          或服務(wù)器配置:
          COREV6_DBSERVER =
            (DESCRIPTION =
              (ADDRESS_LIST =
                (ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(PORT = 1521))
              )
              (CONNECT_DATA =
                (SID = COREV6)
                (SERVER = DEDICATED)
              )
            )


          以下轉(zhuǎn)載:幾種導(dǎo)入導(dǎo)出的命令方法,以備以后查閱。
          數(shù)據(jù)導(dǎo)出:
          exp qhmis/qhmis@qhmis  file='d:\backup\qhmis\qhmis20060526.dmp'  grants=y  full=n
           1 將數(shù)據(jù)庫TEST完全導(dǎo)出,用戶名system 密碼manager 導(dǎo)出到D:\daochu.dmp中
             exp system/manager@TEST file=d:\daochu.dmp full=y
           2 將數(shù)據(jù)庫中system用戶與sys用戶的表導(dǎo)出
             exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
           3 將數(shù)據(jù)庫中的表table1 、table2導(dǎo)出
             exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)
           4 將數(shù)據(jù)庫中的表table1中的字段filed1以"00"打頭的數(shù)據(jù)導(dǎo)出
             exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"      
          數(shù)據(jù)的導(dǎo)入:
           1 將D:\daochu.dmp 中的數(shù)據(jù)導(dǎo)入 TEST數(shù)據(jù)庫中。
             imp system/manager@TEST  file=d:\daochu.dmp
             上面可能有點問題,因為有的表已經(jīng)存在,然后它就報錯,對該表就不進行導(dǎo)入。
             在后面加上 ignore=y 就可以了。
           2 將d:\daochu.dmp中的表table1 導(dǎo)入
           imp system/manager@TEST  file=d:\daochu.dmp  tables=(table1)


          posted @ 2009-03-04 17:06 斷點 閱讀(1224) | 評論 (0)

          posted @ 2010-01-14 21:45 斷點 閱讀(682) | 評論 (0)編輯 收藏

          系統(tǒng)環(huán)境:WindowXP。

          oracle9i  安裝到最后,更改了:sys口令:sys    system口令:system   

          現(xiàn)在需要以system身份登陸sql*puls,方法有二:

           

          第一種方法:.進入SQL*Plus后在彈出對話框中直接點擊“確定”,   
            請輸入用戶名:sys   as   sysdba   

               請輸入口令:sys  


          第二種方法:進入Dos窗口,輸入一下命令:  
            c:\>sqlplus   /nolog  
            SQL>conn   sys/password   as   sysdba

          注意:sys的權(quán)限最大!是默認的DBA!一般不在該用戶下建用戶表,PACKAGE等!system的權(quán)限就差一些。


          posted @ 2009-02-27 14:55 斷點 閱讀(96) | 評論 (0)

          posted @ 2010-01-14 21:44 斷點 閱讀(400) | 評論 (0)編輯 收藏

          僅列出標題
          共18頁: First 上一頁 8 9 10 11 12 13 14 15 16 下一頁 Last 
          主站蜘蛛池模板: 和田市| 德庆县| 台安县| 江西省| 绍兴市| 东乡| 安图县| 东莞市| 眉山市| 贵德县| 张家川| 神木县| 丰原市| 永清县| 静宁县| 卓尼县| 兴业县| 方城县| 启东市| 茌平县| 宜州市| 甘南县| 兴城市| 泸西县| 图们市| 诸暨市| 萝北县| 五原县| 东丽区| 临湘市| 琼海市| 亳州市| 镇雄县| 五大连池市| 洛宁县| 香格里拉县| 阿拉善左旗| 监利县| 阿克陶县| 宁武县| 穆棱市|