2016-07-11 1 views
-1

DB를 디자인하지 않았으므로 이에 대해 판단하지 마십시오.Oracle Create Table as Select * Another_Table에서 동일한 테이블 스페이스

로그 테이블에 A LOT 항목이 있습니다. 이 로그 테이블에 하루 정도만 있어야합니다. 내 최초의 생각이었다 : 단일 트랜잭션에서

: 1. 로그 테이블의 이름을 변경 3. TRX를 저지하고 생명이

두 번째에 간다 이름이 바뀐 로그 테이블에서 원래 로그 테이블을 만들 수 2 시간이 지남에 내가 이름을 바꾼 테이블을 떨어 뜨리고 그것을 다시 할 수 있습니다. 이 작업은 하루에 한 번 Oracle 작업으로 실행됩니다.

원래 질문 :

create table "my_user"."first_table" (pkid number, full_name varchar2(50)) nologging tablespace "my_custom_tablespace"; 

을 그럼 난 같은 것을 할 :

create table second_table as select * from first_table where 1=2 -- because I only want the structure 

것은 내 second_table이 될 것인가를 내가 지금처럼 테이블 # 1의 테이블 공간 이름을 지정하면 사람이 알겠습니까 동일한 table_space에 있습니까?

미리 도움을 주셔서 감사합니다.

+0

아니요. 'second_table'은 기본 테이블 스페이스가 무엇이든간에 생성됩니다. 'first_table'의 테이블 스페이스가 무엇인지 신경 쓰지 않습니다. 그런데 왜 시도하지 그래? 그것은 질문을 작성하는 것보다 빠를 것입니다. – sstan

+0

새 테이블에 사용 된 테이블 공간을 확인하는 방법을 모르겠습니다. 그러나이 도움에 감사드립니다. – OneClutteredMind

+0

다음은 어떻게 확인할 수 있는지 보여줍니다 :'select tablespace_name from user_tables where table_name = 'SECOND_TABLE'' – sstan

답변

0

파티션이있는 Enterprise Edition을 사용하는 경우 더 간단한 해결 방법은 간격 파티션 테이블을 사용하고 하루에 하나의 파티션을 사용하는 것입니다. 그런 다음 필요하지 않을 때 파티션을 자릅니다.

그렇지 않은 경우 두 개의 테이블, 동의어가 삽입되는 '현재'를 가리키며, 두 테이블의 합집합에서 선택하는보기로 이동하십시오. 야간 작업은 '이전'테이블을 잘라내어 동의어를 전환하여 '새로운'테이블로 만듭니다.

관련 문제