คุณสามารถใช้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-listener ที่ไม่พร้อมใช้งาน
และนี่คือปัญหาที่เกิดขึ้นกับลำดับคำสั่งในคำถาม - ที่ซึ่งemctl start
เพียงแค่แก้ไขคำสั่งที่ไม่ถูกต้องเพราะมันจะแก้ไขส่วนการตั้งค่าฟัง TNS
โปรดทราบว่าสำหรับการดำเนินการโปรแกรม Pro * C / OCI ไม่จำเป็นต้องใช้บริการ EMCTL