본문 바로가기
반응형

Oracle38

오라클 DBLINK 하면 ORA-01017: invalid username/password; logon denied 오류 충격적인 걸 알려주마.. 뭐 알고 있다면 아주 간단한 문제겠지만 모르면 정말 황당하다 못 해 짜증이 날 만한 문제. 오라클 9i에서 11g로 DBLINK를 걸때 이런 문제가 발생해요. 기존에 쓰던 DBLINK가 있습니다. 상대방 시스템이 업그레이드 되면서 버전업이 되었지요. IP는 변경됐지만 기존에 쓰던 DB 계정의 패스워드는 그대로 입니다. tnsping 때려 보면 아주 잘 날아 갑니다. DBLINK를 생성할때도 아주 잘 생성 됩니다. sqlplus로 붙어도 매우 잘 붙습니다. 근데 막상 DBLINK를 사용 하려고 하면 이런 오류를 뱉어 냅니다. > select * tab@test_dblink ORA-01017: invalid username/password; logon denied ....??? 이게.. 2011. 9. 18.
MERGE INTO 를 사용해 봅시다. 테이블을 조회해서 해당 조건으로 데이터가 존재하면 업데이트 하고 없으면 쑤셔 넣는다는 똑똑한 녀석이다. 실제 쿼리문에서 테이블명이랑 컬럼명만 임의로 막 변경한 거라서 대충 흐름만 보도록 하자. 잘 보다보니 이 놈을 이용해서 시퀀스 넘버도 가져와서 넣을 수 있다. 좋다. ON 부분에는 다중 조건을 쓸 수 있다. UPDATE나 INSERT를 할때 USING 문에서 뽑아온 값으로 넣을 수도 있다. MERGE INTO seq_table f USING ( select col1, col2, col3, col4, col5 , (select max(sqno) + 1 from seq_table x where t.col1 = x.col1 and t.col2 = x.col2 ) as seqno from base_table .. 2010. 9. 17.
distinct 때메 생긴 그지같은 오라클 쿼리 에러 -_- select 절에 컬럼 하나를 더 가져오게 변경을 했다. 그랬더니 이런 에러가 뜬다... ORA-01791: SELECT 식이 부적합합니다 .... 어쩌라고 -_- 참 난감하고도 난감한 에러다. 조회 컬럼을 distinct를 제외하고 * 로 바꾸니까 order by 절에 태클을 건다.. 음.. 근데 이상하군. 테이블의 컬럼이 아닌 별칭을 걸어 논 것이 었다.. 그렇군. 각설하고 결론은 distinct를 사용 했을 경우 order by 절에 기술된 컬럼이 select 절에 나와야 한다는 것이더라. 만약에 별칭을 사용 했다면 그 별칭을 order by 절에 써 주면 된다. 끝!!! .. 야심한 밤에 이게 뭔 짓이야.. 아.. 슬프다 -_- 2010. 8. 27.
거지같은 CLOB 이랑 안면 트기... VARCHAR2 타입은 최대 길이가 4000byte 로 정해져 있다. 데이터가 4000바이트가 넘어가면 에러를 뱉어 낸다. 그런데 데이터라는 것이 4000 바이트로 성이 찰 리가 없다. 그래서 생겨난것이 CLOB 타입 인데... 4000 바이트를 넘어가니까 어쩔 수 없이 CLOB을 쓰긴 써야 되는데 이놈이 여간 거지 같은게 아니다. CLOB은 다른 애들이랑 어울리길 거부한다. 당연한 것이.. 타입이 틀리니까 .. NUMVER랑 CHAR랑 틀린거.. 뭐 똑같은 거다.. 근데 문제는 .. 이 놈은 타입케스팅이 거지 같다는 거다. 내가 잘 몰라서 그러겠지만.. 안 되는거 같다.. TO_LOB... 개나 줘라 그래 ㅡㅡ NVL은 되면서 DECODE, COALESCE는 까칠하게 싫다고 한다.. WHERE 절에 들.. 2008. 12. 8.
반응형