1. 현재 논리적 이름 확인 

 

USE master;
GO
SELECT
    name AS LogicalName,
    physical_name AS PhysicalPath,
    type_desc AS FileType
FROM sys.master_files
WHERE database_id = DB_ID('[DB명]');

 

 

2. MODIFY로 파일명 변경

Alter Database [논리적이름] Set Offline;

--해당 DB의 파일복사(변경할 이름으로)

Alter Database [논리적이름] Set Online;

Alter Database [DB명] Modify File (Name = [논리적이름], FileName = '[물리적파일경로]');
Alter Database [DB명] Modify File (Name = [논리적이름(Log)], FileName = '[물리적파일경로(Log)]');

 

USE TASDBGS; 
-- 사용할 DB 선택
 
ALTER DATABASE TASDBGS SET RECOVERY SIMPLE; 
-- DB 복구 모델을 SIMPLE로 설정하여 파일을 비운다.
 
DBCC SHRINKDATABASE(TASDBGS);
-- DB의 필요 없는 공간을 축소
 
ALTER DATABASE TASDBGS SET RECOVERY FULL;
-- DB 복구 모델을 FULL 로 설정

'IT > SQL' 카테고리의 다른 글

[Oracle SQL]  (0) 2023.08.30
Oracle SQL  (0) 2023.08.30

보안이나 특정 상황에 의해서 외부망에 연결하지 않는 내부 서버들이 있습니다. 이럴 경우 시간 동기화에 문제가 발생할 수 있는데 윈도우 NTP 서버 / 클라이언트 기능을 이용하여 위 문제를 해결할 수 있습니다. 하지만 이 해결 방법은 하나의 인터넷에 연결된 서버가 같은 망에 적어도 1개는 존재해야 가능합니다.

 

구성은 아래와 같습니다. 외부망과 연결된 서버는 time.windows.com 같은 Time Server와 시간을 동기화 해주고 그 동기화 된 시간을 내부서버가 Windows NTP 기능을 이용해 다시 동기화 합니다.

 

먼저 외부와 연결된 서버에 설정을 해줍니다.

 

[Windows 방화벽] > [고급 설정] > [인바인드 규칙] > [새 규칙] 으로 들어가 규칙을 추가합니다.

NTP의 경우 123번 포트 사용합니다.

[Win] + [R] 으로 실행을 실행해서 gpedit.msc를 입력해 로컬 그룹 정책 편집기를 실행합니다.

[컴퓨터 구성] > [관리 템플릿] > [시스템] > [Windows 시간 서비스] > [시간 공급자] > [Windows NTP 서버 사용]을 사용으로 바꿔줍니다.

[Windows 시간 서비스] > [글로벌 구성 설정] 에서 AnnounceFlags를 5로 설정합니다.

실행에서 services.msc을 입력해 서비스를 실행합니다.

Windows Time을 클릭 후 시작 유형을 자동으로 바꾼 후 시작을 눌러줍니다.

다음으로 내부 서버 설정입니다.

 

실행에서 regedit.exe를 입력해 레지스트리 편집기를 실행 후 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient\SpecialPollInterval 값을 원하시는 동기화 주기로 입력합니다. (초 단위)

실행에서 services.msc를 입력해 서비스를 실행 후 Windows Time의 시작 유형을 자동(지연된 시작)으로 설정 후 시작합니다.

마지막으로 Windows 시간에서 [날짜 및 시간 설정 변경] > [날짜 및 시간] > [인터넷 시간] > [설정 변경]을 클릭합니다.

이제 설정한 서버의 IP를 입력 후 지금 업데이트를 통해 테스트 후 확인을 눌러 설정을 마무리 합니다.

 

프로젝트를 진행하다 보면 컴퓨터 부팅을 하면 자동으로 프로그램이 켜지게 설정을 하는데

 

MS-SQL이 늦게 켜지면 DB 연결 에러가 발생하는 경우가 종종 생긴다....

 

 

아래 코드는 Spring boot 실행 예시입니다.


 

@echo off

cd 파일경로

:CHECK_SQL_SERVER
sc query "서비스 이름" | findstr /i "RUNNING" >nul
if %errorlevel% neq 0 (
    echo SQL Server가 실행 중이 아닙니다. 10초 후 다시 확인합니다.
    timeout /t 10 /nobreak >nul
    goto CHECK_SQL_SERVER
)

echo SQL Server가 실행 중입니다. Spring Boot 애플리케이션을 시작합니다.
java -jar web-0.0.1-SNAPSHOT.jar

 

java -jar web-0.0.1-SNAPSHOT.jar 대신에 start "C:\Program Files\SomeApp\app.exe" 이와같이 응용프로그램 경로를 쓰게되면 Kepware와 같은 프로그램도 사용할 수 있게 된다.


@echo off

cd C:\Users\jinseunghyun\Desktop\CJ_YS_Premix 배포\Backend

:CHECK_SQL_SERVER
sc query "MSSQL$SQLEXPRESS01" | findstr /i "RUNNING" >nul
if %errorlevel% neq 0 (
    echo SQL Server가 실행 중이 아닙니다. 10초 후 다시 확인합니다.
    timeout /t 10 /nobreak >nul
    goto CHECK_SQL_SERVER
)

echo SQL Server가 실행 중입니다. Spring Boot 애플리케이션을 시작합니다.
java -jar web-0.0.1-SNAPSHOT.jar

 

위에 코드는 예시 코드입니다.

 

해당 소스코드를 메모장에 붙여넣고, 파일경로, 서비스 이름을 수정하고 .bat 확장자로 다른이름 저장하면 실행할 수 있게 됩니다.

조치사항

1. MS-SQL 메모리 할당

2. NDU 기능 OFF

3. Memory Compression Disable


1. MS-SQL 메모리 할당

현상 분석

1.DB 서버의 전체 용량은 16GB였으며, 점검 당시 약 15GB 의 메모리를 SQL Server에서 독점하고 있었다.

2.SQLServer 내 최대 메모리 설정은 10350MB로 설정되어 있었다. 

1) 최대 메모리 설정을 10G로 했는데, 왜 이를 넘어섰을까?

최대 메모리 설정을 해 두어도, SQL Server는 그 외의 메모리 (worker thread 메모리, 확장 저장 프로시저 등)을 사용한다고 한다. 이러한 메모리 때문에 10G로 설정했음에도 15G 이상을 MSSQL이 사용하고 있던 것이다.

 

2) 왜 최대 메모리까지 쓰는데 정상인걸까?

이건 MSSQL의 특성 때문인데,

MSSQL은 메모리를 한 번 점유하면 OS가 요청하지 않는 한 거의 메모리 반환을 하지 않는다고 한다.

(쿼리의 재사용성을 위해서)

따라서 메모리를 쓰는 만큼 계속 차오르고, 다 쓴 메모리를 반환하지 않으니 늘 최대치까지 차 있는 것으로 보인다.

하지만 이는 잘 돌아가고 있는 상태라고 한다. (메모리 부족 에러가 나지 않는다면!)

이걸 굳이 내려주려면 DB서버 재부팅을 시켜주라고 한다. 하지만 그렇게 내려준다고 하더라도 어짜피 다시 찰것이다.

 

변경 방법

변경 방법은 간단하며, 시스템 재시작도 필요하지 않다.

 

1.SQL Server에서 루트를 우클릭 > 속성(Properties)클릭

2.왼쪽 페이지 선택 > 메모리 > 서버 메모리 옵션 > 최대 서버 메모리 설정 (MB단위)

 

결과

내려서 적용하자 마자 메모리가 쭉 내려갔다. 하지만 적용해 준 메모리가 최적의 메모리가 아닐 수 있다.

지속적인 모니터링 후 적정 값을 조절할 필요가 있다.

 


 

2. NDU(Windows Network Data Usage Monitoring Driver) 기능 OFF

  • win+R (실행창) - "regedit"
  • HKEY_LOCAL_MACHINE₩SYSTEM₩ControlSet001₩Services₩Ndu

 

  • start 값을 2 -> 4로 바꾼다.

 

  • 재부팅하면 끝.

3. Memory Compression Disable

 

  • Windows PowerShell 검색 후 '관리자 권한'으로 실행

 

  • MMAgent 를 입력해서 현재상태를 확인한다.

.

메모리압축 비활성

Disable-MMAgent -MemoryCompression

 

메모리압축 활성(원상 복구시)

Disable-MMAgent -MemoryCompression

 


4. Mem Reduct 프로그램 사용

Mem Reduct.zip
0.21MB

 

프로그램 실행 후 

 

'설정' - '메모리 정리'

다음 그림과 같이 설정해 주면 된다.

 

'IT > 🚨Error🚨' 카테고리의 다른 글

[🚨Error] Scanner 사용시 nextInt 뒤에 nextLine 생략됨!  (4) 2023.06.29

 

 기능 : 분산형 버전 관리 시스템의 한 종류이다.

  • 버전 관리란?
    • 각 파일을 이전 상태로 되돌릴 수 있다.
    • 프로젝트를 통째로 이전 상태로 되돌릴 수 있다.
    • 시간에 따라 수정 내용을 비교해 볼 수 있다.
    • 누가 문제를 일으켰는지도 추적할 수 있다.
    • 누가 언제 만들어낸 이슈인지도 알 수 있다.
    • 파일을 잃어버리거나 잘못 고쳤을 때도 쉽게 복구할 수 있다.


세 가지 상태

Git은 파일을 Committed, Modified, Staged 이렇게 세 가지 상태로 관리합니다.

  • Committed : 데이터가 로컬 데이터베이스에 안전하게 저장됐다는 것을 의미합니다.
  • Modified : 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 것을 말합니다.
  • Staged : 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태를 의미합니다.

이 세 가지 상태는 Git 프로젝트의 세 가지 단계와 연결돼 있습니다. Git directory, Working Tree, Staging Area 단계가 있습니다. 

 

Git directory 는 Git이 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳을 말합니다. 이 Git 디렉토리가 Git의 핵심입니다. 다른 컴퓨터에 있는 저장소를 Clone 할 때 Git 디렉토리가 만들어집니다.

 

Working Tree 는 프로젝트의 특정 버전을 Checkout 한 것입니다. Git 디렉토리는 지금 작업하는 디스크에 있고 그 디렉토리 안에 압축된 데이터베이스에서 파일을 가져와서 워킹 트리를 만듭니다.

 

Staging Area 는 Git 디렉토리에 있습니다. 단순한 파일이고 곧 커밋할 파일에 대한 정보를 저장합니다. Git에서는 기술용어로는 “Index” 라고 하지만, “Staging Area” 라는 용어를 써도 상관없습니다.

 

Git으로 하는 일은 기본적으로 아래와 같습니다.

 

  1. Working Tree 에서 파일을 수정합니다.
  2. Staging Area 에 파일을 Stage 해서 커밋할 스냅샷을 만든다. 모든 파일을 추가할 수도 있고 선택하여 추가할 수도 있습니다.
  3. Staging Area 에 있는 파일들을 커밋해서 Git 디렉토리에 영구적인 스냅샷으로 저장합니다.

 

Git directory 에 있는 파일들은 Committed 상태입니다. 파일을 수정하고 Staging Area에 추가했다면 Staged입니다. 그리고 Checkout 하고 나서 수정했지만, 아직 Staging Area에 추가하지 않았으면 Modified입니다. 


설치 방법

Linux에 설치

 

Fedora에서  'dnf'

sudo dnf install git-all

 

Ubuntu등 데비안 계열 'apt'

sudo apt install git-all

 

Mac에 설치

 

  • Terminal에 'git' 입력
  • Homebrew가 설치돼있으면 아래 코드를 입력하면 된다.
brew install git

 

Windows에 설치

 

Git - Downloading Package (git-scm.com)

 

Git - Downloading Package

Download for Windows Click here to download the latest (2.43.0) 32-bit version of Git for Windows. This is the most recent maintained build. It was released 2 months ago, on 2023-11-20. Other Git for Windows downloads Standalone Installer 32-bit Git for Wi

git-scm.com


초기 설정

Git을 설치하고 나서 가장 먼저 해야 하는 것은 사용자이름이메일 주소를 설정하는 것이다. Git은 커밋할 때마다 이 정보를 사용한다.

 

시작 - git폴더 - Git Bash 실행

 

 

아래와 같이 콘솔창이 나오면 정상실행 완료!

 

사용자 정보

 

git config --global user.email "you@example.com"

 

git config --global user.name "Your Name"

 

위에 쓰인 you@example.com, Your Name 부분을 본인 이메일, 이름으로 수정해서 Enter를 해주면 된다.


시작하기

  •  git init 를 터미널에 쳐서 .git이라는 폴더 만든다.
  • git 명령어:
    - git status // 상태 파악
     - git status --short // 혹은 -s하면 짧게 볼 수 있음 (-- 를 앞에 붙이면 전체 단어를 씀)


- git add 파일명 // (ex. basic.html)을 하면 index에 올라온 상태
   git add . // (.은 해당폴더)(*은 전체폴더) 현재 폴더에 있는 모든 것을 업로드한다는 뜻

- git commit // 터미널에서 commit하기 (commit창 뜨고 간단한 메모 쓰고 끄면 저장됨)
  git commit -m "n 번째 커밋입니다." // 커맨드 창에서 바로 메모 쓰고 commit할 수 있는 기능, 창 안뜸
   git commit -am "n 번째 커밋입니다." // add하면서 바로 commit까지 하기
  (※ 만약, git commit시 터미널에서 하라고 나오면 내용 간단하게 쓰고, 맨 밑에 :q하면 그냥 꺼짐, :wq누르면 저장하고 꺼짐)

- git log // 커밋 기록 확인할 수 있음
  git log --oneline // 로그 간단하게 보여줌 한 줄씩
   git log --graph // 간단하게 디렉토리를 표시해줌
   (근데 Extensions에서 git graph 찾아서 설치하고 Source control에서 누르면 더 가시적으로 볼 수 있음)


- git --help // 간단한 명령어들 알려줌

**저장된 기록을 되돌릴 수 있는 방법(stage->work tree)

1. add // 스테이지로 올린다
- git add . // 


2. restore // 스테이지에 올라와 있는 것을 취소한 방법
- git restore --staged 파일명 // stage에 올라간 파일 다시 내릴 수 있음


3. - git diff --staged // 뭐가 변경되었는지 확인할 수 있다.


** 저장한 기록을 되돌릴 수 있는 방법(commit -> stage) // 반드시, commit이 된 상태로 움직여야 함, 무조건 commit 먼저 하기)
// 마스터(혹은 메인이라고도 함)가 항상 기본이라고 생각해야 함

1. reset // 버전기록을 삭제하는 방법, 파일은 남아있음
- git reset 예전버전의 해시값 // 7글자 적어준 코드의 위부터 저장하고 commit된 버전이 없어짐(7글자 코드까지만 저장됨)


2. revert // reset과는 다르게 이전 기록들이 남으면서 새로운 버전이 됨 (버전을 rollback) 
- git revert  


3. branch // resvrt와는 달리 되돌아가지만 새로운 브랜치가 생성됨, 이전 기록들 남음

- git checkout 해시값 // git log --oneline에서 나오는 7글자(=해시값) 원하는 버전에 왔다갔다 할 수 있음
   git checkout - // 다시 원래의 마지막 상태로 돌아감
  git checkout HEAD // ????

- git swith -c 새로운브랜치이름 // checkout의 역할이 너무 많아지면서 새로 생긴 기능, 브랜치를 만들면서 바로 이동 가능(c의 뜻은 creat)

- git branch 이름설정 // 브랜치 만들기


- git branch // 현재 생성되어 있는 브랜치들 확인, 여기서 checkout해서 원하는 브랜치로 이동할 수 있음
   git branch 원래이름 바꾸고싶은이름 // 기 설정된 브랜치 이름 바꿀 수 있음

- git show 7글자 // 바꾼 내용 보여줌

* HEAD // 꼬리표 개념, 현재 내가 있는 위치를 가리킨다.

 

 

'IT > Git & Github' 카테고리의 다른 글

[Git 오류] warning: LF will be replaced by CRLF  (0) 2023.06.25
Git 브랜치  (0) 2023.06.04
Git 명령어 3  (0) 2023.06.04
Git 명령어 2  (0) 2023.06.01
Git 명령어 1  (0) 2023.06.01

+ Recent posts