2011-11-16 4 views
1

Oracle 임시 테이블이 있는지 확인하려면 어떻게합니까? ALL_TABLES 또는 USER_TABLES가 존재할 때 쿼리 할 때 테이블이 표시되지 않습니다.임시 테이블이 있는지 확인하십시오.

또한 임시 테이블을 이해하기 위해 ON COMMIT DELETE ROWS를 사용하여 만든 테이블은 항상 존재하지만 세션이 끝나면 데이터가 삭제됩니까? 연결이 닫힌 시점을 나타내는 세션입니까?

답변

6

임시 테이블은 소유 한 경우 USER_TABLES, 테이블에 대한 권한이있는 경우 ALL_TABLES에 나열됩니다. 데이터베이스에있는 경우 DBA_TABLES에 나열되지만 DBA_TABLES을 쿼리 할 수있는 권한이 없을 수도 있습니다. 테이블이 데이터베이스에 있지만 ALL_TABLES에 없으면 현재 사용자에게 임시 테이블에 대한 권한이 없음을 의미합니다.

예, 임시 테이블은 항상 존재합니다 (물론 만들어지면). ON COMMIT DELETE ROWS을 지정하면 트랜잭션 완료 (커밋 또는 롤백)시 임시 테이블의 데이터가 제거됩니다. 각 세션은 항상 테이블에 삽입 한 데이터 만 볼 수 있지만 ON COMMIT DELETE ROWS을 지정하면 데이터가 현재 트랜잭션에 걸리는 시간을 더 제한 할 수 있습니다.

+0

USER_TABLES에서 찾을 수있었습니다. 내 쿼리를 제대로 설정했다고 생각하지 않습니다. ON COMMIT 정보도 유용했습니다. 감사. –

+1

select * from user_tables where 임시 = 'Y' –

관련 문제