by 아뵹 [DB 기타] Oracle python temporary table [2020.02.28 14:56:44]
안녕하세요 초보 개발자입니다.
현재 python 에서 cx_oracle 라이브러리 임폴트해서
오라클 DB에 연동 후에 cur.execute("사용하고자하는 sql") 커맨드로 sql 실행 후에
cur.fetchall() 써서 데이터를 가져온 후에 postgresql에 테이블 생성 후 적재하는 작업을
진행하고 있습니다.
단순한 sql문 (ex. select * from table명)은 잘 동작하는데 문제는 sql 문이 엄청 복잡해졌을 때 인데요 ㅠㅠㅠ
5개 이상의 테이블을 가져와서 지지고볶는 sql문입니다.
해당 sql을 사용하면 꼭 cur.execute(sql) 까지는 잘 동작을 하는데
cur.fechall()에서 엄청 오랫동안 동작은 하지만 결과가 안나오는 상태로 있다가
"cx_Oracle.DatabaseError: ORA-01652: 128(으)로 테이블 공간 TEMP에서 임시 세그먼트를 확장할 수 없습니다."라는
에러 메세지가 뜨고 동작이 멈추는데요....
템포러리 테이블스페이스를 확장해야 하나 싶다가도 toad에서 위의 복잡한 쿼리를 그대로 돌렸을 때는
잘 동작하기 때문에 무엇이 문제인지 조금 헷갈리는 상황입니다.
.....무엇을 해봐야할까요...? 도와주세요 ㅠㅠㅠㅠㅠ
SELECT a.username, a.sid, a.serial#, a.osuser, b.tablespace, b.blocks, c.sql_text
FROM v$session a, v$tempseg_usage b, v$sqlarea c
WHERE a.saddr = b.session_addr
AND c.address= a.sql_address
AND c.hash_value = a.sql_hash_value
ORDER BY b.tablespace, b.blocks
/
위의 쿼리로 테이블스페이스 모니터링?을 해보니까 block size 가
제한해놓은 block size를 초과해서 ORA-01652 에러가 발생하는것 같습니다....근데 toad 에서 바로 실행했을 때는 잘 되는데
왜 python에서 따로 붙어서 할때만 위의 에러가 발생하는 걸까여...? block size가 초과되는 이유는 무엇일까요 ㅎ.....