2016-07-11 11 views
-1

私はDBを設計しなかったので、これについて私を判断してはいけません。Oracle Create Table as Select * Another_Tableから同じテーブルスペース

ログテーブルがあります。LOTのエントリがあります。私はこのログテーブルに1日程度しか保管する必要はありません。私の最初の考えられていた:単一のトランザクションで

: 1.ログテーブルの名前を変更 2.名前を変更したログテーブルから元のログテーブルを作成 3. TRXと人生をコミットは

に二を行きますこの時、私は名前を変更したテーブルをドロップし、それをやり直します。これは、Oracleジョブとして1日に1回実行されます。

元の質問

: 私はそうのようなテーブル#1の表スペース名を指定した場合、誰もが知っているだろう:

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がされます同じ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でパーティションを使用している場合は、より単純な解決方法は、1日に1つのパーティションを持つ間隔パーティション表を使用することです。必要がない場合は、パーティションを切り捨てます。

もしそうでなければ、挿入されている '現在の'を指すシノニムと、2つのテーブルの和集合から選択するビューとの2つのテーブルを使います。夜間の仕事は「古い」テーブルを切り捨て、シノニムを「新しい」テーブルに切り替えるでしょう。

関連する問題