2008年1月26日 星期六

Windows 2003 Server無法啟用休眠的問題

最近裝了一台桌機打算用來跑VM,有4G的RAM(RAM好便宜喔!!2G只要1200,正在考慮要不要加到8G),因為看到網上有人在討論32bit的XP或Vista無論您有多少RAM,系統只會顯示有3.2G~3.4G的記憶體的問題,64bit OS的支援現在又還不夠好,所以這台新的桌機當然是裝Windows server 2003 Enterprise Edition囉!!

一樣是Windows server 2003 Enterprise Edition,我手上有好幾個版本,都是之前公司有訂閱MSDN Subscription時抓的,所以當然是灌手上最新的R2版本,灌完後居然看不到啟用休眠的選項.....

上網用2003 休眠 關鍵字去找,可是都找不到符合我狀況的訊息,看到有人說可能是硬體支援的問題,我想應該不可能吧!但是還是灌XP試看看,剛灌好也是沒看到休眠選項,但驅動程式裝完就出現了,這時我也動搖是不是要改用XP,但看到那少了800M的2G的記憶體實在很不爽,所以又拿了最早版本的2003來重灌,結果咧,才剛灌完驅動程式都還沒裝的情形下,休眠選項居然出現了,真是感動呀!!

高興沒有很久,因為去看系統的記憶體只有3.2G,不過這個好解決,之前作過功課,在boot.ini加個/PAE的參數就可以解決,加上後重開,休眠選項又不見了。這時我就很確定問題出在那裡了,當初第一次裝2003 R2版本時,SP2會自動幫您在 boot.ini 中加上 /noexecute=optin 選項,也就等同啟動PAE模式,相關訊息請搜尋 PAE 4GB關鍵字就可以找到。

知道原因後,要找答案就簡單了!搜尋 PAE 休眠 讓我絕望的答案就出現了!

關於使用PAE模式就不能啟用休眠的詳細說明,請看以下的微軟連結:
http://support.microsoft.com/kb/316538/zh-tw

為什麼我那麼執著要用休眠....因為真的很好用,尤其是當您程式灌很多,開關機都會很慢的時候真的超好用。

其實今天在寫這篇blog前我已經放棄要在新機器上使用休眠了,在寫的過程中想到,64bit OS我還沒試耶!說不定可以喔!

2008年1月25日 星期五

VB6專案出現 "找不到檔案 'C:\WINDOWS\system32\IEFRAME.dll\1'"錯誤訊息

最近接手一個VB6的維護案,拿到Source後,一開.vbp檔案就給我出現"找不到檔案 'C:\WINDOWS\system32\IEFRAME.dll\1'"的錯誤訊息,哇哩咧是怎樣!!

拜過Google大神後得到結論,就是IE7惹的禍,解決方法就是自己作一個.reg的檔案並執行,將IE7刪掉的IE6機碼再註冊到系統中。

以下是檔案內容:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}]

[HKEY_CLASSES_ROOT\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}\1.1]
@="Microsoft Internet Controls"

[HKEY_CLASSES_ROOT\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}\1.1\0]

[HKEY_CLASSES_ROOT\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}\1.1\0\win32]
@="C:\\WINDOWS\\system32\\ieframe.dll"

 

據網友慘痛經驗,有時候IE7更新,這個問題就會發作,所以....這個檔案留著不要刪吧!用到的機會不只一次!!

2008年1月12日 星期六

在XP裡找不到之前建的VPN連線,也無法建立VPN連線

問題:

昨天要用VPN連線到客戶那裡時,發現為什麼我之前建的VPN連線不見了,而且當我想新增VPN連線時,卻發現選項都反白的,讓我束手無措,拜Goole大神也都無用,好像全天下只有我發生這狀況。

無法建立VPN連線

 

解決方法:
原本想要重灌.....其實前陣子本來就有點想重灌,因為大概也三年沒重灌我的電腦了,只是每次想到要裝那一堆開發工具我就打退堂鼓了....

還好後來想到前陣子我因為光開機起來,還沒跑任何程式記憶體就用了350MB的問題,停用了很多服務的事,就去找找看是不是那個服務沒開的關係。

最後找到了!!
"Remote Access Connection Manager"就是它,描述是"建立網路連線。",啟用後就看到之前建的VPN連線了,當然要再新建連線也沒問題囉!

2008年1月11日 星期五

安全性例外狀況

問題:
當我們在IIS下建立一個位於unc路徑下的虛擬目錄,而這個目錄下放的是ASP.NET的程式,這時候就會出現以下的錯誤訊息。

安全性例外狀況

描述: 應用程式嘗試執行安全原則不允許的作業。如果要授與這個應用程式所需的權限,請聯繫您的系統管理員,或在組態檔中變更這個應用程式的信任層級。
例外詳細資訊: System.Security.SecurityException: 型別 'System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 的使用權限要求失敗。
原始程式錯誤:

在執行目前 Web 要求期間,產生未處理的例外狀況。如需有關例外狀況來源與位置的資訊,可以使用下列的例外狀況堆疊追蹤取得。

Try to delete all assembly that referenced in this web project and
recompile them. This error may occur when there is some assembly builded
in previous version of ASP.NET.

原因:
在.NET Framework的程式碼存取安全性上預設是不允許執行任何非本機上的程式(組件), 如果有需要執行非本機上的.NET應用程式,則必須在Runtime安全性原則內加入信任這些程式的安全性原則。

解決方法:
1.[開始]->[控制台]->[系統管理工具]->[Microsoft .NET Framework 1.1 設定]
2.選擇透過[Runtime 安全性原則]
3.設定"增加組件的信任"
4.選[對這部電腦進行變更]
5.選取所要套用的組件(Code-Behide或其他非.NET Framework組件)
6.將組件的信任層級設定為[完全信任]
7.重覆此動作將所要新增的組件一一加入

2008年1月10日 星期四

AIX 效能監控

今天請教同事sung學到的指令

topas  -->就是一般unix上的top指令

vmstat 3 10  -->每3秒顯示1次系統狀態,共顯示10次

sar

2008年1月4日 星期五

Oracle Redo、Undo及Rollback Segment觀念

記得剛接觸Oracle時,只是把他當作應用程式儲存資料的地方,所以那時候和DBA溝通時,聽他們在講什麼Redo、Undo、Rollback Segment也是常常搞混,最近有朋友剛開始玩Oracle,環境中有7.x~10g都有,所以被搞的頭昏腦脹,只好打電話問我..我是這樣回答的:

Redo就是重作,當我們使用DML指令(Update、Delete、Insert)對資料進行修改後,Oracle會將我們對資料修改的操作及資料本身寫入Redo Log Buffer,Oracle會找適當的時機(*註1)將Redo Log Buffer內的東西寫入Redo Log Files,由於Redo Log Files是循環寫入的,所以在異動頻繁的狀態下會很快被蓋掉,如果想要將這些異動的記錄保留下來,就請開啟Oracle Archiving Mode,這樣Oracle作Log Switch時,就會將Redo Log Files內容另存一份成為Archive Log Files

Undo就是取消之前作的,8i以前(含8i)的Rollback Segment,在9i改叫Undo Segment;當我們進行交易時,Oracle會利用Undo Segment來存放異動前後的資料,在交易未Commit前,其他使用者可以在這裡查詢舊資料,如果交易失敗或取消,Oracle就可以很快的將由回復原先的資料,在9i提供了Flashback Query可以讓我們查詢交易Commit以前的資料(能查多久以前的資料?看Undo Tablespace有多大、UNDO_RETENTION設多少),到了10g,我們甚至可以回復已經Commit的交易(利用Flashback Query中的Undo SQL指令)。

註1.所謂適當時機就是:

  • 交易確認時
  • Redo Log Buffer的資料異動量放超過整個Buffer的1/3
  • Redo Log Buffer的資料異動量超過1MB
  • 當DBWR將異動的Data Block從Data Buffer Cache寫入Data Files之前