오라클 셧다운 방법 immediate; 또는 shutdown abort; startup restrict; shutdown immediate; 또는 shutdown abort; startup

업그레이드 또는 패치를 수행하기 전에 데이터베이스를 종료하는 방법은 여러 가지가 있습니다.

shutdown immediate;

또는

shutdown abort;
startup restrict;
shutdown immediate;

또는

shutdown abort;
startup restrict;
shutdown;

또는

alter system checkpoint;
shutdown abort;
startup restrict;
shutdown immediate;

물론 다른 옵션도 있습니다. 어느 것이 선호되어야하며 왜 그런가?



답변

유지 관리 (또는 콜드 백업)를 위해 종료 할 때 데이터베이스를 시작시 롤백 / 복구 할 필요없이 일관된 상태로 유지해야합니다.

shutdown이론적으로이를 달성하는 3 개의 SQL * Plus 명령이 있으며,이 모든 명령 은 인스턴스에 세션이 연결되는 것을 즉시 방지 합니다.

  1. shutdown normal또는 shutdown: 모든 세션의 연결이 끊길 때까지 기다립니다. 이 모드는 연결이 열린 상태로 두지 않는 제대로 작동하는 클라이언트에 의존하기 때문에 실제로는 거의 사용되지 않습니다. 이것은 shutdown실행중인 트랜잭션을 취소하지 않은 유일한 모드였습니다.
  2. shutdown transactional: 현재 실행중인 트랜잭션이 완료되면 세션 연결을 끊어 새 트랜잭션이 시작되지 않도록합니다.
  3. shutdown immediate: 모든 세션의 연결을 즉시 끊고 종료하기 전에 중단 된 트랜잭션을 롤백합니다. 단절은 즉시 이루어 지지만 중단 된 트랜잭션이 롤백하는 데 시간이 걸리기 때문에 종료가 아닐 수 있습니다 .

네 번째 모드는 shutdown입니다 shutdown abort. 이것은 전원 코드를 당기는 것과 같습니다 . 이제 인스턴스를 정리하지 않고 중지 합니다. 일반적으로 예제와 같이 데이터베이스를 나중에 다시 시작한 후 즉시 완전히 종료하려고합니다. 개념 가이드 는 말합니다 :

이 모드는 다른 형태의 종료가없는 경우와 같은 긴급 상황을위한 것입니다.

검사 점shutdown [normal] 또는 shutdown immediate명시 적 검사 점 의 일부로 검사 점수행하는 모든 예제 는 아마도 복구에 필요한 시간줄이는 것 입니다.

일반적인 조언 :

  • 사용하지 마십시오 shutdown normal.
  • 취소 된 트랜잭션을 최소화하려는 경우 shutdown transactional 유인 종료에만 사용하십시오 ( 시간 종료에 도달 한 경우 이러한 종류의 종료 가 데이터베이스 를 전혀 종료하도록 보장하지 않기 때문입니다 ).
  • shutdown immediate무인 종료 또는 현재 실행중인 트랜잭션에 관심이없는 경우에 사용하십시오 .
  • 반드시 필요한 경우가 shutdown abort아니라면 (시작 / 종료와 함께) 사용하지 마십시오 . 이것은 오늘날의 Oracle 이전 버전에서 더 일반적이었습니다. 다른 상황 (패치 / 업그레이드 아님)에서 가동 중지 시간최소화 해야하는 경우이 모드가 적합 할 수 있습니다.

답변

데이터베이스를 종료 하는 가장 빠른 방법이기 때문에 종료 중단 방법을 선호합니다 . 종료 중단 후 수행 할 수없는 작업이 있습니다. 예 :

  • 제어 파일 resetlogs 작성 (데이터베이스 이름 바꾸기, 로그 파일 이름 바꾸기, 데이터 파일 이름 바꾸기) 을 사용하여 제어 파일 데이터베이스를 다시 작성하십시오.
  • dbms_backup_restore의 프로 시저를 사용하여 dbid를 변경하십시오 (dbi를 변경하는 8i의 유일한 방법 임)

두 경우 모두 데이터베이스가 손상되었으며 전체 백업에서 복원해야합니다.

9i 이후 데이터베이스 이름 바꾸기 또는 dbid 변경은 dbnewid 유틸리티를 사용하여 수행 할 수 있습니다 . 내가 아는 한 유틸리티는 데이터베이스가 올바르게 종료되었는지 확인합니다. 물론 제어 파일을 다시 만들지 않고 적절한 SQL 문을 실행하여 데이터 파일, 임시 파일 및 로그 파일 이름을 바꿀 수 있습니다.