背景:
作為一個程式設計師,在日常的工作中,我們電腦經常需要同時執行很多程式,如:Eclipse、瀏覽器、即時通訊軟體等,甚至經常需要開啟幾個Office文件或者pdf文件。這時候你的記憶體估計已經爆表了吧,尤其是現在想Chrome和FireFox這類的瀏覽器,隨便安裝幾個外掛,記憶體佔用就大得驚人。而我們為了滿足需要又不得不安裝各種各樣的外掛,因為這兩款瀏覽器在不安裝任何外掛的情況下跟IE沒什麼分別。
如上圖所示,FireFox、Java的兩個程式還有Eclipse穩穩地佔據了記憶體使用的前四,而這時候如果你電腦還開著Oracle的服務,那麼你的電腦會卡到令人髮指。
把電腦升級到8G記憶體,剛開始覺得很爽,沒過多長時間,又變得很慢了。還真是給它多少記憶體,它就敢給你用多少記憶體呀。無限制的升級硬體顯然是不實際的方法,所以我們需要從軟體上動腦筋,這句需要我們把平時不常用的服務以及後臺程式關掉。
瀏覽器我們每天都離不開,而且關掉主程式也不會有後臺程式,所以我們的目標不是它;Java程式和Eclipse每天開放也離不開它們,所以也不能對它們下黑手;嘿嘿,Oracle不好意思啦,只能將你幹掉了,因為有了Hibernate之類的框架,讓我們在寫程式碼的時候不需要知道我們將要面向什麼資料庫。所以我們完全沒有必要在自己的機器上每天開著Oracle的那些笨重的後臺服務。一個小小的MySQL完全可以應付,所以我們只需要將它的服務全部關掉,用的時候再開啟即可。
但是新的問題又來了,每次需要開啟服務的時候,還需要開啟系統的服務管理,找到Oracle的相關服務,然後挨個右擊點選啟動,我想有過類似操作經驗的朋友,都會覺得這是一個非常令人煩躁的工作。
但是身為程式設計師的我們,應該很自然的想到,這些繁雜的工作肯定可以通過程式來自動幫我們解決。沒錯,而且非常簡單,只需要幾行程式碼就可以搞定!
解決方案:
首先,到服務(按“Win”鍵,輸入“服務”,回車)裡找到Oracle的相關服務,我安的是11g,相關服務如下:
我們並不需要將所有服務全部開啟,基本的功能只需要開啟如下兩個服務即可:
OracleServiceORCL
OracleOraDb11g_home1TNSListener
將以下程式碼儲存成”.bat“檔案或”.cmd“檔案即可。
具體程式碼:
@echo off
net start OracleServiceORCL
net start OracleOraDb11g_home1TNSListener
pause
執行效果:
執行完成以後,可以看到兩個服務的狀態已經變成了“已啟動“:
停止服務程式碼只需將“start”改成“stop”:
@echo off
net stop OracleServiceORCL
net stop OracleOraDb11g_home1TNSListener
pause
執行效果:
好了,有了這兩段程式碼Oracle的服務就對我們唯命是從了,招之則來,揮之則去。想想都覺得爽歪歪了。下面為大家附上Oracle各個服務的詳細說明:
1. Oracle ORCL VSS Writer Service:Oracle卷對映拷貝寫入服務,VSS(Volume Shadow Copy Service)能夠讓儲存基礎裝置(比如磁碟,陣列等)建立高保真的時間點映像,即對映拷貝(shadow copy)。它可以在多卷或者單個捲上建立對映拷貝,同時不會影響到系統的系統能。(非必須啟動)
2. OracleDBConsoleorcl:Oracle資料庫控制檯服務,orcl是Oracle的例項標識,預設的例項為orcl。在執行Enterprise Manager(企業管理器OEM)的時候,需要啟動這個服務。(非必須啟動)
3. OracleJobSchedulerORCL:Oracle作業排程(定時器)服務,ORCL是Oracle例項標識。(非必須啟動)
4. OracleMTSRecoveryService:服務端控制。該服務允許資料庫充當一個微軟事務伺服器MTS、COM/COM+物件和分散式環境下的事務的資源管理器。(非必須啟動)
5. OracleOraDb11g_home1ClrAgent:Oracle資料庫.NET擴充套件服務的一部分。 (非必須啟動)
6. OracleOraDb11g_home1TNSListener:監聽器服務,服務只有在資料庫需要遠端訪問的時候才需要。(非必須啟動,下面會有詳細詳解)。
7. OracleServiceORCL:資料庫服務(資料庫例項),是Oracle核心服務該服務,是資料庫啟動的基礎, 只有該服務啟動,Oracle資料庫才能正常啟動。(必須啟動)那麼在開發的時候到底需要啟動哪些服務呢?
對新手來說,要是隻用Oracle自帶的sql*plus的話,只要啟動OracleServiceORCL即可,要是使用PL/SQL Developer等第三方工具的話,OracleOraDb11g_home1TNSListener服務也要開啟。OracleDBConsoleorcl是進入基於WEB的EM必須開啟的,其餘服務很少用。
注:ORCL是資料庫例項名,預設的資料庫是ORCL,你可以建立其他的,即OracleService+資料庫名。