database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 21082 게시물 읽기
No. 21082
create table temp as 로 테이블 생성시...
작성자
곰두리아빠
작성일
2004-12-16 15:45ⓒ
2004-12-16 15:47ⓜ
조회수
4,915

안녕하세요.

사용자별로 접속 세션ID를 테이블 명으로 이용하여 create table temp as 문을 사용해 임시테이블을 사용하려고 합니다.

잠깐 사용 후에는 해당 테이블을 소스상에서 지우고 있지만, 그렇지 못할경우엔 다른 이름의 테이블이 계속 쌓이게 되어, 알아서 drop 되어야 하는데요,

검색해 보니 create table temp as 문이 알맞는것 같습니다.

그런데 이 테이블이 언제부터 언제까지 존재하는지 알고 싶습니다.

 

그리고 찾아보니 create global temporary table 테이블명... 는 테이블 자체 drop 이 되지 않는것 같은데요..

 

 

 

이 글에 대한 댓글이 총 1건 있습니다.

global temporary table  영역은 자기 자신에게만 보이는 영역입니다.

다른 세션에서는 보이지 않습니다.

 

테스트를 해볼까요?

 

1. A 유저로 로그인해서 다음과 같이 임시 테이블을 만듭니다.

CREATE GLOBAL TEMPORARY TABLE mytemp
ON COMMIT PRESERVE ROWS
AS  SELECT * FROM all_objects

 

여기서 ON COMMIT PRESERVE ROWS 라는건 commit하더라도 데이타를 지우지 말고 보존해달라는 의미입니다. commit시 데이타가 없어지도록 하려면 "ON COMMIT DELETE ROWS"를 사용하시면 됩니다.

 

2. SQL*PLUS를 하나 더 열어서 "A" 유저로 접속합니다. 유저는 아까와 동일하지만 다른 세션으로 접속했으므로 1번에서 작업한 내용이 보이지 않습니다.

SQL> select count(*) from mytemp;

  COUNT(*)
----------
         0

 

그리고 temp table은 휘발성이 있습니다. 세션을 종료하는 즉시 데이타는 자동으로 몽땅 사라집니다.

 

 

위의 경우 매번 create global temporary table을 하시지 마시고...

 

일단 껍데기 테이블만 아래와 같이 만드세요.

 

CREATE GLOBAL TEMPORARY TABLE MYTEMP ON COMMIT PRESERVE ROWS
as select * from <테이블명> where 1=0

1=0은 부정형의 조건이므로 false가 되어 실재로 데이타는 들어가지 않고 껍데기 테이블만 만들어집니다.

 

실재로 각 세션별로 임시 데이타는 "insert /*+ append */ mytemp select * from <테이블명>"   명령어로 집어넣으시고 작업하시면 되겠죠. 역시 자신의 작업 내용이 다른 세션에 접속한 사람에게는 보이지 않고 세션을 종료하면 내용은 모두 사라집니다.

 

위와 같이 하면 Temp table은 nologging 이므로 Redo가 거의 나오지 않는다는 장점이 있습니다. 어차피 Temp이므로 복구에 사용될 필요도 없겠죠?

매번 drop할 필요도 없구요.

김주현님이 2004-12-16 18:42에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
21085오라클 백업에 관한 질문 [1]
초보자
2004-12-16
1829
21084익스포트시 에러가 발생하는데..에러원인을 도저히 모르겠습니다. [1]
이경재
2004-12-16
2162
21083USER_TAB_COLUMNS@xxxx 테이블정보 읽기 [2]
찹쌀떡
2004-12-16
2641
21082create table temp as 로 테이블 생성시... [1]
곰두리아빠
2004-12-16
4915
21081주현님,나그네님,종훈님,시영님 등등 모두 즐겁게 보아주세요 ^^ [16]
나두초보
2004-12-16
5762
21080형변환 [1]
질문맨
2004-12-16
1751
21079ARRAY FETCH 후 특정테이블에 INSERT, UPDATE [1]
궁금.해요
2004-12-16
2307
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다