Możesz użyć skryptów dbstart
/, dbshut
które są dostarczane z instalacją Oracle. Są dostępne pod $ORACLE_HOME/bin
.
Po nowej instalacji musisz edytować /etc/oratab
plik:
# 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
Następnie możesz użyć takich skryptów:
$ whoami
juser
$ dbstart $ORACLE_HOME
$ # execute DB jobs ...
$ dbshut $ORACLE_HOME
dbstart
zawiera wszystko, co jest potrzebne w programach Pro * C / OCI.
Użycie dbstart
/ dbshut
jest ulepszeniem w stosunku do niestandardowej metody wymienionej w pytaniu:
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
(razy w systemie Core i7 / 2.8GHz, wolno wirujący dysk twardy).
Jak działa dbstart / dbshut
dbstart $ORACLE_HOME$
Połączenie jest w zasadzie równoznaczne z:
$ lsnrctl start
$ echo -e 'connect / as sysdba\nstartup\nquit'| sqlplus /nolog
A dbshut $ORACLE_HOME$
jest w zasadzie równoważne z:
$ lsnrctl stop
$ echo -e 'connect / as sysdba\nshutdown\nquit'| sqlplus /nolog
(możesz sprawdzić, czy wszystko zostało zamknięte za pośrednictwem ps aux | grep 'tnsl\|ora'
)
Pamiętaj, że kolejność poleceń jest ważna. Oznacza to, że kiedy lsnrctl start
zostanie wykonane po komendzie sqlplus-startup, program Pro * C / OCI nadal narzeka na niedostępny nasłuchujący TNS.
I to jest dokładnie problem z sekwencją komend w pytaniu - gdzie emctl start
tylko rozwiązuje problem z niewłaściwą kolejnością, ponieważ naprawia część konfiguracji programu nasłuchującego TNS.
Należy również pamiętać, że do wykonywania programów Pro * C / OCI usługa EMCTL nie jest potrzebna.