少年阿賓

          那些青春的歲月

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks

          #

               摘要: 刪除回滾段   當(dāng)回滾段不再需要或要重建以改變INITIAL,NEXT或MINEXTENTS參數(shù)時,可以將其刪除。要刪除回滾段,不許使該回滾段離線。   語法: DROP ROLLBACK SEGMENT rollback_segment;  例: DROP ROLLBACK SEGMENT rbs01;  查詢回滾段的信息   所用數(shù)據(jù)字典:DB...  閱讀全文
          posted @ 2012-12-14 00:10 abin 閱讀(586) | 評論 (0)編輯 收藏

          ORA-01555:快照過舊。    一個對于Oracle DBA來說最經(jīng)典問題。
          發(fā)生的根本原因:一致性讀出了問題。   

          看到網(wǎng)上有個同學(xué),舉例說明,覺得不錯,拿來用下:
          假設(shè)有張表,叫table1,里面有5000萬行數(shù)據(jù),假設(shè)預(yù)計全表掃描1次需要1個小時,我們從過程來看:   
             
          1、在1點鐘,有個用戶A發(fā)出了select * from table1;此時不管將來table1怎么變化,正確的結(jié)果應(yīng)該是用戶A會看到在1點鐘這個時刻的內(nèi)容。這個是沒有疑問的。   
          2、在1點30分,有個用戶B執(zhí)行了update命令,更新了table1表中的第4000萬行的這條記錄,這時,用戶A的全表掃描還沒有到達(dá)第4000萬條。毫無疑問,這個時候,第4000萬行的這條記錄是被寫到了回滾段里去了的,我假設(shè)是回滾段RBS1,如果用戶A的全表掃描到達(dá)了第4000萬行,是應(yīng)該會正確的從回滾段RBS1中讀取出1點鐘時刻的內(nèi)容的。   
          3、這時,用戶B將他剛才做的操作commit了,但是這時,系統(tǒng)仍然可以給用戶A提供正確的數(shù)據(jù),因為那第4000萬行記錄的內(nèi)容仍然還在回滾段RBS1里,系統(tǒng)可以根據(jù)SCN來到回滾段里找到正確的數(shù)據(jù),但是大家注意到,這時記錄在RBS1里的第4000萬行記錄已經(jīng)發(fā)生了一點重大的改變:就是這個第4000萬行的在回滾段RBS1里的數(shù)據(jù)有可能隨時被覆蓋掉,因為這條記錄已經(jīng)被提交了!!!   
          4、由于用戶A的查詢時間漫長,而業(yè)務(wù)在一直不斷的進(jìn)行,RBS1回滾段在被多個不同的tracnsaction使用著,這個回滾段里的extent循環(huán)到了第4000萬行數(shù)據(jù)所在的extent,由于這條記錄已經(jīng)被標(biāo)記提交了,所以這個extent是可以被其他transaction覆蓋掉的!   
          5、到了1點40分,用戶A的查詢終于到了第4000萬行,而這時已經(jīng)出現(xiàn)了第4條說的情況,需要到回滾段RBS1去找數(shù)據(jù),但是已經(jīng)被覆蓋掉了,于是01555就出現(xiàn)了。   
             
          這次出現(xiàn)的ORA-01555,引起的原因很特殊。   
          報錯是回滾段SYSSMU1有問題.   
          所以斷定的是,并不是因為大量的讀寫,造成的一致性讀錯誤,而且因為回滾段的錯誤,使快照出現(xiàn)了問題。   
             
          首先觀察下回滾段:   
          SQL> select segment_name,tablespace_name,status from dba_rollback_segs;   
          發(fā)現(xiàn)表空間UNDOTBS1的回滾段_SYSSMU1$-10$都是online。   
          發(fā)現(xiàn)表空間UNDOTBS2的回滾段SYSSMU1是竟然是needs recovery,其他都是offline。   
          最有趣的是這個數(shù)據(jù)庫指定的UNDO是UNDOTBS1,UNDOTBS2實際已經(jīng)被棄用了。   
             
          嘗試把該回滾段offline后刪除,但是提示非法。   
          重啟數(shù)據(jù)庫后該回滾段狀態(tài)變成了availabe。   
          再次嘗試offline后刪除,還是提示正在使用。   

           
          用直接更新數(shù)據(jù)字典的方法   
          SQL>update undo$ set status$=2 where name='SYSSMU1';   
          發(fā)現(xiàn)該回滾段狀態(tài)變更為offline,drop掉即可。   
          ORA-1555不再出現(xiàn)。   


          本篇文章來源于 Linux公社網(wǎng)站(www.linuxidc.com)  原文鏈接:http://www.linuxidc.com/Linux/2012-10/73260.htm

          posted @ 2012-12-13 23:28 abin 閱讀(449) | 評論 (0)編輯 收藏

          首先說明一下:這是兩個2個東西拉

          動態(tài)代理,不是java語言特性, 只是java提供動態(tài)方法攔截的一種方式(工具)
          有點類似 hook
          動態(tài)代理,只是動態(tài)的通過反射,動態(tài)執(zhí)行目標(biāo)的相關(guān)操作,
          當(dāng)然要想實現(xiàn)動態(tài)代理,必須該類有接口(貌似cglib不需要的)
          動態(tài)代理,是一種實現(xiàn)方式


          多態(tài),是oo語言的特性

          多態(tài)表現(xiàn)在重載,一個父類的變量可以引用子類的對象


           

          posted @ 2012-12-11 17:46 abin 閱讀(744) | 評論 (0)編輯 收藏

          方法一:

          package com.abin.lee.thread;

          import java.util.Iterator;
          import java.util.LinkedList;
          import java.util.List;
          public class ThreadSync{
           
           public static List<Object> ThreadSync(final String message) throws InterruptedException{
            final List<Object> list=new LinkedList<Object>();
            Thread thread=new Thread(){
             public void run(){
              if(message.equals("one")){
               list.add(0, message);
              }
             }
            };
            thread.start();
            thread.join();
            return list;
           }
           
           public static void main(String[] args) throws InterruptedException {
            List<Object> list=ThreadSync("one1");
            System.out.println("size="+list.size());
            for(Iterator it=list.iterator();it.hasNext();){
             Object obj=(Object)it.next();
             System.out.println("obj="+obj);
            }
            
           }
          }




          方法二:

          posted @ 2012-12-07 10:36 abin 閱讀(685) | 評論 (0)編輯 收藏

               摘要:       教你如何迅速秒殺掉:99%的海量數(shù)據(jù)處理面試題 作者:July出處:結(jié)構(gòu)之法算法之道blog 前言    一般而言,標(biāo)題含有“秒殺”,“99%”,“史上最全/最強(qiáng)”等詞匯的往往都脫不了嘩眾取寵之嫌,但進(jìn)一步來講,如果讀者讀罷此文,卻無任何收獲,那么,我也甘...  閱讀全文
          posted @ 2012-12-06 15:06 abin 閱讀(1554) | 評論 (0)編輯 收藏

          1、oracle正則表達(dá)式很強(qiáng)大喲,去掉字符串的(如果字符串開頭和結(jié)尾存在"雙引號的話)起頭和結(jié)尾的雙引號
          select regexp_replace('"1234"456"','^(")|(")$','') from dual;
          2、過濾掉字段里面的所有大小寫字母,大小寫字母通殺
          select regexp_replace(t.address,'^[a-z]+|[A-Z]+$','') from abin7 t;
          posted @ 2012-12-06 11:42 abin 閱讀(512) | 評論 (0)編輯 收藏

          1、cat命令:

               功能:1)顯示整個文件。

                             示例: $ cat fileName

                        2)把文件串連接后傳到基本輸出,如將幾個文件合并為一個文件或輸出到屏幕。

                             示例: $ cat file1 file2 > file

               說明:把檔案串連接后傳到基本輸出(屏幕或加 > fileName 到另一個檔案)
               cat參數(shù)詳解:
               -n 或 –number 由 1 開始對所有輸出的行數(shù)編號
               -b 或 –number-nonblank 和 -n 相似,只不過對于空白行不編號
               -s 或 –squeeze-blank 當(dāng)遇到有連續(xù)兩行以上的空白行,就代換為一行的空白行
               -v 或 –show-nonprinting

          2、more命令:

               以百分比的形式查看日志。    

           

          3、less命令:

               跟more功能差不多,只不過less支持前后翻閱文件。

           

          4、head命令:

               功能:從文本文件的頭部開始查看,head 命令用于查看一個文本文件的開頭部分。

               示例如下:
               head example.txt 顯示文件 example.txt 的前十行內(nèi)容;
               head -n 20 example.txt 顯示文件 example.txt 的前二十行內(nèi)容;
               head詳解:
               -n      指定你想要顯示文本多少行。
               -n number     這個參數(shù)選項必須是十進(jìn)制的整數(shù),它將決定在文件中的位置,以行為單位。
               -c number     這個參數(shù)選項必須是十進(jìn)制的整數(shù),它將決定在文件中的位置,以字節(jié)為單位。

          5、tail命令:

               功能:tail 命令用于顯示文本文件的末尾幾行。

               示例如下:

               tail example.txt 顯示文件 example.txt 的后十行內(nèi)容;
               tail -n 20 example.txt 顯示文件 example.txt 的后二十行內(nèi)容;
               tail -f example.txt 顯示文件 example.txt 的后十行內(nèi)容并在文件內(nèi)容增加后,自動顯示新增的文件內(nèi)容。

               tail -n 50 -f example.txt 顯示文件 example.txt 的后50行內(nèi)容并在文件內(nèi)容增加后,自動顯示新增的文件內(nèi)容。
               注意:
               最后一條命令非常有用,尤其在監(jiān)控日志文件時,可以在屏幕上一直顯示新增的日志信息。

               tail詳解:
               -b Number 從 Number 變量表示的 512 字節(jié)塊位置開始讀取指定文件。 
               -c Number 從 Number 變量表示的字節(jié)位置開始讀取指定文件。 
               -f 如果輸入文件是常規(guī)文件或如果 File 參數(shù)指定 FIFO(先進(jìn)先出),
               那么 tail 命令不會在復(fù)制了輸入文件的最后的指定單元后終止,而是繼續(xù)
               從輸入文件讀取和復(fù)制額外的單元(當(dāng)這些單元可用時)。如果沒有指定 File 參數(shù),
               并且標(biāo)準(zhǔn)輸入是管道,則會忽略 -f 標(biāo)志。tail -f 命令可用于監(jiān)視另一個進(jìn)程正在寫入的文件的增長。 
               -k Number 從 Number 變量表示的 1KB 塊位置開始讀取指定文件。 
               -m Number 從 Number 變量表示的多字節(jié)字符位置開始讀取指定文件。使用該標(biāo)志提供在單字節(jié)和雙字節(jié)字符代碼集環(huán)境中的一致結(jié)果。 
                -n Number 從首行或末行位置來讀取指定文件,位置由 Number 變量的符號(+ 或 - 或無)表示,并通過行號 Number 進(jìn)行位移。 
                 -r 從文件末尾以逆序方式顯示輸出。-r 標(biāo)志的缺省值是以逆序方式顯示整個文件。如果文件大于 20,480 字節(jié),那么-r標(biāo)志只顯示最后的 20,480 字節(jié)。 -r 標(biāo)志只有
             與 -n 標(biāo)志一起時才有效。否則,就會將其忽略。

          posted @ 2012-12-05 13:59 abin 閱讀(6439) | 評論 (0)編輯 收藏

          如何快速處理十萬條數(shù)據(jù)到數(shù)據(jù)庫
          posted @ 2012-12-05 00:54 abin 閱讀(542) | 評論 (0)編輯 收藏

          create table abin6(id integer,
          name nvarchar2(100),
          score integer,
          constraint pk_abin6 primary key(id));

          create table abin7(id integer,
          address nvarchar2(100),
          sid integer,
          constraint pk_abin7 primary key(id),
          constraint fk_abin7 foreign key (sid) references abin6(id)
          );



          select * from abin6 t left join abin7 s on t.id=s.sid and t.id=1;
          select * from abin6 t left join abin7 s on t.id=s.sid where t.id=1;
          select * from abin6 t,abin7 s where t.id=s.sid(+) ;
          select * from abin6 t,abin7 s where t.id(+)=s.sid;
          select * from abin6 t,abin7 s where s.sid(+)=t.id;
          select * from abin6 t,abin7 s where s.sid=t.id(+);
          select * from abin6 t inner join abin7 s on t.id=s.sid;
          select * from abin6 t union select * from abin7 s where exists (select * from abin6 k where s.sid=k.id and k.id
          =1);
          select * from abin6 t full join abin7 s on t.id=s.sid;
          select * from abin7 s full join abin6 t on s.sid=t.id;
          select * from abin6 natural join abin7;
          select * from abin6 t cross join abin7;

          以下兩句是等價查詢:
          select * from abin6 t where id=1 or id=2;
          select * from abin6 t where t.id=1 union all select * from abin6 s where s.id=2;


          一。查找重復(fù)記錄
          1。查找全部重復(fù)記錄
          select * from abin4 s where s.name in (select t.name from abin4 t
          group by t.name having count(t.name)>1);
          select * from abin4 s where exists (select * from abin4 t where t.name=s.name
          group by t.name  having count(t.name)>1 );

          2。過濾重復(fù)記錄(只顯示一條)
          select * from abin4 s where s.id in (select max(id) from abin4 t group by t.name );
          二。刪除重復(fù)記錄
          1。刪除全部重復(fù)記錄(慎用)
          Delete 表 Where 重復(fù)字段 In (Select 重復(fù)字段 From 表 Group By 重復(fù)字段 Having Count(*)>1)
          2。保留一條(這個應(yīng)該是大多數(shù)人所需要的 ^_^)
          Delete HZT Where ID Not In (Select Max(ID) From HZT Group By Title)
          注:此處保留ID最大一條記錄




          http://blog.csdn.net/csskysea/article/details/6987760
          posted @ 2012-12-05 00:33 abin 閱讀(487) | 評論 (0)編輯 收藏

          UNION 指令的目的是將兩個 SQL 語句的結(jié)果合并起來,可以查看你要的查詢結(jié)果.

          例如:

          SELECT Date FROM Store_Information
          UNION
          SELECT Date FROM Internet_Sales

          注意:union用法中,兩個select語句的字段類型匹配,而且字段個數(shù)要相同,如上面的例子,在實際的軟件開發(fā)過程,會遇到更復(fù)雜的情況,具體請看下面的例子

          select  '1' as type,FL_ID,FL_CODE,FL_CNAME,FLDA.FL_PARENTID from FLDA
          WHERE ZT_ID=2006030002
          union 
          select  '2' as type,XM_ID,XM_CODE ,XM_CNAME ,FL_ID from XMDA
          where exists (select * from (select  FL_ID from FLDA WHERE ZT_ID=2006030002 ) a where XMDA.fl_id=a.fl_id)
          order by type,FL_PARENTID ,FL_ID

          這個句子的意思是將兩個sql語句union查詢出來,查詢的條件就是看XMDA表中的FL_ID是否和主表FLDA里的FL_ID值相匹配,(也就是存在).

          UNION在進(jìn)行表鏈接后會篩選掉重復(fù)的記錄,所以在表鏈接后會對所產(chǎn)生的結(jié)果集進(jìn)行排序運算,刪除重復(fù)的記錄再返回結(jié)果。

          在查詢中會遇到 UNION ALL,它的用法和union一樣,只不過union含有distinct的功能,它會把兩張表了重復(fù)的記錄去掉,而union all不會,所以從效率上,union all 會高一點,但在實際中用到的并不是很多.

          表頭會用第一個連接塊的字段。。。。。。。。。。

          而UNION ALL只是簡單的將兩個結(jié)果合并后就返回。這樣,如果返回的兩個結(jié)果集中有重復(fù)的數(shù)據(jù),那么返回的結(jié)果集就會包含重復(fù)的數(shù)據(jù)了。

            從效率上說,UNION ALL 要比UNION快很多,所以,如果可以確認(rèn)合并的兩個結(jié)果集中不包含重復(fù)的數(shù)據(jù)的話,那么就使用UNION ALL,如下:

          盡量使用union all,因為union需要進(jìn)行排序,去除重復(fù)記錄,效率低

          posted @ 2012-12-04 23:26 abin 閱讀(390) | 評論 (0)編輯 收藏

          僅列出標(biāo)題
          共50頁: First 上一頁 19 20 21 22 23 24 25 26 27 下一頁 Last 
          主站蜘蛛池模板: 观塘区| 绥芬河市| 册亨县| 兰考县| 遵化市| 平塘县| 如皋市| 泉州市| 万山特区| 阿坝| 嫩江县| 寿宁县| 浦东新区| 新密市| 吉安市| 平度市| 万载县| 汾阳市| 大港区| 瓮安县| 即墨市| 高阳县| 思茅市| 玉林市| 高邮市| 平安县| 新田县| 九台市| 庆云县| 辉南县| 中山市| 神池县| 含山县| 子长县| 四平市| 大安市| 阳朔县| 邵阳市| 理塘县| 吉隆县| 汉源县|