發表文章

目前顯示的是 2010的文章

FreeBSD gmirror 實作筆記

最近為我們家的郵件主機做mirror,之前為了怕出狀況, 所以先在virtual machine中實作一次, 情況很正常。主要的作法如FreeBSD HandBook, 及以下文章所述: Using Software RAID-1 with FreeBSD 之後在正式機器上做時, 卻出包了! 重新開機時, 出現如下訊息: Mounting root from ufs:/dev/gm0s1a setrootbyname failed ffs_mountroot: can't find rootvp Root mount failed: 6 Manual root filesystem specification: : Mount using filesystem e.g. ufs:da0s1a ? List valid disk boot devices Abort manual input mountroot> 正式機器那容我們慢慢找問題, 所幸之前已經準備一台virtual machine, 並將所有使用者帳號及郵件資料都備份過去了, 所以當下先切換機器給使用者使用。幾日下來, 備用機器運作也很順, 使用者應該沒發覺, 其實郵作主機已經換了一台。:-) 接下來, 就是思考問題出在那了。其實正如ONLAMP那篇文章的使用者留言, 有人提到, 文章使用的範例是將ad0, ad2兩顆實體硬碟做成mirror/gm0; 如果實作的環境不一樣時, 很容易在修改/etc/fstab檔時, 弄錯。我就是弄錯了!! 原本的/etc/fstab如下: # Device Mountpoint FStype Options Dump Pass# /dev/ad4s1b none swap sw 0 0 /dev/ad4s1a / ufs rw 1 1 /dev/ad4s1g /home ufs

SpamAssassin 之SMTP AUTH略過檢查

圖片
最近自己開始在公司外面使用公司的郵件主機寄收信,才發現寄信時雖然有使用帳號密碼認證(SMTP AUTH)。可是主機的檢查垃圾信軟體(SpamAssassin)仍會對信件進行檢查,而且因為在外面的網路都是動態取得ip, 大部份ip都已經被列入寄垃圾的黑名單網域中。所以我寄出的信,都被自己公司的主機標記為垃圾信!雖然試著寄往MSN及GMAIL都還是收得到,但是都被加註,總覺得很不妥當。所以試著調整。原本以為在SpamAssassin的設定檔中有可以設定的選項,結果沒找到。 後來升級軟體時(FreeBSD下使用portupgrade -a指令),發現SpamAssassin套件出現編譯選項,其中第一個選項就是如果通過SMTP AUTH認證,則略過檢查。將其選取後,往下升級,系統重開後,再做測試,就發現成功了。在公司外部,只要通過帳號密碼認證,就不會被認為是垃圾信,而且成功的寄出。 再去/var/log/maillog查看, 發覺其實還是有經過SpamAssassin的檢查, 只是score都變成-90幾的狀態。我想應該是有成功認證的都會把score都-100吧! 這樣即使IP被列在DNSBL的黑名單中, score也不容易大於零, 自然不會被認為是垃圾信。

Mail Server 移機(FreeBSD -> FreeBSD)

看到這篇文章,剛好我也在想,萬一我們的郵件主機掛點,要怎麼辦?是不是平常要把使用者帳號備份出來,如果有狀況時,至少不用叫使用者再去重新改密碼。 Acme Evil: Mail Server 移機完畢 : "FreeBSD上的mail及家目錄裡的mail資料" 因為Acme Evil是由FreeBSD移到Linux,所以使用Webmin來滙出滙入使用者帳號, 確實是個好方法! 但是我只是想保留使用者的帳號及密碼資訊, 並不想移到別的作業系統, 還是保留使用相同的FreeBSD系統。所以我想應該不用使用Webmin吧!是不是把/etc/passwd, /etc/group等檔案copy出來就好! Google了一下, 果然是如此!整理如下: 1. 備份三個檔案: /etc/passwd /etc/master.passwd /etc/group 2. 重建密碼資料庫: pwd_mkdb -p /etc/master.passwd 3. 如果想要的話, 也可以搬移/home目錄等, 使用tar指令(如Acme Evil文中所述) fb1# tar zcvf home.tar.gz /home/ fb2# scp someone@fb1:/root/home.tar.gz . fb2# cd / fb2# tar zxvf /root/home.tar.gz 其中scp指令用來跨主機copy檔案。 實作了一下, 並測試結果, 果然可以把帳號資訊完整移到別台主機。 這樣以後我只要備份這三個檔案, 有什麼萬一的時候, 大不了重裝一台主機, 再重建帳號, 就可以了。

新文章發表

感謝電子情報雜誌在2010/10號刊出我的作品"Oracle 11g RMAN上手玩", 有空請大家捧捧場, 去買一本來看看吧! 這幾年大環境艱困, 文教事業也不好做。希望台灣可以愈來愈好, 大家更幸福。

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

Apple推出boot camp 3.1: 支援Windows 7

圖片
Apple Software Update在我今天開機之後, 告訴我有boot camp 3.1的更新, 主要針對支援Windows 7的一些問題修正: 包括touch pad的問題, 還有音源埠沒用時會亮紅燈的問題, 以及支援無線鍵盤和Magic Mouse。

Apple沒有支援win7 boot camp?

在ZDNet看到一文 蘋果沒有如期支援Windows 7 Boot Camp , 和我最近的安裝經驗有出入!所以在這裡記錄一下我的試驗結果;我找了兩台Apple筆電,規格如下: 1. 13" MacBook 2.4G Intel Core 2 Duo MacOS X 10.5.8 2. 13" MacBookPro 2.26G Intel Core 2 Duo MacOS X 10.6.1 都是使用dual boot的方式,把硬碟空間利用boot camp工具分割出另一個磁區(partition),然後在該磁區安裝win7, 安裝完後再將MacOS X的安裝光碟放入,就會自動啟動boot camp安裝程式,安裝包含音效卡、顯示卡及webcam, multi touch pad等各式各樣的驅動程式。之後在控制台的系統項下就會有boot camp的選項,點選打開後可以在這裡調整touch pad的設定,可以改變開機的磁區等。基本上所有硬體驅動都沒有問題。之後,我可以在兩個作業系統之間切換,用到現在覺得還不錯! 比較有問題的是:你要安裝win7 32或64? 在MacBookPro那台,安裝64位元版的都沒有問題;但在MacBook那台,當win7安裝好之後,要安裝boot camp時,就會出現一個訊息說:不支援在此硬體規格安裝64位元的boot camp 我猜應該是因為少了“Pro",所以Apple只支援在32位元win7中安裝boot camp。不過,我研究了之後發覺其實是可以安裝,只是其安裝啟動程式有檢查電腦的硬體規格,故意不給安裝而已。可以利用一些小技巧,避開這個檢查,安裝起來後,驅動都很正常! 結論:該文可能是指目前支援的機型還不是很多!其實我也只試了兩款筆電(較新的機型)