Anda dapat menggunakan dbstart/ dbshutskrip yang datang dengan instalasi Oracle. Mereka tersedia di bawah $ORACLE_HOME/bin.
Setelah instalasi baru, Anda harus mengedit /etc/oratabfile:
# 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
Kemudian Anda dapat menggunakan skrip seperti ini:
$ whoami
juser
$ dbstart $ORACLE_HOME
$ # execute DB jobs ...
$ dbshut $ORACLE_HOME
dbstart menampilkan semua yang diperlukan untuk program Pro * C / OCI.
Menggunakan dbstart/ dbshutadalah peningkatan di atas metode kustom yang disebutkan dalam pertanyaan:
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
(kali pada sistem Core i7 / 2.8GHz, hard disk pemintalan lambat.)
Bagaimana dbstart / dbshut bekerja
Sebuah dbstart $ORACLE_HOME$panggilan pada dasarnya setara dengan:
$ lsnrctl start
$ echo -e 'connect / as sysdba\nstartup\nquit'| sqlplus /nolog
Dan a dbshut $ORACLE_HOME$pada dasarnya setara dengan:
$ lsnrctl stop
$ echo -e 'connect / as sysdba\nshutdown\nquit'| sqlplus /nolog
(Anda dapat memverifikasi jika semuanya dimatikan melalui ps aux | grep 'tnsl\|ora')
Perhatikan bahwa urutan perintah itu penting. Itu berarti ketika lsnrctl startdijalankan setelah perintah sqlplus-startup maka program Pro * C / OCI masih mengeluh tentang pendengar TNS yang tidak tersedia.
Dan ini persis masalah dengan urutan perintah dalam pertanyaan - di mana yang emctl startbaru saja menyelesaikan urutan yang salah karena itu memperbaiki bagian pengaturan TNS-listener.
Perhatikan juga bahwa untuk menjalankan program Pro * C / OCI, layanan EMCTL tidak diperlukan.