본문 바로가기

Database

(46)
[Greenplum] DBeaver 접속시 master-only utility mode FATAL 에러발생 Greenplum 을 접속하려고 했으나 master-only utility mode 라고 하면서 접속불가능한 상황발생 FATAL: System was started in master-only utility mode - only utility mode connections are allowed 에러원인은 Greenplum 을 Master 노드에서만 접속이 가능한 master only mode 로 시작을 하여 접속이 안되는 것이다. master 노드 - psql 로 접속하여도 DBeaver와 같은 메세지가 표시되면서 접속이 안된다. [gpadmin@mdw ~]$ psql -d postgres psql: FATAL: System was started in master-only utility mode - onl..
[Greenplum] 6.12.0 버전에서 PANIC 상황을 발생시키는 방법 Greenplum 6.12.0 버전에서 PANIC 상황을 발생시키는 방법 실제 운영 사이트에서 PANIC을 발생시키는 것은 말도 안되는 상황이지만 개발/테스트 환경에서는 여러가지 이유로 PANIC상황을 발생시키는 이유는 다양하다. PANIC상황을 발생시키는 이유 Pglog 에 PANIC 로그가 어떻게 남는지 확인 분석을 위한 코어덤프 파일이 생성되는지 테스트 장애환경발생시 대응방법 습득 실행환경 RedHat 7.5 Greenplum 6.12.0 Greenplum 6.14.0 에서 해결된 이슈(Resolved Issues) 30974를 참고하여 PANIC을 발생시켜보자. URL : https://gpdb.docs.pivotal.io/6-14/relnotes/gpdb-614-release-notes.html..
RefCursor를 이용하여 Multiple Results(다중 결과 데이터) Function 개발 Greenplum 또는 Postgresql 이용하여 Function 을 개발하다 보면 하나의 Function 을 실행했을때 다중 결과 데이터를 조회하고 싶을때 사용하는 것이 RefCursor 라는 기능이다. RefCursor 는 꼭 다중 결과 데이터를 조회할때만 사용하는 것이 아니라 동적쿼리를 만들어서 실행할 때도 사용하기도 한다. return query 를 사용하거나 새로운 DataType을 생성하여 return 형식을 고정하는 Function 은 동적쿼리를 생성하여 실행할 수 가 없기때문에 꼭 RefCursor를 이용한 Function 을 개발하여야 한다. Postgresql 9.4 - Cursor : https://www.postgresql.org/docs/9.4/plpgsql-cursors.htm..
[Greenplum] Function 개발 및 디버깅을 위한 RAISE 로깅 사용방법 Greenplum Function 을 개발하다보면 실행이력/에러내역등 로그를 남겨 확인해야 할 상황이 있을 것이다. 이럴때 사용하는 것이 RAISE 구문이며 DBeaver Tool을 사용하면 Output 창에 로그내용을 표시할 수 있어 Function 개발/디버깅이 용이하다. 그리고 리눅스 CLI 환경에서 psql 을 이용하여 Function 을 실행하면 표준출력으로 RAISE 구문의 내용이 표시되기 때문에 터미널 환경에서로 상황을 파악할 있다. (물론 Function 내에서 개발을 정상적으로 하였을때 상황이다.) 로그 레벨 정의 및 구문 참조 : https://www.postgresql.org/docs/9.4/plpgsql-errors-and-messages.html 0. 환경정보 Greenplum 6..
DBeaver 버전정보 규칙변경(7.3.5 -> 21.x.x) DBeaver 버전정보 규칙이 변경되었다. (https://github.com/dbeaver/dbeaver/releases/tag/21.0.0) We switched to calendar versioning: version 21.0 comes after 7.3. 7.3.5 버전이후로 21.x.x - 즉 년.x.x 으로 버전정보 규칙이 변경되었다. 21버전으로 오면서 대문이미지 변경 말고는 큰 변화는 없는 것 같다.
[Greenplum/Postgresql] DO SQL명령어 사용법 Greenplum/Postgresql 를 이용하여 Function 을 개발/테스트할때 Function 문법/기능을 확인하고 싶을때가 있다. Function 을 생성하고 테스트한 뒤 Function 을 삭제하는 것은 너무 비효율적이며 이런 상황에서 사용하는 것이 DO 기능/SQL명령어이다. DO 는 Parameter가 없고 return void 방식의 임시 Function 이라고 생각하면 될 것 같다. 참고사이트 Postgresql 공식사이트 참고 - https://www.postgresql.org/docs/9.4/sql-do.html Tanzu Greenplum 공식사이트 참고 - https://gpdb.docs.pivotal.io/6-16/ref_guide/sql_commands/DO.html 0. 환..
Greenplum 테이블의 분산키를 변경하는 방법 Greenplum의 분산키를 적용한 테이블을 운영하다 보면 예상과 달리 분산도가 안좋게 데이터가 쌓이고 있는 경우가 발생한다. Greenplum은 노드의 인스턴스들의 데이터가 균등하여야 성능을 최대치로 활용할 수 있도록 설계되어 있기 때문에 분산키를 재조정하여 세그먼트 인스턴스에 데이터를 골고루 분배하도록 하자. 0. 분산도 확인 -- gp_segment_id 로 확인 select gp_segment_id , count(*) as cnt from 스키마.테이블 group by gp_segment_id order by gp_segment_id -- 노드 hostname 으로 확인 select b.hostname , count(*) as cnt from 스키마.테이블 a , pg_catalog.gp_segm..
postgresql/greenplum uptime을 to_char 함수로 보기편하게 변경하기 현재 서비스중인 postgresql/greenplum 을 현재 구동되었는지 확인할때 사용하는 개념이 uptime 이고 함수는 pg_postmaster_start_time() 를 이용하면 쉽게 확인할 수 있다. -- postgresql/greenplum start_time select pg_postmaster_start_time() -- postgresql/greenplum uptime select current_timestamp - pg_postmaster_start_time() as uptime 하지만 분초단위의 데이터가 표시되어 보기가 불편하다. to_char 함수를 이용하여 보기편하게 변경해보자. -- postgresql/greenplum uptime - to_char 를 이용 select to_c..