안녕하세요, 저는 Curt입니다. 수석 주임 엔지니어로 GSE 팀에서 일하고 있습니다.
이 비디오에서는 Microsoft SQL Server 데이터베이스 트랜잭션 로그 파일을 축소하는 방법을 알아봅니다. 트랜잭션 로그를 축소하는 다양한 방법과 로그 축소 작업이 예상대로 실행되지 않을 경우 수행할 작업을 검토합니다.
로그 파일을 축소하는 몇 가지 방법이 있습니다. SQL Server Management Studio로 이동합니다. 데이터베이스의 속성으로 이동하여 축소 작업을 수행합니다. 먼저 이를 시연해 보겠습니다.
그런 다음 TSQL ShrinkFile 명령을 수행하는 작업도 있습니다. 이 비디오에서 논의할 또 다른 사항은 파일 축소 작업이 예상대로 실행되지 않을 경우 발생하는 작업이며, 이 경우 사용할 수 있는 옵션에 대해 설명합니다. 스튜디오 관리로 들어가 보겠습니다.
'AdventureWorks2017' 데이터베이스로 작업할 것이며 데이터베이스 메뉴의 '작업'으로 이동하여 '축소'로 내려오면 두 가지 옵션이 있습니다.
데이터베이스 내에서 모든 파일을 처리하거나 특정 파일을 처리하는 데이터베이스 수준에서 작업할 수 있으며, 이 경우 특정 파일을 사용하려고 합니다. 기본적으로 여기 팔레트를 보면 'File type' 아래에 'Data'가 표시됩니다.
데이터베이스 파일로 아무 작업도 수행하지 않고 대신 트랜잭션 로그를 축소하려고 하므로 트랜잭션 로그는 말 그대로 '파일 형식' 아래에 있는 '로그'입니다. 이제 데이터베이스에 대한 몇 가지 정보가 있습니다.
데이터베이스 로그는 매우 작고, 이것은 새 데이터베이스이며, 해당 트랜잭션 로그에 할당된 크기와 사용 가능한 공간을 볼 수 있습니다. 여유 공간이 없으면 데이터베이스에서 파일 축소 작업을 실행할 수 없기 때문에 여유 공간이 중요할 수 있습니다.
여러 가지 옵션이 있는데요. 여기서는 자세히 설명하지 않겠지만 기본적으로 트랜잭션 로그를 잘라내는 미사용 공간을 해제할 수 있는 옵션이 있습니다. OK를 클릭하여 실행할 수 있습니다. 그러면 축소를 수행하거나 해당 데이터베이스에서 축소를 시도할 수 있습니다. 그 대신 데이터베이스 축소를 위한 TSQL 옵션을 살펴보겠습니다.
오늘은 약간 게으르기 때문에 'Script Action to Clipboard'로 이동하여 트랜잭션을 가져옵니다. 여기서 OK를 클릭했을 경우 실행되었을 TSQL 명령입니다.
취소를 클릭하고 TSQL 명령을 붙여 넣어 AdventureWorks2017 데이터베이스를 축소하겠습니다. 명령을 다시 한 번 살펴보면 파일 축소 명령입니다. AdventureWorks2017 로그를 처리하고 있으며 해당 로그의 크기를 지정할 수 있습니다.
이 경우 기본값인 0으로 유지합니다. 여기에 아무 것도 정의하지 않거나 값을 0으로 두면 파일을 원래 파일 크기로 축소하려고 시도합니다. 트랜잭션 로그 내의 여유 공간을 OS로 다시 포기하는 'truncateonly'옵션이 있습니다.
이제 실행하면서 수행한 작업과 현재 크기에 대한 보고서가 있습니다. 그래서 계속 진행하여 약 1메가로 줄였습니다. 이것은 우리에게 큰 도움이 됩니다. 훨씬 더 많은 추가적인 디스크 공간을 돌려받았습니다. 이 비디오에서 설명할 내용 중 하나는 파일 축소를 실행했는데 성공적으로 실행되지 않으면 어떻게 되는지입니다.
파일 축소 작업이 실패하는 가장 큰 이유는 데이터베이스 내에 파일 축소 명령을 실행할 수 있는 여유 공간이 충분하지 않기 때문입니다. 가장 먼저 할 일은 파일 내의 여유 공간을 파악하는 것입니다.
GUI 메뉴를 통해 이 특정 명령을 실행할 수도 있습니다. 이제 포커스를 변경하여 AdventureWorks2019 데이터베이스로 작업하겠습니다. 이 특정 명령인 select 명령을 실행하면 해당 데이터베이스에 표시되는 여유 공간의 양이 표시됩니다.
현재 데이터베이스 내에 3메가의 여유 공간이 있습니다. 특정 데이터베이스 내에서 여유 공간이 부족한 경우 데이터베이스를 줄이기 위해 사용할 수 있는 두 가지 옵션이 있습니다. Adventure Works 2019 데이터베이스에 대한 옵션인 복구 옵션을 변경할 수 있습니다.
복구 옵션을 '단순'으로 변경하고 dbcc 파일 축소 명령을 실행하면 파일이 원래 크기보다 훨씬 작은 크기로 축소됩니다. 데이터베이스를 단순 모드로 전환할 때마다 트랜잭션 로그는 활성 트랜잭션을 처리하고 활성 상태가 아닌 모든 것은 로그에서 플러시됩니다.
이 특정 명령을 실행할 수 있습니다. 대부분의 프로덕션 데이터베이스는 전체 복구 상태이므로 단순하게 전환하면 파일 축소 명령을 성공적으로 실행할 수 있거나 최소한 기회를 얻을 수 있습니다. 우리는 단순 모드에 있으며 다시 한 번 시나리오는 성공적으로 실행하지 못했다는 것입니다.
단순 모드로 전환한 후 동기화 파일 축소 작업을 성공적으로 실행하고 새 파일 크기에 대한 정보를 제공하며 이 특별한 경우에 마지막으로 하고 싶은 일은 전체 복구 모드로 되돌리는 것입니다.
이 시점에서 파일 축소 명령을 사용하여 관리할 수 없는 트랜잭션 로그 파일을 가져와서 실제로 해당 파일을 축소할 수 있는 상태로 전환했습니다. 이제 최신 트랜잭션 정보를 얻기 위해 백업할 수 있는 모드로 되돌렸습니다.
이것으로 Microsoft SQL Server 데이터베이스 트랜잭션 로그를 축소하는 방법에 대한 데모를 마칩니다.
시청해 주셔서 감사합니다.