2017-01-05 26 views
0

甚至不能使用alter table ...移動表我有一個表如何從具有LONG列的表中使用CTAS?這裏

acct_log (
date_created date, 
log_desc long 
log_key number primary key) 

在甲骨文12C。

此表已發展到45 GB。 我使用date_created清除了這個 - 每天7天以上的行。

該腳本在過去21天內失敗,現在在此累積了太多的行。

我試圖使用alter table acct_log move命令 - 但它在LONG列失敗。這適用於任何包含所有其他類型列的表,但不能長。

誰能幫我 - 我甚至不能使用CTAS創建一個臨時表,因爲它失敗,

ERROR at line 1: 
ORA-00997: illegal use of LONG datatype 
+4

LONG **不應**再使用。使用LOBs – GurV

+1

@GurV年,20年陳述 - 仍然有效! –

+0

你很明顯有這張桌子很長一段時間,但你的清除腳本只有21天失敗?您的清除腳本有哪些錯誤? – tbone

回答

1

甲骨文剛剛針對此問題的專用工具:to_lob

TO_LOB將long_column列中的LONG或LONG RAW值轉換爲LOB值。您只能將此函數應用於LONG或LONG RAW列,並且只能在INSERT語句中的子查詢的選擇列表中使用。

create table foo (a number, b date, c long); 

insert into foo values(1, sysdate - 1, 'Parfümök százai, virágok álmai'); 
insert into foo values(2, sysdate - 2, 'Édeskés, kesernyés, mézédes felejtés'); 
insert into foo values(3, sysdate - 3, 'Rózsa és leander, karcsú kis üveggel, oh elkábít'); 
insert into foo values(4, sysdate - 4, 'Mirha és mandula kis helyre bezárva, orgonák, violák titkos kis fiolák'); 
insert into foo values(5, sysdate - 5, 'Cseppenként, permetként próbálom egyenként úgy elbódít'); 

commit; 

create table bar as select a, b, to_lob(c) as c from foo; 

結果

SQL> desc bar 

Name          Null? Type 
----------------------------------------- -------- ---------------------------- 
A             NUMBER 
B             DATE 
C             CLOB 
相關問題