आप dbstart
/ dbshut
स्क्रिप्ट का उपयोग कर सकते हैं जो ओरेकल इंस्टॉल के साथ आते हैं। वे नीचे उपलब्ध हैं $ORACLE_HOME/bin
।
एक नई स्थापना के बाद आपको /etc/oratab
फ़ाइल को संपादित करना होगा :
# cat /etc/oratab
# format: $ORACLE_SID:$ORACLE_HOME:N|Y
my_sid:/home/juser/app/juser/product/11.2.0/dbhome_1:N
# sed -i 's/:N$/:Y/' /etc/oratab
# grep my_sid /etc/oratab
my_sid:/home/juser/app/juser/product/11.2.0/dbhome_1:Y
तो आप इस तरह से स्क्रिप्ट का उपयोग कर सकते हैं:
$ whoami
juser
$ dbstart $ORACLE_HOME
$ # execute DB jobs ...
$ dbshut $ORACLE_HOME
dbstart
प्रो * C / OCI कार्यक्रमों के लिए आवश्यक सभी को लाता है।
प्रश्न में उल्लिखित कस्टम विधि के ऊपर एक सुधार dbstart
/ उपयोग dbshut
है:
method time called tools
―――――――――――――――――――――――――――――――――――――――――――――――――――――
dbstart 5.7 s lsnrctl, sqlplus
dbshut 5.7 s lsnrctl, sqlplus
custom startup 27.9 s lsnrctl, sqlplus, emctl
custom shutdown 31.0 s lsnrctl, sqlplus, emctl
(एक कोर i7 / 2.8GHz सिस्टम पर, हार्ड डिस्क को धीमा कर देता है।)
कैसे dbstart / dbshut काम करते हैं
एक dbstart $ORACLE_HOME$
कॉल मूल रूप से इसके बराबर है:
$ lsnrctl start
$ echo -e 'connect / as sysdba\nstartup\nquit'| sqlplus /nolog
और एक dbshut $ORACLE_HOME$
मूल रूप से इसके बराबर है:
$ lsnrctl stop
$ echo -e 'connect / as sysdba\nshutdown\nquit'| sqlplus /nolog
(यदि सब कुछ बंद है तो आप सत्यापित कर सकते हैं ps aux | grep 'tnsl\|ora'
)
ध्यान दें कि आदेशों का क्रम महत्वपूर्ण है। इसका मतलब है कि जब lsnrctl start
sqlplus- स्टार्टअप कमांड के बाद निष्पादित किया जाता है तो प्रो * C / OCI प्रोग्राम अभी भी अनुपलब्ध TNS- श्रोता के बारे में शिकायत करता है।
और यह वास्तव में कमांड अनुक्रम के साथ समस्या है - जहां emctl start
सिर्फ गलत आदेश गलत तरीके से काम करता है क्योंकि यह टीएनएस-श्रोता सेटअप भाग को ठीक करता है।
यह भी ध्यान दें कि प्रो * C / OCI प्रोग्राम को निष्पादित करने के लिए EMCTL सेवा की आवश्यकता नहीं है।