जल्दी से स्टार्टअप / शटडाउन ओरेकल 11 कैसे करें?


9

मैं सोच रहा हूं कि ओरेकल डीबी डेमॉन (ठीक से परीक्षण मशीन पर स्थापित ओरेकल 11.2) को ठीक से स्टार्टअप / शटडाउन करने का सबसे तेज तरीका क्या है।

मुझे CCI / C ++ प्रोग्राम के लिए इसकी आवश्यकता है जो OCI / Pro * C API का उपयोग करते हैं।

मैं यह चाहता हूं क्योंकि मुझे PostgreSQL की स्टार्टअप गति के लिए उपयोग किया जाता है, और क्योंकि डेमन एक आभासी मशीन में चलता है जो केवल परीक्षण मामलों के लिए (ऑन-डिमांड) शुरू होता है।

वर्तमान में मैंने इसे इस तरह से स्क्रिप्ट किया है - स्टार्टअप:

sqlplus /nolog <<EOF
connect / as sysdba
startup
quit
EOF
lsnrctl start
emctl start dbconsole

और शटडाउन:

emctl stop dbconsole
lsnrctl stop
sqlplus /nolog <<EOF
connect / as sysdba
shutdown
quit
EOF

यह काम करता है - प्रोग्राम अपेक्षा के अनुसार काम करते हैं - लेकिन यह प्रक्रिया काफी धीमी है।

ओरेकल डीबी सेंटोस 6.3 पर चलता है, यह मुफ्त (जैसे-इन-बीयर) उपलब्ध 'मानक संस्करण' है।

जवाबों:


8

आप 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 startsqlplus- स्टार्टअप कमांड के बाद निष्पादित किया जाता है तो प्रो * C / OCI प्रोग्राम अभी भी अनुपलब्ध TNS- श्रोता के बारे में शिकायत करता है।

और यह वास्तव में कमांड अनुक्रम के साथ समस्या है - जहां emctl startसिर्फ गलत आदेश गलत तरीके से काम करता है क्योंकि यह टीएनएस-श्रोता सेटअप भाग को ठीक करता है।

यह भी ध्यान दें कि प्रो * C / OCI प्रोग्राम को निष्पादित करने के लिए EMCTL सेवा की आवश्यकता नहीं है।


1

आपको इसकी आवश्यकता क्यों है? क्या कारण है? शटडाउन के लिए आपके पास 3 विकल्प हैं:

  • सादा shutdown- सत्र समाप्ति की प्रतीक्षा करता है
  • shutdown immediate - रोलबैक और अंत सत्र (रोलबैक खत्म होने का इंतजार)
  • shutdown abort - सब कुछ मारता है - आमतौर पर डेटाबेस को स्टार्टअप पर कुछ वसूली करनी होती है।

पुनश्च: आपको केवल चलाने के लिए एंटरप्राइज़ मैनेजर की आवश्यकता नहीं है, यदि आपको केवल परीक्षणों के लिए डेटाबेस की आवश्यकता है। Oracle dbstart/ dbshutस्क्रिप्ट का उपयोग करें । यदि आपको वास्तव में ईएम की आवश्यकता है, तो इसे पृष्ठभूमि में शुरू करें।


0

yasir-arsanukaev : क्या आप अपने VM को डिस्क पर अपना राज्य सहेज सकते हैं?

colin-t-hart : यदि यह एक परीक्षण मशीन है, तो एक स्नैपशॉट बनाएं। मशीन शुरू करें और ओरेकल का उपयोग शुरू करेंdbstart। बस मशीन बंद होने पर मजबूर करें और स्नैपशॉट पर रोलबैक करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.