Solaris 使用了SMF(服務管理設施)來集中管理各項系統及網絡服務其目的是降低系統管理的難度和降低系統出錯的幾率實踐表明通過SMF管理平台來配置和管理服務還是十分麻煩的例如要把一個用戶自己訂制安裝的第三方軟件配置到SMF裡進行管理要做很多的工作另外如果某個服務出現故障將涉及服務本身和SMF這兩方面這樣恢復起來難度相應增大個人偏見系統管理的目標是越簡單越好—部署容易維護簡單及恢復快速正好solaris 系統有一個oracle g就用它來做例子來配置一個 oracle的自動運行腳本
先介紹一下系統環境
系統版本 SunOS sery Generic_ ipc i ipc
Oracle 版本 racle Database g Enterprise Edition Release Prod
Oracle 安裝路徑 /opt/oracle/product//db_
dbstart 路徑 /opt/oracle/product//db_/bin/dbstart
Oracle 自帶一個腳本dbstart它的用途就是用來制作自動運行腳本在沒有啟動oracle實例之前我們先手動運行腳本dbstart:
bash$ dbstart
ORACLE_HOME_LISTNER is not SET unable to autostart Oracle Net Listener
Usage: /opt/oracle/product//db_/bin/dbstart ORACLE_HOME
提示沒有設置ORACL_HOME_LISTNER接著給出這個命令的使用方法用ps –aef | grep ora看oracle相關進程是否起來哦沒有起來!修改文件dbstart找到ORACL_HOME_LISTNER這一行(還好只有唯一的一行)它的默認值為$表示接受一個位置參數的意思既然程序需要手動加位置參數ORACLE_HOME我們不妨把$直接用ORACLE_HOME替換掉即 ORACLE_HOME_LISTNER=$ à ORACLE_HOME_LISTNER=$ORACLE_HOME保存後再來執行腳本dbstart順利執行了
bash$ dbstart
bash$ ps aef | grep ora | grep v grep
oracle :: pts/ : ps aef
oracle :: pts/ : bash
oracle :: ? : /opt/oracle/product//db_/bin/tnslsnr LISTENER –inherit //監聽器起來了
但沒有oracle進程只有oracle監聽器起來了還有一個文件/var/opt/oracle/oratab修要修改這個文件是oracle安裝過程中手動執行rootsh被創建的打開這個文件有效的配置只有一行下面是某個系統上的輸出
sery:/opt/oracle/product//db_:N
根據注釋的提示我們需要把它最後一個字段(以冒號為字段分割符)的值由N改為Y保存後再來執行dbstart &
bash$ dbstart
Processing Database instance sery: log file /opt/oracle/product//db_/startuplog
bash$ ps eaf | grep ora
oracle :: ? : ora_j_sery
oracle :: ? : ora_j_sery
oracle :: ? : ora_j_sery
oracle :: ? : ora_j_sery
……(省略若干輸出)
這時oracle實例運行起來了根據這個經驗我們順便把文件dbshut這個文件也修改了
一切准備就緒就可以開始寫運行級別的自動腳本了在運行級別的目錄創建文件/etc/rcd/Sdbstart其內容如下
#!/bin/bash
su oracle c /opt/oracle/product//db_/bin/dbstart& //少選項c將不會執行這個腳本c command
保存後在給它執行權限同理在運行級別S的目錄建文件 /etc/rcSd/Kdbshut文件內容如下
#!/bin/bash
su oracle c /opt/oracle/product//db_/bin/dbshut &
執行命令init 重啟solaris 看oracle實例及監聽器是否在正常運行當然如果不用運行級別而用服務管理設施SMF來管理oracle服務的話還有好多步驟修要完成有興趣的可以去試試
From:http://tw.wingwit.com/Article/program/Oracle/201311/17165.html