菜鳥學資料庫(六)——方便快捷的開啟、關閉Oracle服務,方便快捷oracle
背景:
作為一個程式員,在日常的工作中,我們電腦經常需要同時運行很多程式,如: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 offnet start OracleServiceORCLnet start OracleOraDb11g_home1TNSListenerpause
運行效果:
運行完成以後,可以看到兩個服務的狀態已經變成了“已啟動“:
停止服務代碼只需將“start”改成“stop”:
@echo offnet stop OracleServiceORCLnet stop OracleOraDb11g_home1TNSListenerpause
運行效果:
好了,有了這兩段代碼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+資料庫名。
怎啟動oracle資料庫服務 在dos下依次敲什命令 關閉? 開服務必須先開監聽?
到工作管理員的服務中啟動OracleService<SID>啟動oracle資料庫服務
服務與監聽的啟動順序沒有什麼必然的聯絡,除非設定動態監聽
怎實現Oracle資料庫庫服務的啟動與關閉?
這個很簡單,你把oracler的服務設定成非自動開機,這樣開機就不用佔用很長時間了,至於另一個問題,在案頭上建立一個bat批次檔就可以解決了,下面是我的oracle批次檔,你把他複製下來,修改一下裡面的服務名稱就可以了。很方便的。
@echo off
:dosmenu
REM 選擇菜單
echo #**********************************************************************#
echo Windows 服務啟動指令碼
echo #**********************************************************************#
echo 命令相關參數說明如下 快速切換
echo #**********************************************************************#
echo.
echo [1]啟動oracletest [2]關閉oracletest [3]關閉
echo.
echo #**********************************************************************#
set /P CHS= 請選擇: [1],[2],[3]?
if /I "%CHS%"=="1" (
goto aaaa
)
if /I "%CHS%"=="2" (
goto bbbb
)
if /I "%CHS%"=="3" (
goto zzzz
)
:aaaa
REM 啟動oracletest
net start "OracleServiceORACLETEST"
net start "OracleOraDb10g_home1TNSListener"
pause
cls
goto dosmenu
:bbbb
rem 關閉oracletest
net stop "OracleOraDb10g_home1TNSListener"
net stop "OracleServiceORACLETEST"
pause
cls
goto dosmenu
:zzzz
REM 退出
exit