Oracle에서 ERWin Reverse Engineering으로 Physical/Logical Schema 생성 따라하기(1/2)
Posted 2013. 7. 18. 09:34
1. odbc를 통한 erwin 에서의 DB접속을 통한 Reverse Engineering ==> 결과는 ODBC 설정 실패.
(우선 왜 무슨 생각으로 이런 시도를 했는지 먼저 의문입니다. Oracle Client를 설치하면 erwin에서 바로 접속이 가능한데...)
1.1 Oracle Instant Client 다운로드 ( Basic, ODBC 두개를 다운로드. ) & 압축을 풉니다.
( 압축을 풀변 모두 같은 디렉토리로 풀립니다.)
32bit파일
instantclient-basic-nt-11.2.0.3.0.zip
instantclient-odbc-nt-11.2.0.3.0.zip
64bit 파일
instantclient-basic-windows.x64-11.2.0.3.0
instantclient-odbc-windows.x64-11.2.0.3.0
이전 제 블로그글에서도 언급했지만 대부분의 오라클 클라이언트는 32bit면 됩니다. 왜냐하면 말 그대로 client가 32비트용인 경우가 대부분이니까요.
하지만 ODBC는 64bit 도 있으므로 64bit로 설치했습니다.
1.2 압축을 푼 파일중에 odbc_install.exe 를 실행합니다.
1.3 환경변수에 PATH, NLS_LANG,ORACLE_HOME, TNS_ADMIN 를 잡습니다.
Oracle이 설치되지 않았기에 ORACLE_HOME, TNS_ADMIN은 같은 디렉토리가 될것입니다.
C:\oracle\instantclient_11_2
TNS_ADMIN = C:\oracle\instantclient_11_2
PATH = .......;%ORACLE_HOME%
NSL_LANG:KOREAN_KOREAQ.AL32UTF8
1.3 tnsnames.ora 파일 생성
ORCL=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))
)
(CONNECT_DATA= (SERVER=DEDICATED)(SERVICE_NAME=ORCL)
)
)
이전에 MySQL, MSSQL ODBC 설정보다는 좀 많습니다. 오라클이라고 티내는것은 아닌지...
NLS_LANG 은 Oracle이 설치된 서버의 환경에 따라 조금씩 달라질 수 있습니다.
일반적으로 기본적인 설정은 다음과 같이 될수 있습니다.
윈도우에서 Default로 오라클이 설치된 경우 - KOREAN_KOREA.KO16MSWIN949
UTF8로 설치된 경우라면 - KOREAN_KOREA.AL32UTF8
정확한건 서버 세팅에 따라 달라지니 확인해보시면 됩니다.
==> lang 확인 쿼리 : SELECT USERENV ('language') FROM DUAL
이렇게 설정을 하고나면 정상적으로 odbc 설정에 추가가 되어야 하는데, dll 에러를 내면서 추가가 되질 않습니다.
32bit, 64bit모두다 설치해 보았고 odbc도 32bit, 64bit 모두 시작해서 설정을 해보았으나 dll에러로 결국은 실패.
그러다 생각한것이 서두에 언급한대로 아~ 이런것이 삽질이구나를 깨달았습니다.
erwin에서 DB 접속을 하려면 MySQL, MS-SQL은 ODBC를 통해서 연결하지만 Oracle은 굳이 ODBC를 사용하지 않아도 되는데, 한동안 Oracle을 사용하지 않았더니 생각이 거기에 미치질 못한것 같습니다.
우찌되었든 마음을 다잡고 다시 32bit Oracle Client를 설치합니다.
이전의 환경설정은 그대로 적용됩니다.
2. Oracle Client를 통한 Reverse Engineering in ERWin
2.1 새로운 Model을 만듭니다.
view 는 Physical을 선택합니다.
Menu ==> Tool ==> Reverse Engineering 을 선택합니다.
Logical/Physical을 선택하고 Target Database는 Oracle 을 선택합니다.
보통은 Physical만 선택하지만 이번 Reverse를 통해서는 Comment에 있는 내용을 Logical로 넣어보고자 하기 때문에 Logical/Physical을 선택합니다.
Target Database는 당근 Oracle입니다.
A :어디로부터 Reverse를 할것이냐인데, Default는 Database입니다. 만약 DDL Script문이 있다면 Script File로 선택하고 해당 DDL Script문을 선택하면 될것입니다. 이 방법은 저도 다음에 한번 해봐야 겠습니다.
B : 접속한 계정이 접근할수 있는 DB가 여러개라면 이부분을 선택할 필요가 있습니다. 그렇지 않다면 Current User로 보통 설정을 합니다.
C : Infer 부분은 PK와 Relation에 대한 처리여부를 묻는건데요. 저는 PK는 체크를 하지만 Relations는 보통 체크하지 않는 편입니다.
Reverse 결과에 너무많은 Relation이 걸려 FK로 잡혀 수정조차 곤란하게 되버려 체크를 하지 않는 편입니다.
다음은 접속계정정보를 넣습니다.
처음엔 Parameters 의 Value가 입력박스처럼 나오지 않고 Dasable된 것처럼 나와 참 어리둥절 해지는데요.
마우스로 클릭해서 해당 접속 URL을 넣습니다.
Connect를 클릭하면 보통은 아래와 같은 Error 내용이 떡 나와버립니다. 말 그대로 뷰가 없는 경우 나오는 오류같은데, 처음 설정에서 View를 빼고 여기까지 왔어야 할것 같은데, 걍 무시하고 확인을 클릭해도 진행은 됩니다.
View 뿐만 아니라 이런 창이 계속해서 나오는데, 모두 확인해주면 다음으로 진행됩니다.
이부분에서 마치 프로그램이 응답하지 않고 뻗어버린것처럼 한참을 기다려야 합니다. 인내심을 같고 기다리면 다음으로 진행됩니다.
기다리는 동안 다른걸 하려고하지는 마세요. PC전체가 홀딩된 것 처럼 제대로 동작을 하지 않습니다.
끝까지 진행이 되고 나면 드디어 Physical ERD가 정상적으로 표현됩니다.
다음엔 Comment를 이용한 Logical을 불러오는 부분을 진행하도록 하겠습니다.
'개발노트' 카테고리의 다른 글
jdk1.5 + JEUS5.0 + apache digester3 사용시 saxparse 오류 (0) | 2013.08.19 |
---|---|
jstl fmt:formatDate pattern 다시 확인하자 (0) | 2013.07.22 |
Unable to read TLD "META-INF/c.tld" from JAR file error in springMVC (0) | 2013.07.01 |
jquery json serialize()에 파라메터 추가하기 (3) | 2013.06.26 |
Maven ojdbc14.jar 등록오류 해결하기. (0) | 2013.06.20 |
- Filed under : 개발노트