發表文章

目前顯示的是 6月, 2010的文章

Oracle Server CPU 100% utilization debug memo

先說明,這是學習筆記,只供自己備忘用途! 之前在工作上曾經碰過Oracle主機CPU使用率跑到100﹪,造成大部份系統都連不上線,即使連上了,也是跑很慢的情況。後來,透過同事一同努力,終於找到問題點。解決了,但當時匆匆忙忙,也沒仔細把過程記錄下來,現在要回想都有困難。 為了以防之後再遇到同樣問題,花了一些時間,再重新再現當時的情況,並找了一些資料,做了一些測試,記錄如下: 有一支程式(寫得不好)會檢查某個表格的某筆記錄,如果該記錄的locked欄位值為‘Y’,就會一直查重複這個查詢過程,直到值變為不是‘Y’為止。當然,可以猜想這個程式是利用locked欄位當做和其他程式的溝通的機制,當它要做事時,就會先看是否有人在做事,若沒有則先修改locked欄位值,告訴大家我要做事了,其他人看到就會先等待,等做完事再註記locked欄位,其他人看到就知道可以做事了。模擬程式如下: declare locked varchar2(1); begin loop select locked into locked from test1.demotab where id=6; exit when locked <> 'Y'; end loop; dbms_output.put_line('quit loop'); end; 不幸的是,程式出錯了,有一支程式在做事時當掉了,所以沒有再把locked欄位註記回來。所以,所有程式都一直卡在查詢階段,沒有辦法做事。但是使用者只看到系統卡住,等待之後就會嘗試再開一次程式,如此一直開,一直試。結果,就有很多程式一直在查詢。如此就造成了CPU使用率高到100﹪的情況。(其實只要跑一次模擬程式,記得先將locked值設為‘Y’,CPU就100﹪了) 這個時候要如何查問題? 1.可以下如下SQL: select sid, program, event, final_blocking_session_status from v$session order by time_since_last_wait_micro desc 查看前幾筆記錄的SID值,記下來。 2.再下如下SQL: select sid,event,p1,p1text from v$se

SSD+普通硬碟的合體

圖片
最近看到的新產品,結合普通的硬碟和SSD,跑出來的綜合體。兼具容量大,速度也,價格可以的好處(或壞處?)。反正比一般硬碟快(主要是開機快),但又沒SSD快;但容量比SSD大,價格沒SSD那麼高。 之前看電腦雜誌有介紹,是真的有開機快許多。而且,網路上好像賣得不錯! 效能實測影片:好像比10K都快哦!難怪賣到沒貨!

Apple推出新款Mac mini

Mac mini 產品官網 ,好像是這兩天才推出的! 我只能說好險,上周還在想要不要買一台Mac mini,沒想到今天就看到出新機了!上個月和這個月買的人,心裡很不是滋味吧!就好像iPhone 4這幾天推出的問題一樣,最近買iPhone 3GS的人,心裡也很不爽! 不要緊!我之前買MacBook,也是買沒多久,就推出小改款,不久還降價。還給我出新版OS X 10.6。結果我就撐到現在,還在用OS X 10.5。因此,我覺得要買Apple的東西,最好是推新產品或新款式的時候,看喜歡就下手吧!不要等太久,他們的產品周期大約一年或一年半,等太久才買,就會這樣,很快就被推出新款。

在RHEL4或5上設定網卡bonding(team)

在伺服器上總是講求高可用性,方法就是redundant,什麼都要兩套,以防有一個元件故障時,還有一個可以撐著用。就好像人體的器官,也有很多成對的設計一樣。如眼睛是,手腳是,耳朵是,腎臟也是! 伺服器的網路卡也是其中一個重要的元件,也要兩套,以防故障時,就無法連線提供服務了。在PC伺服器,之前HP在Windows平台就提供自家主機網卡雙卡合一的驅動軟體。這個軟體很重要,光是網卡裝兩張,沒有這個軟體,就很難達到故障自動移轉,平時負載相互分攤的功能。因為沒有這個軟體,一張網卡必須有自己的IP位址,這樣一台主機兩個IP位址,使用者難道要自己在連不上線時自己切換連另一個IP位址嗎?沒有使用者會去記得這件事,最好還是由系統自己切換,而使用者完全感受不到有網卡故障。頂多覺得剛才好像頓了一下。 這個功能就是HP所謂的team NIC,可惜那只提供Windows平台使用。現在在資料中心有很多主機都改用Linux了,而RedHat的Enterprise Linux也支援這個功能,由叫做bonding的模組提供。包括Oracle的Enterprise Linux也支援。因為他們都已經將軟體包好,所以我們只要簡單的設定就可以使用了。 NixCraft 有一篇文章介紹,請大家去看看就明白。 我自己有在虛擬機器上設定兩張網卡,使用Oracle的Enterprise Linux 5.5實作過,完全依NixCraft的步驟,只是改成自己要的IP位址及網段,很容易就可以設好。運作起來,也很正常。這台機器上還安裝Oracle的資料庫,連線資料庫的運作都沒問題。 也做過斷線測試,發現把一張網卡斷線時,PING會掉一個封包,如此而以,其他沒有影響。

Apple推出Safari 5

圖片
這兩天推出的Safari 5, 有許多新功能,詳細的功能說明可以參考官方網站 see the new feature of safari 5 ,我覺得閱讀器的功能很實用,特別是上了年紀後,眼睛很需要保養,要在網頁中看文章,是會很討厭那些跑來跑去,閃來閃去的小廣告。Safari 5會自動感應到文章,在網址列的最右方,即搜尋列的左方。如圖所示,出現一個小方框,寫著閱讀器三個字。只要按下這個小方框,就會出現一個方便閱讀的視窗,不但字體較大,而且一次把所有文章內容都放入。還可以放大縮小,郵寄,列印。當然可以列印,就可以轉PDF檔了。 還有HTML5支援,一樣在前面提到的官網有一些展示網頁,效果真的很不錯!由此也可以看得出來,為什麼Apple不喜歡Flash了,因為他們要推HTML5!(也許吧!) 對開發人員來說,也提供了許多支援,網頁檢閱器的功能,個人覺得很像FireBug。以前要用FireBug這樣的網頁開發工具,只有在FireFox上才能使用,現在Safari5也可以了。

在OEL5上設定開機時自動啟動oracle資料庫

當在OEL5上安裝好oracle資料庫時,如果重開機,你會發現資料庫沒有啟動,必須手動下指令! 通常必須先以oracle使用者登入,再下指令開啟以下三個服務: 1. 監聽器 $ lsnrctl start 2. 資料庫 $ sqlplus / as sysdba SQL> startup ... SQL> exit 3. EM $ emctl start dbconsole 在 Oracle-Base 網頁可以查到如何在OEL5上將oracle設成開機即自動啟動資料庫的方法. 步驟如下: 1. 將/etc/oratab檔案中(最後一行,最後一個字)的'N'改為'Y' 2. 建立一個檔案/etc/init.d/dbora, 內容如下: #!/bin/sh # chkconfig: 345 99 10 # description: Oracle auto start-stop script. # # Set ORA_HOME to be equivalent to the $ORACLE_HOME # from which you wish to execute dbstart and dbshut; # # Set ORA_OWNER to the user id of the owner of the # Oracle database in ORA_HOME. ORA_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 ORA_OWNER=oracle if [ ! -f $ORA_HOME/bin/dbstart ] then echo "Oracle startup: cannot start" exit fi case "$1" in 'start') # Start the Oracle databases: # The following command assumes that the oracle login # will not prompt the user for any values # su - $ORA_OWNER -c