PostgreSQL initdb.exe 실행시 The program “postgres” is needed by initdb but was not found 오류

2월 4th, 2017 by atlantis

PostgreSQL 최초 설치시, initdb.exe 를 실행하면 아래와 같은 오류가 발생할수 있음.

The program “postgres” is needed by initdb but was not found in the
same directory as “D:\PostgreSQL\9.6\bin\initdb.exe”.
Check your installation.

=> 위 오류가 발생하는 이유는 initdb.exe 가 pgsql 이 존재하는 그리고 data 로 지정된 폴더에 대해서 Windows 권한을 체크하기 때문

그래서 현재 설치를 실행하는 Windows 계정명에 대해서, pgsql 폴더에 대해서 명시적으로 권한 설정을 해줘야 함.(Administrators 그룹에 들어가 있다고 해서 권한이 충분해서 되는것이 아니라, 명시적으로 계정명을 확인)

 

—– 정상적으로 권한이 확인되는 경우 —–

D:\PostgreSQL\9.6\bin>initdb.exe -U postgres -A password -W -E utf8 -D D:\PostgreSQL\9.6\data
이 데이터베이스 시스템에서 만들어지는 파일들은 그 소유주가 “Administrator” id로
지정될 것입니다. 또한 이 사용자는 서버 프로세스의 소유주가 됩니다.

데이터베이스 클러스터는 “Korean_Korea.949” 로케일으로 초기화될 것입니다.
initdb: “Korean_Korea.949” 로케일에 알맞은 전문검색 설정을 찾을 수 없음
기본 텍스트 검색 구성이 “simple”(으)로 설정됩니다.

자료 페이지 체크섬 기능 사용 하지 않음

새 superuser 암호를 입력하십시오:
암호 확인:

이미 있는 D:/PostgreSQL/9.6/data 디렉터리의 액세스 권한을 고치는 중 …완료
하위 디렉터리 만드는 중 …완료
max_connections 초기값을 선택하는 중 …100
기본 shared_buffers를 선택하는 중… 128MB
사용할 동적 공유 메모리 관리방식을 선택하는 중 … windows
환경설정 파일을 만드는 중 …완료
부트스트랩 스크립트 실행 중 … 완료
부트스트랩 다음 초기화 작업 중 … 완료
자료를 디스크에 동기화 하는 중 … 완료

작업완료. 이제 다음 명령을 이용해서 서버를 가동 할 수 있습니다:

    “pg_ctl” -D “D:\PostgreSQL\9.6\data” -l 로그파일 start

 

System.Security.Authentication.AuthenticationException: SSPI 예외

6월 17th, 2016 by atlantis

처리되지 않은 예외: System.Security.Authentication.AuthenticationException: SSPI를 호출하지 못했습니다. 내부 예외를 참조하십시오. —> System.ComponentModel.Win32Exception: 예기치 않은 메시지를 받았거나 메시지의 형식이 잘못되었습니다
  — 내부 예외 스택 추적의 끝 —
  위치: System.Net.Security.SslState.CheckThrow(Boolean authSucessCheck)
  위치: System.Net.Security.SslState.get_SecureStream()
  위치: System.Net.Security.SslStream.Write(Byte[] buffer)

 

=> 원인은, 서버쪽에 설정된 SSL 관련 암호화 모듈중에, “SSL” 버젼 또는 “Tls” 버젼 일부를 비활성화(또는 제거) 설정되어 있기 때문에 서버쪽에서 허용 가능한 “SslProtocols” 버젼을 설정해서 AuthenticateAsClient 인증을 받아야 함.

보안에 취약한 “SSL” 및 “Tls” 버젼을 제거하는 것이 권장되고 있으며, 설정이 적용된 지원하지 않는 서버들이 증가하고 있다.

참고 :
How to disable PCT 1.0, SSL 2.0, SSL 3.0, or TLS 1.0 in Internet Information Services
https://support.microsoft.com/en-us/kb/187498

 

 => 그러면,.  고정된 서버에 접근하지 않고 익명의 다중 원격 서버에 접근하는 경우, 지원 버젼을 매번 알아낼수가 없다. 그래서 아래와 같은 or 형태로 지정을 해준다.

 

sslStream.AuthenticateAsClient(_host, certcoll,  SslProtocols.Tls | SslProtocols.Tls11 | SslProtocols.Tls12, false);

 

 

커널 덤프

3월 18th, 2016 by atlantis

# 프로세스별 스레드/핸들수 확인 (비정상적으로 많은 경우)

# C:\Program Files\Support Tools>poolmon.exe -b   (Windows 2003 Support Tool 필요)
    https://www.microsoft.com/en-us/download/details.aspx?id=15326
# findstr /M /L [Tag] *.sys

# ProcessExplorer – View – System Information – Paged Limit
   C:\Program Files\Debugging Tools for Windows (x86)\dbghelp.dll
   srv*C:\symbols*http://msdl.microsoft.com/download/symbols

# 커널덤프생성
   https://technet.microsoft.com/en-us/sysinternals/bb897415.aspx
   libekd.exe (windbg폴더복사) -> yes 위치 c:\symbols
   kd> .dump /f /o d:\memory.dmp

Debugging Tools for Windows (x86) version 6.12.2.633 
Debugging Tools for Windows (x64) version 6.12.2.633

# Symbol (Microsoft):
srv*C:\symbols*http://msdl.microsoft.com/download/symbols 

!vm  – 메모리 확인, NonPaged Pool Usage / NonPaged Pool Max
!poolused /t 5 2  – 비페이지풀 목록 확인
!poolused 2 –  Sorting by NonPaged Pool Consumed
!process 0 0  – 전페 프로세스 확인 TableSize 큰것
!process 884e6520 4  – 특정 프로세스 thread  확인

# windbg 명령어
http://blogs.msdn.com/b/willy-peter_schaub/archive/2009/11/27/common-windbg-commands-reference.aspx