Ви можете використовувати dbstart
/ dbshut
скрипти, які постачаються з установкою Oracle. Вони доступні під $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
відображає все, що потрібно для програм Pro * 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
(час роботи системи Core 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-startup, програма Pro * C / OCI все ще скаржиться на недоступний слухач TNS.
І саме це проблема з послідовністю команд у питанні - де emctl start
справедливий спосіб вирішення неправильного порядку, оскільки він фіксує частину налаштування TNS-слухача.
Також зауважте, що для виконання програм Pro * C / OCI послуга EMCTL не потрібна.