access mdb 파일의 데이터 테이블을 oracle 데이터베이스에서 접근하는 방법 0 15 2,723

by 양명 [Oracle 기초] [2017.10.11 10:00:09]


mdb table.JPG (62,504Bytes)
cmd table.JPG (10,527Bytes)

안녕하세요. 캐드 프로그램의 데이터베이스 관련 하여 프로그래밍을 시작했습니다.

 

oracle 11g 사용중입니다. ODAC 설치하여 mdb파일의 데이터를 복사하여

oracle 데이터베이스를 생성하였습니다.

 

visual basic으로 프로그래밍 작업 중인 상태인데, 기존에 mdb 데이터베이스에 접근하기 위해

'Componentdata' 라는 테이블 이름으로 데이터 값을 얻어왔습니다.(ms-sql도 동일한 테이블명을 사용하여 데이터 접근 가능했음)

(예 : "SELECT Description FROM Componentdata WHERE Entry='TERMINAL')

(아래 access 테이블 사진 참고)

 

하지만 oracle 데이터베이스 생성 후, visual basic에서 OracleDataReader 명령어로

위에 예로 든 데이터베이스 쿼리문?을 사용하니

"테이블 또는 뷰가 존재하지 않습니다"라는 메세지가 출력되어 데이터 값을 얻어올 수 없습니다.

CMD에서 SQLPLUS SYSTEM/ID@PW로 로그인하여

GRANT SELECT ON COMPONENTDATA TO ID 로 테이블을 확인해보려 해도 동일한 메세지가 출력되네요.

(아래 cmd창 사진 참고)

 

아마도 MDB 구조와 ORACLE 데이터 구조가 달라서 테이블을 읽지 못하는 것으로 생각하고 있긴 한데

그래서 CMD에서 select * from dba_tables; 명령어로 테이블을 검색해보니 제가 원하는 테이블명과 관련된게 없고 생소한 이름들 뿐이었습니다.

 

데이터베이스를 공부한 경험이 없어서 질문 자체가 모호하고 의미가 잘 전달되지 않을 수도 있겠다, 라고 생각합니다.

지금 여기까지 온 것도 며칠동안 구글 검색을 통해서 왔는데 이 부분에서 막혀버렸네요 ㅜ.ㅜ

전문가분들의 도움이 절실히 필요합니다.!

 

**질문 정리**

MICROSOFT ACCESS의 MDB파일 데이터를 오라클로 이전한 경우,
기존 MDB파일에서 사용되고 있던 테이블명(COMPONENTDATA)은 오라클에서 어떤 형태로 저장되는가(혹은 어떻게 데이터에 접근할 수 있는가)
입니다.

 

 

*참고*

제가 ORACLE 데이터베이스로 원하는 작업은

MDB데이터베이스 기준으로 봤을 때,

COMPONENTDATA라는 테이블에서 ENTRY가 ZK_PIN_TERMINAL인 항목의 DESCRIPTION 값을 얻어오는 작업을 하려고 합니다.(아래 access 테이블 사진)

by 임상준 [2017.10.11 13:00:01]

access 는 잘 모르긴 한데 혹시  componentdata 테이블은 어떤 계정으로 생성된건가요?


by 양명 [2017.10.11 16:17:26]

글쎄요, 어떤 계정이라기보다는 프로그램 자체에서 기본적으로 지원하는 데이터베이스 형태가 ACCESS MDB파일이고, 테이블 양식이 저런 형태로 이미 생성되어 있는 상태였기 때문에...
(오라클에서 생성한 테이블이 아님)

MDB파일에서 오라클로 데이터베이스 MIGRATION하면서 MDB 상태의 데이터 테이블(COMPONENTDATA)이 어떻게 변환이 되는 것인지 알 수가 없네요 ㅠ

댓글 감사합니다.


by 임상준 [2017.10.11 16:31:25]

oracle db 를 생성했다는게 실제 아무것도 없는 상태에서 db 가 만들어졌다는건가요, 아니면 기존 있던 oracle db 에 access 의 데이터를 이관했다는 의미인가요? 후자이면 dba_objects 뷰에서 created 날짜 순으로 이관일 이후에 만들어 진 object 중에서 object type 이 table 인 걸 찾아보시면 될 것 같은데.. 정확한 방법은 아니긴 하네요.


by 양명 [2017.10.11 17:33:45]

후자가 맞습니다.

그런데 오라클을 처음 접하다보니 말씀해주신 내용을 확인하는 방법조차 알기 어렵네요 ㅠ 이것저것 시도해보는 중입니다.


by 임상준 [2017.10.11 17:59:42]

sqlplus 로 oracle db 에 system 계정으로 접속 해 보시고, 아래 쿼리 날려보세요.

set line 160;

col owner for a 30;

col object_name for a30;

col object_type for a30;

select owner, object_name, object_type, to_char(created, 'yyyy/mm/dd hh24:mi:ss') as created from dba_objects where created >= to_date( '이관한날짜 yyyy/mm/dd 포맷으로' , 'yyyy/mm/dd') ;


by 양명 [2017.10.12 09:07:34]

 

댓글 감사드립니다. 말씀해주신대로 입력해보니 제가 찾던 ComponentData라는 이름을 발견했습니다. 그 외에 TABLE 타입인 부분을 봐도 제가 찾던 항목들이 저장되어 있는 것을 확인하였습니다.

그런데 ComponentData라는 게 object_name이라서? 테이블명으로 인식을 하지 않는 것인지

이렇게 테이블이 존재하지 않는다는 메세지가 나오네요.

그래도 말씀해주신 부분이 큰 도움이 되었습니다. 더 확인해보겠습니다. 정말 감사합니다.

 


by 양명 [2017.10.12 11:02:19]

임상준님 덕분에 문제 해결할 수 있었습니다. 정말 감사드립니다! 좋은 하루 보내세요^^


by 마농 [2017.10.12 09:18:19]

1. 해당 테이블은 khr 의 테이블입니다. system 의 테이블이 아닙니다. (owner 항목 확인)
  - system 계정에서 조회하면 안나오지요.
  - khr 계정으로 접속해서 조회하세요.
2. 테이블명이 대소문자 구별되네요.
  - 기본적으로 대문자로만 인지되기 때문에 FROM ComponentData 하면 못찾습니다.
  - 따옴표로 묶어줘야 인식합니다. FROM "ComponentData"


by 양명 [2017.10.12 11:01:40]

마농님 친절한 댓글 감사드립니다!!

khr계정으로 접속이 잘 안되서...

system계정으로 다시 DB를 이전하고, OWNER가 SYSTEM인 ComponentData를 생성해서
말씀하신대로 따옴표로 묶어주니 인식을 하네요!

정말 멀리 돌아왔습니다. ㅠ 덕분에 해결했습니다. 정말 감사드립니다! (답변 채택이 한명밖에 안되서 죄송스러울 따름입니다..)

 


by 마농 [2017.10.12 11:22:24]

system 계정으로 만들었다면 해결하신게 아닙니다.
system 계정은 관리용이지 개발용이 아닙니다.
다시 khr 계정으로 옮기시고, khr 계정으로 접속하는 문제를 해결하세요.


by 양명 [2017.10.12 13:19:51]

네. 제가 원했던 VISUAL BASIC 코딩 부분에서는 KHR에 접속도 잘 되었습니다.
KHR계정에서 데이터베이스 연결할 때는 FROM KHR."ComponentData"로 입력해서 연결이 되었습니다.

 

위에 댓글에서, KHR 계정으로 접속이 안된다는건

시스템 계정으로 연결할 때 CMD에서 SQLPLUS SYSTEM 로 연결했었지만

KHR계정으로 연결할 때 SQLPLUS KHR로 입력하니 유효하지 않은 유저라고 나옵니다..

 

사용자명을 KHR로 입력을 하면, 비밀번호 입력하는 라인에서 멈춤현상이 일어나 아무것도 입력할 수가 없는 상태가됩니다...

CMD에서는 시스템으로만 연결이 되는 것이 맞는건지요?


by 마농 [2017.10.12 13:36:09]

password 가 틀린게 아닐런지요?
E3DB 가 맞나요? 혹시 소문자 e3db 는 아닌지?
11G 부터 패스워드 대소문자 구별합니다.
system 계정이라면? khr 계정의 패스워드 변경도 가능합니다.
ALTER USER khr IDENTIFIED BY E3DB;
ALTER USER khr IDENTIFIED BY e3db;


by 양명 [2017.10.12 13:46:33]

-------------------------------------------------------

ALTER USER KHR IDENTIFIED BY E3DB;를 입력하니 사용자가 변경되어

KHR계정으로 접속할 수 있게 되었습니다. 감사합니다^^

 


by 마농 [2017.10.12 13:58:23]

실제 사용할 비밀번호는 아니겟죠? 설마? 너무 노출 되었네요? 바꾸셔야 할 듯.


by 양명 [2017.10.12 14:25:04]

네 테스트용이라서 중요한 건 아닙니다.

저렇게 노출되면 다른사람도 접속 가능한가요?;;

 

아까 ALTER ~ 명령어로 KHR계정으로 사용자를 변경하니

오라클 KHR계정으로 연결이 끊겼네요. 유효하지 않은 이름과 패스워드..

어렵습니다 ㅠ

------------------------------------------------------

사용자 변경 후 KHR계정의 비밀번호가 전역데이터베이스의 관리비밀번호로 바뀌었네요..

다시 로그인하니 잘됩니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입