群里有朋友問到windows下如何設計開機自啟動的腳本,一般而言小魚大多還是在linux環境下運維,windows的bat了解的很少,windows運行機制也不是特別了解,不過既然朋友問到這個問題,雖然是個小問題,不過可能以后確實會用到這個,就找了一些資料進行了測試和整理
例如開機運行的bat腳本存儲的位置為C:\script\script.bat,腳本的內容為:
lsnrctl start
sqlplus / as sysdba @c:\script\script.sql
需要注意的是windows下的bat和linux unix中的shell不一樣,bat中沒有<<EOF分界符,不過sqlplus卻提供給我們另外一種方式來在bat中執行sql的命令。
C:\Users\Administrator>sqlplus -help
SQL*Plus: Release 10.2.0.4.0 - Production
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
。。。
Runs the specified SQL*Plus script from a web server (URL) or the
local file system (filename.ext) with specified parameters that
will be assigned to substitution variables in the script.
Sqlplus解釋也很詳細提到了@
這里已經編輯了一個實用的bat腳本,接下來就是如何將這個腳本制作為開機自啟動,此時我們需要創建一個.vbs腳本在開機后台自動運行該腳本,腳本的內容為:
set ws=WScript.CreateObject("WScript.Shell")
ws.Run "C:\script\script.bat /start",0
將上述文件保存為script.vbs放入開機-所有程序-啟動內,其實也就是一個文件夾,用於記錄開機自啟動bat腳本,小魚這個測試環境中這個文件夾的位置為
C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
上述的vbs腳本需要注意第一行應該是定義一個變量,然后第二行調用了去運行了這個變量,變量的腳本就是C:\script\script.bat這個腳本,小魚並非windows程序員出身,只自學過一點點mfc的框架。
等待一切完成后,我們就可以來進行測試了,這里小魚在C:\script\script.bat腳本中啟動了監聽,然后修改了open_cursors參數,從默認的300修改為了1000,接下來我們重啟機器或者手動運行script.vbs進行驗證:
運行腳本前:
SQL> show parameter open_cursors
NAME TYPE VALUE
open_cursors integer 300
運行腳本后:
SQL> show parameter open_cursors;
NAME TYPE VALUE
open_cursors integer 1000
可能還有別的方法來設置開機自啟動,比如windows服務來引導bat腳本,這里小魚就不再列出了,后面有大量機會如果能夠接觸aix系統,也會貼出一些系統常用維護技巧與大家分享。
