'2009/06'에 해당되는 글 12건

  1. 2009.06.22 오라클 Function Compile/ 생성시 Ora-00942 오류.. 1
  2. 2009.06.19 impdp / expdp
본사에서 받은 dump file import 후 Report 화면에 데이터가 하나도 나오지 않아 확인해 보니 reporting 계정의 function / procedure들이 모두 invalid 상태이다.

EnterpriseManager에서 해당 function 을 일일이 compile을 시켜도 모두

PL/SQL: ORA-00942: 테이블 또는 뷰가 존재하지 않습니다

이런 오류만 떨어 진다..

헌데 해당 Table을 SQLPLUS를 통해 확인해 보면 정상적으로 Access 가능하다.

( 계정 별로 Table을 생성한 후 서로 다른 계정 테이블을 Synonym 으로 연결해서 쓰는 구조.. )

뭔가 본사에서 export를 잘 못 하거나 아님 내가 import를 잘 못하거나 두개 중 하나일텐데...

http://database.sarang.net/?inc=read&aid=30895&criteria=oracle&subcrit=&id=&limit=20&keyword=function+ORA-00942&page=1

이 글을 보다 보니 답이 나온다.

import하다가 문제가 좀 생겨서

primary 계정이랑 reporting 계정을 삭제하고 다시 생성했는데

primary 계정 import 시 grant 관련 처리가 끝난 후에 reporting 계정이 생성되어

grant 관련 option이 적용되지 않아서 생긴 문제 였다.

결국 두개 계정 다시 drop 후 ( 물론 primary만 drop 해도 되기는 했지만 )

다시 하나씩 계정 생성 후 import하니 잘 된다.

결국 결론은 SQLPLUS에서 접속이 되는 거랑

function 내에서 해당 테이블을 참조하는 권한은 조금씩 다르다는 결론을 내릴 수 있을 것 같다.


'개발자세상 > Database관련' 카테고리의 다른 글

ORA-30557  (0) 2009.12.09
Oracle Table Column Rename  (0) 2009.10.28
impdp / expdp  (0) 2009.06.19
MYSQL에서 copy_t , copy_ymd 테이블 만들기  (0) 2009.03.13
MYSQL에서 Rownum 사용하기  (0) 2009.03.13
Posted by headiron
,
본사에서 샘플 데이터베이스를 받아서 import를 시킬려고 하는데 계속

IMP-00010: not a valid export file, header failed verification
IMP-00000: Import terminated unsuccessfully

오류가 발생한다.
FTP로 파일 다운 받을 때 ASCII TYPE으로 받아서 그런가 했더니

알고 보니 expdp tool을 이용해서 받은 파일이다.

인터넷으로 뒤져 보니 10g 부터 기존 exp/imp tool의 단점을 보안하기 위해 나온 tool이다.

기존 exp/imp는 client 중심의 tool이었는데 expdp/impdp는 server 중심의 tool이다.

뭐.. exp/imp 단점을 보안 했다고 하는데 솔직히 어떤 단점을 말하는 건지 모르겠다.
하긴 oracle에서 단점이라고 얘기하는 걸 보면 뭔가 문제가 있었나.^^

예제를 보면 exp/imp를 GUI 환경에서 사용할 수 있도록 해 주기 위해 새로 만들어낸 tool이 아닌가 싶다.

server 중심이다 보니 사용하는 방법이 조금 복잡하다.

exp/imp는 일단 command 한번으로 모든 작업을 처리 했으나

expdp/impdp는 일단 working 디렉토리를 db에 등록한 후 expdp/impdp를 사용해야 한다.

1. working directory를 database에 등록한다.
sqlplus>create directory datadir1 as '/home/oracle/wkdir';
2. expdp/impdp를 사용할 사용자 계정에 working directory에 대한 read, write 권한을 추가한다.
sqlplus>grant read,write on directory datadir1 to sh;
3. expdp를 실행한다.
shell>> expdp 계정/패스워드 directory=datadir1 schema=계정 dumpfile=XXX.dmp logfile=YYY.log
해당 계정의  데이터를 XXX.dmp 파일로 dump 수행한다.

imp 시...
1. working directory를 database에 등록한다.
   ( 위와 동일한 방법으로 working directory를 등록한다. )
2. working directory에 대한 read, write 권한을 추가한다.
3. impdp를 실행한다.
shell>> impdp 계정/패스워드 directory=datadir1 dumpfile=XXX.dmp logfile=CCC.log


참고 자료 : http://www.oracle.com/technology/obe/obe10gdb/storage/datapump/datapump.htm
Posted by headiron
,