[Tibero] java.sql.SQLException: JDBC-5072, 티베로 버그

IT_Engineer/Data Base|2022. 3. 1. 18:33
728x90

DROP TABLE로 테스트 용 테이블들을 정리하는 중

 

한 테이블을 DROP 하려고 하니, 아래와 같은 에러가 발생했다.

 

[18:14:20.215]java.sql.SQLException: JDBC-5072:Failure converting NUMBER to or from a native type.

 

뭐지???? 처음보는 에러에 살짝 당황스러워서 검색해보니, 티베로 버그인 듯 하다.

ROW COUNT가 NULL이 되면서 생긴 에러 같은데,
해당 계정의 테이블에 대해서만 ROW COUNT가 NULL인 OBJECT ID를 조회하니 나는 안 되더라,,
일단 해당 전체 테이블 대상으로 OBJECT ID가 안 나오길래 전체 테이블에서 에러가 되는 요인을 찾기로 했다.

  1. TIBERO 접속
    - 리눅스 : tbsql sys/tibero
    - TB STUDIO / TBADMIN 등 유틸 사용하는 경우 : DBA계정으로 접속

   2. ROW COUNT가 NULL인 OBJECT ID 검색

select a.object_id from dba_objects a, (select obj_id, row_cnt from sys._dd_tbl ) b where a.object_id= b.obj_id and b.row_cnt is null;

   3. 해당되는 OBJECT_ID들 UPDATE

update sys._dd_tbl set row_cnt = 0 where obj_id in ( select a.object_id from dba_objects a, (select obj_id, row_cnt from sys._dd_tbl ) b where a.object_id= b.obj_id and b.row_cnt is null);

   4. 다시 한 번 에러 났던 테이블에 대해서

DROP TABLE {테이블 이름};

 

728x90

댓글()

[Tibero] 티베로 설치 및 DB 생성 예시

IT_Engineer/Data Base|2020. 10. 28. 09:00
728x90

! 기초 구축 환경

 - VM 접속 정보 : CentOS 7 64bit VM 사용

 

! 구축 내용

  1. Tibero 데모 라이선스 발급
  2. 준비된 VM 환경에서 CentOS 기반으로 Tibero 설치 및 테스트

1. Tibero Binary 다운로드 및 Technet (테크넷) 데모 라이선스 발급

! TechNet 에서 Tibero Binary 다운로드

  • TechNet 가입 및 로그인 (https://technet.tmaxsoft.com/)
  • TechNet > 다운로드 > 데이터베이스 > Tibero > Tibero6
  • Tibero6 > 다운로드 > Linux > Linux(x86) 64-bit > 463.08MB 크기 파일 다운로드

TechNet 바이너리 다운로드 화면

 

다운로드 버튼 클릭 클릭!!
linux64(tibero6-bin-FS07_CS_19-12-linux-64~.tar.gz) tar파일 다운로드

 

! 데모 라이선스 발급

  • HostName은 커널에서 uname n 명령어 확인 후 동일하게 작성
  • 제출하기 클릭 후 메일확인하여 첨부파일 xml
  • 파일질라를 통해 디렉토리 license로 보내기

TechNet 홈페이지 화면에서 데모 라이선스 신청 고고!
데모라이선스 발급 신청서 작성 후 제출


2. Tibero6 설치를 위한 환경 설정

! JDK 5.0 이상 설치

  • 설치 가능 확인 및 1.8버전 설치
# 설치 가능 리스트 확인
yum list java*jdk-devel 

# 
위 리스트 중 1.8.0 버전 설치
yum install java-1.8.0-openjdk-devel.x86_64 

# jdk 설치 확인 
rpm
qa java*jdk-devel 

# 설치된 버전 확인 ( 제대로 설치 되었다면, javac 1.8.0_101 라고 뜸)
javac
version 

! 커널 파라미터 설정

  • Linux 커널 파라미터 설정

  • kernel parameter 동적 변경 > kernel이 살아있는 동안만 변경 (일시적)

 

 

#커널 파라미너 확인
sysctl
확인 변경
sysctl -a | grep sem sysctl -w kernel.sem="10000 32000 10000 10000"
sysctl -a | grep shmmax sysctl -w kernel.shmmax=4090912768
sysctl -a | grep file-max sysctl -w fs.file-max=65536
sysctl -a | grep shmall sysctl -w kernel.shmall=2097152
sysctl -a | grep shmmni sysctl w kernel.shmmni=4096 #물리 메모리의 1/2
sysctl-a | grep ip_local_port_range sysctl-w net.ipv4.ip_local_port_range =“1024 65000”

 

  • 이후 nomount 모드로 변경할 때, kernel parameterVM 환경이 맞아야 동작
    ( top 명령어로 환경 확인해서 kernel.shmmni 를 물리 메모리의 1/2로 맞추기!)
  • kernel parameter 정적 변경 > 영구적인 변경
#시스템 환경파일을 vi 에디터로 편집
vi /etc/sysctl.conf

#kernel parameter 항목을 sysctl.conf 파일에 추가
#kernel.shmmax 값은 free kb로 확인한 memtotal 값의 1/2로 설정
fs.file-max = 65536kernel.sem = 10000 32000 10000 10000kernel.shmmax = 4090912768

#sysctl.conf
에 추가한 후 sysctl p 명령으로 동적 적용 가능

 

3. 호스트명/ 포트/ 계정 설정

! 호스트명과 포트 번호, 시스템 계정 확인

  • 라이선스를 요청할 때
uname n # 호스트 명 확인 > tibero6 라이선스 발급 시 필요!

 

  • 포트 번호 : Tibero 가 가동할 때 부여될 포트 번호 확인

 

  • 그룹 및 사용자 생성
groupadd dba #dba 이름의 그룹 추가
useradd md /home/tibero6 g dba p tibero s /bin/bash tibero6
# 기본 디렉토리를 /home/tibero6로 만들고(-md), dba그룹의(-g),
tibero라는 비밀번호로(-p), /bin/bash(-s) tibero6(맨 마지막)라는 사용자 생성

 

  • 사용자 환경변수 설정
    - 사용자 계정 홈 디렉토리에 있는 환경 파일 수정
# tibero6 계정으로 접속
su
tibero6 

 # 디렉토리 내 파일 확인
ls
al


# bash shell일 경우 .bash_profile로 환경파일 수정
# ---- vi.bash_profile 하단부터 #bash_profile 적용 전까지 수정 내용 -----

vi .bash_profile 


### JAVA ENV ###
export JAVA_HOME=/usr/java6
export JDK_HOME=$JAVA_HOME
export PATH=$JAVA_HOME/bin:/usr/local/bin:$PATH

######## TIBERO ENV ########
export TB_HOME=/home/tibero6/tibero6
export TB_SID=t6
export TB_PROF_DIR=$TB_HOME/bin/prof
export PATH=.:$TB_HOME/bin:$TB_HOME/client/bin:~/tbinary/monitor:$PATH
export LD_LIBRARY_PATH=$TB_HOME/lib:$TB_HOME/client/lib:$LD_LIBRARY_PATH
export SHLIB_PATH=$LD_LIBRARY_PATH:$SHLIB_PATH
export LIBPATH=$LD_LIBRARY_PATH:$LIBPATH

######## TIBERO alias ######## (alias는 안해도 됨!)
alias tbhome='cd $TB_HOME'
alias tbbin='cd $TB_HOME/bin'
alias tblog='cd $TB_HOME/instance/$TB_SID/log'
alias tbcfg='cd $TB_HOME/config'
alias tbcfgv='vi $TB_HOME/config/$TB_SID.tip'
alias tbcli='cd ${TB_HOME}/client/config'
alias tbcliv='vi ${TB_HOME}/client/config/tbdsn.tbr'
alias tbcliv='vi ${TB_HOME}/client/config/tbnet_alias.tbr'
alias tbdata='cd $TB_HOME/tbdata'
alias tbi='cd ~/tbinary'
alias clean='tbdown clean'
alias dba='tbsql sys/tibero'
alias tm='cd ~/tbinary/monitor;monitor;cd -'


# bash_profile 적용
. .bash_profile 

#티베로 계정으로 접속

echo $TB_HOME 

 

! Tibero Binary 업로드 및 설치

  • FileZilla를 통한 이동

 

  • shell에서 tibero6 디렉토리 접속 후 알집 풀기
# home/tibero6 디렉토리에 접속
cd /home/tibero6 

#알집 풀기
tar
xvzf tibero6-bin-FS07_CS_1912-linux64-174424-opt.tar.gz

 

  • License xml파일 업로드
    - hostname에 맞는 license.xml 파일을 발급 후 $TB_HOME/license 디렉토리 생성 후 FileZilla를 통한 이동

 

! 초기 환경파일 생성

  • $TB_SID.tip 파일 생성: Tibero 파라미터 파일
  • tbdsn.tbr 파일 생성 : Tibero Client 접속 설정 파일
  • psm_commands 파일 생성 : psm compile을 위한 command 파일 생성
cd $TB_HOME/config
./gen_tip.sh

 

! Tibero 파라미터 파일($TB_HOME/config/$TB_SID.tip) 수정 _ 생략

  • exit > root 계정에서 free kb 명령어(물리 메모리 byte 단위로 보는 명령어) ,
  • 물리 메모리를 확인 후 위에 설정한 config 상태의 2배가 맞는지 확인

  • Memtotal 확인 : 8181825536 이므로 kernel.shmmax = 4090912768

4. Tibero 데이터베이스 생성

  • Tiberonomount 모드로 부팅 및 system 유저로 접속
tbboot nomount # nomount(Tibero의 프로세스만 기동하는 모드) 모드로 부팅
tbsql sys/tibero # sys 계정으로 (비밀번호 tibero)tbsql 접속
  • DataBase 생성 스크립트
SQL> CREATE DATABASE “t6"
        USER sys IDENTIFIED BY tibero
        MAXDATAFILES 256 CHARACTER SET MSWIN949 -- UTF8, EUCKR, ASCII
        LOGFILE
            GROUP 0 ('log01.log','log02.log') SIZE 10M,
            GROUP 1 ('log11.log','log12.log') SIZE 10M,
            
GROUP 2 ('log21.log','log22.log') SIZE 10M
        MAXLOGFILES 100
        
MAXLOGMEMBERS 8
        
NOARCHIVELOG
        
DATAFILE 'system001.dtf' SIZE 10M
            AUTOEXTEND ON NEXT 8M MAXSIZE 3G
        DEFAULT TEMPORARY TABLESPACE TEMP
            
TEMPFILE 'temp001.dtf' SIZE 10M
            
AUTOEXTEND ON NEXT 8M MAXSIZE 3G
            
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
        
UNDO TABLESPACE UNDO
            
DATAFILE 'undo001.dtf' SIZE 10M
            
AUTOEXTEND ON NEXT 8M MAXSIZE 3G
            
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

 

  • Tibero 재가동
tbdown # Tibero instance terminated (NORMAL mode).라는 말이 나와야 함
tbboot # tibero 부팅

 

  • Data Dictionary System 패키지 생성
cd $TB_HOME/scripts
sh system.sh # 모든 사항은 y로 답

# 첫 번째 패스워드 : tibero , 두 번째 패스워드 : syscat
# 패스워드 입력없이 한 번에 실행하는 방법 :
# sh system.sh 실행 전에 system.sh 파일을 다음과 같이 수정


$ sh system.sh << EOF
> tibero

 

728x90

댓글()