Oracle 11을 빠르게 시작 / 종료하는 방법은 무엇입니까?


9

Oracle DB 데몬 (테스트 시스템에 설치된 Oracle 11.2)을 올바르게 시작 / 종료하는 가장 빠른 방법이 무엇인지 궁금합니다.

OCI / Pro * C API를 사용하는 C / C ++ 프로그램에 필요합니다.

PostgreSQL의 시작 속도에 익숙하고 데몬이 테스트 사례에 대해서만 시작 (주문형) 가상 머신에서 실행되기 때문에 이것을 원합니다.

현재 나는 다음과 같이 스크립트를 작성합니다-시작 :

sqlplus /nolog <<EOF
connect / as sysdba
startup
quit
EOF
lsnrctl start
emctl start dbconsole

그리고 종료 :

emctl stop dbconsole
lsnrctl stop
sqlplus /nolog <<EOF
connect / as sysdba
shutdown
quit
EOF

이것은 작동합니다-프로그램은 예상대로 작동하지만이 절차는 상당히 느립니다.

Oracle DB는 CentOS 6.3에서 실행되며 무료로 제공되는 '표준 버전'입니다.

답변:


8

Oracle 설치와 함께 제공되는 dbstart/ dbshut스크립트를 사용할 수 있습니다 . 아래에서 사용할 수 있습니다 $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

그리고 a dbshut $ORACLE_HOME$는 기본적으로 다음과 같습니다.

$ lsnrctl stop
$ echo -e 'connect / as sysdba\nshutdown\nquit'| sqlplus /nolog

(를 통해 모든 것이 종료되었는지 확인할 수 있습니다 ps aux | grep 'tnsl\|ora')

명령 순서가 중요합니다. 이는 lsnrctl startsqlplus-startup 명령 이후에 실행될 때 Pro * C / OCI 프로그램이 여전히 사용할 수없는 TNS- 리스너에 대해 불평 함을 의미합니다.

그리고 이것은 문제의 명령 순서와 정확히 관련된 문제입니다 emctl start. TNS- 리스너 설정 부분을 수정하기 때문에 잘못된 순서로 문제를 해결할 수 있습니다.

또한 Pro * C / OCI 프로그램을 실행하기 위해 EMCTL 서비스가 필요하지 않습니다.


1

왜 필요합니까? 이유가 무엇입니까? 종료에는 3 가지 옵션이 있습니다.

  • 일반 shutdown-세션이 끝날 때까지 기다립니다
  • shutdown immediate -롤백 및 세션 종료 (롤백 완료 대기)
  • shutdown abort -모든 것을 죽입니다-일반적으로 데이터베이스는 시작시 약간의 복구를 수행해야합니다.

추신 : 테스트 전용 데이터베이스가 필요한 경우 Enterprise Manager를 실행할 필요가 없습니다. Oracle dbstart/ dbshut스크립트를 사용하십시오 . EM이 정말로 필요한 경우 백그라운드에서 시작하십시오.


0

yasir-arsanukaev : 상태를 디스크에 저장하는 VM을 일시 중지 (일시 중지) 할 수 있습니까?

colin-t-hart : 테스트 머신 인 경우 스냅 샷을 작성하십시오. 머신을 시작하고를 사용하여 Oracle을 시작하십시오dbstart. 완료되면 머신을 강제 종료하고 스냅 샷으로 롤백하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.