데이터베이스를 오프라인으로 전환하는 이유는 무엇입니까?


15

"오프라인으로 연결"/ ALTER DATABASE dbName SET OFFLINE기능 을 사용하는 이유와 상황은 무엇입니까 ?

오프라인 데이터베이스로 수행 할 수있는 작업은 무엇입니까? 오프라인 데이터베이스로만 수행 할 수있는 작업은 무엇입니까?

답변:


16

MDF 파일을 다른 서버로 이동하여 온라인 상태로 만들 수 있습니다.


4
+1 또는 다른 드라이브 / 폴더 / SAN ...
Chris S

"오프라인으로 연결"에만 사용됩니까?
Greg B

5
아니요, 다른 이유도 생각할 수 있습니다. 여러 애플리케이션에 대해 여러 데이터베이스가 있다고 가정하십시오. 이러한 응용 프로그램 중 하나가 프런트 엔드 응용 프로그램 (웹 응용 프로그램, 클라이언트, 아는 사람)의 업그레이드를 받고 있습니다. 업그레이드하는 동안 누구나 데이터베이스에 액세스하지 못하도록하고 싶지만 전체 서버를 중단하고 싶지는 않습니다. 다른 데이터베이스로 인해 오프라인 상태가되는 이유 일 수 있습니다. 나는 당신의 상상력이 다른 이유를 생각해 낼 것이라고 확신합니다.
mfinni

내 상상은 두려워 할 수 없으므로 질문입니다. 나는 오프라인 업그레이드 과정에서 도움을 수있는 방법을 복용 볼 수 없습니다 있도록, 오프라인 상태에서 데이터베이스를 변경할 수 있다고 생각하지 않았다
그렉 B

2
Greg B-저는 DB 자체가 아닌 프론트 엔드를 업그레이드한다고 구체적으로 말했습니다. 내가 설명한 시나리오에서 DB는 변경되지 않은 상태로 남아 있습니다. 전환하는 동안 아무도 액세스하지 않도록 오프라인 상태가됩니다.
mfinni

18

개발 / 스테이징 환경에서는 응용 프로그램에서 데이터베이스의 올바른 인스턴스에 연결하고 어딘가에 연결 문자열이 없는지 확인하기 위해 데이터베이스를 오프라인 상태로 만드는 것이 유용한 경우가 있습니다.

즉,이 상황에서는 다른 환경에 대해 다른 데이터베이스 이름과 연결 문자열을 자동으로 구성하는 빌드 프로세스를 갖는 것이 훨씬 좋습니다.

마찬가지로, 나는 데이터베이스를 해제하기 전에 일정 기간 동안 데이터베이스를 오프라인으로 전환하여 어떤 이유로 든 온라인 상태로 돌아와야하는 것을 좋아합니다. 나는 그것을 없애고 싶을 때 내 데이터베이스 중 하나에 알지 못하는 고리를 가진 개발자들에 의해 물린 적이 있습니다. 필요한 경우 삭제하고 복원하는 것보다 훨씬 덜 과감하고 시간이 덜 드는 오프라인 상태로 만듭니다.

또 다른 것은 긴급 보호 수단입니다. 전에이 작업을 수행해야했습니다. 때로는 악의적이지는 않지만 데이터베이스의 데이터를 손상시키는 악의적 인 버그가 앱에서 발견되는 경우가 있습니다. 데이터베이스를 오프라인으로 전환하는 것은 버그를 식별 할 때까지 출혈을 멈추는 빠른 방법입니다. 그런 다음 데이터베이스 내 손상을 평가하기 위해 온라인으로 되돌릴 수 있습니다.


2
I 삭제하기 전에 오프라인 복용의 생각처럼
그렉 B를

8
같게. 프로덕션 전 환경에 4 천 개의 데이터베이스가 있습니다. 누가 무엇을 소유하는지 알기가 어려울 때가 있습니다. 오프라인 상태로 전환을 기다리는 것이 때로는 유일한 옵션입니다.
Michael Green

6

여기에 대한 답변 중 일부는 액세스가 제한된 데이터베이스로 수행 할 수있는 작업에 대한 아이디어를 제공 할 수 있지만 실제로 오프라인 상태 인 데이터베이스로는 수행 할 수있는 작업이 많지 않습니다. 데이터를 업데이트, 업그레이드, 추가 또는 삭제할 수 없습니다.


2
옳은. 데이터베이스로 많은 작업을 수행하려면 단일 사용자 모드로 설정하는 것이 좋습니다. 그런 다음 여전히 액세스를 제한하지만 더 많은 작업을 수행 할 수 있습니다.
Sean Howat

이름을 바꿀 수도 없습니다!
Dima Fomin 2016 년

0

나의 가장 중요한 이유는 내가 열거하고 싶은 것보다 DBA에 더 자주 팔아야 할 이유입니다.

"SAN은 수리가 필요합니다. 드라이브를 핫스왑 할 수 없으며 백플레인 / 컨트롤러에 결함이 있습니다."

디스크가 없어지면 DB 인스턴스는 매우 잘못 작동합니다.

따라서 SAN을 오프라인으로 전환하기 전에 SQL 인스턴스를 종료 한 다음 한 번에 하나씩 다시 가져 와서 리소스를 사용하지 않도록합니다. 첫 번째 인스턴스는 모든 클러스터 리소스를 가져 와서 활성 DB 노드가됩니다. 수동 노드로.


-3

이 작업을 수행해야하는 데는 여러 가지 이유가 있습니다.

예를 들어,

consider changing or upgrading the actual database program/binary...
consider changing or upgrading the schema or tables..
consider changing or upgrading index's..

가장 중요한 점은 ..

Is taking a backup.. to get a perfect snapshot in time.. 

(일부 DB에서는 모든 테이블에 대한 잠금을 만듭니다)


+1, DB 조각 모음 또는 축소를위한 이전 DBMS
Chris S

1
re : "도서 온라인에서"스키마 변경 또는 업그레이드 ""오프라인 데이터베이스가 닫히고 완전히 종료되어 오프라인으로 표시됩니다. 오프라인 상태에서는 데이터베이스를 수정할 수 없습니다. " 이 상황에서 스키마를 어떻게 업그레이드 할 수 있습니까?
Greg B

죄송합니다 .. 비활성 데이터베이스를 변경하는 것을 언급하고 있습니다. MySQL 추종자, 오프라인으로 표시된 데이터베이스에서 업그레이드가 발생한다고 가정했기 때문에 변경 이외의 다른 문제에 대해서는 동시성 문제가 없었습니다. . D : 아마도 우리는 ..이를 남길 수 있습니다
Arenstar

2
실제 데이터베이스는 실제 백업을 지원합니다. 완벽한 일관된 백업을 위해 아무 것도 할 필요는 없습니다. 잠금 또는 다른 어리석은 메커니즘이 필요한 DB는 장난감입니다. 정말. 모든 주요 데이터베이스는 사용량이 많은 동안 일관된 전체 백업에 문제가 없습니다.
TomTom
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.