Anda dapat menggunakan dbstart
/ dbshut
skrip yang datang dengan instalasi Oracle. Mereka tersedia di bawah $ORACLE_HOME/bin
.
Setelah instalasi baru, Anda harus mengedit /etc/oratab
file:
# 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
/ dbshut
adalah 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 start
dijalankan 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 start
baru 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.