티베로 유틸리티 특징
툴들은 전부 접속을 해야하고 대상은 인스턴스
tbSQL을 제외하곤 구동을 위해 모두 JDK가 설치되어 있어야 한다.
서버 실행, 인스턴스에 접속하는 부분이 중요하다.
서버와 접속해야 제대로 실행된다. == 접속정보가 세팅되어있어야 한다.
티베로 인스턴스가 제대로 동작하고 있어야 한다.
티베로 설치부터 sql 조회도 할 수 있다.
그리고 서버를 운영하는 관리자(DBA)의 입장에서 중요한 툴
서버 운영자보다는 어플리케이션 개발 시 많이 사용
특정 테이블을 지정해서 추출하고, 파일로 저장해서 다시 DB에 집어넣을 수 있다.
서로 다른 데이터베이스에 있는 데이터를 옮기는 용도로 사용할 수 있다.
테이블을 별도로 만들어두고, 데이터를 집어넣는 단계에서 사용한다.
단, text 형식일 때 Loader가 읽어서 데이터베이스에 집어넣는다.
마이그레이션이란 쉽지 않은 작업이다.
1. 옮겨야할 데이터가 많을 수 있다. 데이터가 많을 경우에는 옮기는 시간이 매우 오래 걸릴 수 있다.
2. 오라클의 테이블 -> 티베로의 테이블로 마이그레이션
일반적으로는 마이그레이션 소프트웨어가 별도로 존재한다. 여러가지 마이그레이션 소프트웨어가 있다는 것을 알아두시오. 아주 간단한 마이그레이션 기능만 가지고 있는 것이 T-UP이다.
마이그레이션은 요약하면 2가지를 옮기는 작업이다(DDL, DATA)
SQL문장을 입력 받아서 티베로 인스턴스에게 전달받고...다시 전달하는 채팅기능
tbSQL을 시작한다고 해도 인스턴스와 연결되는 것은 아니다. 접속정보를 전달받아서 연결해야한다.
접속정보를 전달하지 않은 상태에서는? sql문을 작성해도 실행되지 않는다.
SHOW ALL
SET 명령 ON | OFF
set autocommit ON
set AutoTrace ON
단, 설정은 현재 tbsql 세션 실행 중에만 적용되고 tbsql종료 시에는 기본 설정으로 다시 돌아간다.
환경설정 세팅을 고정하기 위해서는 설정 세팅을 자동화해야 한다.
접속 시 사용자 정보가 사용된다.
conn
명령어 사용disconnect
명령 사용 시 tbsql은 계속 구동된다. 유저의 접속만 끊어진 상태exit
/ quit
명령은 tbsql까지 종료시킨다.tbSQL 자체 명령어를 이용해서 서버에게 명령을 내리거나 다른 자체적인 일을 수행할 수 있다.
쿼리를 서버에 전달한다.
tbsql은 sql랭귀지 뿐만 아니라 tbPSM 랭귀지도 지원한다.
tbPSM랭귀지는 티베로 유틸리티 안내서에서 자세히 알아볼 수 있다.
티베로를 이용하는 개발을 돕는 GUI 툴로, 개발에 필요한 기능과 환경을 제공한다.
tbStudio는 티베로에서 배포하고 있는 쿼리 툴이다. 대표적인 쿼리 툴로는 Toad for Oracle
등이 있다. Orange for Tibero
라는 쿼리 툴도 있다.
호환성
티베로의 호환성은 오라클의 부분집합이다.
티베로는 오라클이 제공하는 기능의 일부분에 대한 기능을 가지고 있다.
예를 들어,
데이터를 처리하기 위해 사용되는 랭귀지 두 가지(집합연산 처리 랭귀지, 절차적인 랭귀지)가 있는데 오라클과 티베로에서의 이름은 각각 다음과 같다.
오라클에서는 SQL과 PL/SQL
티베로에서는 tbSQL과 tbPSM
보통 조직이 다루는 가장 중요한 정보일수록 오라클DB에 저장되어있다.
3Tier구조와 sql툴
이미지 출처 : http://dohyunworlds.blogspot.com/2016/08/3-3-tier-architecture.html
주요기능
설치 및 실행방법
티베로 스튜디오 기동을 위해서는 JRE 1.6버전 이상이 반드시 설치되어 있어야 한다.
JDK1.8설치해야한다... 다른 거 안 됨
tbStudio.ini
환경설정
.txt파일
과 .dat
(바이너리 파일)을 내보낼 수 있다.
tbExport / tbImport은 티베로 서버안에 기본적으로 포함되어 있다. (bin폴더)
Tibero 내부 스키마를 sql문 형태로 추출하고 Import할 수 있다.
접속정보
Export 모드
.txt
파일을 만들어준다..dat
파일은 생성된다. 그러나.dat
파일은 바이너리 파일이기 때문에 사용자가 직접 보고 해석할 수 없다. show DDL Scripts옵션으로 만들어진 .txt
파일은 사용자가 볼 수도 있고 수정도 가능하다..dat
파일은 티베로에서만 import할 수 있고 export도 마찬가지이다.ExpImp
파일 : show DDL Scripts 체크로 만들어진 .txt 파일 Import는 DDL을 실행하고 데이터를 집어넣는 작업이다.
DDL과 데이터는 .dat
파일 내에 들어있다.
.dat파일 내에서 import할 범위를 정의할 수 있다
Import 모드
리프레시 : 딕셔너리 뷰에서 정보를 조회해서 트리구조를 보여주는 것
tbImport 툴이 사용하는 파라미터.(?)
테이블 TRUNCATE 후 데이터 Import하는 경우
Ignore the "schema object already exist"
옵션 설정실행파일은 $TB_HOME/client/bin
에 존재한다.
tbexport / tbimport 치면 파라미터 조회 가능
디렉토리 생성
[tibero@T1:/tibero]$ mkdir expimp
export 접속정보와 파라미터
IP
=localhost PORT
=8629 SID
=tibero USERNAME
=sys PASSWORD
=tibero FULL
=Y FILE
=/tibero/expimp/default.dat SCRIPT
=YIP
: 현재 tiberoDB와 tbExport가 동일한 곳에 설치되어있으므로 localhost
PORT
: 기본값과 동일한 경우 생략 가능SID
: 데이터베이스 이름USERNAME
: 유저 이름PASSWORD
: 패스워드 FULL
: FULL MODE 설정 (default = N)FILE
: 경로와 이름 설정SCRIPT
: .txt파일 저장FULL MODE에서는 sys유저를 제외한 모든 유저의 스키마가 export된다.
일반적으로 export작업은 관리자가 한다. export 시에는 여러 정보(ex: 딕셔너리)에 대한 접근이 가능해야한다. 따라서 보통은 그런 권한이 있는 sys유저로 작업한다.
Import접속정보와 파라미터
IP
=localhost PORT
=8629 SID
=tibero USERNAME
=sys PASSWORD
=tibero TABLE
=TIBERO.DEPT IGNORE
=Y; (접속정보 동일)TABLE
: 대상 테이블IGNORE
: 객체가 이미 존재해서 발생하는 에러를 무시한다.원격에서 export받아서 로컬에 import
로컬에서 로컬로 작업했던 것과 차이점
FROMUSER
=원격유저이름 TOUSER
=로컬유저이름 파라미터 추가 필요tibero.selgrade여야 하는데
edu.selgarde여서 에러 발생(추가정리 필요)
[tibero@T1:/tibero]$ tbsql tibero/tmax
SQL> SELECT * FROM SALGRADE@TLINK; -- 원격 DB에 있는 테이블 조회
GRADE LOSAL HISAL
---------- ---------- ----------
1 700 1200
2 1201 1400
3 1401 2000
4 2001 3000
5 3001 9999
[tibero@T1:/tibero]$ mkdir expimp2 -- 원격 DB export할 디렉토리 생성
[tibero@T1:/tibero]$ cd expimp2
-- tbexport 실행
[tibero@T1:/tibero/expimp2]$ tbexport IP=10.188.191.33 PORT=8629 SID=tibero USERNAME=edu PASSWORD=edu TABLE=EDU.SALGRADE FILE=default.dat SCRIPT=Y
-- 로컬 DB 테이블 확인
[tibero@T1:/tibero/expimp2]$ tbsql tibero/tmax
SQL> ls table
NAME SUBNAME TYPE
---------------------------------- ------------------------ --------------------
DEPT TABLE
EMP TABLE
-- tbimport 실행
[tibero@T1:/tibero/expimp2]$ tbimport IP=localhost PORT=8629 SID=tibero USERNAME=tibero PASSWORD=tmax TABLE=SALGRADE FROMUSER=EDU TOUSER=TIBERO;
-- 로컬 DB 확인
SQL> ls table
NAME SUBNAME TYPE
---------------------------------- ------------------------ --------------------
DEPT TABLE
EMP TABLE
SALGRADE
SQL> SELECT * FROM SALGRADE;
GRADE LOSAL HISAL
---------- ---------- ----------
1 700 1200
2 1201 1400
3 1401 2000
4 2001 3000
5 3001 9999
tbLoader는 대량의 데이터를 한번에 Tibero 데이터베이스에 저장하기 위한 유틸리티
컬럼 데이터만 일반 텍스트 파일로 만들어서 한꺼번에 적재한다.
tbLoader 구동 전, 티베로에는 .dat
파일을 넣을 테이블이 존재해야 한다.
tbLoader가 .dat
파일에 담긴 값을 읽어서 티베로에 넣는다.
실행 시 log파일과 bad파일을 남긴다.
분리된 레코드 형태, 고정된 레코드 형태, BLOB과 CLOB 타입과 같은 대용량 데이터가 존재 하는 경우
-- 컨트롤 파일
[tibero@T1://tibero/loader]$ cat control.ctl
LOAD DATA
INFILE './data.dat' -- 현재 디렉토리의 data.dat파일
APPEND
INTO TABLE club
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '|\n'
IGNORE 1 LINES -- 데이터 파일 첫 번째 줄의 레코드 무시
(
id integer external,
name,
masterid integer external
)
-- 데이터 파일
[tibero@T1:/tibero/loader]$ cat data.dat
id name masterid|
111111,FC-SNIFER,2345|
dkkkkkkkkkk|
111112,"DOCTOR CLUBE ZZANG",2222|
111113,"ARTLOVE",3333|
111114,FINANCE,1235|
111115,"DANCE MANIA",2456|
111116,"MUHANZILZU",2378|
111117,"INT'L",5555
tbloader userid=tibero/tmax@tibero control=./control.ctl
-- userid=Username/password@dbname control=컨트롤파일명
-- 수정 이전 data.bad
[tibero@T1:/tibero/loader]$ cat data.bad
dkkkkkkkkkk| -- 필드가 분리되지 않았다.
111112,"DOCTOR CLUBE ZZANG",2222| -- VARCHAR(10)을 넘어간다.
111115,"DANCE MANIA",2456| -- VARCHAR(10)을 넘어간다.
-- data.bad를 복사해서 수정한 data2.dat 파일
[tibero@T1:/tibero/loader]$ cat data2.dat
111118,"dkkkkkkkkk",9999|
111112,"DOCTOR CLU",2222|
111115,"DANCE MANI",2456
-- 컨트롤 파일 수정
[tibero@T1:/tibero/loader]$ cp control.ctl control2.ctl
[tibero@T1:/tibero/loader]$ vi control2.ctl
[tibero@T1:/tibero/loader]$ cat control2.ctl
LOAD DATA
INFILE './data2.dat'
APPEND
INTO TABLE club
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '|\n'
(
id integer external,
name,
masterid integer external
)
-- loader 다시 수행
[tibero@T1:/tibero/loader]$ tbloader userid=tibero/tmax@tibero control=./control2.ctl
Analyzer
Migrator
PC에서 T-up소프트웨어를 시작하면 네트워크를 거쳐서 서버 장비에 연결한다. 이기종 DB 간 연결을 위해서는 인터페이스 파일이 있어야 한다. T-UP을 이용한 이기종 DB 연결은 쉘로 진행하는 것보다 훨씬 간단하다.
Source Database
Type Conversion
Schema Object
Migration Option
Target Database
Summary
Data Migration
Result
숙제
- tbsql 셀프 스터디
TIP
이미지 자료 출처
- 충남대학교 티베로 DB 엔지니어링 교육 강사 자료
- 티베로 공식문서