2008年1月28日 星期一

blog好文分享

http://www.wretch.cc/blog/yuyagami&category_id=4019242

偶然間逛到這個Blog,看了些搞笑的影片後,
突然看到「我的肥胖故事」這個標題。
再連進去看到全部的文章之後,突然覺得好有意思!

人都是這樣吧!
因為在方面有某種程度的自卑感,
反而激勵了他在那方面向上提昇的動力!
然後獲得一些小小成就。

不錯!不錯!轉貼出去。
可以看美女又有好文章看。yuyagami!真有你的。

2008年1月27日 星期日

用PHP串接oracle

用PHP串接oracle

這篇文件是參考自oracle OTN的一份文件rh4_10gr2_php5.txt而來!
原本的文件是在RedHat AS4作業系統上安裝oracle database 10gR2,
再加上apache2和php5。
目的在一部機器上設定出可以跑PHP串oracle資料庫的網站平台。

原本的文件rh4_10gr2_php5.txt中就指出了,這是提供參考用,非正式產品功能之一。
不過既然在官網已經置入了這樣的參考文件,表示oracle是正視這樣的平台建置的。
oracle在10g版本推出時,也推了oracle XE版本,已經表明要和MySQL競爭的意圖出來。
相信以PHP結合oracle XE的網站,應該會在日後逐漸增加才是。

我主要目的在說明在一部CentOS4作業系統上建置httpd2、PHP、oracle 10gR2的步驟。

至於在安裝oracle 10gR2的部份,請自行參考OTN的相關說明,
內容大致和安裝在RedHat AS4相同,
因為CentOS4基本上就是由RedHat AS4的開放源始碼,
再編譯而來的linux版本,所以安裝方式,可以說幾乎完全一致!

我也有一份提到安裝oracle database 10R2在CentOS4的blog文件。連結如下:
http://tw.myblog.yahoo.com/bullock0425

安裝的過程中,請儘可能依照FOA格式定義你安裝的oracle database路徑。

你應該會定義幾個重要的環境變數像這樣:
ORACLE_HOME=/opt/u01/app/oracle/product/10.2.0/db_1;export ORACLE_HOME
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LC_LIBRARY_PATH; export LD_LIBRARY_PATH

注意!這兩個環境變數將是在安裝PHP5時把oci8函式庫編譯進去的主要關鍵設定值。

現在希望你已經把httpd2和PHP5的source code TARBALL準備好了!
開始囉!請以oracle帳號來執行全部指令動作,因為我們將安裝在$ORACLE_HOME路徑之下。
可以不必用到root權限!

安裝httpd2:
$bzcat httpd-2.0.54.tar.bz2 | tar xf -
$cd httpd-2.0.54
$./configure --prefix=$ORACLE_HOME/apache --enable-so --with-mpm=prefork
$make
$make install


Edit $ORACLE_HOME/apache/conf/httpd.conf and change the port to 8080.
以上一行,是原本文件中的說明,是希望把http的port改成8888,但我改成了8080。
接下來,請照做,以測試你的httpd是否有成功運作。
Start Apache:
$ORACLE_HOME/apache/bin/apachectl start
Start a browser and check that http://localhost:8080
gives the default Apache web page.

Stop Apache:
$ORACLE_HOME/apache/bin/apachectl stop

apache2成功安裝之後,接著我們來安裝PHP5:
$bzcat php-5.0.4.tar.bz2 | tar xf -
$cd php-5.0.4
$./configure --prefix=$ORACLE_HOME/php \
>--with-apxs2=$ORACLE_HOME/apache/bin/apxs \
>--with-config-file-path=$ORACLE_HOME/apache/conf \
>--with-oci8=$ORACLE_HOME --enable-sigchild

$make
$make install
$cp php.ini-recommended $ORACLE_HOME/apache/conf/php.ini

Edit php.in and change display_errors to On:
display_errors = On

Add these lines to the $ORACLE_HOME/apache/conf/httpd.conf file:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

Restart Apache:
$ORACLE_HOME/apache/bin/apachectl start

PHP5的部份也幾乎是完全和原來的rh4_10gr2_php5.txt相同。
但是要強調一點是,原來文件中的./configure 中,要設定oci8那一行。

--with-oci8-instant-client=$HOME/instantclient_10_2 \
我一直編譯不過去,有錯誤指出......

Notice: Following unknown configure options were used:

--with-oci8-instant-client=/opt/u01/app/oracle/product/10.2.0/db_1/install_10_2

Check './configure --help' for available options

後來我用./configure --help | grep oci8
找出原來要用 --with-oci8=$ORACLE_HOME 就可以了!

把PHP5安裝好之後,用老方法測試。


造一個使用phpinfo()的網頁。

Create a file $ORACLE_HOME/apache/htdocs/phpinfo.php containing:
<?php phpinfo(); ?>

Load this file in a browser:

http://localhost:8080/phpinfo.php
在這個phpinfo.php網頁中,你應該要能看到一些有關oci8的資訊欄位。
如果有看到,那表示你在編譯安裝PHP5時,
也把串接oracle database 10gR2要用得到的oci8函式庫也編譯進去了。
不過為了證明oci8函式庫能用,原本的rh4_10gr2_php5.txt作者寫了一個測試程式碼。
讓我們試試!

Create a file $ORACLE_HOME/apache/htdocs/test.php containing:

<?PHP

$conn = OCILogon("scott", "tiger", "//localhost/orcl");
if (!$conn) exit;
echo OCIServerVersion($conn) ."\n";
print date('Y-m-d H:i:s')."\n";

$query = 'SELECT * FROM EMP';

$stid = OCIParse($conn, $query);
OCIExecute($stid, OCI_DEFAULT);

print '';
while ($succ = OCIFetchInto($stid, $row, OCI_RETURN_NULLS)) {
print '';
foreach ($row as $item) print '';
print '';
}

print '<table border="1"><tbody><tr><td>'.($item?htmlentities($item):' ').'</td></tr></tbody></table>';

OCILogoff($conn);
?>

因為測試網頁用到scott帳號,如果安裝oracle database 10gR2時忘了解除它的鎖定,
可以參考以下做法:

$sqlplus / as sysdba
SQL> alter user scott account unlock identified by tiger;
SQL> exit

我其它的oracle相關文件! 這裡...

2008年1月24日 星期四

拿到LPI證書囉

拿到LPI證書



自從我進到資訊這個領域,
我知道,如果要和那些資訊資工科系出身的高材生能評比。
那我非得想辦法再進修拿到這個領域的文憑或是相關證照!

而這年頭,再回學校讀書拿文憑,
己經不是我這個出社會幾年,開始養家活口的人,可以想做就做的選擇。
若是去讀在職專班的那種學程,光是學費之貴,恐怕也叫人難以下手。
所以,自修拿證照,成了我能够選擇的唯一路徑。

老實說,想光靠自修考取證照,也是有難度的。
不然,外頭怎麼會有那麼多的電腦補習班。
其實我也曾上過電腦補習班的課程,也的確對我在電腦的使用上有所助益。
但如果在工作上,已經有一個讓你實作,練習的環境,
那麼只要在工作時間之餘,多加磨練自已的專業技能,
自修考證照,是除了證明工作能力,還能為未來的職場競爭力加分的好課題。

前不久,和同事去考過的LPI Level 1,終於把證書寄來了。
說來慚愧,在電腦領域也有四五年的時間了,現在才考到第一張證照。
聽說,在IT這產業,技術人員的證照擁有率是一個人1.8張。
看來,我還得加把勁,再考個兩三張。
如此一來,我在這產業,才比較能和別人競爭!

http://www.lpi.org/en/lpi/english/about_lpi/lpi_logo

引用LPI logo的連結!

http://www.lpi.org/en/lpi/english/candidate_area

登入LPI官網!

https://www.lpi.org/caf/Xamman/certification

查詢證照連結!

2008年1月16日 星期三

在Fedora 8 安裝oracle 10g R2

在Fedora 8安裝oracle 10g資料庫時,
我拿了之前寫好的 oracle_preinstall.sh 來用,
以為在Fedora 7和ubuntu 6.10和Cent OS 4.5能用。
應該也在現在這個Fedora 8適用!
結果在執行oracle10g R2這版的runInsaller時,
出現了“xcb_xlib.c:50: xcb_xlib_unlock: Assertion `c->xlib.lock failed.”這樣的錯誤訊息!

這是java執行引用xlib函式庫的問題,而oracle安裝的介面,不巧正是java寫的。
為了讓我oracle資料庫能順利安裝到Fedora 8,找了些文件!

解決的辦法是:
1.先以root更新xlib的一個函式庫
yum --enablerepo=development update libxcb

2.再回到oracle安裝帳號的環境裡,設定一個變數
export LIBXCB_ALLOW_SLOPPY_LOCK=1


重新用oracle帳號執行 ./runInsaller就能順利執行了!

至於若是用ubuntu 7.4以後版本,出現在這樣的問題,
可以參考以下的連結文章:

xlib.lock’ failed."">Ubuntu feisty 的問題: xcb_xlib.c:50: xcb_xlib_unlock: Assertion `c->xlib.lock’ failed.



執行步驟如下:
apt-get source libxcb-xlib0
sudo apt-get build-dep libxcb-xlib0
cd libxcb-1.0
vi src/xcb_xlib.c
+===========================================================+

編輯重點是 src/xcb_xlib.c 的第 41 , 50 行的 assert 都註解掉.
我參考 archlinux 的 patch , 把 assert 換成 if . 如下:

void xcb_xlib_lock(xcb_connection_t *c) {
_xcb_lock_io(c);
// assert(!c->xlib.lock);
if (!c->xlib.lock) {
c->xlib.lock = 1;
c->xlib.thread = pthread_self();
}
_xcb_unlock_io(c);
}

void xcb_xlib_unlock(xcb_connection_t *c) {
_xcb_lock_io(c);
// assert(c->xlib.lock);
if (c->xlib.lock) {
assert(pthread_equal(c->xlib.thread, pthread_self()));
c->xlib.lock = 0;
pthread_cond_broadcast(&c->xlib.cond);
}
_xcb_unlock_io(c);
}


+===========================================================+
接著回來重編deb套件包,再安裝它。
dpkg-buildpackage -rfakeroot -b -uc
sudo dpkg -i ../libxcb-xlib0_1.0-1.1_i386.deb

用PHP串oracle資料庫

如何用PHP來串oracle資料庫呢?
這是我自從接了公司oracle DBA之後,
就成了我一直想要完成的工作課題之一。

基本上要抓oracle資料,除了在oracle主機直接用sqlplus進入,
還有就是用oracle的OEM WEB介面進入,
或是在windows 主機安裝oracle client軟體。

不然好像都要花錢買Third Party開發的軟體來用了!
由於我自已對自由軟體的喜好,也對PHP開發網頁資料庫有興趣,
因此,我決定用以PHP程式串ORACLE資料庫,來達成抓資料的目的。

安裝ORACLE 10G R2的功課,我算是已經PASS了。
接下來,就是設定讓PHP能串ORACLE!

先簡單介紹一下我的實作環境。
我用Fedora 8來做我的OS,
然後安裝了一個要測試用的ORACLE 10G R2資料庫,
在網頁和PHP的安裝部份,我選擇了用XAMPP這套整合了Apache+MySQL+PHP+ProFTP的軟體。
安裝XAMPP省去了不少設定一台LAMP主機的作業流程,可說是相當方便而且安全性也算不錯的選擇。

本來我在安裝好XAMPP之後,看到它似乎內建支援了串接oracle資料庫的函式庫。
以為按照以下連結網頁的說明做之後,就能串接oracle資料庫。
http://www.apachefriends.org/en/faq-xampp-linux.html#oci8

結果沒想到我找了份PHP測試原始碼 oci8test.php (內容如下)來試串接的結果,
發現在執行時,顯示出LD_LIBRARY_PATH的錯誤訊息。

"please check that LD_LIBRARY_PATH includes the directory with Oracle Instant Client libraries "

oci8test.php


串本地端資料庫主機的範例程式
+===================================+
<?php
$db_conn = ocilogon( "system", "npmisora" );
$cmdstr = "select ename, sal from scott.emp";
$parsed = ociparse($db_conn, $cmdstr);
ociexecute($parsed);
$nrows = ocifetchstatement($parsed, $results);
echo "<html><head><title>Oracle PHP Test</title></head><body>";
echo "<center><h2>Oracle PHP Test</h2><br>";
echo "<table border=1 cellspacing='0' width='50%'>\n";
echo "<tr>\n";
echo "<td><b>Name</b></td>\n<td><b>Salary</b></td>\n</tr>\n";

for ($i = 0; $i < $nrows; $i++ ){
echo "<tr>\n";
echo "<td>" . $results["ENAME"][$i] . "</td>";
echo "<td>$ " . number_format($results["SAL"][$i], 2). "</td>";
echo "</tr>\n";
}

echo "<tr><td colspan='2'> Number of Rows: $nrows</td></tr></table>";
echo "<br>If you see data, ";
echo " then it works!<br></center></body></html>\n";
?>

+===================================+

找了不少資料,我想是因為我雖然用XAMPP省去了一般在安裝apache和PHP時,
要加入定義使用oci8相關函式庫的過程,
但還是少了把oracle install client libraries定義到我主機的 LD_LIBRARY_PATH !

要怎麼解決呢?
首先要去OTN下載 oracle instant client的套件,
我用的是 oracle-instantclient-basic-10.2.0.3-1.i386.rpm ,
還有一個是 oracle-instantclient-devel-10.2.0.3-1.i386.rpm !

我的Fedora 8安裝好以上那兩個套件之後,
會在 /usr/lib/oracle/10.2.0.3/client/lib 產生oracle instant client 的相關函式元件。
接著,就是把 /usr/lib/oracle/10.2.0.3/client/lib 加進 LD_LIBRARY_PATH 。
因為我們通常是用root身份來啓動XAMPP的,所以我在root的.bash_profile加了兩行:
+===================================+

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/oracle/10.2.0.3/client/lib;
export LD_LIBRARY_PATH;

+===================================+
加好設定值之後,再重新啓動XAMPP!

回去再跑一次測試頁,哈哈哈!成功了。
不過這可是用了XAMPP的案例,有點偷吃步的感覺。
應該也用架LAMP的方式來試著串oracle資料庫,這樣的安裝流程才會比較透徹些。



修改一下程式,就能串遠端資料庫主機
+===================================+
<?php
$oraUser="system";
$oraPass="systempassword";
$oraDB="(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.254)(PORT=1521)))(CONNECT_DATA=(SID=ORALAB)))";
$db_conn = ocilogon($oraUser,$oraPass,$oraDB) or die( "ORACLE server is not ready.");
$sqlstr = "select * from scott.emp;";
$parsed = ociparse($db_conn, $sqlstr);
ociexecute($parsed);
$nrows = ocifetchstatement($parsed, $results);
echo " Number of Rows: $nrows \n";
echo " If you see data, then it works!";
?>

+===================================+

2008年1月9日 星期三

架站吧

一個網路工程師,如果不會架站,未免也太遜了!
雖然公司已經有一個對外的專屬網站,也有專屬的人員在維護。
不過我總覺得,可以的話,我們資訊部門是不是也能自已架個站,
除了練練架站功力之外,也提供自已資訊人員交流學習的網站天地。
像是自已部門的新聞公告、討論區、檔案分享等等...

於是我利用之前籌備處的對外專線,找了一台電腦,開始準備我的架站大業!
機器用Debian Linux裝好後,我啓動了dhcp、squid一些對內的服務功能。
再利用xampp這個整合好的軟體包,啓動了apache、mysql、php等網頁的服務功能。
再接下來,找了xoops這個已經相當有名的CMS,來做出一個專屬的網站內容。

這裡要幫tad兄打個廣告,他的書和網站,很有參考價值。
http://tad.tnc.edu.tw

OK!現在網站用XOOPS做出雛形了。看看放到網際網路上的效果如何吧!
糟!原來之前籌備處的對外專線,現在己經改成一般浮動IP制的ADSL了。
那如何用浮動IP架站和管理呢?非得用動態DNS才能解決這樣的問題了。
嘿嘿嘿!還好有幾家提供這種服務的網路公司,而且免費耶,好好來利用吧。

http://www.no-ip.com


https://www.dyndns.com

本來我以為那台接在籌備處ADSL的IP分享器,Lemel IS6500。
有內建提供使用DynDNS的DNS指向浮動IP的服務,應該很容易解決說。
沒想到,在DynDNS註冊了帳號,也申請了它免費的Domain name,
然後讓機器成功的使用了我申請的Dynamic DNS。
但卻三天兩頭發生被鎖住停用的情形,心想!SHIT,免費的服務果然不穩。

後來我才找到解決的方法!
在我的機器上安裝它的client端軟體ddclient來用!
對了,client的安裝作業是在我架站的機器上進行,不是安裝在IP分享器,不要弄混了。
便何況,你應該沒辦法安裝軟體到IP分享器吧,對吧!
下載成功後,解開它:
[root@bullock ~]# wget http://cdn.dyndns.com/ddclient.tar.gz
[root@bullock ~]# tar xzvf ddclient.tar.gz


解開後,裡頭有個README文字檔。
[root@bullock ~]# cd ddclient-3.7.3/
[root@bullock ddclient-3.7.3]# vi README

找到以下的安裝說明!藍色文字是我另外加的註解。
+-------------------------------------+
INSTALLATION:

cp ddclient /usr/sbin/
mkdir /etc/ddclient
cp sample-etc_ddclient.conf /etc/ddclient/ddclient.conf
vi /etc/ddclient/ddclient.conf
-- and change hostnames, logins, and passwords appropriately
##如何修改帳密和相關設定,在這份文件裡的下方,有附幾個範例。
##但我的案例是要自已架站的主機,透過IP分享器連上網際網路,並使用DynDNS的服務。
##可以利用它官網上提供的一個精靈,來產生附合網路環境需求的設定檔。相當方便!
##https://www.dyndns.com/support/tools/clientconfig.html
##請登入成功後再使用精靈。
## For those using Redhat style rc files and using daemon-mode:
cp sample-etc_rc.d_init.d_ddclient /etc/rc.d/init.d/ddclient
##上面的指令是針對rpm系統,
##deb套件系統的路徑則是 /etc/init.d/ddclient 少了rc.d那層。
##Debian 版:cp sample-etc_rc.d_init.d_ddclient /etc/init.d/ddclient
## enable automatic startup when booting
/sbin/chkconfig --add ddclient
##Debian 版本的linux不適用以上指令。
## start the first time by hand
/etc/rc.d/init.d/ddclient start
##啓動服務用的指令。

+-------------------------------------+

以下連結提供了設定檔的內容和範例。
https://www.dyndns.com/support/kb/using_ddclient_with_dyndns_services.html

似乎使用了ddclient之後,最好還是要設定在crontab的服務中,才能真正解決困擾。
因為IP分享器所分配到的IP還是會三天兩頭被更新,若是ddclient不能真正隨時去更新的話,
DynDNS還是不會指到你的浮動IP的,這個問題,我認為是client軟體本身的問題吧!
也可能是我沒有真正搞懂設定檔,所以只能用crontab強制ddclient更新。

[root@bullock ~]# crontab -e
加入一行,內容如下:
30 23 * * * /usr/sbin/ddclient
每天晚上11點半,強制更新真實IP。

Dynamic DNS一旦穩定,如此一來,我就能透過網際網路,
來使用XOOPS的後台管理,繼續改造我的XOOPS了。

再進一步,如果我能再好好設定那台IP分享器的NAT部份,
那麼就算是我人不在公司,不管到那裡,
只要有網際網路,就也能處理公司裡的作業,
這不就是網管人員的理想嗎!看來,我快要實現它了。

以下是我在那台Lemel IS6500 IP分享器之下的網路環境,
放置在我一台ubuntu 7.10的主機裡,所使用的設定檔。
如果環境相似,那麼複製起來,記得改帳密就好!
有類似需求的朋友可以參考看看!
######################################################################
#From https://www.dyndns.com/support/tools/clientconfig.html
## ddclient configuration file
daemon=600 # check every 600 seconds
syslog=yes # log update msgs to syslog
mail-failure=bullock@mail.niceplaza.com.tw # Mail failed updates to user
pid=/var/run/ddclient.pid # record PID in file.

## Detect IP with our CheckIP server
use=web, web=checkip.dyndns.com/, web-skip='IP Address'

## DynDNS username and password here
login=***npmis***
password=***password***

## Default options
protocol=dyndns2
server=members.dyndns.org

## Dynamic DNS hosts
npmis.dynalias.org
######################################################################

而在我實作的經驗中,我發現設定檔中的daemon參數好像沒有作用?
這也是為何我要建議還要再利用crontab去強制執行ddclient的原因。
還有,那個protocol參數,定義的原理,是我困惑的地方,
到底dyndns2是什麼樣的一個協定,是屬TCP還是UDP?使用那一個port?
我查過/etc/services和/etc/protocols內容,都沒有相關的設定?

最後,針對文中有提到NAT的部份,我要再附帶提一下相關說明。
在IP分享器的網路環境下,要讓你的網頁伺服器能對外提供服務的話。
那麼你的IP分享器,一定要有可以設定NAT服務的地方,
一般網頁服務是用主機IP 加TCP 80 port來構成網頁瀏覽的通訊協定HTTP。
所以只要把IP分享器的TCP 80 port導向網頁伺服器的TCP 80 port。
那麼你原本在私有(內部)網路的網頁伺服器,便能對外提供服務了。

修改以前寫的一篇自我介紹

About Me

我是「吳大」,不過自從我升格當爸爸之後,開始有朋友叫我「老爹」!
哈哈,好像我還真有那麼點老氣了。

不過,我個人在網路上,是比較偏好用「吳大」這個稱號啦。
「吳大」這稱號是幾年前,有部紅極一時的電影「無間道」,
由於電影內容和演員的演技都相當不錯,引起一陣討論劇情的風潮。
然後開始有一些喜歡搞KUSO的網友,改編了「無間道」裡頭的演員名稱和對白。
「吳大」就是KUSO出來的一個人物!

而因為我正是家族中排行第一的長子長孫,又是姓吳,
自然就想到用「吳大」來做我自已的稱呼了。

吳大我現職是某家集團的百貨公司資訊人員,
但其實我並不是唸資管或資工出身的高材生,只是因緣巧合,
在當兵時偶然認識了一個會組裝電腦的文書兵學弟。
才開啓了我走入電腦資訊IT這個多姿多采的世界!

我唸大學的時代,電腦還不是很流行,
全班同學能有一台個人電腦用,可是很不得了的大事。
而我知道的電腦用途,也只是用來打作業,交報告,玩玩單機版本的電腦遊戲而已。
嚴格說來,那時的我,說我是電腦白癡,可是一點也不為過。

直到當兵快退伍那半年。
常常閒著沒事跑去找一個剛入伍不久的文書兵「喇賽」。
那個學弟為巴結我這個下士班長,居然讓我偷偷用他的電腦玩遊戲。
玩著玩著,也教了我不少一些電腦知識。
記得為了要在退伍之後也能玩暴雪的星海爭覇,
我學會了組我這輩子第一部電腦,用我當兵時那微薄的薪資。

那時候還有著名的光華商場,我在那上了我學組裝電腦的第一課。
從CPU、記憶體、硬碟、音效卡、顯示卡···那個剛入伍的小兵,
把他所知道但還不算豐富的電腦知識教給了我。
陪著我一步步的把電腦硬體組裝完成之後,再順利的把他「備份好」的WIN98裝進去,
可知道,當我看到微軟那個飄揚的WINDOWS四色旗幟時,真是感動到不行。

老實說,那個學弟教我的電腦知識並不多,而且那時候我也快退伍了。
退伍後,回到鄉下老家,我為了找份好工作,於是再自修學習電腦相關的技術,
並且去找電腦補習班上課,我從打字開始練功,再學使用文書軟體WORD、EXCEL,
此外,電腦硬體和網路技術我也一直在吸收相關的知識。
我意識到,我的管理學位,其實在職場上的競爭力有限。
如果我能把電腦的技能學習到某個層級,應該可以成為我的求職踏腳石。
果不其然,退伍後磨了一年,總算讓我遇到好機會,開始我電腦資訊技術人員的職場生涯至今。

而當然,自始自終,我還是没停過玩電腦遊戲,
尤其是即時戰略系列,像是魔獸2啦,紅色警戒···到現在各式各樣的線上遊戲等等。
為了玩「好的」電腦遊戲,每一段時期,電腦就要昇級,
我相信應該有不少的朋友也有過像我這樣的經歷。對吧!
我必須說,正因為有了電腦遊戲,我許多的電腦知識及技術也才因而跟著提昇。
没錯!電腦遊戲是我IT技能提昇的主要動力!

不過自我認識了windows以外的作業系統LINUX之後,我的技術提昇的動力,有了變化!
之所以從WINDOWS到LINUX,是我為了在電腦技術追求更高境界,有了從新再出發的一個動機。
因為有了LINUX,我可以不再處處碰到M$設的陷阱,跳脱WINTEL昇級的迷思。
而且我認知到一件事,在對未來下一代的教育,
LINUX有更豐富的運用資源,和更多的創意可以實現,也擺脱了軟體商業利益掛帥的覊絆。
也由於我身處鄉村,並不居住在大都市裡,我認為透過電腦和豐富的網際網路資源,
將是偏遠地區等鄉下的學校用來提昇競爭力的一項利器。
我會希望,我的兒女可以不會因為不是居住在大都市裡,既使沒有較好的學習環境,
也能獲得不錯的學習資源,提昇他們的學識和技能。

今後學習在企業裡頭運用LINUX作業系統,
甚至通過LINUX的相關認證,將會是我這幾年的工作目標。
往後我會在這個網站, 陸續將一些架站心得,技術文件等,分享出來。
除了提供自己做記錄,也讓有相同志趣的朋友們作參考!

歡迎有相同志趣的朋友,也和吳大我一起朝更自由的資訊領域邁進。

oracle DBA 調整

公司的DB,早在我剛接手DBA的時候,
我就查覺到它當初規劃的TABLESPACE不大對勁。

果不其然,前兩天就發生了某幾個TABLESPACE寫不進去,
而發生AP Server掛點的狀況。

出狀況那時,同事要我回公司一趟,趕緊處理DB和AP的問題,
我用OEM看了一下ORACLE裡,TABLESPACE中各DATAFILE的使用量之後,
當下做了個判斷,先擴充幾個使用量已經爆量的TABLESPACE!

改大DATAFILE:
ALTER DATABASE DATAFILE '/u02/oradata/dbdata.dbf' RESIZE 20480M;

而temp的datafile好像也快滿了!
但似乎temp是不必要加大的?這部份我得再加以查證才是,
但讓DB能運作是迫在眉梢,所以我還是先加大再說。

改大TEMPFILE:
ALTER DATABASE TEMPFILE '/u03/temp/temp.dbf' RESIZE 20480M;


根據維護廠商的建議,是應該設定成讓DATAFILE可以自動增長才是:

ALTER DATABASE DATAFILE '/u02/oradata/dbdata.dbf AUTO EXTEND ON NEXT 1024M MAXSIZE 10240M;

不過,由於DB的硬碟空間已經很吃緊了,所以我認為還是不要做如此的設定比較好。
免得屆時硬碟被自動增長到爆掉,而我們連加硬碟也來不及。
以目前的狀況,我猜測還能撐半年,應該儘早規劃擴充硬碟空間或是機器昇級。

關閉自動增長:
ALTER DATABASE DATAFILE '/u02/oradata/dbdata.dbf AUTO EXTEND OFF;

另外,增加TABLESPACE還有別的作法,
就是附加DATAFILE進去!

ALTER TABLESPACE "DATAIDX" ADD DATAFILE '/u02/oradata/dbdata02.dbf' SIZE 5120M;

而為了讓這些datafile的名稱能够有個一致性,
我想把之前那個 dbdata.dbf 改成 dbdata01.dbf !

ALTER DATABASE RENAME DATAFILE '/u02/oradata/dbdata.dbf' TO '/u02/oradata/dbdata01.dbf'

改名字這個指令要OFFLINE做才行。

OK,以上就是我這次處理DB的操作說明概要。

2008年1月8日 星期二

也來試試Fedora 8的VirtualBox

這兩天想說,既然Fedora系列已經出到8了。
也許在一些使用介面上有比以往較令人驚豔的表現。
就也來用看看吧!

因為我現在用ubuntu也算滿上手的,
有LINUX版本的BT下載,FTP則用Gftp,
更不用說telnet或ssh登入操作,這原本就是LINUX的強項。
要是要處理Office文件,我有OpenOffice可用,
而寫網頁,我則是用BlueFish,還有處理user的問題,也有rdesktop或VNC遠端遙控。
如果還要有一些多媒體的享受,ubuntu這個版本的LINUX,也幾乎支援了全部影音檔。
反正之前網管要用得到的軟體,我在LINUX都可以找到代用的SOFTWARE來用。
要是真的要用到windows的介面,就弄個VirtualBox,再裝出一個XP來用。
不過,windows對我來說,除了公司系統因為是用DotNet開發,必須用IE6來使用外。
windows已經快要完全淡出我的電腦了!
那個當機藍色螢幕畫面,我好像已經快一整年沒看過了!

雖然M$的windows系列,仍然是桌上電腦的常用作業系統,
為了處理一般使用者的問題,還是得玩玩...
才知道中了什麼電腦病毒,要怎麼解決;或是M$ Office一些編輯的技巧。
但是自從把電腦換成LINUX環境之後,直到現在,
感覺我好像真的幾乎可以完全用LINUX來進行我全部的IT工作!真的不賴!
沒有使用盗版的恐懼,而更棒的是,
有的TOOL software效能,甚至比windows環境版的software還好用。
指令就能解決的事,為什麼還要開一大堆視窗來干擾我們的作業?你說是吧!

不廢話,有人還是沒辦法完全擺脱windows的羈絆。
為了拯救天下蒼生於M$,吳大我得把我在現在這Fedora,怎麼搞出一個XP來用,公諸於世。
以下是我以VirtualBox來裝上一個XP的技巧。

Step 1:
Downloading and Installing VirtualBox
http://www.virtualbox.org/wiki/Downloads

Fedora 8是採RPM套件管理,所以我們要下載rpm的版本來裝VirtualBox。
目前最新版是VirtualBox-1.5.4_27034_fedora8-1.i586.rpm
然後用以下指令安裝這個軟體套件。要用系統管理者身份root執行!
[root@mylinux ~]# rpm -ivh VirtualBox-1.5.4_27034_fedora8-1.i586.rpm

安裝完成後,會把Fedora 8 的kernel更新,好支援VirtualBox。
所以要重新開機,才能使用VirtualBox,OK!reboot吧。

VirtualBox安裝成功後,在功能選項可以選擇到來啓用它。


Step 2:
啓用VirtualBox!然後開始新增一個虛擬機器吧。


要先準備好windows系列的安裝光碟片或是映像檔。
按下新增,VirtualBox的精靈會一步一步叫你怎麼做的。
我就不詳細抓圖來一一介紹了。
在這份文件最後,我會放幾個超連結,它們也有不錯可參考的圖解說明。
不過,版本不同,也許會有些許差異。

這裡吳大我要提示一下,有關網路方面,
由於VirtualBox本身就有提供NAT的功能!
可以讓你安裝好的虛擬機器,輕鬆的連上網路。

但是由於這樣的用法,對於喜歡挑戰新奇事物的朋友來說,一定不過癮!
我們要做到能够讓HOST OS和GUEST OS的網路可以互連,
這麼一來就能做出,我們本來要用兩台實體機器,
才能實現測試LINUX或windows,在網路裡各種SERVER DAEMON的環境。
透過VirtualBox,我們只以一部實體機器,就能做到這樣的需求。很棒吧!

Step 3:
進行VirtualBox橋接式網路的設定!
以下網址的內容可以提供參考,比我寫的內容要簡潔多了!
不好意思,吳大我就是愛「畫唬爛」。
http://cha.homeip.net/blog/archives/2007/01/innotek_virtual.html

為了能够創造出橋接式的網路功能,我們的Fedora 8要有兩項功能。
一個是User mode Linux utilities,另一個是設定橋接的軟體bridge-utils。
User mode Linux utilities比較麻煩些,可以上http://findrpm.net找找。
還有一個找RPM套件的網站http://rpm.pbone.net,然後輸入uml-utilities搜尋。

不過,我發現這個uml-utilities好像沒有For Fedora的版本。
但SuSE和Mandriva和Fedora也算一家人,系出同門,應該可以互相取用。
我是找uml-utilities-20040406-75.i586.rpm來用。

安裝指令:
[root@mylinux ~]# rpm -ivh uml-utilities-20040406-75.i586.rpm
萬一裝不起來,可以用nodeps選項直接裝套件。
像是你找了x86_64之類的版本,可能會出現缺少什麼64位元的函式庫或模組的錯誤。
別管它,直接裝了,如果不行,多找幾個版本試試。
裝成功之後,試試有沒有tunctl這個指令。記得!
[root@mylinux ~]# rpm -ivh --nodeps uml-utilities-20040406-75.i586.rpm

bridge設定的軟體安裝就簡單多了。YUM套件管理程可以找到,而且還解決了套件相依性。
[root@mylinux ~]# yum -y install bridge-utils

接著,我們可以發現,我們的Fedora多了幾個指令可以用。
最重要的就是tunctl 和brctl 這兩個。

Step 4:

以下的指令,如果要常用到橋接式網路環境,可要背好哦!

[root@mylinux ~]# tunctl -t tap0 -u #username#
[root@mylinux ~]# chmod 666 /dev/net/tun
創造出虛擬機器要用的網路設備,請把#username#改成你要用的帳號名。
而且要設定好造出來的設備權限屬性,讓使用者有使用權。

[root@mylinux ~]# brctl addbr br0
創造出要橋接用的網路設備

[root@mylinux ~]# ifconfig eth0 0.0.0.0 promisc up
把你目前運作的網路卡NIC,設定成混雜模式 promisc ,
好讓你的實體網路介面能接收多種網路設定和封包。

[root@mylinux ~]# brctl addif br0 eth0
把橋接用的網路設備和實體網路卡NIC綁在一起

[root@mylinux ~]# brctl addif br0 tap0
[root@mylinux ~]# ifconfig tap0 0.0.0.0 promisc up
接著把虛擬機器要用的網路設備也綁入橋接用的網路設備,
還有也把虛擬機器要用的網路設備設成混雜模式,因為它還得接虛擬機器裡的網卡設定和封包。

到這為止,我們算是把要用得到的網路設備,
以軟體來操控實體網路卡NIC,達成多個虛擬網路設備綁在一起。
達成可以接收多個網卡封包的環境了。

先重新讓我們原先HOST OS的網路,恢復正常吧。
因為我們已經把實體網卡,綁到橋接用的網路設備了,
所以要把原先的eth0設定,設到br0才對。
請視你原先的網路環境設定參數!
[root@mylinux ~]# ifconfig br0 192.168.1.254 netmask 255.255.255.0 up
[root@mylinux ~]# route add default gw 192.168.1.1 dev br0

用DHCP的網路環境!改用以下指令。
[root@mylinux ~]# dhclient br0

好了,ping看看吧!實體機器應該恢復網路功能了。
然後,把你原來可運作正常的虛擬機器,網路部份改用那個tap0。
再重新啓動這個GUEST OS,視你原來的網路環境,設定好IP。


再ping看看你HOST OS,如果有回應,就大功告成啦!
要是不行的話,試試以下指令:
[root@mylinux ~]# ifconfig tap0 down
[root@mylinux ~]# ifconfig tap0 0.0.0.0 promisc up

有個blog也為virtualBox做了不少介紹,要看圖的,就進去看吧。
http://yuanfarn.blogspot.com/search/label/Virtualization

國外網站的說明,裡頭有連結關於uml和bridge等說明。
http://www.linuxweblog.com/virtualbox-host-networking

2008年1月3日 星期四

有人要交換書嗎

之前為了準備考LPIC L1,
由於是自修加上平常的實際經驗來應考。
同時也找了不少書來看,其中的一本。
LPI 2006教戰手冊,由上奇出版的。



現在聽說已經絕版了,不過以我應考的經驗,
裡頭的考古題,還是很值得『參考』的。
也許就因為它洩題嚴重,才被絕版的吧。哈哈!

不知道有沒有人想找這本書?
由於我已經通過LPIC Level 1的考試,這本書對我而言,
算是任務完成,可以功成身退了。

所以如果有人想要這本書的話,可以和我交換!
怎麼換?就留言吧!

2008年1月2日 星期三

LPIC level 1的有效期限



這幾天又上LPI的官網看了一下認證通過的資料,
發現它認證的有效期限,居然是到西元2017年!

我考過101的日期是8/25,而102是12/24,所以它以第一次開始考過level 1的日期為起算日。
而它十年的有效期限,著實讓我驚訝。

不過我已經和同事約定好要再衝level 2的。
基本上這份認證的期限對我而言,並不重要,重要是它讓我在linux的學習上,
有了一份成就感,也有了一份更深厚的學習動力。

搜尋此網誌

本站大事記

這個部落格(網站)內容以分享LINUX和延伸出的技術文章為主!
特別是為了工作和進修需要,搜集了不少網站連結。
希望對來這裡觀文的朋友們,有提供一些有用的資訊或文章。
但這裡的文章中,也包含個人的心情扎記和隨興言談……
若是當中沒有對上你的口味,請多包涵!

原「琳娜絲與希斯寇的邂逅」,改名為「愛上琳娜絲」!

原「琳娜絲與希斯寇的邂逅」,改名為「愛上琳娜絲」!
--原序文--
就是當LINUX遇上CISCO啦!他們的結合還能作什麼事…不就是讓這個世界的網路,串…串起來啊…不然你們那能上這網站看部落格!