none
윈도우 서버2016 DB파일 부분삭제,용량축소 질문드립니다 RRS feed

  • 질문

  • 윈도우 서버2016 DB파일 부분삭제,용량축소 질문드립니다

    회사 서버는 윈도우즈 서버2016이고요

    회사에서 구축된 시스템에  NMS 프로그램으로 알람정보,로그 자료가 취합되어 DB에 저장되는데요

    서버 DB가 7년정도 쌓이다 보니 하드디스크 용량이 부족(80%이상사용)해서 DB 용량 정리를 해야됩니다

    NMS_log.ldf  로그파일이 136기가로 용량이 큽니다


    DB파일은 아래처럼 되어있습니다

    NMS_log.ldf  136,519,680KB  <-- 로그파일

    NMS.mdf     25,894,912KB  <--데이터파파일


    업무 관리상 최근 1년간의 알람정보 log의 DB는 삭제되면 안되고

    나머지 6년간의 log DB는 삭제해도 됩니다 



    1.DB백용량을 줄일수 있는 방법은? 

    (최근1년간의 DB데이터를 수시로 확인해야해서 백업,복원은 제외하고요)



    2.DB 부분삭제가 가능한가요?

    (SQL SERVER management studio등에서 DB데이터를 확인하여 오래된 DB 는 삭제할수 있는 방법이 있을까요?  



    3.DB 용량줄이기를 사용하면 서버 운용시에 문제가 없을까요?


    답변부탁드립니다

    사진이 업로드가 안되서

    sql스튜디오 경로는

    서버명-데이터베이스

                    -시스템데이터베이스

                    - 데이터베이스스냅숏

                    - NMS

                             - 데이터베이스 다이어그램

                             - 테이블

                             - 뷰

                             - 외부리소스

                             - 동의어

                             - 프로그램기능

                             - Service Broker

                             - 저장소

                             - 보안

    사진이 업로드가 안되서 여기 주소 확인 부탁드립니다

    https://gall.dcinside.com/mgallery/board/view/?id=svr&no=5504&page=1

    여기 사진 참조 부탁드립니다


    • 편집됨 머찐오빠 2022년 7월 28일 목요일 오전 6:45
    2022년 7월 25일 월요일 오전 1:45

모든 응답

  • 안녕하십니까,@ 머찐오빠 님
    포럼에 질문 주셔서 감사합니다.

    질문 내용에 따르면, 말씀하신 데이터는 MS SQL server database의 한 테이블 혹은 여러 테이블에 저장되었습니까? 
    삭제하려는 1년 전 데이터 테이블에 시간 열이 있나요? 시간 열이 없으면 1년 전 데이터 삭제가 불가능합니다.
    SQL 서버 mdf 및 ldf의 크기를 줄이시겠습니까? 로그 파일을 축소하여 ldf의 크기를 줄일 수 있습니다.

    문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해 주시기 바랍니다.
    감사합니다.


    MSDN Community Support Elin

     다른 커뮤니티 멤버에게 도움이 될 수 있게 문제를 해결 한 답변을 '답변으로 표시'를 클릭하시고 그렇지 않은 경우 '답변으로 표시 취소'를 클릭하시기 바랍니다. MSDN 서포트에 대한 의견이나 불만이 있을 경우 MSDNFSF@microsoft.com 으로 연락하시기 바랍니다.

    2022년 7월 27일 수요일 오전 9:10
    중재자
  • https://gall.dcinside.com/mgallery/board/view/?id=svr&no=5504&page=1

    여기 사진 참조 부탁드립니다

    사진상에 여러 테이블이 있는지 확인 되나요?

    그리고 시간열이 있냐는 말씀이..? 

    NMS 프로그램으로 알람정보 로그를 일별시간으로 설정해서 불러올수 있는데요

    이게 시간열이 있다고 보면 될까요?


    • 편집됨 머찐오빠 2022년 7월 28일 목요일 오전 6:47
    2022년 7월 28일 목요일 오전 6:45
  • 안녕하십니까,@ 머찐오빠 님
    피드백 주셔서 감사합니다.

    >> 사진상에 여러 테이블이 있는지 확인되나요?
    스크린샷에서 테이블 정보를 가져올 수 없습니다. 아래의 스크린샷과 같이 테이블 정보를 확인하실 수 있습니다.


    >> 그리고 시간열이 있냐는 말씀이..? 
    예를 들어 표 2의 날짜/시간 열입니다.


    답변이 도움이 되였으면 합니다, 문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해 주시기 바랍니다.
    감사합니다.

    MSDN Community Support Elin

     다른 커뮤니티 멤버에게 도움이 될 수 있게 문제를 해결 한 답변을 '답변으로 표시'를 클릭하시고 그렇지 않은 경우 '답변으로 표시 취소'를 클릭하시기 바랍니다. MSDN 서포트에 대한 의견이나 불만이 있을 경우 MSDNFSF@microsoft.com 으로 연락하시기 바랍니다.

    2022년 7월 29일 금요일 오전 8:46
    중재자
  • 답변 감사드립니다 그리고 추가 질문드립니다

    제가 테이블 확인을 직접할수 없는 상황이라 일단 사진은 아래 사이트 참조해주셔요

    https://blog.naver.com/hcy79/222838221344

    말씀하신 데이터는 MS SQL server database의 한 테이블 혹은 여러 테이블에 저장되었습니까?

     --> 테이블 하위 목록이 많은 거로 봤을때는 여러테이블로 저장이 된거같습니다

     
    삭제하려는 1년 전 데이터 테이블에 시간 열이 있나요? 시간 열이 없으면 1년 전 데이터 삭제가 불가능합니다.

      --> 제가 서버를 직접확인할수 있는 상황이 아니라서 아직 확인은 못했습니다

    SQL 서버 mdf 및 ldf의 크기를 줄이시겠습니까? 로그 파일을 축소하여 ldf의 크기를 줄일 수 있습니다.

      -->크기를 줄이는 방법좀 자세히 알려주세요

          크기를 줄이게 되면 서버 운용시에 문제 없을까요?

          크기를 줄인다는게.. 총 7년정도 쌓인 DB의 로그파일이 축소되는거 뿐인건가요?

          7년동안의 DB의 알람정도들도 그대로 보존 되는 건가요?

    답변부탁드립니다

    2022년 8월 3일 수요일 오전 1:02
  • 안녕하십니까,@ 머찐오빠 님
    >> SQL 서버 mdf 및 ldf의 크기를 줄이시겠습니까? 로그 파일을 축소하여 ldf의 크기를 줄일 수 있습니다.
    --> 크기를 줄이는 방법 좀 자세히 알려주세요.
    아래 단계에 따라 SQL Server 로그 파일을 축소하여 로그 파일의 크기를 줄이시길 바랍니다.
    1. 데이터베이스의 전체 백업 진행.
    2. Transaction log 백업 수행.
    Transaction log가 축소되기 전에 다중 transaction log 백업을 수행해야 하는 경우가 있습니다.
    3. 다음 T-SQL을 사용하여 transaction log 축소.

    DBCC SHRINKFILE (TestDB_log, 1)

    만약 Transaction log를 축소할 수 없는 경우, 다음 명령문을 실행하여 Transaction log를 축소할 수 없는 이유를 확인합니다.

    log_reuse_wait_desc FROM sys.databases WHERE name='<database name>' 선택

    결과가 NOTHING이 아닌 경우엔 해당 작업을 수행하세요. 그런 다음 2단계와 3단계를 다시 시도하시길 바랍니다.

    --> 크기를 줄이게 되면 서버 운용시에 문제 없을까요?
    --> 크기를 줄인다는 게.. 총 7년 정도 쌓인 DB의 로그파일이 축소되는 거뿐인 건가요?
    데이터 파일을 줄일 수도 있지만 데이터 파일을 축소하면 데이터 파일의 사용되지 않은 공간만 해제됩니다. 데이터 파일의 오래된 데이터는 삭제되지 않습니다. 따라서 서버 운용 시에도 문제없습니다.

    --> 7년 동안의 DB의 알람 정보들도 그대로 보존되는 건가요?
    알람 정보가 두 개의 알람 테이블(dbo.alarm2017 및 dbo.alramMask)에 저장되어 있나요? 그렇다면 데이터를 수동으로 삭제해야 할 것입니다. 이 경우 이 두 테이블에는 시간 열이 있어야 합니다.

    답변이 도움이 되였으면 합니다, 문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해 주시기 바랍니다.
    감사합니다.

    MSDN Community Support Elin

     다른 커뮤니티 멤버에게 도움이 될 수 있게 문제를 해결 한 답변을 '답변으로 표시'를 클릭하시고 그렇지 않은 경우 '답변으로 표시 취소'를 클릭하시기 바랍니다. MSDN 서포트에 대한 의견이나 불만이 있을 경우 MSDNFSF@microsoft.com 으로 연락하시기 바랍니다.

    2022년 8월 3일 수요일 오전 8:52
    중재자
  • 추가 문의 드립니다 위내용중에

    --> 크기를 줄이게 되면 서버 운용시에 문제 없을까요?

    --> 크기를 줄인다는 게.. 총 7년 정도 쌓인 DB의 로그파일이 축소되는 거뿐인 건가요?
    데이터 파일을 줄일 수도 있지만 데이터 파일을 축소하면 데이터 파일의 사용되지 않은 공간만 해제됩니다. 데이터 파일의 오래된 데이터는 삭제되지 않습니다. 따라서 서버 운용 시에도 문제없습니다.


    136기가 용량의 NMS_log.ldf  파일 크기를 줄이려고 하면 (실체 파일크기)

    DBCC SHRINKFILE (TestDB_log, 1)

    위 명령문으로 축소를 하라고 하셨는데요

    log가 1달마다 2기가 가량 계속 늘어나고 있는 상황이고요

    (SQL 메니지먼트 스튜디오 상에 64MB 단위로 무제한 자동증가가 되도록 설정됨)

    위내용처럼  Log가 계속 쌓여서 로그파일은 자동증가 옵션으로 

    매달 2~3기가 가량 계속 증가되고 있는 상황 입니다

    이런상황에서도 

    DBCC SHRINKFILE (TestDB_log, 1)

    이 명령문으로 파일 용량이 줄어들까요? 이명령문은 사용하지 않는 공간만 해제가 되서 실제

     NMS_log.ldf  파일 크기가 줄어들지 않을거 같습니다

    맞나요?

    아니면 해결방법이 있을까요?  


    • 편집됨 머찐오빠 2022년 10월 11일 화요일 오전 5:18
    2022년 10월 11일 화요일 오전 1:53
  • https://social.msdn.microsoft.com/forums/ko-KR/1a8d87eb-0fd4-4913-b20a-0a03a7dc7705/509524602050864-49436482602016-db5402851068?forum=sqlserversko&prof=required

    추가 문의 드립니다 위내용중에

    --> 크기를 줄이게 되면 서버 운용시에 문제 없을까요?

    --> 크기를 줄인다는 게.. 총 7년 정도 쌓인 DB의 로그파일이 축소되는 거뿐인 건가요?
    데이터 파일을 줄일 수도 있지만 데이터 파일을 축소하면 데이터 파일의 사용되지 않은 공간만 해제됩니다. 데이터 파일의 오래된 데이터는 삭제되지 않습니다. 따라서 서버 운용 시에도 문제없습니다.

    136기가 용량의 NMS_log.ldf  파일 크기를 줄이려고 하면 (실체 파일크기)

    DBCC SHRINKFILE (TestDB_log, 1)

    위 명령문으로 축소를 하라고 하셨는데요

    log DB가 1달마다 2기가 가량 계속 늘어나고 있는 상황이고요

    (SQL 메니지먼트 스튜디오 상에 64MB 단위로 무제한 자동증가가 되도록 설정됨)

    위내용처럼  Log DB가 계속 쌓여서 DB파일은 자동증가 옵션으로 

    매달 2~3기가 가량 계속 증가되고 있는 상황 입니다

    이런상황에서도 

    DBCC SHRINKFILE (TestDB_log, 1)

    이 명령문으로 파일 용량이 줄어들까요? 이명령문은 사용하지 않는 공간만 해제가 되서 실제

     NMS_log.ldf  파일 크기가 줄어들지 않을거 같습니다

    맞나요?

    아니면 해결방법이 있을까요?  

    2022년 10월 11일 화요일 오전 1:54
  • NMS_log.ldf    로그 파일은 트랜잭션 로그파일이고

    제가 관리하는 프로그램의 NMS_log.ldf    로그 파일은

    기존 log를 보존하지 않아도 되는 모니터용도의 로그입니다

    그러므로 기존에 7년간 쌓여있는 로그 내역이 없어도 상관 없습니다

    1년간의 로그만 남겨 두고 싶지만 수동으로 일일히 지우긴 어려우므로 완전 삭제가 되어도 됩니다

    보안 문제로 백업을 하기 어려운 환경이어서

    아래 명령문 처럼

    복구모델을 단순 모드로 설정한 후 로그 용량을 줄이고 다시 풀복구 모드로 설정하면

    기존로그는 모두 없어지고 새로 로그가 적용 되는 건가요?


    USE NMS; GO -- Truncate the log by changing the database recovery model to SIMPLE. ALTER DATABASE NMS SET RECOVERY SIMPLE; GO -- Shrink the truncated log file to 1 MB. DBCC SHRINKFILE (NMS_log, 1); GO -- Reset the database recovery model. ALTER DATABASE NMS SET RECOVERY FULL; GO


    위 명령문으로 적용하면 NMS_log.ldf 파일이 1kb 로 줄어 들까요?

    2022년 10월 11일 화요일 오전 5:33
  • 안녕하십니까,@ 머찐오빠 님
    피드백 주셔서 감사합니다.
    --> 기존 로그는 모두 없어지고 새로 로그가 적용되는 건가요?

    아니요.
    SQL 트랜잭션 로그 파일 축소 작업에서 SQL 트랜잭션 로그 파일의 물리적 크기를 줄이기 위해 모든 사용 가능한 VLF가 트랜잭션 로그 파일의 끝에서 할당 해제되고 운영 체제로 다시 반환됩니다. 축소 작업은 SQL 트랜잭션 로그 파일에 사용되지 않는 공간이 포함되어 있거나 많은 수의 트랜잭션 로그를 작성하는 데이터베이스 작업을 수행한 후에 도움이 됩니다. 전체 복구 모드에서는 로그가 잘리지 않습니다. 때문에 로그가 잘릴 수 있도록 백업 일정을 생성해야 합니다. 단순 복구 모드에서 SQL 트랜잭션 로그는 각 체크포인트 이후에 자동으로 잘립니다. 
    이것이 로그에 미치는 주요한 영향입니다.


    로그 증가에 대해서는 다음의 문서를 참고하기실 바랍니다 → 트랜잭션 로그 파일의 크기 관리
    이 문서에는 참조할 수 있는 몇 가지 제안 사항이 있습니다, 내용이 길어 포스팅하진 않겠습니다.

    답변이 도움이 되였으면 합니다, 문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해 주시기 바랍니다.
    감사합니다.

    MSDN Community Support Elin

     다른 커뮤니티 멤버에게 도움이 될 수 있게 문제를 해결 한 답변을 '답변으로 표시'를 클릭하시고 그렇지 않은 경우 '답변으로 표시 취소'를 클릭하시기 바랍니다. MSDN 서포트에 대한 의견이나 불만이 있을 경우 MSDNFSF@microsoft.com 으로 연락하시기 바랍니다.

    2022년 10월 11일 화요일 오전 9:59
    중재자