MSSQL 로그 파일 용량 줄이는 방법

개발용 MSSQL 서버를 사용하면서 로그 파일 용량이 점점 늘어갔다. 평소에는 별 상관 없는데 데이터베이스를 복사 떠가려고 하거나 백업할 때마다 엄청나게 많은 시간이 소요되니… 로그 파일이 무려 3기가가 넘었다. 그래서 로그 파일 용량을 줄였다. 데이터베이스 속성을 보면 다음과 같이 크기가 엄청나게 크다.

다음의 코드를 입력한다.

USE GameDB
SELECT DATABASEPROPERTYEX('GameDB', 'Recovery');
ALTER DATABASE GameDB SET RECOVERY SIMPLE
DBCC SHRINKFILE (GameDB_New_log, 10)
ALTER DATABASE GameDB SET RECOVERY FULL

쿼리 실행시 해당하는 데이터베이스에 가서 실행해야 하므로 USE를 한번 써준다. GameDB는 사용하는 데이터베이스 이름, GameDB_New_log는 로그 파일의 논리적 이름을 써주면 된다.

쿼리를 실행하면 몇초 걸리지 않고 굉장히 빨리 처리된다.

다시 데이터베이스 속성을 열어보면 다음과 같이 로그 파일 크기가 줄어있다.

CentOS에 FreeTDS 설치하기

Step 1. 소스 다운로드

http://www.freetds.org 에서 FreeTDS 소스를 받는다.

Step 2. 압축 해제

다음의 명령으로 압축을 푼다.

gunzip freetds-stable.tgz

압축을 풀면 tar 파일이 하나 나온다. tar xvf 명령으로 압축을 해제한다.

tar xvf freetds-stable.tar

Step 3. 컴파일

압축 해제가 되면 freetds 폴더가 나오는데 여기에 들어가서 컴파일을 시작한다. configure / make / make install 명령으로 실행한다. 난 소스 설치할 때 위치를 지정해서 설치하는 편이라 –prefix 로 위치를 지정했다.

[dongbum@localhost freetds-0.91]$ ./configure --prefix=/usr/local/FreeTDS --enable-msdblib
[dongbum@localhost freetds-0.91]$ make
[dongbum@localhost freetds-0.91]$ make install

실행을 다 하고 나면 /usr/local/FreeTDS 에 freetds 관련 파일들이 설치된다.

Step 4. 라이브러리 파일 경로 설정

/etc/profile 에 LD_LIBRARY_PATH에 freetds의 라이브러리 파일들을 연결해준다. /etc/profile 파일을 vi로 연다음 다음처럼 추가한다.

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/FreeTDS/lib

설정이 적용되도록 재부팅을 한번 해준다.

Step 5. odbc.ini 파일 수정

/etc/odbc.ini 파일에 내가 사용할 DB의 이름을 설정해준다. 내 경우에는 freetds 외에도 sqlite 설정도 같이 추가하였다.

[dongbum@localhost log]$ cat /etc/odbc.ini
[111.222.333.444]
Driver = FreeTDS
Description = 111.222.333.444
Trace = No
Servername = 111.222.333.444
Database = 기본DB이름

[TEST_SQLITE3]
Description = TEST SQLITE
Driver = SQLite
Database = /test/sqlite/test_sqlite.db
StepAPI = NO

Step 6. odbcinst.ini 파일 수정

/etc/odbcinst.ini 파일에도 다음과 같은 설정을 추가해준다. 역시 SQLite를 사용하기 위한 설정도 추가하였다.

[FreeTDS]
Description = v0.64 with protocol v4.2
Driver = /usr/lib64/libtdsodbc.so
UsageCount = 5

[SQLite]
Description = ODBC for SQLite
Driver = /usr/local/lib/libsqlite3odbc.so
Setup = /usr/local/lib/libsqlite3odbc.so
FileUsage = 1
CPTimeout =
CPReuse =

/usr/lib64/libtdsodbc.so 파일은 /usr/local/FreeTDS/lib/libtdsodbc.so 파일을 향하도록 심볼릭링크를 걸어준다.

Step 7. freetds.conf 파일 수정

마지막으로 freetds.conf 파일을 수정해준다. 난 /usr/local/FreeTDS에 설치하였으므로 /usr/local/FreeTDS/etc/freetds.conf 파일을 수정해주면 된다.

[global] 섹션에

client charset = EUCKR
text size = 4290000000
tds version = 4.2

를 추가한다. 캐릭터셋과 tds 버전 등을 지정하는 문구 같은데 이 옵션에 대해 정확히는 나도 잘 모르겠다. 그리고 아까 추가한 서버이름을 그대로 추가해준다.

[111.222.333.444]
host = 111.222.333.444
port = 1433
tds version = 8.0

여기까지 다 설정하고나면 FreeTDS 사용이 가능하다.

리눅스에서 MSSQL 접속이 쉬운게 아니란걸 다시 한번 느낀다.

MSSQL JDBC 버전별 다운로드 방법

요즘은 C와 윈도우프로그래밍을 하며 MSSQL을 좀 보고 있는 중이다.

어찌어찌하다보니 MSSQL의 데이터를 어떻게 웹에서 표현할까 생각해보다가 JSP에서 한번 보여줄 방법이 없나 찾아보았다.

PHP는 MSSQL 연결 모듈이 따로 있다. 내 서버의 CentOS에서는 PHP 패키지 버전이 5.3 버전이 되면서 레포지토리에서 제거되었다. (리눅스에서 MSSQL을 쓸일이 없을거라 생각해서 그런거였는지는 모르겠지만.)

어찌됐던 JSP에서 MSSQL에 접근하려면 JDBC 드라이버가 필요하다. ODBC나 아니면 다른 데이터베이스 연결방법이 있겠지만 역시나 제일 일반적인 방법이 JDBC일테고 나 역시도 JDBC에 익숙하니까. 어찌됐던 MSSQL용 JDBC 드라이버를 찾기 위해 검색해보았다.

…찾기 어렵다. 젠장.

네이버에서 찾아본 결과 예전 버전 JDBC만 자꾸 검색되었다.

마이크로소프트에서 찾아봤더니 너무 찾기 짜증났다. SQL 서버 홈페이지에서도 찾기 힘들고… 마이크로소프트 웹사이트는 검색하기도 힘들고 내가 원하는 검색결과가 잘 나오지도 않는다. 마이크로소프트 웹사이트는 검색기능을 좀 어떻게 바꿔줬으면 하는 생각이 참 크다.

나중에라도 다시 필요할까봐, 그리고 누군가가 필요할까봐 여기에 적어둔다.

당연하겠지만 각 드라이버 버전별로 지원하는 MSSQL 서버 버전이 다르다. 해당하는 웹페이지에 가서 맞는 버전으로 받아야한다.

내 윈도우 서버의 경우에는 MSSQL 2012 버전을 사용 중이라 4.0 버전을 받아서 사용해야할 것 같다.

아직 사용해본 것은 아닌지라 사용방법이나 사용기는 나중에.