Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana cara menghilangkan kolom LOB yang kosong tapi besar?

Sebagai alternatif untuk menghapus dan menambahkan kembali kolom, Anda dapat menggunakan shrink space klausa :

ALTER TABLE t MODIFY LOB (c) (SHRINK SPACE);

db<>biola , yang 18c tetapi harus bekerja di 11g juga. (Kemudian:ya, dalam 11gR2 dengan retention none dihilangkan pula; SQL Fiddle tidak menyukainya.)

Melewatkan detail itu, tetapi masih berfungsi; Anda hanya perlu langkah ekstra untuk menemukan kolom BLOB tersembunyi yang mencadangkan kolom XMLType, seperti yang ditunjukkan di sini . Saya telah membuat alter dinamis hanya untuk mengambilnya dengan cepat, tetapi jika Anda dapat menemukannya secara manual maka Anda dapat memasukkannya ke dalam pernyataan sendiri dengan jelas:

DECLARE
  l_name USER_TAB_COLUMNS.COLUMN_NAME%TYPE;
  l_stmt VARCHAR2(100);
BEGIN
  select column_name
  into l_name
  from user_tab_cols 
  where 
    table_name = 'T' and hidden_column = 'YES'
    and
    column_id = (
        select column_id 
        from user_tab_cols 
        where table_name = 'T' and column_name = 'X'
    );

  l_stmt := 'ALTER TABLE t MODIFY LOB ("' || l_name || '") (SHRINK SPACE)';
  dbms_output.put_line(l_stmt);
  execute immediate l_stmt;
END;
/

db<>biola

Mungkin perlu dicatat bahwa ini bekerja dengan basicfile penyimpanan, seperti yang ditunjukkan dalam demo minimal Anda, tetapi mungkin tidak berfungsi dengan securefile penyimpanan - setidaknya beberapa waktu yang memunculkan ORA-10635:Segmen atau jenis tablespace tidak valid.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SELECT - Tanda kutip ganda atau tanpa tanda kutip ganda?

  2. Bagaimana mengonversi stempel waktu dengan milidetik hingga saat ini di Oracle

  3. nomor dinamis di mana kondisi di Oracle sql

  4. Bukan bulan yang valid saat menjalankan prosedur parameter IN dengan nilai tanggal

  5. 50 Nuansa Ujian Sertifikasi Database Oracle