문서유형ㅣ기술정보
분야ㅣ마이그레이션
적용제품버전ㅣ6FS07, 6FS07PS, 7FS02, 7FS02PS
문서번호ㅣTMITI031
개요
본 문서에서는 Oracle to Tibero 전환 시 애플리케이션에 대해 인터페이스 수정 및 애플리케이션 쿼리 수정 방법 등에 대해 설명합니다.
방법
1. 인터페이스 수정
1) JDBC
$TB_HOME/client/lib/jar 폴더에 tibero(전환버전)-jdbc.jar 드라이버를 애플리케이션의 드라이버 관리 폴더에 복사합니다.
--ORACLE
String jdbc_url = "jdbc:oracle:thin:@127.0.0.1:1521:ORCL";
String user = "oracle_username";
String passwd = "oracle_passwd";
Class.forName("oracle.jdbc.driver.OracleDriver");
--TIBERO
String jdbc_url = "jdbc:tibero:thin:@127.0.0.1:8629:tibero";
String user = "tibero_username";
String passwd = "tibero_passwd";
Class.forName("com.tmax.tibero.jdbc.TbDriver");
2) ODBC
Tibero ODBC를 설치합니다.
--ORACLE
DRIVER={Microsoft ODBC for Oracle}; server=(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=utf8)));UID=scott;PWD=tiger;
--TIBERO
DRIVER={Tibero 7 ODBC Driver};SERVER=127.0.0.1;PORT=8629
;DB=t7;UID=dbtech;PWD=dbtech;
3) OLE DB
--ORACLE Provider=msdaora;Data Source=MyDB;User Id=myUsername ;Password=myPassword; --TIBERO Provider=tbprov.Tbprov.6;Data Source=MyDB;User ID=dbtech;Password=dbtech ;Updatable Cursor=True;OLE DB Services=-2
2. 애플리케이션 쿼리 수정
애플리케이션 쿼리 수정은 필요한 경우에만 사용하며 다음과 같은 상황에서 필요합니다.
1) Syntax Error가 발생할 경우 - 1
| 상황 | SQL을 작성할 때 From절에 있는 Table 또는 서브 쿼리절에 Alias를 주지 않고 Join 등을 실 행할 때 중복된 Column이 존재할 경우 Syntax Error가 발생 |
|---|---|
| 대응방법 | Alias를 주어서 중복되지 않게 처리합니다. |
2) Syntax Error가 발생할 경우 - 2
| 상황 | Union All 같은 쿼리를 사용하여 결과를 보려는 경우 실제 상위 쿼리는 특정 Column을 number type으로 하고, 하위 쿼리는 varchar type으로 하면 Syntax Error가 발생 |
|---|---|
| 대응방법 | 같은 Column절에서는 동일한 Type을 사용합니다. |
3) Syntax Error가 발생할 경우 - 3
| 상황 | PSM(=PL/SQL) 내부에 같은 이름의 변수를 선언할 경우 Syntax Error가 발생 |
|---|---|
| 대응방법 | 최종 선언된 변수 이름을 사용하고 앞 부분에 선언한 같은 이름의 변수를 삭제합니다. |
4) 결과가 정렬된 상태로 출력되지 않을 경우
| 상황 | Oracle은 orderby를 주지 않아도 결과가 정렬된 형태로 나오는 경우가 있는 반면에 Tibero는 정렬된 상태로 출력되지 않는 현상 발생 |
|---|---|
| 대응방법 | 정렬된 결과를 꼭 얻어야 한다면 order by를 명시합니다. |
5) PSM(=PL/SQL) 작성 후 컴파일을 수행할 때 Error가 발생하는 경우
| 상황 | PSM(=PL/SQL)을 작성한 후 컴파일을 수행할 때 내부 SQL의 Object에 대하여 실제 Object,Column 등이 존재하는지 체크해서 유효하지 않다면 Tibero는 Error를 발생합니다. 반면 에 Oracle은 위와 같은 상황에서 컴파일을 성공했더라도 runtime때 Error가 발생하는 차이가 있습니다. |
|---|---|
| 대응방법 | 실제 존재하는 Object를 사용하고 정확한 Column Name을 사용합니다. |